diff --git a/ecs/api-ref/ALL_META.TXT.json b/ecs/api-ref/ALL_META.TXT.json new file mode 100644 index 000000000..64376e0d9 --- /dev/null +++ b/ecs/api-ref/ALL_META.TXT.json @@ -0,0 +1,2082 @@ +[ + { + "uri":"en-us_topic_0020805967.html", + "product_code":"ecs", + "code":"1", + "des":"Public cloud APIs comply with the RESTful API design principles. REST-based Web services are organized into resources. Each resource is identified by one or more Uniform ", + "doc_type":"api", + "kw":"API Usage Guidelines,API Reference", + "title":"API Usage Guidelines", + "githuburl":"" + }, + { + "uri":"en-us_topic_0124385011.html", + "product_code":"ecs", + "code":"2", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"APIs (Recommended)", + "title":"APIs (Recommended)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212657.html", + "product_code":"ecs", + "code":"3", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Lifecycle Management", + "title":"Lifecycle Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212668.html", + "product_code":"ecs", + "code":"4", + "des":"This API is used to create one or more ECSs.This is an asynchronous API. After the ECS creation request is issued, the system will return job_id. The ECS creation is stil", + "doc_type":"api", + "kw":"Creating an ECS,Lifecycle Management,API Reference", + "title":"Creating an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212679.html", + "product_code":"ecs", + "code":"5", + "des":"This API is used to delete ECSs based on a specified ECS ID list.You can delete a single ECS or multiple ECSs in a batch. A maximum of 1000 ECSs can be deleted in a batch", + "doc_type":"api", + "kw":"Deleting ECSs,Lifecycle Management,API Reference", + "title":"Deleting ECSs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212691.html", + "product_code":"ecs", + "code":"6", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Status Management", + "title":"Status Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0067876349.html", + "product_code":"ecs", + "code":"7", + "des":"This API is used to reinstall an ECS OS. During the system disk reinstallation using the original image, the data disks of the ECS remain unchanged.After this API is call", + "doc_type":"api", + "kw":"Reinstalling an ECS OS (Using an Image with Cloud-Init Installed),Status Management,API Reference", + "title":"Reinstalling an ECS OS (Using an Image with Cloud-Init Installed)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0067876971.html", + "product_code":"ecs", + "code":"8", + "des":"This API is used to change an ECS OS. During the system disk reinstallation using a new image, the data disks of the ECS remain unchanged.After this API is called, the sy", + "doc_type":"api", + "kw":"Changing an ECS OS (Using an Image with Cloud-Init Installed),Status Management,API Reference", + "title":"Changing an ECS OS (Using an Image with Cloud-Init Installed)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0067600148.html", + "product_code":"ecs", + "code":"9", + "des":"This API is used to query automatic recovery configured for an ECS.GET /v1/{project_id}/cloudservers/{server_id}/autorecoveryTable 1 describes the parameters in the URI.P", + "doc_type":"api", + "kw":"Querying Automatic Recovery of an ECS,Status Management,API Reference", + "title":"Querying Automatic Recovery of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0132905656.html", + "product_code":"ecs", + "code":"10", + "des":"An ECS deployed on a DeH can be migrated to another DeH.An ECS deployed on a DeH can be migrated to a public resource pool.An ECS deployed in a public resource pool can b", + "doc_type":"api", + "kw":"Cold Migrating an ECS,Status Management,API Reference", + "title":"Cold Migrating an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212653.html", + "product_code":"ecs", + "code":"11", + "des":"ECS specifications can be modified, for example, upgrading the vCPUs and memory, to meet service requirements. This API is used to modify ECS specifications.An ECS flavor", + "doc_type":"api", + "kw":"Modifying the Specifications of an ECS,Status Management,API Reference", + "title":"Modifying the Specifications of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0081529857.html", + "product_code":"ecs", + "code":"12", + "des":"This API is used to add an ECS to the monitoring list.Ceilometer periodically collects monitoring data on the ECSs added to the monitoring list and reports the data to Cl", + "doc_type":"api", + "kw":"Adding an ECS to the Monitoring List,Status Management,API Reference", + "title":"Adding an ECS to the Monitoring List", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167816247.html", + "product_code":"ecs", + "code":"13", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Batch Operations", + "title":"Batch Operations", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212207.html", + "product_code":"ecs", + "code":"14", + "des":"This API is used to start ECSs in a batch based on specified ECS IDs. A maximum of 1000 ECSs can be started at a time.POST /v1/{project_id}/cloudservers/actionTable 1 des", + "doc_type":"api", + "kw":"Starting ECSs in a Batch,Batch Operations,API Reference", + "title":"Starting ECSs in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212649.html", + "product_code":"ecs", + "code":"15", + "des":"This API is used to restart ECSs in a batch based on specified ECS IDs. A maximum of 1000 ECSs can be restarted at a time.POST /v1/{project_id}/cloudservers/actionTable 1", + "doc_type":"api", + "kw":"Restarting ECSs in a Batch,Batch Operations,API Reference", + "title":"Restarting ECSs in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212651.html", + "product_code":"ecs", + "code":"16", + "des":"This API is used to stop ECSs in a batch based on the specified ECS ID list. A maximum of 1000 ECSs can be stopped at a time.POST /v1/{project_id}/cloudservers/actionTabl", + "doc_type":"api", + "kw":"Stopping ECSs in a Batch,Batch Operations,API Reference", + "title":"Stopping ECSs in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0112708160.html", + "product_code":"ecs", + "code":"17", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Flavor Management", + "title":"Flavor Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212656.html", + "product_code":"ecs", + "code":"18", + "des":"This API is used to query details about ECS flavors and extended flavor information.GET /v1/{project_id}/cloudservers/flavors?availability_zone={availability_zone}Table 1", + "doc_type":"api", + "kw":"Querying Details About Flavors and Extended Flavor Information,Flavor Management,API Reference", + "title":"Querying Details About Flavors and Extended Flavor Information", + "githuburl":"" + }, + { + "uri":"en-us_topic_0110472767.html", + "product_code":"ecs", + "code":"19", + "des":"An ECS flavor cannot be changed to certain flavors. This API is used to query the target flavors to which a specified ECS flavor can be changed.GET /v2.1/{project_id}/res", + "doc_type":"api", + "kw":"Querying the Target Flavors to Which an ECS Flavor Can Be Changed,Flavor Management,API Reference", + "title":"Querying the Target Flavors to Which an ECS Flavor Can Be Changed", + "githuburl":"" + }, + { + "uri":"en-us_topic_0124385012.html", + "product_code":"ecs", + "code":"20", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"NIC Management", + "title":"NIC Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212663.html", + "product_code":"ecs", + "code":"21", + "des":"This API is used to add one or multiple NICs to an ECS.POST /v1/{project_id}/cloudservers/{server_id}/nicsTable 1 describes the parameters in the URI.Parameter descriptio", + "doc_type":"api", + "kw":"Adding NICs to an ECS in a Batch,NIC Management,API Reference", + "title":"Adding NICs to an ECS in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212665.html", + "product_code":"ecs", + "code":"22", + "des":"This API is used to uninstall and delete one or multiple NICs from an ECS.The primary NIC of an ECS has routing rules configured and cannot be deleted.POST /v1/{project_i", + "doc_type":"api", + "kw":"Deleting NICs from an ECS in a Batch,NIC Management,API Reference", + "title":"Deleting NICs from an ECS in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0111860831.html", + "product_code":"ecs", + "code":"23", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Disk Management", + "title":"Disk Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022472987.html", + "product_code":"ecs", + "code":"24", + "des":"This API is used to attach a disk to an ECS.POST /v1/{project_id}/cloudservers/{server_id}/attachvolumeTable 1 describes the parameters in the URI.Parameter descriptionPa", + "doc_type":"api", + "kw":"Attaching a Disk to an ECS,Disk Management,API Reference", + "title":"Attaching a Disk to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022472988.html", + "product_code":"ecs", + "code":"25", + "des":"This API is used to detach an EVS disk from an ECS.DELETE /v1/{project_id}/cloudservers/{server_id}/detachvolume/{volume_id}?delete_flag=0Table 1 describes the parameters", + "doc_type":"api", + "kw":"Detaching an EVS Disk from an ECS,Disk Management,API Reference", + "title":"Detaching an EVS Disk from an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101860613.html", + "product_code":"ecs", + "code":"26", + "des":"This API is used to query disk attachment of an ECS.GET /v2.1/servers/{server_id}/block_deviceTable 1 describes the parameters in the URI.Parameter descriptionParameterMa", + "doc_type":"api", + "kw":"Querying Disk Attachment of an ECS,Disk Management,API Reference", + "title":"Querying Disk Attachment of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101860614.html", + "product_code":"ecs", + "code":"27", + "des":"This API is used to query a disk attached to an ECS.GET /v2.1/servers/{server_id}/block_device/{volume_id}Table 1 describes the parameters in the URI.Parameter descriptio", + "doc_type":"api", + "kw":"Querying a Single Disk Attached to an ECS,Disk Management,API Reference", + "title":"Querying a Single Disk Attached to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212673.html", + "product_code":"ecs", + "code":"28", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tenant Quota Management", + "title":"Tenant Quota Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212674.html", + "product_code":"ecs", + "code":"29", + "des":"This API is used to query the quotas of all resources for a specified tenant, including used quotas.GET /v1/{project_id}/cloudservers/limitsTable 1 describes the paramete", + "doc_type":"api", + "kw":"Querying Tenant Quotas,Tenant Quota Management,API Reference", + "title":"Querying Tenant Quotas", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022225397.html", + "product_code":"ecs", + "code":"30", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Task Status Management", + "title":"Task Status Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022225398.html", + "product_code":"ecs", + "code":"31", + "des":"This API is used to query the execution status of an asynchronous request task.After an asynchronous request task is issued, for example, creating or deleting an ECS, per", + "doc_type":"api", + "kw":"Querying Task Execution Status,Task Status Management,API Reference", + "title":"Querying Task Execution Status", + "githuburl":"" + }, + { + "uri":"en-us_topic_0108433461.html", + "product_code":"ecs", + "code":"32", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tag Management", + "title":"Tag Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167811962.html", + "product_code":"ecs", + "code":"33", + "des":"Tag management APIs are classified as the APIs for one-dimensional (1D) tags and the APIs for two-dimensional (2D) tags.A 1D tag contains a string. All APIs for 1D tags a", + "doc_type":"api", + "kw":"Tag Types,Tag Management,API Reference", + "title":"Tag Types", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167811963.html", + "product_code":"ecs", + "code":"34", + "des":"This API is used to add tags to a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.An ECS allows a maximum of 10", + "doc_type":"api", + "kw":"Adding Tags to an ECS in a Batch,Tag Management,API Reference", + "title":"Adding Tags to an ECS in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167811964.html", + "product_code":"ecs", + "code":"35", + "des":"This API is used to delete tags from a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.This API is idempotent. ", + "doc_type":"api", + "kw":"Deleting Tags from an ECS in a Batch,Tag Management,API Reference", + "title":"Deleting Tags from an ECS in a Batch", + "githuburl":"" + }, + { + "uri":"en-us_topic_0102606095.html", + "product_code":"ecs", + "code":"36", + "des":"This API is used to filter ECSs by tag and obtain all tags of an ECS.POST /v1/{project_id}/servers/resource_instances/actionTable 1 describes the parameters in the URI.Pa", + "doc_type":"api", + "kw":"Querying ECSs by Tag,Tag Management,API Reference", + "title":"Querying ECSs by Tag", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167811966.html", + "product_code":"ecs", + "code":"37", + "des":"Projects are used to group and isolate OpenStack resources, which include computing, storage, and network resources. A project can be a department or a team. Multiple pro", + "doc_type":"api", + "kw":"Querying Project Tags,Tag Management,API Reference", + "title":"Querying Project Tags", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167811967.html", + "product_code":"ecs", + "code":"38", + "des":"This API is used to query the tags of a specified ECS.The Tag Management Service (TMS) uses this API to query all tags of an ECS.GET /v1/{project_id}/cloudservers/{server", + "doc_type":"api", + "kw":"Querying Tags of an ECS,Tag Management,API Reference", + "title":"Querying Tags of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0161097717.html", + "product_code":"ecs", + "code":"39", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Group Management", + "title":"ECS Group Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0161097718.html", + "product_code":"ecs", + "code":"40", + "des":"This API is used to create an ECS group.Only anti-affinity policies are supported.POST /v1/{project_id}/cloudservers/os-server-groupsTable 1 describes the parameters in t", + "doc_type":"api", + "kw":"Creating an ECS Group,ECS Group Management,API Reference", + "title":"Creating an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0161097719.html", + "product_code":"ecs", + "code":"41", + "des":"This API is used to delete an ECS group.DELETE /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}Table 1 describes the parameters in the URI.Parameter descr", + "doc_type":"api", + "kw":"Deleting an ECS Group,ECS Group Management,API Reference", + "title":"Deleting an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0133622595.html", + "product_code":"ecs", + "code":"42", + "des":"This API is used to add an ECS to an ECS group. The system automatically deploys the newly added ECS to a host that is different from the ones accommodating other ECSs in", + "doc_type":"api", + "kw":"Adding an ECS to an ECS Group,ECS Group Management,API Reference", + "title":"Adding an ECS to an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0133622596.html", + "product_code":"ecs", + "code":"43", + "des":"This API is used to remove an ECS from an ECS group. After being removed, the anti-affinity policy will not take effect on this ECS and other ECSs in the same ECS group.O", + "doc_type":"api", + "kw":"Removing an ECS from an ECS Group,ECS Group Management,API Reference", + "title":"Removing an ECS from an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0175597846.html", + "product_code":"ecs", + "code":"44", + "des":"This API is used to query ECS groups.GET /v1/{project_id}/cloudservers/os-server-groups?limit={limit}&marker={marker}Table 1 describes the parameters in the URI.Path para", + "doc_type":"api", + "kw":"Querying ECS Groups,ECS Group Management,API Reference", + "title":"Querying ECS Groups", + "githuburl":"" + }, + { + "uri":"en-us_topic_0175597847.html", + "product_code":"ecs", + "code":"45", + "des":"This API is used to query details bout an ECS group.GET /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}Table 1 describes the parameters in the URI.Parame", + "doc_type":"api", + "kw":"Querying Details About an ECS Group,ECS Group Management,API Reference", + "title":"Querying Details About an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0124385014.html", + "product_code":"ecs", + "code":"46", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"OpenStack Nova APIs", + "title":"OpenStack Nova APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065792792.html", + "product_code":"ecs", + "code":"47", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"API Version Query", + "title":"API Version Query", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065792793.html", + "product_code":"ecs", + "code":"48", + "des":"This API is used to query all available Nova versions.To support function extension, Nova APIs can be distinguished by version. There are two types of versions:Major vers", + "doc_type":"api", + "kw":"Querying All API Versions,API Version Query,API Reference", + "title":"Querying All API Versions", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065792794.html", + "product_code":"ecs", + "code":"49", + "des":"This API is used to query the information of a specified version.To support function extension, Nova APIs can be distinguished by version. There are two types of versions", + "doc_type":"api", + "kw":"Querying a Specified API Version,API Version Query,API Reference", + "title":"Querying a Specified API Version", + "githuburl":"" + }, + { + "uri":"en-us_topic_0124385015.html", + "product_code":"ecs", + "code":"50", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Lifecycle Management", + "title":"Lifecycle Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0068473331.html", + "product_code":"ecs", + "code":"51", + "des":"This API is used to create ECS.This API does not support automatic rollback after creating an ECS failed. If automatic rollback is required, call the API POST /v1/{projec", + "doc_type":"api", + "kw":"Creating an ECS,Lifecycle Management,API Reference", + "title":"Creating an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212692.html", + "product_code":"ecs", + "code":"52", + "des":"This API is used to modify ECS information. Only the name and description of an ECS can be modified.PUT /v2.1/{project_id}/servers/{server_id}PUT /v2/{project_id}/servers", + "doc_type":"api", + "kw":"Modifying ECS Information,Lifecycle Management,API Reference", + "title":"Modifying ECS Information", + "githuburl":"" + }, + { + "uri":"en-us_topic_0025560296.html", + "product_code":"ecs", + "code":"53", + "des":"This API is used to delete an ECS.When an ECS is deleted, all NICs attached to the ECS through the OpenStack Nova API will be deleted.DELETE /v2.1/{project_id}/servers/{s", + "doc_type":"api", + "kw":"Deleting an ECS,Lifecycle Management,API Reference", + "title":"Deleting an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212688.html", + "product_code":"ecs", + "code":"54", + "des":"This API is used to query ECSs.GET /v2.1/{project_id}/servers?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker", + "doc_type":"api", + "kw":"Querying ECSs,Lifecycle Management,API Reference", + "title":"Querying ECSs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212689.html", + "product_code":"ecs", + "code":"55", + "des":"This API is used to query details about ECSs.GET /v2.1/{project_id}/servers/detail?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}", + "doc_type":"api", + "kw":"Querying Details About ECSs,Lifecycle Management,API Reference", + "title":"Querying Details About ECSs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212690.html", + "product_code":"ecs", + "code":"56", + "des":"This API is used to query details about an ECS by ECS ID.GET /v2.1/{project_id}/servers/{server_id}GET /v2/{project_id}/servers/{server_id}Table 1 describes the parameter", + "doc_type":"api", + "kw":"Querying Details About ECSs,Lifecycle Management,API Reference", + "title":"Querying Details About ECSs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0124385016.html", + "product_code":"ecs", + "code":"57", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Status Management", + "title":"Status Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212648.html", + "product_code":"ecs", + "code":"58", + "des":"This API is used to start a single ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes the parameters ", + "doc_type":"api", + "kw":"Starting an ECS,Status Management,API Reference", + "title":"Starting an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212650.html", + "product_code":"ecs", + "code":"59", + "des":"This API is used to restart a single ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes the parameter", + "doc_type":"api", + "kw":"Restarting an ECS,Status Management,API Reference", + "title":"Restarting an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212652.html", + "product_code":"ecs", + "code":"60", + "des":"This API is used to stop a single ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes the parameters i", + "doc_type":"api", + "kw":"Stopping an ECS,Status Management,API Reference", + "title":"Stopping an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817690.html", + "product_code":"ecs", + "code":"61", + "des":"This API is used to lock an ECS.You are only allowed to lock your own ECSs. After ECSs are locked, you will not be able to perform management operations on them, includin", + "doc_type":"api", + "kw":"Locking an ECS,Status Management,API Reference", + "title":"Locking an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817691.html", + "product_code":"ecs", + "code":"62", + "des":"This API is used to unlock an ECS.After an ECS is unlocked, common users are allowed to manage the ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project", + "doc_type":"api", + "kw":"Unlocking an ECS,Status Management,API Reference", + "title":"Unlocking an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817688.html", + "product_code":"ecs", + "code":"63", + "des":"This API is used to rebuild an ECS.You can use the original image or another image to rebuild an ECS. This API supports different OSs.This API is native from the communit", + "doc_type":"api", + "kw":"Rebuilding an ECS,Status Management,API Reference", + "title":"Rebuilding an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817694.html", + "product_code":"ecs", + "code":"64", + "des":"This API is used to create an image using an ECS. After the creation, you can use this image to create ECSs.Images created using an ECS are stored on storage nodes as sna", + "doc_type":"api", + "kw":"Creating an Image Using an ECS,Status Management,API Reference", + "title":"Creating an Image Using an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0028714261.html", + "product_code":"ecs", + "code":"65", + "des":"This API is used to modify the specifications of an ECS.For a running ECS, the system will automatically stop the ECS, copy the ECS data to the target node, which can be ", + "doc_type":"api", + "kw":"Modifying the Specifications of an ECS,Status Management,API Reference", + "title":"Modifying the Specifications of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0028714262.html", + "product_code":"ecs", + "code":"66", + "des":"This API is used to confirm the specifications modification of an ECS.Before calling this API, ensure that the ECS status (which can be queried using the API for querying", + "doc_type":"api", + "kw":"Confirming ECS Specifications Modification,Status Management,API Reference", + "title":"Confirming ECS Specifications Modification", + "githuburl":"" + }, + { + "uri":"en-us_topic_0028714263.html", + "product_code":"ecs", + "code":"67", + "des":"This API is used to roll back ECS specifications modification.After the rollback, the data modified during migration will be lost.Before calling this API, ensure that the", + "doc_type":"api", + "kw":"Rolling Back ECS Specifications Modification,Status Management,API Reference", + "title":"Rolling Back ECS Specifications Modification", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031167513.html", + "product_code":"ecs", + "code":"68", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Network Management", + "title":"Network Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031169828.html", + "product_code":"ecs", + "code":"69", + "des":"This API is used to query the networks available to a tenant.You can query only the network ID and label (network name). Other fields are all null.GET /v2.1/{project_id}/", + "doc_type":"api", + "kw":"Querying Networks,Network Management,API Reference", + "title":"Querying Networks", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031169058.html", + "product_code":"ecs", + "code":"70", + "des":"This API is used to query the networks of an ECS.NoneGET /v2.1/{project_id}/servers/{server_id}/ipsGET /v2/{project_id}/servers/{server_id}/ipsTable 1 describes the param", + "doc_type":"api", + "kw":"Querying the Networks of a Specified ECS,Network Management,API Reference", + "title":"Querying the Networks of a Specified ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031169059.html", + "product_code":"ecs", + "code":"71", + "des":"This API is used to query the specified network of an ECS.NoneGET /v2.1/{project_id}/servers/{server_id}/ips/{networkName}GET /v2/{project_id}/servers/{server_id}/ips/{ne", + "doc_type":"api", + "kw":"Querying the Specified Network of an ECS,Network Management,API Reference", + "title":"Querying the Specified Network of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031167514.html", + "product_code":"ecs", + "code":"72", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Security Group Management", + "title":"Security Group Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0067161469.html", + "product_code":"ecs", + "code":"73", + "des":"This API is used to add an ECS to a security group.You are suggested to add an ECS to a maximum of five security groups.POST /v2.1/{project_id}/servers/{server_id}/action", + "doc_type":"api", + "kw":"Adding a Security Group,Security Group Management,API Reference", + "title":"Adding a Security Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0067161717.html", + "product_code":"ecs", + "code":"74", + "des":"This API is used to delete a security group for an ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes", + "doc_type":"api", + "kw":"Deleting a Security Group,Security Group Management,API Reference", + "title":"Deleting a Security Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817702.html", + "product_code":"ecs", + "code":"75", + "des":"This API is used to query security groups for a specified ECS.GET /v2.1/{project_id}/servers/{server_id}/os-security-groupsGET /v2/{project_id}/servers/{server_id}/os-sec", + "doc_type":"api", + "kw":"Querying Security Groups for a Specified ECS,Security Group Management,API Reference", + "title":"Querying Security Groups for a Specified ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212655.html", + "product_code":"ecs", + "code":"76", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Flavor Management", + "title":"Flavor Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817705.html", + "product_code":"ecs", + "code":"77", + "des":"This API is used to query available ECS flavors. After receiving the request, Nova uses nova-api to view the flavors from the database.GET /v2.1/{project_id}/flavors?minD", + "doc_type":"api", + "kw":"Querying ECS Flavors,Flavor Management,API Reference", + "title":"Querying ECS Flavors", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212658.html", + "product_code":"ecs", + "code":"78", + "des":"This API is used to query details about ECS flavors.GET /v2.1/{project_id}/flavors/detail?minDisk={minDisk}&minRam={minRam}&sort_key={sort_key}&sort_dir={sort_dir}GET /v2", + "doc_type":"api", + "kw":"Querying Details About ECS Flavors,Flavor Management,API Reference", + "title":"Querying Details About ECS Flavors", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212659.html", + "product_code":"ecs", + "code":"79", + "des":"This API is used to query the details about an ECS flavor based on the flavor ID.GET /v2.1/{project_id}/flavors/{flavor_id}GET /v2/{project_id}/flavors/{flavor_id}Table 1", + "doc_type":"api", + "kw":"Querying Details About an ECS Flavor,Flavor Management,API Reference", + "title":"Querying Details About an ECS Flavor", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817706.html", + "product_code":"ecs", + "code":"80", + "des":"This API is used to query the extra_specs value for a specified ECS flavor.GET /v2.1/{project_id}/flavors/{flavor_id}/os-extra_specsGET /v2/{project_id}/flavors/{flavor_i", + "doc_type":"api", + "kw":"Querying the extra_specs Value for an ECS Flavor,Flavor Management,API Reference", + "title":"Querying the extra_specs Value for an ECS Flavor", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212660.html", + "product_code":"ecs", + "code":"81", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"NIC Management", + "title":"NIC Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212661.html", + "product_code":"ecs", + "code":"82", + "des":"This API is used to query information about ECS NICs.GET /v2.1/{project_id}/servers/{server_id}/os-interfaceGET /v2/{project_id}/servers/{server_id}/os-interfaceTable 1 d", + "doc_type":"api", + "kw":"Querying ECS NICs,NIC Management,API Reference", + "title":"Querying ECS NICs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212662.html", + "product_code":"ecs", + "code":"83", + "des":"This API is used to query NICs of an ECS based on the NIC ID.GET /v2.1/{project_id}/servers/{server_id}/os-interface/{id}GET /v2/{project_id}/servers/{server_id}/os-inter", + "doc_type":"api", + "kw":"Querying NICs of an ECS,NIC Management,API Reference", + "title":"Querying NICs of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212664.html", + "product_code":"ecs", + "code":"84", + "des":"This API is used to add a NIC to an ECS.POST /v2.1/{project_id}/servers/{server_id}/os-interfacePOST /v2/{project_id}/servers/{server_id}/os-interfaceTable 1 describes th", + "doc_type":"api", + "kw":"Adding a NIC to an ECS,NIC Management,API Reference", + "title":"Adding a NIC to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212666.html", + "product_code":"ecs", + "code":"85", + "des":"This API is used to delete a NIC from an ECS based on the port ID.The primary NIC of an ECS has routing rules configured and cannot be deleted.When an ECS NIC is detached", + "doc_type":"api", + "kw":"Deleting a NIC from an ECS,NIC Management,API Reference", + "title":"Deleting a NIC from an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212667.html", + "product_code":"ecs", + "code":"86", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Disk Management", + "title":"Disk Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212671.html", + "product_code":"ecs", + "code":"87", + "des":"This API is used to query the disks attached to an ECS.GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachmentsGET /v2/{project_id}/servers/{server_id}/os-volume_", + "doc_type":"api", + "kw":"Querying Disks Attached to an ECS,Disk Management,API Reference", + "title":"Querying Disks Attached to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212672.html", + "product_code":"ecs", + "code":"88", + "des":"This API is used to query a disk attached to an ECS based on the disk ID.GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}GET /v2/{project_id}/", + "doc_type":"api", + "kw":"Querying a Disk Attached to an ECS,Disk Management,API Reference", + "title":"Querying a Disk Attached to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031167350.html", + "product_code":"ecs", + "code":"89", + "des":"This API is used to attach a disk to an ECS.If you attach a bootable disk to an ECS, you must specify the disk drive letter.A disk created using a backup cannot be attach", + "doc_type":"api", + "kw":"Attaching a Disk to an ECS,Disk Management,API Reference", + "title":"Attaching a Disk to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817707.html", + "product_code":"ecs", + "code":"90", + "des":"This API is used to detach a disk from an ECS.The system disk, the device name of which is /dev/sda, and user disks can be detached from an ECS only when the ECS is stopp", + "doc_type":"api", + "kw":"Detaching a Disk from an ECS,Disk Management,API Reference", + "title":"Detaching a Disk from an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817681.html", + "product_code":"ecs", + "code":"91", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Metadata Management", + "title":"Metadata Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0025560298.html", + "product_code":"ecs", + "code":"92", + "des":"This API is used to update ECS metadata.If the metadata does not contain the target field, the field is automatically added.If the metadata contains the target field, the", + "doc_type":"api", + "kw":"Updating ECS Metadata,Metadata Management,API Reference", + "title":"Updating ECS Metadata", + "githuburl":"" + }, + { + "uri":"en-us_topic_0077847902.html", + "product_code":"ecs", + "code":"93", + "des":"This API is used to configure ECS metadata.When you call this API, all the metadata of this ECS will be deleted, and the ECS uses the value configured in the request.An E", + "doc_type":"api", + "kw":"Configuring ECS Metadata,Metadata Management,API Reference", + "title":"Configuring ECS Metadata", + "githuburl":"" + }, + { + "uri":"en-us_topic_0025560299.html", + "product_code":"ecs", + "code":"94", + "des":"This API is used to delete specified ECS metadata.An ECS must be in active, stopped, paused, or suspended state, which is specified by OS-EXT-STS:vm_state.DELETE /v2.1/{p", + "doc_type":"api", + "kw":"Deleting Specified ECS Metadata,Metadata Management,API Reference", + "title":"Deleting Specified ECS Metadata", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817713.html", + "product_code":"ecs", + "code":"95", + "des":"This API is used to query ECS metadata.GET /v2.1/{project_id}/servers/{server_id}/metadataGET /v2/{project_id}/servers/{server_id}/metadataTable 1 describes the parameter", + "doc_type":"api", + "kw":"Querying ECS Metadata,Metadata Management,API Reference", + "title":"Querying ECS Metadata", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817714.html", + "product_code":"ecs", + "code":"96", + "des":"This API is used to obtain ECS metadata with a specified key.GET /v2.1/{project_id}/servers/{server_id}/metadata/{key}GET /v2/{project_id}/servers/{server_id}/metadata/{k", + "doc_type":"api", + "kw":"Obtaining ECS Metadata with a Specified Key,Metadata Management,API Reference", + "title":"Obtaining ECS Metadata with a Specified Key", + "githuburl":"" + }, + { + "uri":"en-us_topic_0025567413.html", + "product_code":"ecs", + "code":"97", + "des":"This API is used to modify the ECS metadata with a specified key.If the metadata does not contain the target field, the field is automatically added.If the metadata conta", + "doc_type":"api", + "kw":"Modifying ECS Metadata with a Specified Key,Metadata Management,API Reference", + "title":"Modifying ECS Metadata with a Specified Key", + "githuburl":"" + }, + { + "uri":"en-us_topic_0111860833.html", + "product_code":"ecs", + "code":"98", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tenant Quota Management", + "title":"Tenant Quota Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817717.html", + "product_code":"ecs", + "code":"99", + "des":"This API is used to query tenant quota limits.Tenants are only allowed to query their own quota limits.GET /v2.1/{project_id}/limits?project_id={project_id}GET /v2/{proje", + "doc_type":"api", + "kw":"Querying Tenant Quota Limits,Tenant Quota Management,API Reference", + "title":"Querying Tenant Quota Limits", + "githuburl":"" + }, + { + "uri":"en-us_topic_0067298110.html", + "product_code":"ecs", + "code":"100", + "des":"This API is used to query quotas, including ECSs, vCPUs, and memory.This API provides the user_id parameter for obtaining the quota configuration of a specified user.GET ", + "doc_type":"api", + "kw":"Querying Tenant Quotas,Tenant Quota Management,API Reference", + "title":"Querying Tenant Quotas", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817716.html", + "product_code":"ecs", + "code":"101", + "des":"This API is used to query default quotas.GET /v2.1/{project_id}/os-quota-sets/{project_id}/defaultsGET /v2/{project_id}/os-quota-sets/{project_id}/defaultsTable 1 describ", + "doc_type":"api", + "kw":"Querying Default Quotas,Tenant Quota Management,API Reference", + "title":"Querying Default Quotas", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212675.html", + "product_code":"ecs", + "code":"102", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Key and Password Management", + "title":"Key and Password Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212676.html", + "product_code":"ecs", + "code":"103", + "des":"This API is used to query SSH key pairs.GET /v2.1/{project_id}/os-keypairsGET /v2/{project_id}/os-keypairsTable 1 describes the parameters in the URI.Parameter descriptio", + "doc_type":"api", + "kw":"Querying SSH Key Pairs,Key and Password Management,API Reference", + "title":"Querying SSH Key Pairs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212677.html", + "product_code":"ecs", + "code":"104", + "des":"This API is used to query a specified SSH key pair based on the SSH key pair name.GET /v2.1/{project_id}/os-keypairs/{keypair_name}GET /v2/{project_id}/os-keypairs/{keypa", + "doc_type":"api", + "kw":"Querying a Specified SSH Key Pair,Key and Password Management,API Reference", + "title":"Querying a Specified SSH Key Pair", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212678.html", + "product_code":"ecs", + "code":"105", + "des":"This API is used to create an SSH key pair or import a public key to generate a key pair.After a private SSH key is created, download the private key to a local directory", + "doc_type":"api", + "kw":"Creating and Importing an SSH Key Pair,Key and Password Management,API Reference", + "title":"Creating and Importing an SSH Key Pair", + "githuburl":"" + }, + { + "uri":"en-us_topic_0020212680.html", + "product_code":"ecs", + "code":"106", + "des":"This API is used to delete a specified SSH key pair based on the SSH key pair name.DELETE /v2.1/{project_id}/os-keypairs/{keypair_name}DELETE /v2/{project_id}/os-keypairs", + "doc_type":"api", + "kw":"Deleting an SSH Key Pair,Key and Password Management,API Reference", + "title":"Deleting an SSH Key Pair", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031176553.html", + "product_code":"ecs", + "code":"107", + "des":"This API is used to obtain the random password generated during initial Windows ECS installation for user Administratoror the configured Cloudbase-init user when you use ", + "doc_type":"api", + "kw":"Obtaining the Password for Logging In to an ECS,Key and Password Management,API Reference", + "title":"Obtaining the Password for Logging In to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031176554.html", + "product_code":"ecs", + "code":"108", + "des":"This API is used to delete the recorded random password generated during initial Windows ECS installation. After the password is deleted, you can still use your password ", + "doc_type":"api", + "kw":"Deleting the Password for Logging In to an ECS,Key and Password Management,API Reference", + "title":"Deleting the Password for Logging In to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817683.html", + "product_code":"ecs", + "code":"109", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Group Management", + "title":"ECS Group Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817720.html", + "product_code":"ecs", + "code":"110", + "des":"This API is used to create an ECS group.Only anti-affinity groups are supported.POST /v2.1/{project_id}/os-server-groupsPOST /v2/{project_id}/os-server-groupsTable 1 desc", + "doc_type":"api", + "kw":"Creating an ECS Group,ECS Group Management,API Reference", + "title":"Creating an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817721.html", + "product_code":"ecs", + "code":"111", + "des":"This API is used to query ECS groups.GET /v2.1/{project_id}/os-server-groupsGET /v2/{project_id}/os-server-groupsTable 1 describes the parameters in the URI.Parameter des", + "doc_type":"api", + "kw":"Querying ECS Groups,ECS Group Management,API Reference", + "title":"Querying ECS Groups", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817722.html", + "product_code":"ecs", + "code":"112", + "des":"This API is used to query details bout an ECS group.GET /v2.1/{project_id}/os-server-groups/{server_group_id}GET /v2/{project_id}/os-server-groups/{server_group_id}Table ", + "doc_type":"api", + "kw":"Querying Details About an ECS Group,ECS Group Management,API Reference", + "title":"Querying Details About an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817723.html", + "product_code":"ecs", + "code":"113", + "des":"This API is used to delete an ECS group.DELETE /v2.1/{project_id}/os-server-groups/{server_group_id}DELETE /v2/{project_id}/os-server-groups/{server_group_id}Table 1 desc", + "doc_type":"api", + "kw":"Deleting an ECS Group,ECS Group Management,API Reference", + "title":"Deleting an ECS Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167809633.html", + "product_code":"ecs", + "code":"114", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Operation Management", + "title":"ECS Operation Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817692.html", + "product_code":"ecs", + "code":"115", + "des":"This API is used to query all historical operations on an ECS.GET /v2.1/{project_id}/servers/{server_id}/os-instance-actions?limit={limit}&marker={marker}GET /v2/{project", + "doc_type":"api", + "kw":"Querying Operations on an ECS,ECS Operation Management,API Reference", + "title":"Querying Operations on an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817693.html", + "product_code":"ecs", + "code":"116", + "des":"This API is used to query a request of an ECS.GET /v2.1/{project_id}/servers/{server_id}/os-instance-actions/{request_id}GET /v2/{project_id}/servers/{server_id}/os-insta", + "doc_type":"api", + "kw":"Querying ECS Operations by Request ID,ECS Operation Management,API Reference", + "title":"Querying ECS Operations by Request ID", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167809634.html", + "product_code":"ecs", + "code":"117", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Console Management", + "title":"ECS Console Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817689.html", + "product_code":"ecs", + "code":"118", + "des":"This API is used to obtain ECS management console logs.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes", + "doc_type":"api", + "kw":"Obtaining ECS Management Console Logs,ECS Console Management,API Reference", + "title":"Obtaining ECS Management Console Logs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0142763126.html", + "product_code":"ecs", + "code":"119", + "des":"This API is used to obtain the address for remotely logging in to an ECS using VNC.POST /v2.1/{project_id}/servers/{server_id}/remote-consolesTable 1 describes the parame", + "doc_type":"api", + "kw":"Obtaining a VNC-based Remote Login Address (Microversion 2.6 or Later),ECS Console Management,API Re", + "title":"Obtaining a VNC-based Remote Login Address (Microversion 2.6 or Later)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817684.html", + "product_code":"ecs", + "code":"120", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"AZ", + "title":"AZ", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817728.html", + "product_code":"ecs", + "code":"121", + "des":"This API is used to query AZs.GET /v2.1/{project_id}/os-availability-zoneGET /v2/{project_id}/os-availability-zoneTable 1 describes the parameters in the URI.Parameter de", + "doc_type":"api", + "kw":"Querying AZs,AZ,API Reference", + "title":"Querying AZs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0108433460.html", + "product_code":"ecs", + "code":"122", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tag Management", + "title":"Tag Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817686.html", + "product_code":"ecs", + "code":"123", + "des":"Tag functions have been upgraded on the platform. After the upgrade, a tag consists of a key and a value. Keys and values comply with the following rules:For the tags cre", + "doc_type":"api", + "kw":"Tag Types,Tag Management,API Reference", + "title":"Tag Types", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820822.html", + "product_code":"ecs", + "code":"124", + "des":"This API is used to query all tags of an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.GET /v2.", + "doc_type":"api", + "kw":"Querying Tags of an ECS,Tag Management,API Reference", + "title":"Querying Tags of an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820823.html", + "product_code":"ecs", + "code":"125", + "des":"This API is used to add tags to an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.PUT /v2.1/{pro", + "doc_type":"api", + "kw":"Adding Tags to an ECS,Tag Management,API Reference", + "title":"Adding Tags to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820824.html", + "product_code":"ecs", + "code":"126", + "des":"This API is used to delete all tags of an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.DELETE ", + "doc_type":"api", + "kw":"Deleting Tags from an ECS,Tag Management,API Reference", + "title":"Deleting Tags from an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820825.html", + "product_code":"ecs", + "code":"127", + "des":"This API is used to add a tag to an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.The tag conta", + "doc_type":"api", + "kw":"Adding a Tag to an ECS,Tag Management,API Reference", + "title":"Adding a Tag to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820826.html", + "product_code":"ecs", + "code":"128", + "des":"This API is used to query whether an ECS has a specified tag.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the", + "doc_type":"api", + "kw":"Querying a Specified Tag for an ECS,Tag Management,API Reference", + "title":"Querying a Specified Tag for an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820827.html", + "product_code":"ecs", + "code":"129", + "des":"This API is used to delete a specified tag from an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the clien", + "doc_type":"api", + "kw":"Deleting a Specified Tag from an ECS,Tag Management,API Reference", + "title":"Deleting a Specified Tag from an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0175308115.html", + "product_code":"ecs", + "code":"130", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Data Structure", + "title":"Data Structure", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167957246.html", + "product_code":"ecs", + "code":"131", + "des":"publicip Field Descriptionsecurity_groups Field Descriptioneip Field Descriptionbandwidth Field Descriptionextendparam Field Description for Creating Disksextendparam Fie", + "doc_type":"api", + "kw":"Data Structure for Creating ECSs,Data Structure,API Reference", + "title":"Data Structure for Creating ECSs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0169494074.html", + "product_code":"ecs", + "code":"132", + "des":"The following table lists parameters involved in the fault information attribute.", + "doc_type":"api", + "kw":"Data Structure for Querying Details About ECSs,Data Structure,API Reference", + "title":"Data Structure for Querying Details About ECSs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0170710254.html", + "product_code":"ecs", + "code":"133", + "des":"This field is used by the following APIs:Querying details about flavors and extended flavor information: /v1/{project_id}/cloudservers/flavorsQuerying details about the e", + "doc_type":"api", + "kw":"Data Structure for Query Details About Specifications,Data Structure,API Reference", + "title":"Data Structure for Query Details About Specifications", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071509.html", + "product_code":"ecs", + "code":"134", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Permissions Policies and Supported Actions", + "title":"Permissions Policies and Supported Actions", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071510.html", + "product_code":"ecs", + "code":"135", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Lifecycle Management,Permissions Policies and Supported Actions,API Reference", + "title":"Lifecycle Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071511.html", + "product_code":"ecs", + "code":"136", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Status Management,Permissions Policies and Supported Actions,API Reference", + "title":"ECS Status Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0184167662.html", + "product_code":"ecs", + "code":"137", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Batch Operations,Permissions Policies and Supported Actions,API Reference", + "title":"Batch Operations", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103072350.html", + "product_code":"ecs", + "code":"138", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Network Management,Permissions Policies and Supported Actions,API Reference", + "title":"Network Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103072348.html", + "product_code":"ecs", + "code":"139", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Image Management,Permissions Policies and Supported Actions,API Reference", + "title":"Image Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103072347.html", + "product_code":"ecs", + "code":"140", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Security Group Management,Permissions Policies and Supported Actions,API Reference", + "title":"Security Group Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071522.html", + "product_code":"ecs", + "code":"141", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Specifications Query,Permissions Policies and Supported Actions,API Reference", + "title":"Specifications Query", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071513.html", + "product_code":"ecs", + "code":"142", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"NIC Management,Permissions Policies and Supported Actions,API Reference", + "title":"NIC Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071514.html", + "product_code":"ecs", + "code":"143", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Disk Management,Permissions Policies and Supported Actions,API Reference", + "title":"Disk Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071516.html", + "product_code":"ecs", + "code":"144", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Metadata Management,Permissions Policies and Supported Actions,API Reference", + "title":"Metadata Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071517.html", + "product_code":"ecs", + "code":"145", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tenant Quota Management,Permissions Policies and Supported Actions,API Reference", + "title":"Tenant Quota Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071515.html", + "product_code":"ecs", + "code":"146", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"SSH Key Management,Permissions Policies and Supported Actions,API Reference", + "title":"SSH Key Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0161341998.html", + "product_code":"ecs", + "code":"147", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Password Management,Permissions Policies and Supported Actions,API Reference", + "title":"Password Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103072349.html", + "product_code":"ecs", + "code":"148", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Floating IP Address Management,Permissions Policies and Supported Actions,API Reference", + "title":"Floating IP Address Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071520.html", + "product_code":"ecs", + "code":"149", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Group Management,Permissions Policies and Supported Actions,API Reference", + "title":"ECS Group Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0184192952.html", + "product_code":"ecs", + "code":"150", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"ECS Management Through Console,Permissions Policies and Supported Actions,API Reference", + "title":"ECS Management Through Console", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071519.html", + "product_code":"ecs", + "code":"151", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"AZ Management,Permissions Policies and Supported Actions,API Reference", + "title":"AZ Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103071521.html", + "product_code":"ecs", + "code":"152", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tag Management,Permissions Policies and Supported Actions,API Reference", + "title":"Tag Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0132778339.html", + "product_code":"ecs", + "code":"153", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"FPGA Logical File Management,Permissions Policies and Supported Actions,API Reference", + "title":"FPGA Logical File Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820821.html", + "product_code":"ecs", + "code":"154", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Common Parameters", + "title":"Common Parameters", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067716.html", + "product_code":"ecs", + "code":"155", + "des":"NormalReturned ValueDescription200Request succeeded.202After the task is successfully delivered, the task to be delivered shall be postponed because the system is busy.20", + "doc_type":"api", + "kw":"Returned Values for General Requests,Common Parameters,API Reference", + "title":"Returned Values for General Requests", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067713.html", + "product_code":"ecs", + "code":"156", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Task Request Result", + "title":"Task Request Result", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067714.html", + "product_code":"ecs", + "code":"157", + "des":"Normal response descriptionParameterTypeDescriptionjob_idStringSpecifies the returned task ID after delivering the task. Users can query the task progress using this ID. ", + "doc_type":"api", + "kw":"Responses (Task),Task Request Result,API Reference", + "title":"Responses (Task)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067715.html", + "product_code":"ecs", + "code":"158", + "des":"NormalReturned ValueDescription200The task is successfully delivered.202After the task is successfully delivered, the task to be delivered shall be postponed because the ", + "doc_type":"api", + "kw":"Returned Values,Task Request Result,API Reference", + "title":"Returned Values", + "githuburl":"" + }, + { + "uri":"en-us_topic_0142195138.html", + "product_code":"ecs", + "code":"159", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Batch Task Request", + "title":"Batch Task Request", + "githuburl":"" + }, + { + "uri":"en-us_topic_0142195139.html", + "product_code":"ecs", + "code":"160", + "des":"The following responses are only for resetting the passwords for logging in to ECSs in a batch and for modifying ECS specifications in a batch. For details about the resp", + "doc_type":"api", + "kw":"Responses (Batch Operation),Batch Task Request,API Reference", + "title":"Responses (Batch Operation)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0267425395.html", + "product_code":"ecs", + "code":"161", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Out-of-Date APIs", + "title":"Out-of-Date APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001207303618.html", + "product_code":"ecs", + "code":"162", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tag Management", + "title":"Tag Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001252143577.html", + "product_code":"ecs", + "code":"163", + "des":"This API is used to add tags to a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.This API has been discarded. ", + "doc_type":"api", + "kw":"Adding Tags to an ECS in a Batch (Discarded),Tag Management,API Reference", + "title":"Adding Tags to an ECS in a Batch (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001252263549.html", + "product_code":"ecs", + "code":"164", + "des":"This API is used to delete tags from a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.This API is idempotent. ", + "doc_type":"api", + "kw":"Deleting Tags from an ECS in a Batch (Discarded),Tag Management,API Reference", + "title":"Deleting Tags from an ECS in a Batch (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001207623588.html", + "product_code":"ecs", + "code":"165", + "des":"Projects are used to group and isolate OpenStack resources, which include computing, storage, and network resources. A project can be a department or a team. Multiple pro", + "doc_type":"api", + "kw":"Querying Project Tags (Discarded),Tag Management,API Reference", + "title":"Querying Project Tags (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001207783562.html", + "product_code":"ecs", + "code":"166", + "des":"This API is used to query the tags of a specified ECS.The Tag Management Service (TMS) uses this API to query all tags of an ECS.This API has been discarded. Use the API ", + "doc_type":"api", + "kw":"Querying Tags of an ECS (Discarded),Tag Management,API Reference", + "title":"Querying Tags of an ECS (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065962596.html", + "product_code":"ecs", + "code":"167", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"FPGA Logical File Management", + "title":"FPGA Logical File Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065962597.html", + "product_code":"ecs", + "code":"168", + "des":"This API is used to register an FPGA image.An FPGA image, which is also called accelerated engine image (AEI), is a logic FPGA file developed by a user. During FPGA image", + "doc_type":"api", + "kw":"Registering an FPGA Image,FPGA Logical File Management,API Reference", + "title":"Registering an FPGA Image", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065962599.html", + "product_code":"ecs", + "code":"169", + "des":"This API is used to delete an FPGA image.DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}Table 1 describes the parameters in the URI.NoneNoneNoneSee Return", + "doc_type":"api", + "kw":"Deleting an FPGA Image,FPGA Logical File Management,API Reference", + "title":"Deleting an FPGA Image", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065962600.html", + "product_code":"ecs", + "code":"170", + "des":"This API is used to view the details of the FPGA images of a tenant.GET /v1/{project_id}/cloudservers/fpga_image/detail?fpga_image_id={fpga_image_id}&page={page}&size={si", + "doc_type":"api", + "kw":"Viewing Details of FPGA Images,FPGA Logical File Management,API Reference", + "title":"Viewing Details of FPGA Images", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065962598.html", + "product_code":"ecs", + "code":"171", + "des":"This API is used to create a mapping between an FPGA image and an ECS image.POST /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/associationTable 1 describes the", + "doc_type":"api", + "kw":"Associating an FPGA Image with an ECS Image,FPGA Logical File Management,API Reference", + "title":"Associating an FPGA Image with an ECS Image", + "githuburl":"" + }, + { + "uri":"en-us_topic_0081950549.html", + "product_code":"ecs", + "code":"172", + "des":"This API is used to delete a mapping between an FPGA image and an ECS image.DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/associationTable 1 describes t", + "doc_type":"api", + "kw":"Disassociating an FPGA Image from an ECS Image,FPGA Logical File Management,API Reference", + "title":"Disassociating an FPGA Image from an ECS Image", + "githuburl":"" + }, + { + "uri":"en-us_topic_0081950550.html", + "product_code":"ecs", + "code":"173", + "des":"This API is used to query associations that are available to a tenant and between an FPGA image and an ECS image.GET /v1/{project_id}/cloudservers/fpga_image/associations", + "doc_type":"api", + "kw":"Querying Associations Between an FPGA Image and an ECS Image,FPGA Logical File Management,API Refere", + "title":"Querying Associations Between an FPGA Image and an ECS Image", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817680.html", + "product_code":"ecs", + "code":"174", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Image Management (OpenStack Nova APIs)", + "title":"Image Management (OpenStack Nova APIs)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817695.html", + "product_code":"ecs", + "code":"175", + "des":"This API is used to query all images.This API has been discarded. Use the API described in \"Querying Images (Native OpenStack API)\".GET /v2/{project_id}/images?name={name", + "doc_type":"api", + "kw":"Querying Images (Discarded),Image Management (OpenStack Nova APIs),API Reference", + "title":"Querying Images (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817696.html", + "product_code":"ecs", + "code":"176", + "des":"This API is used to query detailed information about an image list.This API has been discarded. Use the API described in \"Querying Images (Native OpenStack API)\".GET /v2/", + "doc_type":"api", + "kw":"Querying Image Details (Discarded),Image Management (OpenStack Nova APIs),API Reference", + "title":"Querying Image Details (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817697.html", + "product_code":"ecs", + "code":"177", + "des":"This API is used to query the details about the specified image.This API has been discarded. Use the API described in \"Querying Images (Native OpenStack API)\".GET /v2/{pr", + "doc_type":"api", + "kw":"Querying Details About a Specified Image (Discarded),Image Management (OpenStack Nova APIs),API Refe", + "title":"Querying Details About a Specified Image (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817698.html", + "product_code":"ecs", + "code":"178", + "des":"This API is used to query the metadata of the specified image.This API has been discarded. Use the API described in \"Querying Image Metadata (Native OpenStack API)\".GET /", + "doc_type":"api", + "kw":"Querying the Metadata of a Specified Image (Discarded),Image Management (OpenStack Nova APIs),API Re", + "title":"Querying the Metadata of a Specified Image (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817699.html", + "product_code":"ecs", + "code":"179", + "des":"This API is used to delete a specified image. The image cannot be restored after being deleted.This API has been discarded. Use the API described in \"Deleting an Image (N", + "doc_type":"api", + "kw":"Deleting an Image (Discarded),Image Management (OpenStack Nova APIs),API Reference", + "title":"Deleting an Image (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0267427144.html", + "product_code":"ecs", + "code":"180", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Security Group Management (OpenStack Nova APIs)", + "title":"Security Group Management (OpenStack Nova APIs)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0090187679.html", + "product_code":"ecs", + "code":"181", + "des":"This API is used to query security groups.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Querying Security Group", + "doc_type":"api", + "kw":"Querying Security Groups (Discarded),Security Group Management (OpenStack Nova APIs),API Reference", + "title":"Querying Security Groups (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0090187680.html", + "product_code":"ecs", + "code":"182", + "des":"This API is used to create a security group.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Creating a Security G", + "doc_type":"api", + "kw":"Creating a Security Group (Discarded),Security Group Management (OpenStack Nova APIs),API Reference", + "title":"Creating a Security Group (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0090187681.html", + "product_code":"ecs", + "code":"183", + "des":"This API is used to query details about a security group.This API can only query the inbound security group rules. To query the outbound security group rules, see \"Queryi", + "doc_type":"api", + "kw":"Querying Details About a Security Group (Discarded),Security Group Management (OpenStack Nova APIs),", + "title":"Querying Details About a Security Group (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817700.html", + "product_code":"ecs", + "code":"184", + "des":"This API is used to update a security group.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Updating a Security G", + "doc_type":"api", + "kw":"Updating a Security Group (Discarded),Security Group Management (OpenStack Nova APIs),API Reference", + "title":"Updating a Security Group (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817701.html", + "product_code":"ecs", + "code":"185", + "des":"This API is used to delete a security group.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Deleting a Security G", + "doc_type":"api", + "kw":"Deleting a Security Group (Discarded),Security Group Management (OpenStack Nova APIs),API Reference", + "title":"Deleting a Security Group (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817703.html", + "product_code":"ecs", + "code":"186", + "des":"This API is used to create a security group rule.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Creating a Secur", + "doc_type":"api", + "kw":"Creating a Security Group Rule (Discarded),Security Group Management (OpenStack Nova APIs),API Refer", + "title":"Creating a Security Group Rule (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817704.html", + "product_code":"ecs", + "code":"187", + "des":"This API is used to delete a security group rule.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Deleting a Secur", + "doc_type":"api", + "kw":"Deleting a Security Group Rule (Discarded),Security Group Management (OpenStack Nova APIs),API Refer", + "title":"Deleting a Security Group Rule (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0267427881.html", + "product_code":"ecs", + "code":"188", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Disk Management (OpenStack Nova APIs)", + "title":"Disk Management (OpenStack Nova APIs)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817709.html", + "product_code":"ecs", + "code":"189", + "des":"This API is used to query brief information about disks.This API has been discarded. Use the EVS API \"Querying EVS Disks (OpenStack Cinder API v2)\".GET /v2/{project_id}/o", + "doc_type":"api", + "kw":"Querying Brief Information About Disks (Discarded),Disk Management (OpenStack Nova APIs),API Referen", + "title":"Querying Brief Information About Disks (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817710.html", + "product_code":"ecs", + "code":"190", + "des":"This API is used to query detailed information about disks.This API has been discarded. Use the EVS API \"Querying Details About All Disks (OpenStack Cinder API v2)\".GET /", + "doc_type":"api", + "kw":"Querying Detailed Information About Disks (Discarded),Disk Management (OpenStack Nova APIs),API Refe", + "title":"Querying Detailed Information About Disks (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817711.html", + "product_code":"ecs", + "code":"191", + "des":"This API is used to query information about a specified disk.This API has been discarded. Use the EVS API \"Querying Details About a Disk (OpenStack Cinder API v2)\".GET /v", + "doc_type":"api", + "kw":"Querying Information About a Disk (Discarded),Disk Management (OpenStack Nova APIs),API Reference", + "title":"Querying Information About a Disk (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817708.html", + "product_code":"ecs", + "code":"192", + "des":"This API is used to create a disk.This API has been discarded. Use the EVS API \"Creating EVS Disks (OpenStack Cinder API v2)\".POST /v2/{project_id}/os-volumesPOST /v2.1/{", + "doc_type":"api", + "kw":"Creating a Disk (Discarded),Disk Management (OpenStack Nova APIs),API Reference", + "title":"Creating a Disk (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817712.html", + "product_code":"ecs", + "code":"193", + "des":"This API is used to delete a specified disk.This API has been discarded. Use the EVS API \"Deleting an EVS Disk (OpenStack Cinder API v2)\".If the volume has a snapshot not", + "doc_type":"api", + "kw":"Deleting a Disk (Discarded),Disk Management (OpenStack Nova APIs),API Reference", + "title":"Deleting a Disk (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817682.html", + "product_code":"ecs", + "code":"194", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Floating IP Address Management (OpenStack Nova APIs)", + "title":"Floating IP Address Management (OpenStack Nova APIs)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817718.html", + "product_code":"ecs", + "code":"195", + "des":"This API is used to bind a floating IP address for an ECS.This API has been discarded. Since microversion 2.44, the system will return error 404 when you call this API. Y", + "doc_type":"api", + "kw":"Binding a Floating IP Address (Discarded),Floating IP Address Management (OpenStack Nova APIs),API R", + "title":"Binding a Floating IP Address (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065817719.html", + "product_code":"ecs", + "code":"196", + "des":"This API is used to unbind a floating IP address from an ECS.This API has been discarded. Since microversion 2.44, the system will return error 404 when you call this API", + "doc_type":"api", + "kw":"Unbinding a Floating IP Address (Discarded),Floating IP Address Management (OpenStack Nova APIs),API", + "title":"Unbinding a Floating IP Address (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820816.html", + "product_code":"ecs", + "code":"197", + "des":"This API is used to assign a floating IP address.This API has been discarded. Use the API described in \"Assigning a Floating IP Address\".You need to obtain a network reso", + "doc_type":"api", + "kw":"Assigning a Floating IP Address (Discarded),Floating IP Address Management (OpenStack Nova APIs),API", + "title":"Assigning a Floating IP Address (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820817.html", + "product_code":"ecs", + "code":"198", + "des":"This API is used to query floating IP addresses.This API has been discarded. Use the API described in \"Querying Floating IP Addresses\".GET /v2/{project_id}/os-floating-ip", + "doc_type":"api", + "kw":"Querying Floating IP Addresses (Discarded),Floating IP Address Management (OpenStack Nova APIs),API ", + "title":"Querying Floating IP Addresses (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820818.html", + "product_code":"ecs", + "code":"199", + "des":"This API is used to query the details about a floating IP address based on the ID of the IP address.This API has been discarded. Use the API described in \"Querying a Floa", + "doc_type":"api", + "kw":"Querying Details About a Floating IP Address (Discarded),Floating IP Address Management (OpenStack N", + "title":"Querying Details About a Floating IP Address (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820819.html", + "product_code":"ecs", + "code":"200", + "des":"This API is used to release a floating IP address.This API has been discarded. Use the API described in \"Deleting a Floating IP Address\".DELETE /v2/{project_id}/os-floati", + "doc_type":"api", + "kw":"Releasing a Floating IP Address (Discarded),Floating IP Address Management (OpenStack Nova APIs),API", + "title":"Releasing a Floating IP Address (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065820820.html", + "product_code":"ecs", + "code":"201", + "des":"This API is used to query floating IP address pools.There is only one network resource pool that can be queried through this API by tenants in Open Telekom Cloud live net", + "doc_type":"api", + "kw":"Querying Floating IP Address Pools (Discarded),Floating IP Address Management (OpenStack Nova APIs),", + "title":"Querying Floating IP Address Pools (Discarded)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067588.html", + "product_code":"ecs", + "code":"202", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Appendix", + "title":"Appendix", + "githuburl":"" + }, + { + "uri":"en-us_topic_0065827313.html", + "product_code":"ecs", + "code":"203", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"HTTP Status Codes,Appendix,API Reference", + "title":"HTTP Status Codes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067717.html", + "product_code":"ecs", + "code":"204", + "des":"An error code returned by an API does not correspond to one error message. The following table lists only common error messages.Most ECS APIs are asynchronous. Some error", + "doc_type":"api", + "kw":"Error Codes,Appendix,API Reference", + "title":"Error Codes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0178420672.html", + "product_code":"ecs", + "code":"205", + "des":"An ECS can be in one of the following statuses specified in ECS APIs:status: specifies an ECS status, which is generated by OS-EXT-STS:vm_state and OS-EXT-STS:task_state.", + "doc_type":"api", + "kw":"ECS Statuses,Appendix,API Reference", + "title":"ECS Statuses", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067718.html", + "product_code":"ecs", + "code":"206", + "des":"For details about network APIs, see the Virtual Private Cloud API Reference.", + "doc_type":"api", + "kw":"Network APIs,Appendix,API Reference", + "title":"Network APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0022067719.html", + "product_code":"ecs", + "code":"207", + "des":"This section describes metrics reported by ECS to Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metrics of the", + "doc_type":"api", + "kw":"ECS Monitoring Metrics,Appendix,API Reference", + "title":"ECS Monitoring Metrics", + "githuburl":"" + }, + { + "uri":"en-us_topic_0024734483.html", + "product_code":"ecs", + "code":"208", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Change History,API Reference", + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/ecs/api-ref/CLASS.TXT.json b/ecs/api-ref/CLASS.TXT.json new file mode 100644 index 000000000..9cb388001 --- /dev/null +++ b/ecs/api-ref/CLASS.TXT.json @@ -0,0 +1,1874 @@ +[ + { + "desc":"Public cloud APIs comply with the RESTful API design principles. REST-based Web services are organized into resources. Each resource is identified by one or more Uniform ", + "product_code":"ecs", + "title":"API Usage Guidelines", + "uri":"en-us_topic_0020805967.html", + "doc_type":"api", + "p_code":"", + "code":"1" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"APIs (Recommended)", + "uri":"en-us_topic_0124385011.html", + "doc_type":"api", + "p_code":"", + "code":"2" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Lifecycle Management", + "uri":"en-us_topic_0020212657.html", + "doc_type":"api", + "p_code":"2", + "code":"3" + }, + { + "desc":"This API is used to create one or more ECSs.This is an asynchronous API. After the ECS creation request is issued, the system will return job_id. The ECS creation is stil", + "product_code":"ecs", + "title":"Creating an ECS", + "uri":"en-us_topic_0020212668.html", + "doc_type":"api", + "p_code":"3", + "code":"4" + }, + { + "desc":"This API is used to delete ECSs based on a specified ECS ID list.You can delete a single ECS or multiple ECSs in a batch. A maximum of 1000 ECSs can be deleted in a batch", + "product_code":"ecs", + "title":"Deleting ECSs", + "uri":"en-us_topic_0020212679.html", + "doc_type":"api", + "p_code":"3", + "code":"5" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Status Management", + "uri":"en-us_topic_0020212691.html", + "doc_type":"api", + "p_code":"2", + "code":"6" + }, + { + "desc":"This API is used to reinstall an ECS OS. During the system disk reinstallation using the original image, the data disks of the ECS remain unchanged.After this API is call", + "product_code":"ecs", + "title":"Reinstalling an ECS OS (Using an Image with Cloud-Init Installed)", + "uri":"en-us_topic_0067876349.html", + "doc_type":"api", + "p_code":"6", + "code":"7" + }, + { + "desc":"This API is used to change an ECS OS. During the system disk reinstallation using a new image, the data disks of the ECS remain unchanged.After this API is called, the sy", + "product_code":"ecs", + "title":"Changing an ECS OS (Using an Image with Cloud-Init Installed)", + "uri":"en-us_topic_0067876971.html", + "doc_type":"api", + "p_code":"6", + "code":"8" + }, + { + "desc":"This API is used to query automatic recovery configured for an ECS.GET /v1/{project_id}/cloudservers/{server_id}/autorecoveryTable 1 describes the parameters in the URI.P", + "product_code":"ecs", + "title":"Querying Automatic Recovery of an ECS", + "uri":"en-us_topic_0067600148.html", + "doc_type":"api", + "p_code":"6", + "code":"9" + }, + { + "desc":"An ECS deployed on a DeH can be migrated to another DeH.An ECS deployed on a DeH can be migrated to a public resource pool.An ECS deployed in a public resource pool can b", + "product_code":"ecs", + "title":"Cold Migrating an ECS", + "uri":"en-us_topic_0132905656.html", + "doc_type":"api", + "p_code":"6", + "code":"10" + }, + { + "desc":"ECS specifications can be modified, for example, upgrading the vCPUs and memory, to meet service requirements. This API is used to modify ECS specifications.An ECS flavor", + "product_code":"ecs", + "title":"Modifying the Specifications of an ECS", + "uri":"en-us_topic_0020212653.html", + "doc_type":"api", + "p_code":"6", + "code":"11" + }, + { + "desc":"This API is used to add an ECS to the monitoring list.Ceilometer periodically collects monitoring data on the ECSs added to the monitoring list and reports the data to Cl", + "product_code":"ecs", + "title":"Adding an ECS to the Monitoring List", + "uri":"en-us_topic_0081529857.html", + "doc_type":"api", + "p_code":"6", + "code":"12" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Batch Operations", + "uri":"en-us_topic_0167816247.html", + "doc_type":"api", + "p_code":"2", + "code":"13" + }, + { + "desc":"This API is used to start ECSs in a batch based on specified ECS IDs. A maximum of 1000 ECSs can be started at a time.POST /v1/{project_id}/cloudservers/actionTable 1 des", + "product_code":"ecs", + "title":"Starting ECSs in a Batch", + "uri":"en-us_topic_0020212207.html", + "doc_type":"api", + "p_code":"13", + "code":"14" + }, + { + "desc":"This API is used to restart ECSs in a batch based on specified ECS IDs. A maximum of 1000 ECSs can be restarted at a time.POST /v1/{project_id}/cloudservers/actionTable 1", + "product_code":"ecs", + "title":"Restarting ECSs in a Batch", + "uri":"en-us_topic_0020212649.html", + "doc_type":"api", + "p_code":"13", + "code":"15" + }, + { + "desc":"This API is used to stop ECSs in a batch based on the specified ECS ID list. A maximum of 1000 ECSs can be stopped at a time.POST /v1/{project_id}/cloudservers/actionTabl", + "product_code":"ecs", + "title":"Stopping ECSs in a Batch", + "uri":"en-us_topic_0020212651.html", + "doc_type":"api", + "p_code":"13", + "code":"16" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Flavor Management", + "uri":"en-us_topic_0112708160.html", + "doc_type":"api", + "p_code":"2", + "code":"17" + }, + { + "desc":"This API is used to query details about ECS flavors and extended flavor information.GET /v1/{project_id}/cloudservers/flavors?availability_zone={availability_zone}Table 1", + "product_code":"ecs", + "title":"Querying Details About Flavors and Extended Flavor Information", + "uri":"en-us_topic_0020212656.html", + "doc_type":"api", + "p_code":"17", + "code":"18" + }, + { + "desc":"An ECS flavor cannot be changed to certain flavors. This API is used to query the target flavors to which a specified ECS flavor can be changed.GET /v2.1/{project_id}/res", + "product_code":"ecs", + "title":"Querying the Target Flavors to Which an ECS Flavor Can Be Changed", + "uri":"en-us_topic_0110472767.html", + "doc_type":"api", + "p_code":"17", + "code":"19" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"NIC Management", + "uri":"en-us_topic_0124385012.html", + "doc_type":"api", + "p_code":"2", + "code":"20" + }, + { + "desc":"This API is used to add one or multiple NICs to an ECS.POST /v1/{project_id}/cloudservers/{server_id}/nicsTable 1 describes the parameters in the URI.Parameter descriptio", + "product_code":"ecs", + "title":"Adding NICs to an ECS in a Batch", + "uri":"en-us_topic_0020212663.html", + "doc_type":"api", + "p_code":"20", + "code":"21" + }, + { + "desc":"This API is used to uninstall and delete one or multiple NICs from an ECS.The primary NIC of an ECS has routing rules configured and cannot be deleted.POST /v1/{project_i", + "product_code":"ecs", + "title":"Deleting NICs from an ECS in a Batch", + "uri":"en-us_topic_0020212665.html", + "doc_type":"api", + "p_code":"20", + "code":"22" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Disk Management", + "uri":"en-us_topic_0111860831.html", + "doc_type":"api", + "p_code":"2", + "code":"23" + }, + { + "desc":"This API is used to attach a disk to an ECS.POST /v1/{project_id}/cloudservers/{server_id}/attachvolumeTable 1 describes the parameters in the URI.Parameter descriptionPa", + "product_code":"ecs", + "title":"Attaching a Disk to an ECS", + "uri":"en-us_topic_0022472987.html", + "doc_type":"api", + "p_code":"23", + "code":"24" + }, + { + "desc":"This API is used to detach an EVS disk from an ECS.DELETE /v1/{project_id}/cloudservers/{server_id}/detachvolume/{volume_id}?delete_flag=0Table 1 describes the parameters", + "product_code":"ecs", + "title":"Detaching an EVS Disk from an ECS", + "uri":"en-us_topic_0022472988.html", + "doc_type":"api", + "p_code":"23", + "code":"25" + }, + { + "desc":"This API is used to query disk attachment of an ECS.GET /v2.1/servers/{server_id}/block_deviceTable 1 describes the parameters in the URI.Parameter descriptionParameterMa", + "product_code":"ecs", + "title":"Querying Disk Attachment of an ECS", + "uri":"en-us_topic_0101860613.html", + "doc_type":"api", + "p_code":"23", + "code":"26" + }, + { + "desc":"This API is used to query a disk attached to an ECS.GET /v2.1/servers/{server_id}/block_device/{volume_id}Table 1 describes the parameters in the URI.Parameter descriptio", + "product_code":"ecs", + "title":"Querying a Single Disk Attached to an ECS", + "uri":"en-us_topic_0101860614.html", + "doc_type":"api", + "p_code":"23", + "code":"27" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tenant Quota Management", + "uri":"en-us_topic_0020212673.html", + "doc_type":"api", + "p_code":"2", + "code":"28" + }, + { + "desc":"This API is used to query the quotas of all resources for a specified tenant, including used quotas.GET /v1/{project_id}/cloudservers/limitsTable 1 describes the paramete", + "product_code":"ecs", + "title":"Querying Tenant Quotas", + "uri":"en-us_topic_0020212674.html", + "doc_type":"api", + "p_code":"28", + "code":"29" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Task Status Management", + "uri":"en-us_topic_0022225397.html", + "doc_type":"api", + "p_code":"2", + "code":"30" + }, + { + "desc":"This API is used to query the execution status of an asynchronous request task.After an asynchronous request task is issued, for example, creating or deleting an ECS, per", + "product_code":"ecs", + "title":"Querying Task Execution Status", + "uri":"en-us_topic_0022225398.html", + "doc_type":"api", + "p_code":"30", + "code":"31" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tag Management", + "uri":"en-us_topic_0108433461.html", + "doc_type":"api", + "p_code":"2", + "code":"32" + }, + { + "desc":"Tag management APIs are classified as the APIs for one-dimensional (1D) tags and the APIs for two-dimensional (2D) tags.A 1D tag contains a string. All APIs for 1D tags a", + "product_code":"ecs", + "title":"Tag Types", + "uri":"en-us_topic_0167811962.html", + "doc_type":"api", + "p_code":"32", + "code":"33" + }, + { + "desc":"This API is used to add tags to a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.An ECS allows a maximum of 10", + "product_code":"ecs", + "title":"Adding Tags to an ECS in a Batch", + "uri":"en-us_topic_0167811963.html", + "doc_type":"api", + "p_code":"32", + "code":"34" + }, + { + "desc":"This API is used to delete tags from a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.This API is idempotent. ", + "product_code":"ecs", + "title":"Deleting Tags from an ECS in a Batch", + "uri":"en-us_topic_0167811964.html", + "doc_type":"api", + "p_code":"32", + "code":"35" + }, + { + "desc":"This API is used to filter ECSs by tag and obtain all tags of an ECS.POST /v1/{project_id}/servers/resource_instances/actionTable 1 describes the parameters in the URI.Pa", + "product_code":"ecs", + "title":"Querying ECSs by Tag", + "uri":"en-us_topic_0102606095.html", + "doc_type":"api", + "p_code":"32", + "code":"36" + }, + { + "desc":"Projects are used to group and isolate OpenStack resources, which include computing, storage, and network resources. A project can be a department or a team. Multiple pro", + "product_code":"ecs", + "title":"Querying Project Tags", + "uri":"en-us_topic_0167811966.html", + "doc_type":"api", + "p_code":"32", + "code":"37" + }, + { + "desc":"This API is used to query the tags of a specified ECS.The Tag Management Service (TMS) uses this API to query all tags of an ECS.GET /v1/{project_id}/cloudservers/{server", + "product_code":"ecs", + "title":"Querying Tags of an ECS", + "uri":"en-us_topic_0167811967.html", + "doc_type":"api", + "p_code":"32", + "code":"38" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Group Management", + "uri":"en-us_topic_0161097717.html", + "doc_type":"api", + "p_code":"2", + "code":"39" + }, + { + "desc":"This API is used to create an ECS group.Only anti-affinity policies are supported.POST /v1/{project_id}/cloudservers/os-server-groupsTable 1 describes the parameters in t", + "product_code":"ecs", + "title":"Creating an ECS Group", + "uri":"en-us_topic_0161097718.html", + "doc_type":"api", + "p_code":"39", + "code":"40" + }, + { + "desc":"This API is used to delete an ECS group.DELETE /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}Table 1 describes the parameters in the URI.Parameter descr", + "product_code":"ecs", + "title":"Deleting an ECS Group", + "uri":"en-us_topic_0161097719.html", + "doc_type":"api", + "p_code":"39", + "code":"41" + }, + { + "desc":"This API is used to add an ECS to an ECS group. The system automatically deploys the newly added ECS to a host that is different from the ones accommodating other ECSs in", + "product_code":"ecs", + "title":"Adding an ECS to an ECS Group", + "uri":"en-us_topic_0133622595.html", + "doc_type":"api", + "p_code":"39", + "code":"42" + }, + { + "desc":"This API is used to remove an ECS from an ECS group. After being removed, the anti-affinity policy will not take effect on this ECS and other ECSs in the same ECS group.O", + "product_code":"ecs", + "title":"Removing an ECS from an ECS Group", + "uri":"en-us_topic_0133622596.html", + "doc_type":"api", + "p_code":"39", + "code":"43" + }, + { + "desc":"This API is used to query ECS groups.GET /v1/{project_id}/cloudservers/os-server-groups?limit={limit}&marker={marker}Table 1 describes the parameters in the URI.Path para", + "product_code":"ecs", + "title":"Querying ECS Groups", + "uri":"en-us_topic_0175597846.html", + "doc_type":"api", + "p_code":"39", + "code":"44" + }, + { + "desc":"This API is used to query details bout an ECS group.GET /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}Table 1 describes the parameters in the URI.Parame", + "product_code":"ecs", + "title":"Querying Details About an ECS Group", + "uri":"en-us_topic_0175597847.html", + "doc_type":"api", + "p_code":"39", + "code":"45" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"OpenStack Nova APIs", + "uri":"en-us_topic_0124385014.html", + "doc_type":"api", + "p_code":"", + "code":"46" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"API Version Query", + "uri":"en-us_topic_0065792792.html", + "doc_type":"api", + "p_code":"46", + "code":"47" + }, + { + "desc":"This API is used to query all available Nova versions.To support function extension, Nova APIs can be distinguished by version. There are two types of versions:Major vers", + "product_code":"ecs", + "title":"Querying All API Versions", + "uri":"en-us_topic_0065792793.html", + "doc_type":"api", + "p_code":"47", + "code":"48" + }, + { + "desc":"This API is used to query the information of a specified version.To support function extension, Nova APIs can be distinguished by version. There are two types of versions", + "product_code":"ecs", + "title":"Querying a Specified API Version", + "uri":"en-us_topic_0065792794.html", + "doc_type":"api", + "p_code":"47", + "code":"49" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Lifecycle Management", + "uri":"en-us_topic_0124385015.html", + "doc_type":"api", + "p_code":"46", + "code":"50" + }, + { + "desc":"This API is used to create ECS.This API does not support automatic rollback after creating an ECS failed. If automatic rollback is required, call the API POST /v1/{projec", + "product_code":"ecs", + "title":"Creating an ECS", + "uri":"en-us_topic_0068473331.html", + "doc_type":"api", + "p_code":"50", + "code":"51" + }, + { + "desc":"This API is used to modify ECS information. Only the name and description of an ECS can be modified.PUT /v2.1/{project_id}/servers/{server_id}PUT /v2/{project_id}/servers", + "product_code":"ecs", + "title":"Modifying ECS Information", + "uri":"en-us_topic_0020212692.html", + "doc_type":"api", + "p_code":"50", + "code":"52" + }, + { + "desc":"This API is used to delete an ECS.When an ECS is deleted, all NICs attached to the ECS through the OpenStack Nova API will be deleted.DELETE /v2.1/{project_id}/servers/{s", + "product_code":"ecs", + "title":"Deleting an ECS", + "uri":"en-us_topic_0025560296.html", + "doc_type":"api", + "p_code":"50", + "code":"53" + }, + { + "desc":"This API is used to query ECSs.GET /v2.1/{project_id}/servers?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker", + "product_code":"ecs", + "title":"Querying ECSs", + "uri":"en-us_topic_0020212688.html", + "doc_type":"api", + "p_code":"50", + "code":"54" + }, + { + "desc":"This API is used to query details about ECSs.GET /v2.1/{project_id}/servers/detail?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}", + "product_code":"ecs", + "title":"Querying Details About ECSs", + "uri":"en-us_topic_0020212689.html", + "doc_type":"api", + "p_code":"50", + "code":"55" + }, + { + "desc":"This API is used to query details about an ECS by ECS ID.GET /v2.1/{project_id}/servers/{server_id}GET /v2/{project_id}/servers/{server_id}Table 1 describes the parameter", + "product_code":"ecs", + "title":"Querying Details About ECSs", + "uri":"en-us_topic_0020212690.html", + "doc_type":"api", + "p_code":"50", + "code":"56" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Status Management", + "uri":"en-us_topic_0124385016.html", + "doc_type":"api", + "p_code":"46", + "code":"57" + }, + { + "desc":"This API is used to start a single ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes the parameters ", + "product_code":"ecs", + "title":"Starting an ECS", + "uri":"en-us_topic_0020212648.html", + "doc_type":"api", + "p_code":"57", + "code":"58" + }, + { + "desc":"This API is used to restart a single ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes the parameter", + "product_code":"ecs", + "title":"Restarting an ECS", + "uri":"en-us_topic_0020212650.html", + "doc_type":"api", + "p_code":"57", + "code":"59" + }, + { + "desc":"This API is used to stop a single ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes the parameters i", + "product_code":"ecs", + "title":"Stopping an ECS", + "uri":"en-us_topic_0020212652.html", + "doc_type":"api", + "p_code":"57", + "code":"60" + }, + { + "desc":"This API is used to lock an ECS.You are only allowed to lock your own ECSs. After ECSs are locked, you will not be able to perform management operations on them, includin", + "product_code":"ecs", + "title":"Locking an ECS", + "uri":"en-us_topic_0065817690.html", + "doc_type":"api", + "p_code":"57", + "code":"61" + }, + { + "desc":"This API is used to unlock an ECS.After an ECS is unlocked, common users are allowed to manage the ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project", + "product_code":"ecs", + "title":"Unlocking an ECS", + "uri":"en-us_topic_0065817691.html", + "doc_type":"api", + "p_code":"57", + "code":"62" + }, + { + "desc":"This API is used to rebuild an ECS.You can use the original image or another image to rebuild an ECS. This API supports different OSs.This API is native from the communit", + "product_code":"ecs", + "title":"Rebuilding an ECS", + "uri":"en-us_topic_0065817688.html", + "doc_type":"api", + "p_code":"57", + "code":"63" + }, + { + "desc":"This API is used to create an image using an ECS. After the creation, you can use this image to create ECSs.Images created using an ECS are stored on storage nodes as sna", + "product_code":"ecs", + "title":"Creating an Image Using an ECS", + "uri":"en-us_topic_0065817694.html", + "doc_type":"api", + "p_code":"57", + "code":"64" + }, + { + "desc":"This API is used to modify the specifications of an ECS.For a running ECS, the system will automatically stop the ECS, copy the ECS data to the target node, which can be ", + "product_code":"ecs", + "title":"Modifying the Specifications of an ECS", + "uri":"en-us_topic_0028714261.html", + "doc_type":"api", + "p_code":"57", + "code":"65" + }, + { + "desc":"This API is used to confirm the specifications modification of an ECS.Before calling this API, ensure that the ECS status (which can be queried using the API for querying", + "product_code":"ecs", + "title":"Confirming ECS Specifications Modification", + "uri":"en-us_topic_0028714262.html", + "doc_type":"api", + "p_code":"57", + "code":"66" + }, + { + "desc":"This API is used to roll back ECS specifications modification.After the rollback, the data modified during migration will be lost.Before calling this API, ensure that the", + "product_code":"ecs", + "title":"Rolling Back ECS Specifications Modification", + "uri":"en-us_topic_0028714263.html", + "doc_type":"api", + "p_code":"57", + "code":"67" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Network Management", + "uri":"en-us_topic_0031167513.html", + "doc_type":"api", + "p_code":"46", + "code":"68" + }, + { + "desc":"This API is used to query the networks available to a tenant.You can query only the network ID and label (network name). Other fields are all null.GET /v2.1/{project_id}/", + "product_code":"ecs", + "title":"Querying Networks", + "uri":"en-us_topic_0031169828.html", + "doc_type":"api", + "p_code":"68", + "code":"69" + }, + { + "desc":"This API is used to query the networks of an ECS.NoneGET /v2.1/{project_id}/servers/{server_id}/ipsGET /v2/{project_id}/servers/{server_id}/ipsTable 1 describes the param", + "product_code":"ecs", + "title":"Querying the Networks of a Specified ECS", + "uri":"en-us_topic_0031169058.html", + "doc_type":"api", + "p_code":"68", + "code":"70" + }, + { + "desc":"This API is used to query the specified network of an ECS.NoneGET /v2.1/{project_id}/servers/{server_id}/ips/{networkName}GET /v2/{project_id}/servers/{server_id}/ips/{ne", + "product_code":"ecs", + "title":"Querying the Specified Network of an ECS", + "uri":"en-us_topic_0031169059.html", + "doc_type":"api", + "p_code":"68", + "code":"71" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Security Group Management", + "uri":"en-us_topic_0031167514.html", + "doc_type":"api", + "p_code":"46", + "code":"72" + }, + { + "desc":"This API is used to add an ECS to a security group.You are suggested to add an ECS to a maximum of five security groups.POST /v2.1/{project_id}/servers/{server_id}/action", + "product_code":"ecs", + "title":"Adding a Security Group", + "uri":"en-us_topic_0067161469.html", + "doc_type":"api", + "p_code":"72", + "code":"73" + }, + { + "desc":"This API is used to delete a security group for an ECS.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes", + "product_code":"ecs", + "title":"Deleting a Security Group", + "uri":"en-us_topic_0067161717.html", + "doc_type":"api", + "p_code":"72", + "code":"74" + }, + { + "desc":"This API is used to query security groups for a specified ECS.GET /v2.1/{project_id}/servers/{server_id}/os-security-groupsGET /v2/{project_id}/servers/{server_id}/os-sec", + "product_code":"ecs", + "title":"Querying Security Groups for a Specified ECS", + "uri":"en-us_topic_0065817702.html", + "doc_type":"api", + "p_code":"72", + "code":"75" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Flavor Management", + "uri":"en-us_topic_0020212655.html", + "doc_type":"api", + "p_code":"46", + "code":"76" + }, + { + "desc":"This API is used to query available ECS flavors. After receiving the request, Nova uses nova-api to view the flavors from the database.GET /v2.1/{project_id}/flavors?minD", + "product_code":"ecs", + "title":"Querying ECS Flavors", + "uri":"en-us_topic_0065817705.html", + "doc_type":"api", + "p_code":"76", + "code":"77" + }, + { + "desc":"This API is used to query details about ECS flavors.GET /v2.1/{project_id}/flavors/detail?minDisk={minDisk}&minRam={minRam}&sort_key={sort_key}&sort_dir={sort_dir}GET /v2", + "product_code":"ecs", + "title":"Querying Details About ECS Flavors", + "uri":"en-us_topic_0020212658.html", + "doc_type":"api", + "p_code":"76", + "code":"78" + }, + { + "desc":"This API is used to query the details about an ECS flavor based on the flavor ID.GET /v2.1/{project_id}/flavors/{flavor_id}GET /v2/{project_id}/flavors/{flavor_id}Table 1", + "product_code":"ecs", + "title":"Querying Details About an ECS Flavor", + "uri":"en-us_topic_0020212659.html", + "doc_type":"api", + "p_code":"76", + "code":"79" + }, + { + "desc":"This API is used to query the extra_specs value for a specified ECS flavor.GET /v2.1/{project_id}/flavors/{flavor_id}/os-extra_specsGET /v2/{project_id}/flavors/{flavor_i", + "product_code":"ecs", + "title":"Querying the extra_specs Value for an ECS Flavor", + "uri":"en-us_topic_0065817706.html", + "doc_type":"api", + "p_code":"76", + "code":"80" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"NIC Management", + "uri":"en-us_topic_0020212660.html", + "doc_type":"api", + "p_code":"46", + "code":"81" + }, + { + "desc":"This API is used to query information about ECS NICs.GET /v2.1/{project_id}/servers/{server_id}/os-interfaceGET /v2/{project_id}/servers/{server_id}/os-interfaceTable 1 d", + "product_code":"ecs", + "title":"Querying ECS NICs", + "uri":"en-us_topic_0020212661.html", + "doc_type":"api", + "p_code":"81", + "code":"82" + }, + { + "desc":"This API is used to query NICs of an ECS based on the NIC ID.GET /v2.1/{project_id}/servers/{server_id}/os-interface/{id}GET /v2/{project_id}/servers/{server_id}/os-inter", + "product_code":"ecs", + "title":"Querying NICs of an ECS", + "uri":"en-us_topic_0020212662.html", + "doc_type":"api", + "p_code":"81", + "code":"83" + }, + { + "desc":"This API is used to add a NIC to an ECS.POST /v2.1/{project_id}/servers/{server_id}/os-interfacePOST /v2/{project_id}/servers/{server_id}/os-interfaceTable 1 describes th", + "product_code":"ecs", + "title":"Adding a NIC to an ECS", + "uri":"en-us_topic_0020212664.html", + "doc_type":"api", + "p_code":"81", + "code":"84" + }, + { + "desc":"This API is used to delete a NIC from an ECS based on the port ID.The primary NIC of an ECS has routing rules configured and cannot be deleted.When an ECS NIC is detached", + "product_code":"ecs", + "title":"Deleting a NIC from an ECS", + "uri":"en-us_topic_0020212666.html", + "doc_type":"api", + "p_code":"81", + "code":"85" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Disk Management", + "uri":"en-us_topic_0020212667.html", + "doc_type":"api", + "p_code":"46", + "code":"86" + }, + { + "desc":"This API is used to query the disks attached to an ECS.GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachmentsGET /v2/{project_id}/servers/{server_id}/os-volume_", + "product_code":"ecs", + "title":"Querying Disks Attached to an ECS", + "uri":"en-us_topic_0020212671.html", + "doc_type":"api", + "p_code":"86", + "code":"87" + }, + { + "desc":"This API is used to query a disk attached to an ECS based on the disk ID.GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}GET /v2/{project_id}/", + "product_code":"ecs", + "title":"Querying a Disk Attached to an ECS", + "uri":"en-us_topic_0020212672.html", + "doc_type":"api", + "p_code":"86", + "code":"88" + }, + { + "desc":"This API is used to attach a disk to an ECS.If you attach a bootable disk to an ECS, you must specify the disk drive letter.A disk created using a backup cannot be attach", + "product_code":"ecs", + "title":"Attaching a Disk to an ECS", + "uri":"en-us_topic_0031167350.html", + "doc_type":"api", + "p_code":"86", + "code":"89" + }, + { + "desc":"This API is used to detach a disk from an ECS.The system disk, the device name of which is /dev/sda, and user disks can be detached from an ECS only when the ECS is stopp", + "product_code":"ecs", + "title":"Detaching a Disk from an ECS", + "uri":"en-us_topic_0065817707.html", + "doc_type":"api", + "p_code":"86", + "code":"90" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Metadata Management", + "uri":"en-us_topic_0065817681.html", + "doc_type":"api", + "p_code":"46", + "code":"91" + }, + { + "desc":"This API is used to update ECS metadata.If the metadata does not contain the target field, the field is automatically added.If the metadata contains the target field, the", + "product_code":"ecs", + "title":"Updating ECS Metadata", + "uri":"en-us_topic_0025560298.html", + "doc_type":"api", + "p_code":"91", + "code":"92" + }, + { + "desc":"This API is used to configure ECS metadata.When you call this API, all the metadata of this ECS will be deleted, and the ECS uses the value configured in the request.An E", + "product_code":"ecs", + "title":"Configuring ECS Metadata", + "uri":"en-us_topic_0077847902.html", + "doc_type":"api", + "p_code":"91", + "code":"93" + }, + { + "desc":"This API is used to delete specified ECS metadata.An ECS must be in active, stopped, paused, or suspended state, which is specified by OS-EXT-STS:vm_state.DELETE /v2.1/{p", + "product_code":"ecs", + "title":"Deleting Specified ECS Metadata", + "uri":"en-us_topic_0025560299.html", + "doc_type":"api", + "p_code":"91", + "code":"94" + }, + { + "desc":"This API is used to query ECS metadata.GET /v2.1/{project_id}/servers/{server_id}/metadataGET /v2/{project_id}/servers/{server_id}/metadataTable 1 describes the parameter", + "product_code":"ecs", + "title":"Querying ECS Metadata", + "uri":"en-us_topic_0065817713.html", + "doc_type":"api", + "p_code":"91", + "code":"95" + }, + { + "desc":"This API is used to obtain ECS metadata with a specified key.GET /v2.1/{project_id}/servers/{server_id}/metadata/{key}GET /v2/{project_id}/servers/{server_id}/metadata/{k", + "product_code":"ecs", + "title":"Obtaining ECS Metadata with a Specified Key", + "uri":"en-us_topic_0065817714.html", + "doc_type":"api", + "p_code":"91", + "code":"96" + }, + { + "desc":"This API is used to modify the ECS metadata with a specified key.If the metadata does not contain the target field, the field is automatically added.If the metadata conta", + "product_code":"ecs", + "title":"Modifying ECS Metadata with a Specified Key", + "uri":"en-us_topic_0025567413.html", + "doc_type":"api", + "p_code":"91", + "code":"97" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tenant Quota Management", + "uri":"en-us_topic_0111860833.html", + "doc_type":"api", + "p_code":"46", + "code":"98" + }, + { + "desc":"This API is used to query tenant quota limits.Tenants are only allowed to query their own quota limits.GET /v2.1/{project_id}/limits?project_id={project_id}GET /v2/{proje", + "product_code":"ecs", + "title":"Querying Tenant Quota Limits", + "uri":"en-us_topic_0065817717.html", + "doc_type":"api", + "p_code":"98", + "code":"99" + }, + { + "desc":"This API is used to query quotas, including ECSs, vCPUs, and memory.This API provides the user_id parameter for obtaining the quota configuration of a specified user.GET ", + "product_code":"ecs", + "title":"Querying Tenant Quotas", + "uri":"en-us_topic_0067298110.html", + "doc_type":"api", + "p_code":"98", + "code":"100" + }, + { + "desc":"This API is used to query default quotas.GET /v2.1/{project_id}/os-quota-sets/{project_id}/defaultsGET /v2/{project_id}/os-quota-sets/{project_id}/defaultsTable 1 describ", + "product_code":"ecs", + "title":"Querying Default Quotas", + "uri":"en-us_topic_0065817716.html", + "doc_type":"api", + "p_code":"98", + "code":"101" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Key and Password Management", + "uri":"en-us_topic_0020212675.html", + "doc_type":"api", + "p_code":"46", + "code":"102" + }, + { + "desc":"This API is used to query SSH key pairs.GET /v2.1/{project_id}/os-keypairsGET /v2/{project_id}/os-keypairsTable 1 describes the parameters in the URI.Parameter descriptio", + "product_code":"ecs", + "title":"Querying SSH Key Pairs", + "uri":"en-us_topic_0020212676.html", + "doc_type":"api", + "p_code":"102", + "code":"103" + }, + { + "desc":"This API is used to query a specified SSH key pair based on the SSH key pair name.GET /v2.1/{project_id}/os-keypairs/{keypair_name}GET /v2/{project_id}/os-keypairs/{keypa", + "product_code":"ecs", + "title":"Querying a Specified SSH Key Pair", + "uri":"en-us_topic_0020212677.html", + "doc_type":"api", + "p_code":"102", + "code":"104" + }, + { + "desc":"This API is used to create an SSH key pair or import a public key to generate a key pair.After a private SSH key is created, download the private key to a local directory", + "product_code":"ecs", + "title":"Creating and Importing an SSH Key Pair", + "uri":"en-us_topic_0020212678.html", + "doc_type":"api", + "p_code":"102", + "code":"105" + }, + { + "desc":"This API is used to delete a specified SSH key pair based on the SSH key pair name.DELETE /v2.1/{project_id}/os-keypairs/{keypair_name}DELETE /v2/{project_id}/os-keypairs", + "product_code":"ecs", + "title":"Deleting an SSH Key Pair", + "uri":"en-us_topic_0020212680.html", + "doc_type":"api", + "p_code":"102", + "code":"106" + }, + { + "desc":"This API is used to obtain the random password generated during initial Windows ECS installation for user Administratoror the configured Cloudbase-init user when you use ", + "product_code":"ecs", + "title":"Obtaining the Password for Logging In to an ECS", + "uri":"en-us_topic_0031176553.html", + "doc_type":"api", + "p_code":"102", + "code":"107" + }, + { + "desc":"This API is used to delete the recorded random password generated during initial Windows ECS installation. After the password is deleted, you can still use your password ", + "product_code":"ecs", + "title":"Deleting the Password for Logging In to an ECS", + "uri":"en-us_topic_0031176554.html", + "doc_type":"api", + "p_code":"102", + "code":"108" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Group Management", + "uri":"en-us_topic_0065817683.html", + "doc_type":"api", + "p_code":"46", + "code":"109" + }, + { + "desc":"This API is used to create an ECS group.Only anti-affinity groups are supported.POST /v2.1/{project_id}/os-server-groupsPOST /v2/{project_id}/os-server-groupsTable 1 desc", + "product_code":"ecs", + "title":"Creating an ECS Group", + "uri":"en-us_topic_0065817720.html", + "doc_type":"api", + "p_code":"109", + "code":"110" + }, + { + "desc":"This API is used to query ECS groups.GET /v2.1/{project_id}/os-server-groupsGET /v2/{project_id}/os-server-groupsTable 1 describes the parameters in the URI.Parameter des", + "product_code":"ecs", + "title":"Querying ECS Groups", + "uri":"en-us_topic_0065817721.html", + "doc_type":"api", + "p_code":"109", + "code":"111" + }, + { + "desc":"This API is used to query details bout an ECS group.GET /v2.1/{project_id}/os-server-groups/{server_group_id}GET /v2/{project_id}/os-server-groups/{server_group_id}Table ", + "product_code":"ecs", + "title":"Querying Details About an ECS Group", + "uri":"en-us_topic_0065817722.html", + "doc_type":"api", + "p_code":"109", + "code":"112" + }, + { + "desc":"This API is used to delete an ECS group.DELETE /v2.1/{project_id}/os-server-groups/{server_group_id}DELETE /v2/{project_id}/os-server-groups/{server_group_id}Table 1 desc", + "product_code":"ecs", + "title":"Deleting an ECS Group", + "uri":"en-us_topic_0065817723.html", + "doc_type":"api", + "p_code":"109", + "code":"113" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Operation Management", + "uri":"en-us_topic_0167809633.html", + "doc_type":"api", + "p_code":"46", + "code":"114" + }, + { + "desc":"This API is used to query all historical operations on an ECS.GET /v2.1/{project_id}/servers/{server_id}/os-instance-actions?limit={limit}&marker={marker}GET /v2/{project", + "product_code":"ecs", + "title":"Querying Operations on an ECS", + "uri":"en-us_topic_0065817692.html", + "doc_type":"api", + "p_code":"114", + "code":"115" + }, + { + "desc":"This API is used to query a request of an ECS.GET /v2.1/{project_id}/servers/{server_id}/os-instance-actions/{request_id}GET /v2/{project_id}/servers/{server_id}/os-insta", + "product_code":"ecs", + "title":"Querying ECS Operations by Request ID", + "uri":"en-us_topic_0065817693.html", + "doc_type":"api", + "p_code":"114", + "code":"116" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Console Management", + "uri":"en-us_topic_0167809634.html", + "doc_type":"api", + "p_code":"46", + "code":"117" + }, + { + "desc":"This API is used to obtain ECS management console logs.POST /v2.1/{project_id}/servers/{server_id}/actionPOST /v2/{project_id}/servers/{server_id}/actionTable 1 describes", + "product_code":"ecs", + "title":"Obtaining ECS Management Console Logs", + "uri":"en-us_topic_0065817689.html", + "doc_type":"api", + "p_code":"117", + "code":"118" + }, + { + "desc":"This API is used to obtain the address for remotely logging in to an ECS using VNC.POST /v2.1/{project_id}/servers/{server_id}/remote-consolesTable 1 describes the parame", + "product_code":"ecs", + "title":"Obtaining a VNC-based Remote Login Address (Microversion 2.6 or Later)", + "uri":"en-us_topic_0142763126.html", + "doc_type":"api", + "p_code":"117", + "code":"119" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"AZ", + "uri":"en-us_topic_0065817684.html", + "doc_type":"api", + "p_code":"46", + "code":"120" + }, + { + "desc":"This API is used to query AZs.GET /v2.1/{project_id}/os-availability-zoneGET /v2/{project_id}/os-availability-zoneTable 1 describes the parameters in the URI.Parameter de", + "product_code":"ecs", + "title":"Querying AZs", + "uri":"en-us_topic_0065817728.html", + "doc_type":"api", + "p_code":"120", + "code":"121" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tag Management", + "uri":"en-us_topic_0108433460.html", + "doc_type":"api", + "p_code":"46", + "code":"122" + }, + { + "desc":"Tag functions have been upgraded on the platform. After the upgrade, a tag consists of a key and a value. Keys and values comply with the following rules:For the tags cre", + "product_code":"ecs", + "title":"Tag Types", + "uri":"en-us_topic_0065817686.html", + "doc_type":"api", + "p_code":"122", + "code":"123" + }, + { + "desc":"This API is used to query all tags of an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.GET /v2.", + "product_code":"ecs", + "title":"Querying Tags of an ECS", + "uri":"en-us_topic_0065820822.html", + "doc_type":"api", + "p_code":"122", + "code":"124" + }, + { + "desc":"This API is used to add tags to an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.PUT /v2.1/{pro", + "product_code":"ecs", + "title":"Adding Tags to an ECS", + "uri":"en-us_topic_0065820823.html", + "doc_type":"api", + "p_code":"122", + "code":"125" + }, + { + "desc":"This API is used to delete all tags of an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.DELETE ", + "product_code":"ecs", + "title":"Deleting Tags from an ECS", + "uri":"en-us_topic_0065820824.html", + "doc_type":"api", + "p_code":"122", + "code":"126" + }, + { + "desc":"This API is used to add a tag to an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.The tag conta", + "product_code":"ecs", + "title":"Adding a Tag to an ECS", + "uri":"en-us_topic_0065820825.html", + "doc_type":"api", + "p_code":"122", + "code":"127" + }, + { + "desc":"This API is used to query whether an ECS has a specified tag.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the", + "product_code":"ecs", + "title":"Querying a Specified Tag for an ECS", + "uri":"en-us_topic_0065820826.html", + "doc_type":"api", + "p_code":"122", + "code":"128" + }, + { + "desc":"This API is used to delete a specified tag from an ECS.You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the clien", + "product_code":"ecs", + "title":"Deleting a Specified Tag from an ECS", + "uri":"en-us_topic_0065820827.html", + "doc_type":"api", + "p_code":"122", + "code":"129" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Data Structure", + "uri":"en-us_topic_0175308115.html", + "doc_type":"api", + "p_code":"", + "code":"130" + }, + { + "desc":"publicip Field Descriptionsecurity_groups Field Descriptioneip Field Descriptionbandwidth Field Descriptionextendparam Field Description for Creating Disksextendparam Fie", + "product_code":"ecs", + "title":"Data Structure for Creating ECSs", + "uri":"en-us_topic_0167957246.html", + "doc_type":"api", + "p_code":"130", + "code":"131" + }, + { + "desc":"The following table lists parameters involved in the fault information attribute.", + "product_code":"ecs", + "title":"Data Structure for Querying Details About ECSs", + "uri":"en-us_topic_0169494074.html", + "doc_type":"api", + "p_code":"130", + "code":"132" + }, + { + "desc":"This field is used by the following APIs:Querying details about flavors and extended flavor information: /v1/{project_id}/cloudservers/flavorsQuerying details about the e", + "product_code":"ecs", + "title":"Data Structure for Query Details About Specifications", + "uri":"en-us_topic_0170710254.html", + "doc_type":"api", + "p_code":"130", + "code":"133" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Permissions Policies and Supported Actions", + "uri":"en-us_topic_0103071509.html", + "doc_type":"api", + "p_code":"", + "code":"134" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Lifecycle Management", + "uri":"en-us_topic_0103071510.html", + "doc_type":"api", + "p_code":"134", + "code":"135" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Status Management", + "uri":"en-us_topic_0103071511.html", + "doc_type":"api", + "p_code":"134", + "code":"136" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Batch Operations", + "uri":"en-us_topic_0184167662.html", + "doc_type":"api", + "p_code":"134", + "code":"137" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Network Management", + "uri":"en-us_topic_0103072350.html", + "doc_type":"api", + "p_code":"134", + "code":"138" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Image Management", + "uri":"en-us_topic_0103072348.html", + "doc_type":"api", + "p_code":"134", + "code":"139" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Security Group Management", + "uri":"en-us_topic_0103072347.html", + "doc_type":"api", + "p_code":"134", + "code":"140" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Specifications Query", + "uri":"en-us_topic_0103071522.html", + "doc_type":"api", + "p_code":"134", + "code":"141" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"NIC Management", + "uri":"en-us_topic_0103071513.html", + "doc_type":"api", + "p_code":"134", + "code":"142" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Disk Management", + "uri":"en-us_topic_0103071514.html", + "doc_type":"api", + "p_code":"134", + "code":"143" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Metadata Management", + "uri":"en-us_topic_0103071516.html", + "doc_type":"api", + "p_code":"134", + "code":"144" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tenant Quota Management", + "uri":"en-us_topic_0103071517.html", + "doc_type":"api", + "p_code":"134", + "code":"145" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"SSH Key Management", + "uri":"en-us_topic_0103071515.html", + "doc_type":"api", + "p_code":"134", + "code":"146" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Password Management", + "uri":"en-us_topic_0161341998.html", + "doc_type":"api", + "p_code":"134", + "code":"147" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Floating IP Address Management", + "uri":"en-us_topic_0103072349.html", + "doc_type":"api", + "p_code":"134", + "code":"148" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Group Management", + "uri":"en-us_topic_0103071520.html", + "doc_type":"api", + "p_code":"134", + "code":"149" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Management Through Console", + "uri":"en-us_topic_0184192952.html", + "doc_type":"api", + "p_code":"134", + "code":"150" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"AZ Management", + "uri":"en-us_topic_0103071519.html", + "doc_type":"api", + "p_code":"134", + "code":"151" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tag Management", + "uri":"en-us_topic_0103071521.html", + "doc_type":"api", + "p_code":"134", + "code":"152" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"FPGA Logical File Management", + "uri":"en-us_topic_0132778339.html", + "doc_type":"api", + "p_code":"134", + "code":"153" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Common Parameters", + "uri":"en-us_topic_0065820821.html", + "doc_type":"api", + "p_code":"", + "code":"154" + }, + { + "desc":"NormalReturned ValueDescription200Request succeeded.202After the task is successfully delivered, the task to be delivered shall be postponed because the system is busy.20", + "product_code":"ecs", + "title":"Returned Values for General Requests", + "uri":"en-us_topic_0022067716.html", + "doc_type":"api", + "p_code":"154", + "code":"155" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Task Request Result", + "uri":"en-us_topic_0022067713.html", + "doc_type":"api", + "p_code":"154", + "code":"156" + }, + { + "desc":"Normal response descriptionParameterTypeDescriptionjob_idStringSpecifies the returned task ID after delivering the task. Users can query the task progress using this ID. ", + "product_code":"ecs", + "title":"Responses (Task)", + "uri":"en-us_topic_0022067714.html", + "doc_type":"api", + "p_code":"156", + "code":"157" + }, + { + "desc":"NormalReturned ValueDescription200The task is successfully delivered.202After the task is successfully delivered, the task to be delivered shall be postponed because the ", + "product_code":"ecs", + "title":"Returned Values", + "uri":"en-us_topic_0022067715.html", + "doc_type":"api", + "p_code":"156", + "code":"158" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Batch Task Request", + "uri":"en-us_topic_0142195138.html", + "doc_type":"api", + "p_code":"154", + "code":"159" + }, + { + "desc":"The following responses are only for resetting the passwords for logging in to ECSs in a batch and for modifying ECS specifications in a batch. For details about the resp", + "product_code":"ecs", + "title":"Responses (Batch Operation)", + "uri":"en-us_topic_0142195139.html", + "doc_type":"api", + "p_code":"159", + "code":"160" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Out-of-Date APIs", + "uri":"en-us_topic_0267425395.html", + "doc_type":"api", + "p_code":"", + "code":"161" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tag Management", + "uri":"en-us_topic_0000001207303618.html", + "doc_type":"api", + "p_code":"161", + "code":"162" + }, + { + "desc":"This API is used to add tags to a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.This API has been discarded. ", + "product_code":"ecs", + "title":"Adding Tags to an ECS in a Batch (Discarded)", + "uri":"en-us_topic_0000001252143577.html", + "doc_type":"api", + "p_code":"162", + "code":"163" + }, + { + "desc":"This API is used to delete tags from a specified ECS in a batch.The Tag Management Service (TMS) uses this API to batch manage the tags of an ECS.This API is idempotent. ", + "product_code":"ecs", + "title":"Deleting Tags from an ECS in a Batch (Discarded)", + "uri":"en-us_topic_0000001252263549.html", + "doc_type":"api", + "p_code":"162", + "code":"164" + }, + { + "desc":"Projects are used to group and isolate OpenStack resources, which include computing, storage, and network resources. A project can be a department or a team. Multiple pro", + "product_code":"ecs", + "title":"Querying Project Tags (Discarded)", + "uri":"en-us_topic_0000001207623588.html", + "doc_type":"api", + "p_code":"162", + "code":"165" + }, + { + "desc":"This API is used to query the tags of a specified ECS.The Tag Management Service (TMS) uses this API to query all tags of an ECS.This API has been discarded. Use the API ", + "product_code":"ecs", + "title":"Querying Tags of an ECS (Discarded)", + "uri":"en-us_topic_0000001207783562.html", + "doc_type":"api", + "p_code":"162", + "code":"166" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"FPGA Logical File Management", + "uri":"en-us_topic_0065962596.html", + "doc_type":"api", + "p_code":"161", + "code":"167" + }, + { + "desc":"This API is used to register an FPGA image.An FPGA image, which is also called accelerated engine image (AEI), is a logic FPGA file developed by a user. During FPGA image", + "product_code":"ecs", + "title":"Registering an FPGA Image", + "uri":"en-us_topic_0065962597.html", + "doc_type":"api", + "p_code":"167", + "code":"168" + }, + { + "desc":"This API is used to delete an FPGA image.DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}Table 1 describes the parameters in the URI.NoneNoneNoneSee Return", + "product_code":"ecs", + "title":"Deleting an FPGA Image", + "uri":"en-us_topic_0065962599.html", + "doc_type":"api", + "p_code":"167", + "code":"169" + }, + { + "desc":"This API is used to view the details of the FPGA images of a tenant.GET /v1/{project_id}/cloudservers/fpga_image/detail?fpga_image_id={fpga_image_id}&page={page}&size={si", + "product_code":"ecs", + "title":"Viewing Details of FPGA Images", + "uri":"en-us_topic_0065962600.html", + "doc_type":"api", + "p_code":"167", + "code":"170" + }, + { + "desc":"This API is used to create a mapping between an FPGA image and an ECS image.POST /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/associationTable 1 describes the", + "product_code":"ecs", + "title":"Associating an FPGA Image with an ECS Image", + "uri":"en-us_topic_0065962598.html", + "doc_type":"api", + "p_code":"167", + "code":"171" + }, + { + "desc":"This API is used to delete a mapping between an FPGA image and an ECS image.DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/associationTable 1 describes t", + "product_code":"ecs", + "title":"Disassociating an FPGA Image from an ECS Image", + "uri":"en-us_topic_0081950549.html", + "doc_type":"api", + "p_code":"167", + "code":"172" + }, + { + "desc":"This API is used to query associations that are available to a tenant and between an FPGA image and an ECS image.GET /v1/{project_id}/cloudservers/fpga_image/associations", + "product_code":"ecs", + "title":"Querying Associations Between an FPGA Image and an ECS Image", + "uri":"en-us_topic_0081950550.html", + "doc_type":"api", + "p_code":"167", + "code":"173" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Image Management (OpenStack Nova APIs)", + "uri":"en-us_topic_0065817680.html", + "doc_type":"api", + "p_code":"161", + "code":"174" + }, + { + "desc":"This API is used to query all images.This API has been discarded. Use the API described in \"Querying Images (Native OpenStack API)\".GET /v2/{project_id}/images?name={name", + "product_code":"ecs", + "title":"Querying Images (Discarded)", + "uri":"en-us_topic_0065817695.html", + "doc_type":"api", + "p_code":"174", + "code":"175" + }, + { + "desc":"This API is used to query detailed information about an image list.This API has been discarded. Use the API described in \"Querying Images (Native OpenStack API)\".GET /v2/", + "product_code":"ecs", + "title":"Querying Image Details (Discarded)", + "uri":"en-us_topic_0065817696.html", + "doc_type":"api", + "p_code":"174", + "code":"176" + }, + { + "desc":"This API is used to query the details about the specified image.This API has been discarded. Use the API described in \"Querying Images (Native OpenStack API)\".GET /v2/{pr", + "product_code":"ecs", + "title":"Querying Details About a Specified Image (Discarded)", + "uri":"en-us_topic_0065817697.html", + "doc_type":"api", + "p_code":"174", + "code":"177" + }, + { + "desc":"This API is used to query the metadata of the specified image.This API has been discarded. Use the API described in \"Querying Image Metadata (Native OpenStack API)\".GET /", + "product_code":"ecs", + "title":"Querying the Metadata of a Specified Image (Discarded)", + "uri":"en-us_topic_0065817698.html", + "doc_type":"api", + "p_code":"174", + "code":"178" + }, + { + "desc":"This API is used to delete a specified image. The image cannot be restored after being deleted.This API has been discarded. Use the API described in \"Deleting an Image (N", + "product_code":"ecs", + "title":"Deleting an Image (Discarded)", + "uri":"en-us_topic_0065817699.html", + "doc_type":"api", + "p_code":"174", + "code":"179" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Security Group Management (OpenStack Nova APIs)", + "uri":"en-us_topic_0267427144.html", + "doc_type":"api", + "p_code":"161", + "code":"180" + }, + { + "desc":"This API is used to query security groups.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Querying Security Group", + "product_code":"ecs", + "title":"Querying Security Groups (Discarded)", + "uri":"en-us_topic_0090187679.html", + "doc_type":"api", + "p_code":"180", + "code":"181" + }, + { + "desc":"This API is used to create a security group.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Creating a Security G", + "product_code":"ecs", + "title":"Creating a Security Group (Discarded)", + "uri":"en-us_topic_0090187680.html", + "doc_type":"api", + "p_code":"180", + "code":"182" + }, + { + "desc":"This API is used to query details about a security group.This API can only query the inbound security group rules. To query the outbound security group rules, see \"Queryi", + "product_code":"ecs", + "title":"Querying Details About a Security Group (Discarded)", + "uri":"en-us_topic_0090187681.html", + "doc_type":"api", + "p_code":"180", + "code":"183" + }, + { + "desc":"This API is used to update a security group.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Updating a Security G", + "product_code":"ecs", + "title":"Updating a Security Group (Discarded)", + "uri":"en-us_topic_0065817700.html", + "doc_type":"api", + "p_code":"180", + "code":"184" + }, + { + "desc":"This API is used to delete a security group.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Deleting a Security G", + "product_code":"ecs", + "title":"Deleting a Security Group (Discarded)", + "uri":"en-us_topic_0065817701.html", + "doc_type":"api", + "p_code":"180", + "code":"185" + }, + { + "desc":"This API is used to create a security group rule.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Creating a Secur", + "product_code":"ecs", + "title":"Creating a Security Group Rule (Discarded)", + "uri":"en-us_topic_0065817703.html", + "doc_type":"api", + "p_code":"180", + "code":"186" + }, + { + "desc":"This API is used to delete a security group rule.This API has been discarded. Use the API described in section \"Security Group (OpenStack Neutron APIs) > Deleting a Secur", + "product_code":"ecs", + "title":"Deleting a Security Group Rule (Discarded)", + "uri":"en-us_topic_0065817704.html", + "doc_type":"api", + "p_code":"180", + "code":"187" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Disk Management (OpenStack Nova APIs)", + "uri":"en-us_topic_0267427881.html", + "doc_type":"api", + "p_code":"161", + "code":"188" + }, + { + "desc":"This API is used to query brief information about disks.This API has been discarded. Use the EVS API \"Querying EVS Disks (OpenStack Cinder API v2)\".GET /v2/{project_id}/o", + "product_code":"ecs", + "title":"Querying Brief Information About Disks (Discarded)", + "uri":"en-us_topic_0065817709.html", + "doc_type":"api", + "p_code":"188", + "code":"189" + }, + { + "desc":"This API is used to query detailed information about disks.This API has been discarded. Use the EVS API \"Querying Details About All Disks (OpenStack Cinder API v2)\".GET /", + "product_code":"ecs", + "title":"Querying Detailed Information About Disks (Discarded)", + "uri":"en-us_topic_0065817710.html", + "doc_type":"api", + "p_code":"188", + "code":"190" + }, + { + "desc":"This API is used to query information about a specified disk.This API has been discarded. Use the EVS API \"Querying Details About a Disk (OpenStack Cinder API v2)\".GET /v", + "product_code":"ecs", + "title":"Querying Information About a Disk (Discarded)", + "uri":"en-us_topic_0065817711.html", + "doc_type":"api", + "p_code":"188", + "code":"191" + }, + { + "desc":"This API is used to create a disk.This API has been discarded. Use the EVS API \"Creating EVS Disks (OpenStack Cinder API v2)\".POST /v2/{project_id}/os-volumesPOST /v2.1/{", + "product_code":"ecs", + "title":"Creating a Disk (Discarded)", + "uri":"en-us_topic_0065817708.html", + "doc_type":"api", + "p_code":"188", + "code":"192" + }, + { + "desc":"This API is used to delete a specified disk.This API has been discarded. Use the EVS API \"Deleting an EVS Disk (OpenStack Cinder API v2)\".If the volume has a snapshot not", + "product_code":"ecs", + "title":"Deleting a Disk (Discarded)", + "uri":"en-us_topic_0065817712.html", + "doc_type":"api", + "p_code":"188", + "code":"193" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Floating IP Address Management (OpenStack Nova APIs)", + "uri":"en-us_topic_0065817682.html", + "doc_type":"api", + "p_code":"161", + "code":"194" + }, + { + "desc":"This API is used to bind a floating IP address for an ECS.This API has been discarded. Since microversion 2.44, the system will return error 404 when you call this API. Y", + "product_code":"ecs", + "title":"Binding a Floating IP Address (Discarded)", + "uri":"en-us_topic_0065817718.html", + "doc_type":"api", + "p_code":"194", + "code":"195" + }, + { + "desc":"This API is used to unbind a floating IP address from an ECS.This API has been discarded. Since microversion 2.44, the system will return error 404 when you call this API", + "product_code":"ecs", + "title":"Unbinding a Floating IP Address (Discarded)", + "uri":"en-us_topic_0065817719.html", + "doc_type":"api", + "p_code":"194", + "code":"196" + }, + { + "desc":"This API is used to assign a floating IP address.This API has been discarded. Use the API described in \"Assigning a Floating IP Address\".You need to obtain a network reso", + "product_code":"ecs", + "title":"Assigning a Floating IP Address (Discarded)", + "uri":"en-us_topic_0065820816.html", + "doc_type":"api", + "p_code":"194", + "code":"197" + }, + { + "desc":"This API is used to query floating IP addresses.This API has been discarded. Use the API described in \"Querying Floating IP Addresses\".GET /v2/{project_id}/os-floating-ip", + "product_code":"ecs", + "title":"Querying Floating IP Addresses (Discarded)", + "uri":"en-us_topic_0065820817.html", + "doc_type":"api", + "p_code":"194", + "code":"198" + }, + { + "desc":"This API is used to query the details about a floating IP address based on the ID of the IP address.This API has been discarded. Use the API described in \"Querying a Floa", + "product_code":"ecs", + "title":"Querying Details About a Floating IP Address (Discarded)", + "uri":"en-us_topic_0065820818.html", + "doc_type":"api", + "p_code":"194", + "code":"199" + }, + { + "desc":"This API is used to release a floating IP address.This API has been discarded. Use the API described in \"Deleting a Floating IP Address\".DELETE /v2/{project_id}/os-floati", + "product_code":"ecs", + "title":"Releasing a Floating IP Address (Discarded)", + "uri":"en-us_topic_0065820819.html", + "doc_type":"api", + "p_code":"194", + "code":"200" + }, + { + "desc":"This API is used to query floating IP address pools.There is only one network resource pool that can be queried through this API by tenants in Open Telekom Cloud live net", + "product_code":"ecs", + "title":"Querying Floating IP Address Pools (Discarded)", + "uri":"en-us_topic_0065820820.html", + "doc_type":"api", + "p_code":"194", + "code":"201" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Appendix", + "uri":"en-us_topic_0022067588.html", + "doc_type":"api", + "p_code":"", + "code":"202" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"HTTP Status Codes", + "uri":"en-us_topic_0065827313.html", + "doc_type":"api", + "p_code":"202", + "code":"203" + }, + { + "desc":"An error code returned by an API does not correspond to one error message. The following table lists only common error messages.Most ECS APIs are asynchronous. Some error", + "product_code":"ecs", + "title":"Error Codes", + "uri":"en-us_topic_0022067717.html", + "doc_type":"api", + "p_code":"202", + "code":"204" + }, + { + "desc":"An ECS can be in one of the following statuses specified in ECS APIs:status: specifies an ECS status, which is generated by OS-EXT-STS:vm_state and OS-EXT-STS:task_state.", + "product_code":"ecs", + "title":"ECS Statuses", + "uri":"en-us_topic_0178420672.html", + "doc_type":"api", + "p_code":"202", + "code":"205" + }, + { + "desc":"For details about network APIs, see the Virtual Private Cloud API Reference.", + "product_code":"ecs", + "title":"Network APIs", + "uri":"en-us_topic_0022067718.html", + "doc_type":"api", + "p_code":"202", + "code":"206" + }, + { + "desc":"This section describes metrics reported by ECS to Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metrics of the", + "product_code":"ecs", + "title":"ECS Monitoring Metrics", + "uri":"en-us_topic_0022067719.html", + "doc_type":"api", + "p_code":"202", + "code":"207" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Change History", + "uri":"en-us_topic_0024734483.html", + "doc_type":"api", + "p_code":"", + "code":"208" + } +] \ No newline at end of file diff --git a/ecs/api-ref/PARAMETERS.txt b/ecs/api-ref/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/ecs/api-ref/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/ecs/api-ref/en-us_topic_0000001207303618.html b/ecs/api-ref/en-us_topic_0000001207303618.html new file mode 100644 index 000000000..cd4c3772a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0000001207303618.html @@ -0,0 +1,25 @@ + + + +

Tag Management

+ +

+
+ +
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0000001207623588.html b/ecs/api-ref/en-us_topic_0000001207623588.html new file mode 100644 index 000000000..34aec381a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0000001207623588.html @@ -0,0 +1,114 @@ + + +

Querying Project Tags (Discarded)

+

Function

Projects are used to group and isolate OpenStack resources, which include computing, storage, and network resources. A project can be a department or a team. Multiple projects can be created under one account.

+

This API is used to query all tags used by a user in a specified project.

+

This API has been discarded. Use the API described in Querying Project Tags.

+
+
+

URI

GET /v1/{project_id}/servers/tags

+
Table 1 lists the parameter. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameter.

+ +
+ + + + + + + + + +
Table 2 Response parameter

Parameter

+

Type

+

Description

+

tags

+

Array of objects

+

Specifies tags.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 tag field description

Parameter

+

Type

+

Description

+

key

+

String

+

Specifies the tag key.

+
  • The key can contain a maximum of 36 Unicode characters.
  • Contains only digits, letters, hyphens (-), and underscores (_).
+

values

+

Array of strings

+

Specifies the tag value.

+
  • Each value contains a maximum of 43 Unicode characters.
  • This field can be left blank.
  • Contains only digits, letters, hyphens (-), and underscores (_).
+
+
+
+

Examples

+ +
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0000001207783562.html b/ecs/api-ref/en-us_topic_0000001207783562.html new file mode 100644 index 000000000..bd61d4b31 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0000001207783562.html @@ -0,0 +1,111 @@ + + +

Querying Tags of an ECS (Discarded)

+

Function

+

This API has been discarded. Use the API described in Querying Tags of an ECS.

+
+
+

URI

GET /v1/{project_id}/servers/{server_id}/tags

+
Table 1 lists the parameters. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameter.

+ +
+ + + + + + + + + +
Table 2 Response parameter

Parameter

+

Type

+

Description

+

tags

+

Array of objects

+

Specifies tags.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 resource_tag field description

Parameter

+

Type

+

Description

+

key

+

String

+

Specifies the tag key.

+

value

+

String

+

Specifies the tag value.

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/servers/{server_id}/tags
+
+

Example Response

{
+       "tags": [
+        {
+            "key": "key1",
+            "value": "value1"
+        },
+        {
+            "key": "key2",
+            "value": "value3"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0000001252143577.html b/ecs/api-ref/en-us_topic_0000001252143577.html new file mode 100644 index 000000000..68ed5f146 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0000001252143577.html @@ -0,0 +1,137 @@ + + +

Adding Tags to an ECS in a Batch (Discarded)

+

Function

+

This API has been discarded. Use the API described in Adding Tags to an ECS in a Batch.

+
+
+

Constraints

+
+

URI

POST /v1/{project_id}/servers/{server_id}/tags/action

+
Table 1 lists the parameters. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

Yes

+

Array of objects

+

Specifies tags.

+

action

+

Yes

+

String

+

Specifies the operation (only lowercase letters are supported). For example, create indicates the creation operation.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 resource_tag field description

Parameter

+

Mandatory

+

Type

+

Description

+

key

+

Yes

+

String

+

Specifies the tag key.

+
  • Cannot be left blank.
  • Must be unique for each resource.
  • Contains a maximum of 36 characters.
  • Contains only digits, letters, hyphens (-), and underscores (_).
  • Must be unique and cannot be left blank.
+

value

+

Yes

+

String

+

Specifies the tag value.

+
  • Contains a maximum of 43 characters.
  • Contains only digits, letters, hyphens (-), and underscores (_).
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/servers/{server_id}/tags/action
+
{
+    "action": "create",
+    "tags": [
+        {
+            "key": "key1",
+            "value": "value1"
+        },
+        {
+            "key": "key2",
+            "value": "value3"
+        }
+    ]
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0000001252263549.html b/ecs/api-ref/en-us_topic_0000001252263549.html new file mode 100644 index 000000000..8814ce10c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0000001252263549.html @@ -0,0 +1,137 @@ + + +

Deleting Tags from an ECS in a Batch (Discarded)

+

Function

+

This API has been discarded. Use the API described in Deleting Tags from an ECS in a Batch.

+
+
+

Constraints

An ECS allows a maximum of 10 tags.

+
+

URI

POST /v1/{project_id}/servers/{server_id}/tags/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

Yes

+

Array of objects

+

Specifies tags.

+

action

+

Yes

+

String

+

Specifies the operation (only lowercase letters are supported). For example, delete indicates the deletion operation.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 resource_tag field description

Parameter

+

Mandatory

+

Type

+

Description

+

key

+

Yes

+

String

+

Specifies the tag key.

+

It contains a maximum of 127 Unicode characters and cannot be left blank.

+

The tag key of an ECS must be unique.

+

value

+

No

+

String

+

Specifies the tag value.

+

The value can contain a maximum of 255 Unicode characters and can be left blank.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/servers/{server_id}/tags/action
+
{
+    "action": "delete",
+    "tags": [
+        {
+            "key": "key1",
+            "value": "value1"
+        },
+        {
+            "key": "key2",
+            "value": "value3"
+        }
+    ]
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212207.html b/ecs/api-ref/en-us_topic_0020212207.html new file mode 100644 index 000000000..33cbbf943 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212207.html @@ -0,0 +1,127 @@ + + +

Starting ECSs in a Batch

+

Function

This API is used to start ECSs in a batch based on specified ECS IDs. A maximum of 1000 ECSs can be started at a time.

+
+

URI

POST /v1/{project_id}/cloudservers/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-start

+

Yes

+

Object

+

Specifies the operation to start the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 os-start field description

Parameter

+

Mandatory

+

Type

+

Description

+

servers

+

Yes

+

Array of objects

+

Specifies ECS IDs. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + +
Table 4 servers field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the ECS ID.

+
+
+
+

Response

See Responses (Task).

+
+

Example Request

In the request, the parameters to start ECSs must be sent with field os-start. For details, see the example request.
POST https://{endpoint}/v1/{project_id}/cloudservers/action
+
{
+    "os-start": {
+        "servers": [
+            {
+                "id": "616fb98f-46ca-475e-917e-2563e5a8cd19"
+            },
+            {
+                "id": "726fb98f-46ca-475e-917e-2563e5a8cd20"
+            }
+        ]
+    }
+}
+
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212648.html b/ecs/api-ref/en-us_topic_0020212648.html new file mode 100644 index 000000000..3ce01fa4f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212648.html @@ -0,0 +1,78 @@ + + +

Starting an ECS

+

Function

This API is used to start a single ECS.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-start

+

Yes

+

Null

+

Specifies the operation to start the ECS. The data structure is empty.

+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "os-start": {}
+                    }
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212649.html b/ecs/api-ref/en-us_topic_0020212649.html new file mode 100644 index 000000000..4aade1da3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212649.html @@ -0,0 +1,140 @@ + + +

Restarting ECSs in a Batch

+

Function

This API is used to restart ECSs in a batch based on specified ECS IDs. A maximum of 1000 ECSs can be restarted at a time.

+
+

URI

POST /v1/{project_id}/cloudservers/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

reboot

+

Yes

+

Object

+

Specifies the operation to restart the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 reboot field description

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

Yes

+

String

+

Specifies the type of the restart operation.

+
  • SOFT: soft restart
  • HARD: forcible restart (hard restart)
+

servers

+

Yes

+

Array of objects

+

Specifies ECS IDs. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + +
Table 4 servers field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the ECS ID.

+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

In the request, the parameters to restart ECSs must be sent with field reboot. For details, see the example request.
POST https://{endpoint}/v1/{project_id}/cloudservers/action
+
{
+    "reboot": {
+        "type":"SOFT",
+        "servers": [
+            {
+                "id": "616fb98f-46ca-475e-917e-2563e5a8cd19"
+            },
+            {
+                "id": "726fb98f-46ca-475e-917e-2563e5a8cd20"
+            }
+
+        ]
+    }
+}
+
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212650.html b/ecs/api-ref/en-us_topic_0020212650.html new file mode 100644 index 000000000..5cb20b0ba --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212650.html @@ -0,0 +1,104 @@ + + +

Restarting an ECS

+

Function

This API is used to restart a single ECS.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

reboot

+

Yes

+

Object

+

Specifies the operation to restart the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 reboot field description

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

Yes

+

String

+

Specifies the type of the restart operation.

+
  • SOFT: soft restart
  • HARD: forcible restart (hard restart)
+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "reboot": {
+        "type": "SOFT"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212651.html b/ecs/api-ref/en-us_topic_0020212651.html new file mode 100644 index 000000000..9f647e59b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212651.html @@ -0,0 +1,140 @@ + + +

Stopping ECSs in a Batch

+

Function

This API is used to stop ECSs in a batch based on the specified ECS ID list. A maximum of 1000 ECSs can be stopped at a time.

+
+

URI

POST /v1/{project_id}/cloudservers/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-stop

+

Yes

+

Object

+

Specifies the operation to stop the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 os-stop field description

Parameter

+

Mandatory

+

Type

+

Description

+

servers

+

Yes

+

Array of objects

+

Specifies ECS IDs. For details, see Table 4.

+

type

+

No

+

String

+

Specifies an ECS stop type. The default value is SOFT.

+

SOFT: normal ECS stop (default)

+

HARD: forcible ECS stop

+
+
+ +
+ + + + + + + + + + + +
Table 4 servers field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the ECS ID.

+
+
+
+

Response

See Responses (Task).

+
+

Example Request

In the request parameters, the request for stopping the ECS must be issued with field os-stop, as shown in the example request.
POST https://{endpoint}/v1/{project_id}/cloudservers/action
+
{
+    "os-stop": {
+        "type":"HARD",
+        "servers": [
+            {
+                "id": "616fb98f-46ca-475e-917e-2563e5a8cd19"
+            },
+            {
+                "id": "726fb98f-46ca-475e-917e-2563e5a8cd20"
+            }
+
+        ]
+    }
+}
+
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212652.html b/ecs/api-ref/en-us_topic_0020212652.html new file mode 100644 index 000000000..a89b3d166 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212652.html @@ -0,0 +1,102 @@ + + +

Stopping an ECS

+

Function

This API is used to stop a single ECS.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-stop

+

Yes

+

Object

+

Specifies the operation to stop the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 os-stop field description

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

No

+

String

+

Specifies an ECS stop type. The default value is SOFT.

+
  • SOFT: normal ECS stop
  • HARD: forcible ECS stop
+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "os-stop": {}
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212653.html b/ecs/api-ref/en-us_topic_0020212653.html new file mode 100644 index 000000000..cf4444196 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212653.html @@ -0,0 +1,107 @@ + + +

Modifying the Specifications of an ECS

+

Function

ECS specifications can be modified, for example, upgrading the vCPUs and memory, to meet service requirements. This API is used to modify ECS specifications.

+

An ECS flavor cannot be changed to certain flavors. For details, see Querying the Target Flavors to Which an ECS Flavor Can Be Changed.

+
+

Constraints

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/resize

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

resize

+

Yes

+

Object

+

Specifies the operation to modify ECS specifications. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 resize field description

Parameter

+

Mandatory

+

Type

+

Description

+

flavorRef

+

Yes

+

String

+

Specifies the flavor ID of the ECS after the modification.

+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/resize
+
{
+"resize": {
+        "flavorRef": "c3.15xlarge.2"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212655.html b/ecs/api-ref/en-us_topic_0020212655.html new file mode 100644 index 000000000..9d052fb21 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212655.html @@ -0,0 +1,21 @@ + + +

Flavor Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212656.html b/ecs/api-ref/en-us_topic_0020212656.html new file mode 100644 index 000000000..0902aa919 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212656.html @@ -0,0 +1,441 @@ + + +

Querying Details About Flavors and Extended Flavor Information

+

Function

This API is used to query details about ECS flavors and extended flavor information.

+
+

URI

GET /v1/{project_id}/cloudservers/flavors?availability_zone={availability_zone}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+ +
+ + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

availability_zone

+

No

+

String

+

Specify an AZ. If this parameter is not left blank, flavors in the normal, obt, or promotion state are returned.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters. +
+ + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

flavors

+

Array of objects

+

Specifies ECS flavors. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 flavors field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ID of the ECS flavor.

+

name

+

String

+

Specifies the name of the ECS flavor.

+

vcpus

+

String

+

Specifies the number of vCPUs in the ECS flavor.

+

ram

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

disk

+

String

+

Specifies the system disk size in the ECS flavor.

+

This parameter has not been used. Its default value is 0.

+

swap

+

String

+

Specifies the swap partition size required by the ECS flavor.

+

This parameter has not been used. Its default value is "".

+

OS-FLV-EXT-DATA:ephemeral

+

Integer

+

Specifies the temporary disk size. This is an extended attribute.

+

This parameter has not been used. Its default value is 0.

+

OS-FLV-DISABLED:disabled

+

Boolean

+

Specifies whether the ECS flavor has been disabled. This is an extended attribute.

+

This parameter has not been used. Its default value is false.

+

rxtx_factor

+

Float

+

Specifies the ratio of the available network bandwidth to the network hardware bandwidth of the ECS.

+

This parameter has not been used. Its default value is 1.0.

+

rxtx_quota

+

String

+

Specifies the software constraints of the network bandwidth that can be used by the ECS.

+

This parameter has not been used. Its default value is null.

+

rxtx_cap

+

String

+

Specifies the hardware constraints of the network bandwidth that can be used by the ECS.

+

This parameter has not been used. Its default value is null.

+

os-flavor-access:is_public

+

Boolean

+

Specifies whether a flavor is available to all tenants. This is an extended attribute.

+
  • true: indicates that a flavor is available to all tenants.
  • false: indicates that a flavor is available only to certain tenants.
+

Default value: true

+

links

+

Array of objects

+

Specifies shortcut links for ECS flavors. For details, see Table 5.

+

os_extra_specs

+

Object

+

Specifies extended ECS specifications. For details, see Table 6.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 5 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Provides the corresponding shortcut link.

+

type

+

String

+

Specifies the shortcut link type. This parameter has not been used. Its default value is null.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 os_extra_specs field description

Parameter

+

Type

+

Description

+

ecs:performancetype

+

String

+

Specifies the ECS flavor type:

+
  • normal: general computing
  • cpuv1: computing I
  • cpuv2: computing II
  • computingv3: general computing-plus
  • highmem: memory-optimized
  • saphana: large-memory
  • saphana: large-memory HANA ECS
  • diskintensive: disk-intensive
  • highcpu: high-performance computing
  • gpu: GPU-accelerated
  • fpga: FPGA-accelerated
+

resource_type

+

String

+

Specifies the resource type. resource_type is used to differentiate between the types of the physical servers accommodating ECSs.

+

instance_vnic:type

+

String

+

Specifies the NIC type. The value of this parameter is consistently enhanced, indicating that network enhancement ECSs are to be created.

+

instance_vnic:instance_bandwidth

+

String

+

Specifies the maximum bandwidth in the unit of Mbit/s. The maximum value of this parameter is 10000.

+

instance_vnic:max_count

+

String

+

Specifies the maximum number of NICs. The maximum value of this parameter is 4.

+

quota:local_disk

+

String

+

The value of this parameter is in format of "{type}:{count}:{size}:{safeFormat}", where,

+
  • type: indicates the disk type, which can only be HDD.
  • count: indicates the number of local disks.
    • For D2 ECSs, the value can be 2, 4, 8, 12, 16, or 24.
    • For D3 ECSs, the value can be 2, 4, 8, 12, 16, 24, or 28.
    +
  • size: indicates the capacity of a single disk, in GB. Currently, only 1675 is supported. The actual disk size is 1800, and the available size after formatting is 1675.
  • safeFormat: indicates whether the local disks of the ECS are securely formatted.
    • For D2 or D3 ECSs, the value is True.
    +
+
NOTE:

This field is dedicated for disk-intensive ECSs.

+
+

quota:nvme_ssd

+

String

+

The value of this parameter is in the format of {type}:{spec}:{num}:{size}:{safeFormat}:.

+
  • type: indicates the capacity of a single NVME SSD disk attached to the ECS, which can only be 1.6 TB or 3.2 TB.
  • spec: indicates the specification of the NVME SSD disk, which can be large or small.

    If the value is large, only I3 ECSs are supported.

    +
  • num: indicates the number of partitions on the disk.
  • size: indicates the capacity, in the unit of GB, of the disk used by the guest user. If the spec value is large, the value of this parameter is the size of a single disk attached to the ECS. If the spec value is small, the value of this parameter is 1/4 or 1/2 of the specification.
  • safeFormat: indicates whether the local disks of the ECS are securely formatted.

    If the value is True, only I3 ECSs are supported.

    +
+
NOTE:

This field is dedicated for ultra-high I/O ECSs.

+
+

ecs:generation

+

String

+

Specifies the generation of an ECS type.

+

For example, 3 in s3 indicates the general-purpose third-generation ECSs. For details about flavors and generations, see ECS Specifications in Elastic Cloud Server User Guide.

+

ecs:virtualization_env_types

+

String

+

Specifies a virtualization type.

+
  • If the parameter value is FusionCompute, the ECS uses Xen virtualization. Currently, the Xen virtualization technology is not supported.
  • If the parameter value is CloudCompute, the ECS uses KVM virtualization.
+
NOTE:

This field is optional.

+
+

pci_passthrough:enable_gpu

+

String

+

Indicates whether the GPU is passthrough.

+

If the value is true, the GPU is passthrough.

+

pci_passthrough:alias

+

String

+

Indicates the model and quantity of passthrough-enabled GPUs on P1 ECSs. The parameter value can be set to nvidia-p100:1, indicating that the ECS using this specification will occupy one NVIDIA P100 GPU.

+

cond:operation:status

+

String

+

This parameter takes effect region-wide. If an AZ is not configured in the cond:operation:az parameter, the value of this parameter is used by default. If this parameter is not set or used, the meaning of normal applies. Options:

+
  • normal: indicates normal commercial use of the flavor.
  • abandon: indicates that the flavor has been canceled (not displayed).
  • sellout: indicates that the flavor has been sold out.
  • obt: indicates that the flavor is under open beta testing (OBT).
  • obt_sellout: indicates that the OBT resources are sold out.
  • promotion: indicates the recommended flavor (commercial use, which is similar to normal).
+

cond:operation:az

+

String

+

This parameter takes effect AZ-wide. If an AZ is not configured in this parameter, the value of the cond:operation:status parameter is used by default. This parameter is in the format of "az(xx)". The value in parentheses is the flavor status in an AZ. If the parentheses are left blank, the configuration is invalid. The cond:operation:az options are the same as the cond:operation:status options.

+

For example, a flavor is for commercial use in AZs 0 and 3, sold out in AZ 1, for OBT in AZ 2, and is canceled in other AZs. Then, set parameters as follows:

+
  • cond:operation:status: abandon
  • cond:operation:az: az0(normal), az1(sellout), az2(obt), az3(normal)
+
NOTE:

Configure this parameter if the flavor status in an AZ is different from the cond:operation:status value.

+
+

quota:max_rate

+

String

+

Specifies the maximum bandwidth.

+
  • Unit: Mbit/s. If a bandwidth is in the unit of Gbit/s, it must be divided by 1000.
+

quota:min_rate

+

String

+

Specified the assured bandwidth.

+
  • Unit: Mbit/s. If a bandwidth is in the unit of Gbit/s, it must be divided by 1000.
+

quota:max_pps

+

String

+

Specifies the maximum intranet PPS.

+
  • Unit: number. If a value is in the unit of 10000, it must be divided by 10000.
+

cond:operation:charge

+

String

+

Specifies a billing type.

+
  • Both billing types are supported if this parameter is not set.
  • Pay-per-use
+

cond:compute

+

String

+

Specifies computing constraints.

+
  • autorecovery: indicates that automatic recovery is supported.
  • If this parameter does not exist, automatic recovery is not supported.
+
+
+
+
+

For more information, see "ECS Specifications and Types" in Elastic Cloud Server User Guide.

+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/flavors?availability_zone=availability_value
+
+

Example Response

{
+    "flavors": [
+        {
+            "id": "c3.2xlarge.2",
+            "name": "c3.2xlarge.2",
+            "vcpus": "8",
+            "ram": 16384,
+            "disk": "0",
+            "swap": "",
+            "links": [
+                {
+                    "rel": "self",
+                    "href": "https://ecs.region.xxx.com/v1.0/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2",
+                    "type": null
+                },
+                {
+                    "rel": "bookmark",
+                    "href": "https://ecs.region.xxx.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2",
+                    "type": null
+                }
+            ],
+            "OS-FLV-EXT-DATA:ephemeral": 0,
+            "rxtx_factor": 1,
+            "OS-FLV-DISABLED:disabled": false,
+            "rxtx_quota": null,
+            "rxtx_cap": null,
+            "os-flavor-access:is_public": true,
+            "os_extra_specs": {
+                "ecs:virtualization_env_types": "CloudCompute",
+                "ecs:generation": "c3",
+                "ecs:performancetype": "computingv3",
+                "resource_type": "IOoptimizedC3_2"
+            }
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212657.html b/ecs/api-ref/en-us_topic_0020212657.html new file mode 100644 index 000000000..2d5805cd0 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212657.html @@ -0,0 +1,17 @@ + + +

Lifecycle Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212658.html b/ecs/api-ref/en-us_topic_0020212658.html new file mode 100644 index 000000000..6aef03ebe --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212658.html @@ -0,0 +1,299 @@ + + +

Querying Details About ECS Flavors

+

Function

This API is used to query details about ECS flavors.

+
+

URI

GET /v2.1/{project_id}/flavors/detail?minDisk={minDisk}&minRam={minRam}&sort_key={sort_key}&sort_dir={sort_dir}

+

GET /v2/{project_id}/flavors/detail?minDisk={minDisk}&minRam={minRam}&sort_key={sort_key}&sort_dir={sort_dir}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

minDisk

+

No

+

String

+

Specifies the minimum disk specification in the unit of GB. Only the ECSs with the disk specification greater than or equal to the minimum specification can be queried.

+

minRam

+

No

+

String

+

Specifies the minimum RAM in the unit of MB. Only the ECSs with the RAM specification greater than or equal to the minimum specification can be queried.

+

sort_key

+

No

+

String

+

Indicates a sorting field, the default value of which is flavorid. The value of this parameter can also be name, memory_mb, vcpus, root_gb, or flavorid.

+

sort_dir

+

No

+

String

+

Specifies the ascending (asc) or descending (desc) sorting. Options: asc and desc

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

flavors

+

Array of objects

+

Specifies ECS flavors. For details, see Table 4.

+

flavors_links

+

Array of objects

+

Specifies data links for querying the next pages in pagination query. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 flavors field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ID of the ECS flavor.

+

name

+

String

+

Specifies the name of the ECS flavor.

+

description

+

String

+

Describes the ECS flavor.

+

This parameter is supported in microversion 2.55 and later.

+

vcpus

+

Integer

+

Specifies the number of vCPUs in the ECS flavor.

+

ram

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

disk

+

Integer

+

Specifies the system disk size in the ECS flavor.

+

This parameter has not been used. Its default value is 0.

+

swap

+

String

+

Specifies the swap partition size required by the ECS flavor.

+

This parameter has not been used. Its default value is "".

+

OS-FLV-EXT-DATA:ephemeral

+

Integer

+

Specifies the temporary disk size. This is an extended attribute.

+

This parameter has not been used. Its default value is 0.

+

OS-FLV-DISABLED:disabled

+

Boolean

+

Specifies whether the ECS flavor has been disabled. This is an extended attribute.

+

This parameter has not been used. Its default value is false.

+

rxtx_factor

+

Float

+

Specifies the ratio of the available network bandwidth to the network hardware bandwidth of the ECS.

+

This parameter has not been used. Its default value is 1.0.

+

os-flavor-access:is_public

+

Boolean

+

Specifies whether a flavor is available to all tenants. This is an extended attribute.

+
  • true: indicates that a flavor is available to all tenants.
  • false: indicates that a flavor is available only to certain tenants.
+

Default value: true

+

links

+

Array of objects

+

Specifies shortcut links for ECS flavors. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Provides the corresponding shortcut link.

+
+
+
+

Example Request

GET https://{endpoint}/v2/743b4c0428d94531b9f2add666642e6b/flavors/detail
+GET https://{endpoint}/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/detail
+
+

Example Response

{
+    "flavors": [
+        {
+            "name": "c3.2xlarge.2",
+            "links": [
+                {
+                    "href": "https://compute.region.xxx.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2",
+                    "rel": "self"
+                },
+                {
+                    "href": "https://compute.region.xxx.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2",
+                    "rel": "bookmark"
+                }
+            ],
+            "ram": 16384,
+            "OS-FLV-DISABLED:disabled": false,
+            "vcpus": 8,
+            "swap": "",
+            "os-flavor-access:is_public": true,
+            "rxtx_factor": 1,
+            "OS-FLV-EXT-DATA:ephemeral": 0,
+            "disk": 0,
+            "id": "c3.2xlarge.2"
+        },
+        {
+            "name": "c3.2xlarge.4",
+            "links": [
+                {
+                    "href": "https://compute.region.xxx.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.4",
+                    "rel": "self"
+                },
+                {
+                    "href": "https://compute.region.xxx.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.4",
+                    "rel": "bookmark"
+                }
+            ],
+            "ram": 32768,
+            "OS-FLV-DISABLED:disabled": false,
+            "vcpus": 8,
+            "swap": "",
+            "os-flavor-access:is_public": true,
+            "rxtx_factor": 1,
+            "OS-FLV-EXT-DATA:ephemeral": 0,
+            "disk": 0,
+            "id": "c3.2xlarge.4"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212659.html b/ecs/api-ref/en-us_topic_0020212659.html new file mode 100644 index 000000000..91fc5b07b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212659.html @@ -0,0 +1,225 @@ + + +

Querying Details About an ECS Flavor

+

Function

This API is used to query the details about an ECS flavor based on the flavor ID.

+
+

URI

GET /v2.1/{project_id}/flavors/{flavor_id}

+

GET /v2/{project_id}/flavors/{flavor_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

flavors_id

+

Yes

+

Specifies the flavor ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

flavor

+

Object

+

Specifies the ECS flavor. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 flavor field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ID of the ECS flavor.

+

name

+

String

+

Specifies the name of the ECS flavor.

+

description

+

String

+

Describes the ECS flavor.

+

This parameter is supported in microversion 2.55 and later.

+

vcpus

+

Integer

+

Specifies the number of vCPUs in the ECS flavor.

+

ram

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

disk

+

Integer

+

Specifies the system disk size in the ECS flavor.

+

This parameter has not been used. Its default value is 0.

+

swap

+

String

+

Specifies the swap partition size required by the ECS flavor.

+

This parameter has not been used. Its default value is "".

+

OS-FLV-EXT-DATA:ephemeral

+

Integer

+

Specifies the temporary disk size. This is an extended attribute.

+

This parameter has not been used. Its default value is 0.

+

OS-FLV-DISABLED:disabled

+

Boolean

+

Specifies whether the ECS flavor has been disabled. This is an extended attribute.

+

This parameter has not been used. Its default value is false.

+

rxtx_factor

+

Float

+

Specifies the ratio of the available network bandwidth to the network hardware bandwidth of the ECS.

+

This parameter has not been used. Its default value is 1.0.

+

os-flavor-access:is_public

+

Boolean

+

Specifies whether a flavor is available to all tenants. This is an extended attribute.

+
  • true: indicates that a flavor is available to all tenants.
  • false: indicates that a flavor is available only to certain tenants.
+

Default value: true

+

links

+

Array of objects

+

Specifies shortcut links for ECS flavors. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + +
Table 4 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Provides the corresponding shortcut link.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2
+GET https://{endpoint}/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2
+
+

Example Response

{
+    "flavor": {
+        "name": "c3.2xlarge.2",
+        "links": [
+            {
+                "href": "https://compute.region.xxx.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2",
+                "rel": "self"
+            },
+            {
+                "href": "https://compute.region.xxx.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2",
+                "rel": "bookmark"
+            }
+        ],
+        "ram": 16384,
+        "OS-FLV-DISABLED:disabled": false,
+        "vcpus": 8,
+        "swap": "",
+        "os-flavor-access:is_public": true,
+        "rxtx_factor": 1,
+        "OS-FLV-EXT-DATA:ephemeral": 0,
+        "disk": 0,
+        "id": "c3.2xlarge.2"
+    }
+                }
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212660.html b/ecs/api-ref/en-us_topic_0020212660.html new file mode 100644 index 000000000..c98644116 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212660.html @@ -0,0 +1,21 @@ + + +

NIC Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212661.html b/ecs/api-ref/en-us_topic_0020212661.html new file mode 100644 index 000000000..c7a2db4e6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212661.html @@ -0,0 +1,160 @@ + + +

Querying ECS NICs

+

Function

This API is used to query information about ECS NICs.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-interface

+

GET /v2/{project_id}/servers/{server_id}/os-interface

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

interfaceAttachments

+

Array of objects

+

Specifies ECS NICs. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 interfaceAttachments field description

Parameter

+

Type

+

Description

+

port_state

+

String

+

Specifies the NIC port status.

+

fixed_ips

+

Array of objects

+

Specifies private IP addresses for NICs. For details, see Table 4.

+

net_id

+

String

+

Specifies the network ID to which the NIC port belongs.

+

port_id

+

String

+

Specifies the ID of the NIC port.

+

mac_addr

+

String

+

Specifies the MAC address of the NIC.

+
+
+ +
+ + + + + + + + + + + + + +
Table 4 fixed_ips field description

Parameter

+

Type

+

Description

+

subnet_id

+

String

+

Specifies the subnet of the NIC private IP address.

+

ip_address

+

String

+

Specifies the NIC private IP address.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/os-interface
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-interface
+
+

Example Response

{
+    "interfaceAttachments": [
+        {
+            "port_state": "ACTIVE",
+            "fixed_ips": [
+                {
+                    "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef",
+                    "ip_address": "192.168.1.3"
+                }
+            ],
+            "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
+            "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
+            "mac_addr": "fa:16:3e:4c:2c:30"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212662.html b/ecs/api-ref/en-us_topic_0020212662.html new file mode 100644 index 000000000..b462fec68 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212662.html @@ -0,0 +1,166 @@ + + +

Querying NICs of an ECS

+

Function

This API is used to query NICs of an ECS based on the NIC ID.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-interface/{id}

+

GET /v2/{project_id}/servers/{server_id}/os-interface/{id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

id

+

Yes

+

Specifies the port ID of the NIC.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

interfaceAttachment

+

Object

+

Specifies ECS NICs. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 interfaceAttachment field description

Parameter

+

Type

+

Description

+

port_state

+

String

+

Specifies the NIC port status.

+

fixed_ips

+

Array of objects

+

Specifies IP addresses for NICs. For details, see Table 4.

+

net_id

+

String

+

Specifies the network ID to which the NIC port belongs.

+

port_id

+

String

+

Specifies the ID of the NIC port.

+

mac_addr

+

String

+

Specifies the MAC address of the NIC.

+
+
+ +
+ + + + + + + + + + + + + +
Table 4 fixed_ips field description

Parameter

+

Type

+

Description

+

subnet_id

+

String

+

Specifies the ID of the subnet used by the NIC.

+

ip_address

+

String

+

Specifies the NIC IP address.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/os-interface/{id}
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-interface/{id}
+
+

Example Response

{
+    "interfaceAttachment": 
+{
+        "port_state": "ACTIVE",
+        "fixed_ips": [
+{
+                "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef",
+                "ip_address": "192.168.1.3"
+                    }
+            ], 
+        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
+        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
+        "mac_addr": "fa:16:3e:4c:2c:30"
+                    }
+                    }
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212663.html b/ecs/api-ref/en-us_topic_0020212663.html new file mode 100644 index 000000000..049dfbbb0 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212663.html @@ -0,0 +1,153 @@ + + +

Adding NICs to an ECS in a Batch

+

Function

This API is used to add one or multiple NICs to an ECS.

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/nics

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

nics

+

Yes

+

Array of objects

+

Specifies the NICs to be added. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 nics field description

Parameter

+

Mandatory

+

Type

+

Description

+

subnet_id

+

Yes

+

String

+

Specifies the information about the NICs to be added to an ECS.

+

The value must be the ID of a created network in UUID format.

+

security_groups

+

No

+

Array of objects

+

Specifies the security groups for NICs. For details, see Table 4.

+

ip_address

+

No

+

String

+

Specifies the IP address. If this parameter is unavailable, the IP address is automatically assigned.

+
+
+ +
+ + + + + + + + + + + +
Table 4 security_groups field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the ID of the security group.

+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/nics
+
{
+    "nics": [
+        {
+            "subnet_id": "d32019d3-bc6e-4319-9c1d-6722fc136a23", 
+            "security_groups": [
+                {
+                    "id": "f0ac4394-7e4a-4409-9701-ba8be283dbc3"
+                }
+            ]
+        }
+    ]
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212664.html b/ecs/api-ref/en-us_topic_0020212664.html new file mode 100644 index 000000000..fb753259f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212664.html @@ -0,0 +1,265 @@ + + +

Adding a NIC to an ECS

+

Function

This API is used to add a NIC to an ECS.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/os-interface

+

POST /v2/{project_id}/servers/{server_id}/os-interface

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

interfaceAttachment

+

Yes

+

Object

+

Specifies the NICs to be added. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 interfaceAttachment field description

Parameter

+

Mandatory

+

Type

+

Description

+

port_id

+

No

+

String

+

Specifies the port ID.

+

Either port_id or net_id is used each time.

+

net_id

+

No

+

String

+

Specifies the network ID.

+

Either port_id or net_id is used each time.

+

fixed_ips

+

No

+

Array of objects

+

Specifies a private IP address.

+

This parameter cannot be specified when port_id is used.

+

This parameter must be used with net_id.

+

Only the first element in the list is valid. If two or more elements are used, an error will be reported. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + +
Table 4 fixed_ips field description

Parameter

+

Mandatory

+

Type

+

Description

+

ip_address

+

No

+

String

+

Specifies the IP address.

+
+
+
+
+

Response

Table 5 describes the response parameters. +
+ + + + + + + + + +
Table 5 Response parameters

Parameter

+

Type

+

Description

+

interfaceAttachment

+

Object

+

Specifies ECS NICs. For details, see Table 6.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 interfaceAttachment field description

Parameter

+

Type

+

Description

+

port_state

+

String

+

Specifies the port state.

+

fixed_ips

+

Array of objects

+

Specifies IP addresses for NICs. For details, see Table 7.

+

port_id

+

String

+

Specifies the port ID.

+

net_id

+

String

+

Specifies the network ID.

+

mac_addr

+

String

+

Specifies the MAC address.

+
+
+ +
+ + + + + + + + + + + + + +
Table 7 fixed_ips field description

Parameter

+

Type

+

Description

+

subnet_id

+

String

+

Specifies the ID of the subnet used by the NIC.

+

ip_address

+

String

+

Specifies the NIC IP address.

+
+
+
+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/os-interface
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-interface
+
{
+    "interfaceAttachment" : {
+        "fixed_ips" : [ 
+            {
+                "ip_address" : "192.168.1.3"
+            } 
+         ],
+    "net_id" : "3cb9bc59-5699-4588-a4b1-b87f96708bc6"
+    }
+}
+
{
+    "interfaceAttachment" : {
+    "port_id" : "ce531f90-199f-48c0-816c-13e38010b442"
+    }
+}
+
+

Example Response

{
+    "interfaceAttachment": {
+        "port_state": "DOWN",
+        "fixed_ips": [
+            {
+                "subnet_id": "d9cfef77-0151-4c2a-9ed5-d951ada8adf3",
+                "ip_address": "10.0.1.11"
+            }
+        ],
+        "port_id": " ce531f90-199f-48c0-816c-13e38010b442",
+        "net_id": "0dc714fa-9022-4a03-bb22-9821a396bb9d",
+        "mac_addr": "fa:16:3e:63:75:b2"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212665.html b/ecs/api-ref/en-us_topic_0020212665.html new file mode 100644 index 000000000..c969e3e9e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212665.html @@ -0,0 +1,110 @@ + + +

Deleting NICs from an ECS in a Batch

+

Function

This API is used to uninstall and delete one or multiple NICs from an ECS.

+
+

Constraints

The primary NIC of an ECS has routing rules configured and cannot be deleted.

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/nics/delete

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

nics

+

Yes

+

Array of objects

+

Specifies the NICs to be deleted. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 nics field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the port ID of the NIC.

+
NOTE:

When the ID is the same as the ECS primary NIC ID, the system will return error code 403.

+
+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/nics/delete
+
{
+    "nics": [
+         {
+            "id": "d32019d3-bc6e-4319-9c1d-6722fc136a23"
+        }
+    ]
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212666.html b/ecs/api-ref/en-us_topic_0020212666.html new file mode 100644 index 000000000..f4269b8b4 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212666.html @@ -0,0 +1,74 @@ + + +

Deleting a NIC from an ECS

+

Function

This API is used to delete a NIC from an ECS based on the port ID.

+
+

Constraints

The primary NIC of an ECS has routing rules configured and cannot be deleted.

+

When an ECS NIC is detached, all NICs attached to the ECS through the OpenStack Nova API will be deleted.

+
+

URI

DELETE /v2.1/{project_id}/servers/{server_id}/os-interface/{port_id}{?reserve_port}

+

DELETE /v2/{project_id}/servers/{server_id}/os-interface/{port_id}{?reserve_port}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

port_id

+

Yes

+

Specifies the port ID of the NIC.

+
NOTE:

When the ID is the same as the ECS primary NIC ID, the system will return error code 403.

+
+

reserve_port

+

No

+

Indicates whether to retain the NIC port after the NIC is unbound.

+

True: indicates that the port is reserved.

+

False: indicates that the port is deleted. This is the default value.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/{project_id}/servers/{server_id}/os-interface/{port_id}
+DELETE https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-interface/{port_id}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212667.html b/ecs/api-ref/en-us_topic_0020212667.html new file mode 100644 index 000000000..83c0bfe50 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212667.html @@ -0,0 +1,21 @@ + + +

Disk Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212668.html b/ecs/api-ref/en-us_topic_0020212668.html new file mode 100644 index 000000000..45c34b5ce --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212668.html @@ -0,0 +1,700 @@ + + +

Creating an ECS

+

Function

This API is used to create one or more ECSs.

+

This is an asynchronous API. After the ECS creation request is issued, the system will return job_id. The ECS creation is still in progress. Therefore, you need to call the API described in Querying Task Execution Status to obtain the task status. When the status changes to SUCCESS, the ECS has been created.

+
+

Before calling this API, you need to obtain Regions and Endpoints.

+

Logging in to an ECS can be authenticated using either a key pair or password. For security purposes, you are advised to use key pair authentication.

+ +

URI

POST /v1/{project_id}/cloudservers

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Request parameters

+

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

server

+

Yes

+

Object

+

Specifies the ECS information. For details, see Table 3.

+

dry_run

+

No

+

Boolean

+

Specifies whether to check the request and create the ECS.

+
  • true: indicates that only the request is sent, but the ECS will not be created. Check items include mandatory parameters and request format.
    • If the check fails, the system returns an error.
    • If the check is successful, the system returns status code 202.
    +
  • false: indicates that the request is sent and the ECS will be created if the check result is as expected.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters for creating an ECS

Parameter

+

Mandatory

+

Type

+

Description

+

imageRef

+

Yes

+

String

+

Specifies the ID of the system image used for creating ECSs. The ID is in Universally Unique Identifier (UUID) format.

+
NOTE:
  • Certain ECS flavors cannot support all public images provided on the public cloud platform. To obtain the images supported by an ECS flavor, log in to the management console, view the images displayed on the Create ECS page, and obtain the image IDs on the Image Management Service page.
  • If the creation fails, modify the parameter settings.
+
+

flavorRef

+

Yes

+

String

+

Specifies the flavor ID of the ECS to be created.

+

For details about the flavors that have been released, see "Instances" in Elastic Cloud Server User Guide.

+

name

+

Yes

+

String

+

Specifies the ECS name.

+

Value requirements:

+
  • Consists of 1 to 64 characters, including letters, digits, underscores (_), hyphens (-), periods (.).
  • If more than one ECS is to be created (the count value is greater than 1), the system automatically adds a hyphen followed by a four-digit incremental number, such as -0000, to the end of each ECS name. If you specify a number, the name of the first new ECS will start from the specified number. In this case, the ECS name contains a maximum of 59 characters.
    NOTE:

    ECS hostnames comply with RFC952 and RFC1123 naming rules. It is recommended that you configure hostnames using digits, letters (case sensitive), and hyphens (-). Underscores (_) are converted into hyphens (-) by default.

    +
    +
+

user_data

+

No

+

String

+

Specifies the user data to be injected to the ECS during the creation. Text and text files can be injected.

+
NOTE:
  • The content of user_data must be encoded with base64.
  • The maximum size of the content to be injected (before encoding) is 32 KB.
+
+

For more information about the user data to be injected, see "Injecting User Data into ECSs" in Elastic Cloud Server User Guide.

+

Examples

+

Before base64 encoding:

+
  • Linux
    #! /bin/bash
    +echo user_test >> /home/user.txt
    +
  • Windows
    rem cmd
    +echo 111 > c:\aaa.txt
    +
+

After base64 encoding:

+
  • Linux
    IyEgL2Jpbi9iYXNoDQplY2hvIHVzZXJfdGVzdCAmZ3Q7Jmd0OyAvaG9tZS91c2VyLnR4dA==
    +
  • Windows
    cmVtIGNtZA0KZWNobyAxMTEgJmd0OyBjOlxhYWEudHh0
    +
+

adminPass

+

No

+

String

+

Specifies the initial login password of the administrator account for logging in to an ECS using password authentication. The Linux administrator is root, and the Windows administrator is Administrator. For details, see Function.

+
Password complexity requirements:
  • Consists of 8 to 26 characters.
  • The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters (!@$%^-_=+[{}]:,./?~#*).
  • The password cannot contain the username or the username in reverse.
  • The Windows ECS password cannot contain the username, the username in reverse, or more than two consecutive characters in the username.
+
+

key_name

+

No

+

String

+

Specifies the name of the SSH key used for logging in to the ECS.

+

Keys can be created using the key creating API (Creating and Importing an SSH Key Pair) or obtained using the SSH key query API (Querying SSH Key Pairs).

+

vpcid

+

Yes

+

String

+

Specifies the ID of the VPC to which the ECS belongs. The value is in the format of the UUID.

+

You can obtain the VPC ID from the management console or by following the instructions provided in "Querying VPCs" in Virtual Private Cloud API Reference.

+

nics

+

Yes

+

Array of objects

+

Specifies the NIC information of the ECS. For details, see Table 4.

+

Constraints:

+
  • The value must be the ID of the subnet created in the VPC specified by vpcid and in the format of the UUID.
+
  • A maximum of 12 NICs can be attached to an ECS.
+

publicip

+

No

+

Object

+

Specifies the EIP of the ECS, which can be configured in the following ways:

+
  • Do not use: In such a case, this field is unavailable.
  • Automatically assign: The system will automatically assign an EIP to your ECS.
  • Use existing: You need to specify an existing EIP for your ECS.
+

For details, see Table 1.

+

count

+

No

+

Integer

+

Specifies the number of ECSs to be created.

+

Constraints:

+
  • If this parameter is not specified, the default value is 1.
  • If the quota is sufficient, the maximum value is 500.
+

root_volume

+

Yes

+

Object

+

Specifies ECS system disk configurations.

+

For details, see Table 5.

+

data_volumes

+

No

+

Array of objects

+

Specifies ECS data disk configurations. Each data structure represents a data disk to be created.

+

An ECS can be attached with a maximum of 59 data disks (certain flavors support only 23 data disks).

+

For details, see Table 6.

+

security_groups

+

No

+

Array of objects

+

Specifies the security groups of the ECS.

+

If this parameter is left blank, the default security group is bound to the ECS by default.

+

For details, see Table 2.

+

availability_zone

+

No

+

String

+

Specifies the name of the AZ where the ECS is located.

+
NOTE:

If this parameter is not specified, the system automatically selects an AZ.

+
+

See Querying AZs.

+

extendparam

+

No

+

Object

+

Provides the supplementary information about the ECS to be created.

+

For details, see Table 6.

+

metadata

+

No

+

Object

+

Specifies the metadata of the ECS to be created.

+

You can use metadata to customize key-value pairs.

+
NOTE:
  • A maximum of 10 key-value pairs can be injected.
  • A metadata key consists of 1 to 255 characters and contains only uppercase letters, lowercase letters, digits, hyphens (-), underscores (_), colons (:), and decimal points (.).
  • A metadata value consists of a maximum of 255 characters.
+
+

For details about reserved key-value pairs, see Table 8.

+

os:scheduler_hints

+

No

+

Object

+

Schedules ECSs, for example, by configuring an ECS group.

+

For details, see Table 9.

+

tags

+

No

+

Array of strings

+

Specifies ECS tags.

+

A tag is in the format of "key.value", where the maximum lengths of key and value are 36 and 43 characters, respectively.

+

When adding a tag to an ECS, ensure that the tag complies with the following requirements:

+
  • The key of the tag can contain only uppercase letters, lowercase letters, digits, underscores (_), and hyphens (-).
  • The value of the tag can contain only uppercase letters, lowercase letters, digits, underscores (_), and hyphens (-).
+
NOTE:
  • When you create ECSs, one ECS supports up to 10 tags.
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 nics field description

Parameter

+

Mandatory

+

Type

+

Description

+

subnet_id

+

Yes

+

String

+

Specifies the subnet of the ECS.

+

The value must be the ID of the subnet created in the VPC specified by vpcid and in the format of the UUID.

+

ip_address

+

No

+

String

+

Specifies the IP address of the NIC used by the ECS. The value is an IPv4 address.

+

Constraints:

+
  • If this parameter is left blank or set to "", an unused IP address in the subnet is automatically assigned as the IP address of the NIC.
  • If this parameter is specified, its value must be an unused IP address in the network segment of the subnet.
+

binding:profile

+

No

+

Object

+

Allows you to customize data. Configure this parameter when creating a HANA ECS.

+

For details, see Table 11.

+

extra_dhcp_opts

+

No

+

Array of objects

+

Indicates extended DHCP options.

+

For details, see Table 12.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 root_volume field description

Parameter

+

Mandatory

+

Type

+

Description

+

volumetype

+

Yes

+

String

+

Specifies the ECS system disk type, which must be one of available disk types.

+
Currently, the value can be SSD, SAS, SATA, co-p1, or uh-l1.
  • SSD: specifies the ultra-high I/O disk type.
  • SAS: specifies the high I/O disk type.
  • SATA: specifies the common I/O disk type.
  • co-p1: specifies the high I/O (performance-optimized I) disk type.
  • uh-l1: specifies the ultra-high I/O (latency-optimized) disk type.

    Disks of the co-p1 and uh-l1 types are used exclusively for HPC ECSs and SAP HANA ECSs.

    +
+
+

If the specified disk type is not available in the AZ, the disk will fail to create.

+
NOTE:
  • When the disk is created from a backup:

    If the type of the backup's source disk is SSD, SAS, or SATA, you can create disks of any of these types.

    +

    If the type of the backup's source disk is co-p1 or uh-l1, you can create disks of any of the two types.

    +
  • For details about disk types, see Disk Types and Disk Performance in the Elastic Volume Service User Guide.
+
+

size

+

No

+

Integer

+

Specifies the system disk size, in GB. The value ranges from 1 to 1024.

+

Constraints:

+
  • The system disk size must be greater than or equal to the minimum system disk size supported by the image (min_disk attribute of the image).
  • If this parameter is not specified or is set to 0, the default system disk size is the minimum value of the system disk in the image (min_disk attribute of the image).
    NOTE:

    To obtain the minimum system disk size (min_disk) of an image, click the image on the management console for its details. Alternatively, call the native OpenStack API for querying details about an image. For details, see "Querying Image Details (Native OpenStack)" in Image Management Service API Reference.

    +
    +
+

hw:passthrough

+

No

+

Boolean

+

Pay attention to this parameter if your ECS is SDI-compliant. If the value of this parameter is true, the created disk is of SCSI type.

+
NOTE:

This parameter is of boolean type. If a non-boolean character is imported, the parameter value is set to false.

+
+

metadata

+

No

+

Object

+

Specifies the EVS disk metadata. Ensure that key and value in the metadata contain at most 255 bytes.

+

This field is used only when an encrypted disk is created.

+

For details, see metadata Field Description for Creating Disks.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 data_volumes field description

Parameter

+

Mandatory

+

Type

+

Description

+

volumetype

+

Yes

+

String

+

Specifies the type of the ECS data disk, which must be one of available disk types.

+
Currently, the value can be SSD, SAS, SATA, co-p1, or uh-l1.
  • SSD: specifies the ultra-high I/O disk type.
  • SAS: specifies the high I/O disk type.
  • SATA: specifies the common I/O disk type.
  • co-p1: specifies the high I/O (performance-optimized I) disk type.
  • uh-l1: specifies the ultra-high I/O (latency-optimized) disk type.

    Disks of the co-p1 and uh-l1 types are used exclusively for HPC ECSs and SAP HANA ECSs.

    +
+
+

If the specified disk type is not available in the AZ, the disk will fail to create.

+
NOTE:
  • When the disk is created from a backup:

    If the type of the backup's source disk is SSD, SAS, or SATA, you can create disks of any of these types.

    +

    If the type of the backup's source disk is co-p1 or uh-l1, you can create disks of any of the two types.

    +
  • For details about disk types, see Disk Types and Disk Performance in the Elastic Volume Service User Guide.
+
+

size

+

Yes

+

Integer

+

Specifies the data disk size, in GB. The value ranges from 10 to 32768.

+

When you use a data disk image to create a data disk, ensure that the value of this parameter is greater than or equal to the size of the source data disk that is used to create the data disk image.

+

shareable

+

No

+

Boolean

+

Specifies whether the disk is shared. The value can be true (specifies a shared disk) or false (a common EVS disk).

+
NOTE:

This field has been discarded. Use multiattach.

+
+

multiattach

+

No

+

Boolean

+

Specifies the shared disk information.

+
  • true: indicates that the created disk is a shared disk.
  • false: indicates that the created disk is a common EVS disk.
+
NOTE:

The shareable field is not used anymore. If both shareable and multiattach must be used, ensure that the values of the two fields are the same. If this parameter is not specified, common EVS disks are created by default.

+
+

hw:passthrough

+

No

+

Boolean

+

Indicates whether the data volume uses a SCSI lock.

+
  • If this parameter is set to true, the disk device type is SCSI, which allows ECS OSs to directly access the underlying storage media. SCSI reservation commands are supported.
  • If this parameter is set to false, the disk device type is VBD, which supports only simple SCSI read/write commands.
  • If this parameter does not appear, the disk device type is VBD.
+
NOTE:

This parameter is of boolean type. If a non-boolean character is imported, the parameter value is set to false.

+
+

extendparam

+

No

+

Object

+

Provides the disk information.

+

For details, see Table 5.

+

data_image_id

+

No

+

String

+

Specifies ID of the data image. The value is in UUID format.

+

If data disks are created using a data disk image, this parameter is mandatory and it does not support metadata.

+

metadata

+

No

+

Object

+

Specifies the EVS disk metadata. Ensure that key and value in the metadata contain at most 255 bytes.

+

This field is used only when an encrypted disk is created.

+

If data disks are created using a data disk image, this field cannot be used.

+

For details, see metadata Field Description for Creating Disks.

+
+
+
+

Response

+
+ + + + + + + + + +

Parameter

+

Type

+

Description

+

job_id

+

String

+

Specifies the returned task ID after delivering the task. You can query the task progress using this ID. For details about how to query the task execution status based on job_id, see Task Status Management.

+
+
+

For details about abnormal responses, see Responses (Task).

+
+

Example Request

The public cloud platform provides various ECS types. The flavor name/ID varies depending on ECS types and specifications. When you use APIs to create ECSs with different specifications, the request bodies are the same. You only need to change the parameter values in the following request example based on the parameters described in Request.

+ +
+ + +

Example Response

{
+    "job_id": "93c82933d6b7827d3016b8771f2070873"
+}
+

Or

+
{
+    "error": {
+        "code": "request body is illegal.", 
+        "message": "Ecs.0005"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212671.html b/ecs/api-ref/en-us_topic_0020212671.html new file mode 100644 index 000000000..f36a48cfc --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212671.html @@ -0,0 +1,128 @@ + + +

Querying Disks Attached to an ECS

+

Function

This API is used to query the disks attached to an ECS.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments

+

GET /v2/{project_id}/servers/{server_id}/os-volume_attachments

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Response parameters

+
Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

volumeAttachments

+

Array of objects

+

Specifies the disks attached to an ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 volumeAttachments field description

Parameter

+

Type

+

Description

+

device

+

String

+

Specifies the attached directory.

+

id

+

String

+

Specifies the ID of the attached resource.

+

serverId

+

String

+

Specifies the ECS ID.

+

volumeId

+

String

+

Specifies the ID of the attached disk.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/os-volume_attachments
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-volume_attachments
+
+

Example Response

{
+    "volumeAttachments": [
+        {
+            "device": "/dev/sdd",
+            "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
+            "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
+            "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803"
+        },
+        {
+            "device": "/dev/sdc",
+            "id": "a26887c6-c47b-4654-abb5-dfadf7d3f804",
+            "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
+            "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f804"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212672.html b/ecs/api-ref/en-us_topic_0020212672.html new file mode 100644 index 000000000..974dd2170 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212672.html @@ -0,0 +1,127 @@ + + +

Querying a Disk Attached to an ECS

+

Function

This API is used to query a disk attached to an ECS based on the disk ID.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

GET /v2/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

volume_id

+

Yes

+

Specifies the disk ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

volumeAttachment

+

Object

+

Specifies the disks attached to an ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 volumeAttachment field description

Parameter

+

Type

+

Description

+

device

+

String

+

Specifies the attached directory.

+

id

+

String

+

Specifies the ID of the attached resource.

+

serverId

+

String

+

Specifies the ECS ID.

+

volumeId

+

String

+

Specifies the ID of the attached disk.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}
+
+

Example Response

{
+    "volumeAttachment": 
+        {
+            "device": "/dev/sdd",
+            "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
+            "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
+            "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803"
+        }
+ }
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212673.html b/ecs/api-ref/en-us_topic_0020212673.html new file mode 100644 index 000000000..c6f35aa2c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212673.html @@ -0,0 +1,15 @@ + + +

Tenant Quota Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212674.html b/ecs/api-ref/en-us_topic_0020212674.html new file mode 100644 index 000000000..029fd31dc --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212674.html @@ -0,0 +1,237 @@ + + +

Querying Tenant Quotas

+

Function

This API is used to query the quotas of all resources for a specified tenant, including used quotas.

+
+

URI

GET /v1/{project_id}/cloudservers/limits

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

absolute

+

Object

+

Specifies tenant quotas. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 absolute field description

Parameter

+

Type

+

Description

+

maxTotalInstances

+

Integer

+

Specifies the maximum number of ECSs you can use.

+

maxTotalCores

+

Integer

+

Specifies the maximum number of CPU cores you can use.

+

maxTotalRAMSize

+

Integer

+

Specifies the maximum memory space (MB) you can use.

+

maxTotalKeypairs

+

Integer

+

Specifies the maximum number of SSH key pairs you can use.

+

maxServerMeta

+

Integer

+

Specifies the maximum length of the metadata you can use.

+

maxPersonality

+

Integer

+

Specifies the maximum number of files that can be injected.

+

maxPersonalitySize

+

Integer

+

Specifies the maximum size (byte) of the file to be injected.

+

maxServerGroups

+

Integer

+

Specifies the maximum number of server groups.

+

maxServerGroupMembers

+

Integer

+

Specifies the maximum number of ECSs in an ECS group.

+

totalServerGroupsUsed

+

Integer

+

Specifies the number of used server groups.

+

maxSecurityGroups

+

Integer

+

Specifies the maximum number of security groups you can use.

+
NOTE:

The quota complies with the VPC quota limit.

+
+

maxSecurityGroupRules

+

Integer

+

Specifies the maximum number of security group rules that you can configure in a security group.

+
NOTE:

The quota complies with the VPC quota limit.

+
+

maxTotalFloatingIps

+

Integer

+

Specifies the maximum number of floating IP addresses you can use.

+

maxImageMeta

+

Integer

+

Specifies the maximum length of the image metadata.

+

totalInstancesUsed

+

Integer

+

Specifies the number of used ECSs.

+

totalCoresUsed

+

Integer

+

Specifies the number of the used CPU cores.

+

totalRAMUsed

+

Integer

+

Specifies the used memory size (MB).

+

totalSecurityGroupsUsed

+

Integer

+

Specifies the number of used security groups.

+

totalFloatingIpsUsed

+

Integer

+

Specifies the number of used floating IP addresses.

+
+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/limits
+
+

Example Response

Example response
{
+    "absolute": {
+        "maxServerMeta": 128, 
+        "maxPersonality": 5, 
+        "maxImageMeta": 128, 
+        "maxPersonalitySize": 10240, 
+        "maxSecurityGroupRules": 20, 
+        "maxTotalKeypairs": -1, 
+        "totalRAMUsed": 75776, 
+        "totalInstancesUsed": 21, 
+        "maxSecurityGroups": 10, 
+        "totalFloatingIpsUsed": 0, 
+        "maxTotalCores": 20480, 
+        "totalSecurityGroupsUsed": 1, 
+        "maxTotalFloatingIps": 10, 
+        "maxTotalInstances": 2048, 
+        "totalCoresUsed": 40, 
+        "maxTotalRAMSize": 25165824,
+        "maxServerGroups": 10,
+        "maxServerGroupMembers": 16,
+        "totalServerGroupsUsed": 2
+    }
+}
+
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212675.html b/ecs/api-ref/en-us_topic_0020212675.html new file mode 100644 index 000000000..df764aed3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212675.html @@ -0,0 +1,25 @@ + + +

Key and Password Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212676.html b/ecs/api-ref/en-us_topic_0020212676.html new file mode 100644 index 000000000..e991b0f5a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212676.html @@ -0,0 +1,136 @@ + + +

Querying SSH Key Pairs

+

Function

This API is used to query SSH key pairs.

+
+

URI

GET /v2.1/{project_id}/os-keypairs

+

GET /v2/{project_id}/os-keypairs

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

keypairs

+

Array of objects

+

Specifies key pairs. For details, see Table 3.

+
+
+ +
+ + + + + + + + + +
Table 3 keypairs field description

Parameter

+

Type

+

Description

+

keypair

+

Object

+

Specifies details about a key pair. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 keypair field description

Parameter

+

Type

+

Description

+

fingerprint

+

String

+

Specifies fingerprint information about the key pair.

+

name

+

String

+

Specifies the key pair name.

+

type

+

String

+

Specifies the key type, which is ssh by default.

+

This parameter is supported in microversion 2.2 and later.

+

public_key

+

String

+

Specifies information about the public key.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/os-keypairs
+GET https://{endpoint}/v2.1/{project_id}/os-keypairs
+
+

Example Response

{
+    "keypairs": [
+        {
+            "keypair": {
+                "fingerprint": "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a",
+                "name": "keypair-601a2305-4f25-41ed-89c6-2a966fc8027a",
+                "type": "ssh",
+                "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated-by-Nova\n"
+            }
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212677.html b/ecs/api-ref/en-us_topic_0020212677.html new file mode 100644 index 000000000..4c04baa97 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212677.html @@ -0,0 +1,168 @@ + + +

Querying a Specified SSH Key Pair

+

Function

This API is used to query a specified SSH key pair based on the SSH key pair name.

+
+

URI

GET /v2.1/{project_id}/os-keypairs/{keypair_name}

+

GET /v2/{project_id}/os-keypairs/{keypair_name}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

keypair_name

+

Yes

+

Specifies the key pair name.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

keypair

+

Object

+

Specifies the SSH key pair. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 keypair field description

Parameter

+

Type

+

Description

+

public_key

+

String

+

Specifies information about the public key.

+

name

+

String

+

Specifies the key pair name.

+

fingerprint

+

String

+

Specifies fingerprint information about the key pair.

+

created_at

+

String

+

Specifies the time when the key pair was created.

+

deleted

+

Boolean

+

Specifies whether a key pair has been deleted.

+
  • true: indicates that the key has been deleted.
  • false: indicates that the key is not deleted.
+

deleted_at

+

String

+

Specifies the time when the key pair was deleted.

+

id

+

Integer

+

Specifies the key pair ID.

+

updated_at

+

String

+

Specifies the time when the key pair was updated.

+

user_id

+

String

+

Specifies information about the user to which the key pair belongs.

+

type

+

String

+

Specifies the key type, which is ssh by default.

+

This parameter is supported in microversion 2.2 and later.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/os-keypairs/{keypair_name}
+GET https://{endpoint}/v2.1/{project_id}/os-keypairs/{keypair_name}
+
+

Example Response

{
+    "keypair": {
+        "created_at": "2014-05-07T12:06:13.681238",
+        "deleted": false,
+        "deleted_at": null,
+        "fingerprint": "9d:00:f4:d7:26:6e:52:06:4c:c1:d3:1d:fd:06:66:01",
+        "id": 1,
+        "name": "keypair-3582d8b7-e588-4aad-b7f7-f4e76f0e4314",
+        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYJrTVpcMwFqQy/oMvtUSRofZdSRHEwrsX8AYkRvn2ZnCXM+b6+GZ2NQuuWj+ocznlnwiGFQDsL/yeE+/kurqcPJFKKp60mToXIMyzioFxW88fJtwEWawHKAclbHWpR1t4fQ4DS+/sIbX/Yd9btlVQ2tpQjodGDbM9Tr9/+/3i6rcR+EoLqmbgCgAiGiVV6VbM2Zx79yUwd+GnQejHX8BlYZoOjCnt3NREsITcmWE9FVFy6TnLmahs3FkEO/QGgWGkaohAJlsgaVvSWGgDn2AujKYwyDokK3dXyeX3m2Vmc3ejiqPa/C4nRrCOlko5nSgV/9IXRx1ERImsqZnE9usB Generated-by-Nova\n",
+        "updated_at": null,
+        "user_id": "fake"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212678.html b/ecs/api-ref/en-us_topic_0020212678.html new file mode 100644 index 000000000..49c15dfb2 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212678.html @@ -0,0 +1,238 @@ + + +

Creating and Importing an SSH Key Pair

+

Function

This API is used to create an SSH key pair or import a public key to generate a key pair.

+

After a private SSH key is created, download the private key to a local directory. Then, you can use this private key to log in to the ECS. To ensure ECS security, the private key can be downloaded only once. Keep it secure.

+

Only the user that created the key pair can view it. If the key pair is created by an IAM user, the IAM account of the user and the other users of the same account cannot view the key pair.

+
+

URI

POST /v2.1/{project_id}/os-keypairs

+

POST /v2/{project_id}/os-keypairs

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

When creating an SSH key, you only need to configure name. When importing an SSH key, you must configure public_key.

+
+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

keypair

+

Yes

+

Object

+

Specifies the created or imported SSH key pair. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 keypair field description

Parameter

+

Mandatory

+

Type

+

Description

+

public_key

+

No

+

String

+

Specifies the imported public key.

+

It is recommended that the length of the imported public key be less than or equal to 1024 bytes.

+
NOTE:

If the length of the public key to be imported exceeds 1024 bytes, importing the public key will fail.

+
+

type

+

No

+

String

+

Specifies the key type. The value is ssh or x509.

+

This parameter is supported in microversion 2.2 and later.

+

name

+

Yes

+

String

+

Specifies the key pair name.

+

The new key pair name cannot be the same as an existing one.

+

user_id

+

No

+

String

+

Specifies the user ID of the key.

+

This parameter is supported in microversion 2.10 and later.

+
+
+
+
+

Response

Table 4 describes the response parameters. +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

keypair

+

Object

+

Specifies the SSH key pair. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 keypair field description

Parameter

+

Type

+

Description

+

fingerprint

+

String

+

Specifies fingerprint information about the key pair.

+

name

+

String

+

Specifies the key pair name.

+

public_key

+

String

+

Specifies information about the public key.

+

private_key

+

String

+

Specifies information about the private key.

+
  • The information about the private key is contained in the response for creating an SSH key.
  • The information about the private key is not contained in the response for importing an SSH key.
+

user_id

+

String

+

Specifies the ID of the user to which the key pair belongs.

+

type

+

String

+

Specifies the key type. The value is ssh or x509.

+

This parameter is supported in microversion 2.2 and later.

+
+
+
+
+

Example Request (Importing an SSH Key)

POST https://{endpoint}/v2/{project_id}/os-keypairs
+POST https://{endpoint}/v2.1/{project_id}/os-keypairs
+
{
+    "keypair": {
+        "public_key": "ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDWNgTxQYeBzK9LYy4IakX7IsIl5j5zqR6BU2GJaEg3RK6dlS7rKFQhvy/V/1emK+GT/7P8up9VsMZ9Dx6PBOLow5p+2/wGsMlwDJpWiQ8zNnEMg+u/Ar/ZhYHAMyKEAOOJxIcnPoUgxfNdj/eiXV98AabsBdUA7QD30Og8F4Bmn2lii/WD9KbQQVjb7kbB3gNIJpGTUcoX73arorqkq/ppaLRmmwMJ7bTIGl8/0MWU2Dy+eTByOaDMb2htbB+j8ZXyEu7Oooy0NaSd+PNHv3PZ9OIVO7gd1lyoTRvCMK/F346+zmZtk5EASSOx5RifnSwk3NtugVjXs9GMJfFLBRibGenerated-by-Nova\\n\n",
+        "type": "ssh",
+        "name": "demo1",
+        "user_id": "fake"
+    }
+}
+
+

Example Request (Creating an SSH Key)

POST https://{endpoint}/v2/{project_id}/os-keypairs
+POST https://{endpoint}/v2.1/{project_id}/os-keypairs
+
{
+    "keypair": {
+        "name": "demo"
+    }
+}
+
+

Example Response (Importing an SSH Key)

{
+    "keypair": {
+        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWNgTxQYeBzK9LYy4IakX7IsIl5j5zqR6BU2GJaEg3RK6dlS7rKFQhvy/V/1emK+GT/7P8up9VsMZ9Dx6PBOLow5p+2/wGsMlwDJpWiQ8zNnEMg+u/Ar/ZhYHAMyKEAOOJxIcnPoUgxfNdj/eiXV98AabsBdUA7QD30Og8F4Bmn2lii/WD9KbQQVjb7kbB3gNIJpGTUcoX73arorqkq/ppaLRmmwMJ7bTIGl8/0MWU2Dy+eTByOaDMb2htbB+j8ZXyEu7Oooy0NaSd+PNHv3PZ9OIVO7gd1lyoTRvCMK/F346+zmZtk5EASSOx5RifnSwk3NtugVjXs9GMJfFLBRib Generated-by-Nova\\n\n",
+        "user_id": "6fc0d2cbbfab40b199874b97097e913d",
+        "name": "demo1",
+        "fingerprint": "fc:47:b5:c3:7d:25:32:d5:d2:0c:19:f9:62:ac:8c:5a"
+    }
+}
+
+

Example Response (Creating an SSH Key)

{
+    "keypair": {
+        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWNgTxQYeBzK9LYy4IakX7IsIl5j5zqR6BU2GJaEg3RK6dlS7rKFQhvy/V/1emK+GT/7P8up9VsMZ9Dx6PBOLow5p+2/wGsMlwDJpWiQ8zNnEMg+u/Ar/ZhYHAMyKEAOOJxIcnPoUgxfNdj/eiXV98AabsBdUA7QD30Og8F4Bmn2lii/WD9KbQQVjb7kbB3gNIJpGTUcoX73arorqkq/ppaLRmmwMJ7bTIGl8/0MWU2Dy+eTByOaDMb2htbB+j8ZXyEu7Oooy0NaSd+PNHv3PZ9OIVO7gd1lyoTRvCMK/F346+zmZtk5EASSOx5RifnSwk3NtugVjXs9GMJfFLBRib Generated-by-Nova\n",
+        "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1jYE8UGHgcyvS2MuCGpF+yLCJeY+c6kegVNhiWhIN0SunZUu\n6yhUIb8v1f9Xpivhk/+z/LqfVbDGfQ8ejwTi6MOaftv8BrDJcAyaVokPMzZxDIPr\nvwK/2YWBwDMihADjicSHJz6FIMXzXY/3ol1ffAGm7AXVAO0A99DoPBeAZp9pYov1\ng/Sm0EFY2+5Gwd4DSCaRk1HKF+92q6K6pKv6aWi0ZpsDCe20yBpfP9DFlNg8vnkw\ncjmgzG9obWwfo/GV8hLuzqKMtDWknfjzR79z2fTiFTu4HdZcqE0bwjCvxd+Ovs5m\nbZORAEkjseUYn50sJNzbboFY17PRjCXxSwUYmwIDAQABAoIBADNKQ+ywUA3YQLDA\nUqlZKOB09h+0/YccG13D5TrNaV0yaMz6h31u7pYV/RI0TXxQTXbuZt5AoR4Xca9I\nC30bImmxTDDL45CGi/T0T5AgyS7t/iuM+smFkwI2YVbv53fL7q9yCxpucdnjC95/\nNj/+M3qxupIQ42uRVAYCU1jwF6J6YLy/9UamrmVd4bWFRtT19O7uszUhHLqJOZXq\n3ItqnMyD5bSMkzMN+RxmZVXAPkBOonGVeBBInCjvHv23REkngX38zcUSc543H3Di\n4673helqSdMnI0/TgyfLQcNuOsfQcD02ABWlGBe0nCTqP8pTRo86nzK1+AoCUp72\nIsTeviECgYEA8yHKeo/eZw25eDb3YTJovbgzA61n6AYQlDQv7rBGQDwKKQHdEqhR\nP0PbScaoT7wSeLtYV0vxxA6qjEEuHhZIk/t2wEILu+AH4AK88SUbUn6ZoYu+XmTA\nx26e2QRo8Ngi/KtIfeOGXx1PM/H2/OjEN3XjkfwJsj5bB+HjpF/wsnUCgYEA4Yxg\nWJYNrvSkmvXmDgxHwdxfUpVAcp40bvomNgYpKn9R2TyjMCSDIw8vVC6cGCFB9/Pc\nG0pr8RN2SvbTaPo/96DkKdHz7NAWkzUSChD4Oy7ZNXw6GK3x1tGwMWeTs1hQDHhO\nrjS+E3bV2jC4EIvLLBxCNCbhtmQwlGUj7ZhgHM8CgYEA14UGpWpOrW8/D086LpCu\nxC46GnJmfwiRPa6dJqpfO6V9JCigvV8y1i/ifR16KWP/w8HeZ1PMtgyCJd3JcaYz\nI+pus7JYEGxgzrPepKxN8eyDZu4nDCmnsaFfceQ02fnd2bhDhERh4oJqqRM966ax\n+K+p0MhoF/aqXuxgDF93T9kCgYEAw7TsfLFnGiJJGfS4NARP11UCmUPMcif4UztX\nIJVj7u4e9SJ6bvGfoDIy3Ra8duuUtDOzDzMaSkqa4B0f//z0uEew8uCsiRVeIUlx\nZ66l1aSm8JPkTTnRmJbGDXhUXtAIVWmmy94T+AurL/IKJMFH//RdNadvPrXcuUax\nUB5hd10CgYEA3JBuX4BriSk6Bii0kYniqFM/1tEgVelAP6DT6uePvzTFdSJ0dMQo\nzwgWNmm43CyoKW/rw8yIbtIQZKBfHudSNx72nSmnBKaf3QPB40xsCip90ZUTfZdn\nLJzX1t4clg1wNsN4mJDwiYM9k3rB/8EY1fh9gUYI84X6xFAHllkv0To=\n-----END RSA PRIVATE KEY-----\n",
+        "user_id": "6fc0d2cbbfab40b199874b97097e913d",
+        "type": "ssh",
+        "name": "demo",
+        "fingerprint": "fc:47:b5:c3:7d:25:32:d5:d2:0c:19:f9:62:ac:8c:5a"
+   }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212679.html b/ecs/api-ref/en-us_topic_0020212679.html new file mode 100644 index 000000000..8c3bf6853 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212679.html @@ -0,0 +1,136 @@ + + +

Deleting ECSs

+

Function

This API is used to delete ECSs based on a specified ECS ID list.

+

You can delete a single ECS or multiple ECSs in a batch. A maximum of 1000 ECSs can be deleted in a batch.

+
+

URI

POST /v1/{project_id}/cloudservers/delete

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

servers

+

Yes

+

Array of objects

+

Specifies the ECSs to be deleted. For details, see Table 3.

+

delete_publicip

+

No

+

Boolean

+

Specifies whether to delete the EIP bound to the ECS when deleting the ECS. If you do not want to delete the EIP, the system only unbinds the EIP from the ECS and reserves the IP address.

+

The value can be true or false.

+
  • true: When an ECS is deleted, the EIP bound to the ECS is also released regardless of whether delete_on_termination of the EIP is true or false.
  • false: When an ECS is deleted, the EIP is only unbound from the ECS and will not be released regardless of whether delete_on_termination of the EIP is true or false.
+
NOTE:

If delete_publicip is not specified, the delete_on_termination value of the EIP decides whether the EIP is released when the ECS is deleted.

+
  • If delete_on_termination is true and delete_public is null, the EIP is released when the ECS is deleted.
  • If delete_on_termination is false and delete_public is null, the EIP is only unbound from the ECS and will not be released when the ECS is deleted.
+
+

delete_volume

+

No

+

Boolean

+

Specifies whether to delete the data disks attached to an ECS when deleting the ECS. If you set the parameter value to false, the system only detaches the disks from the ECS and reserves the disks. The default value is false.

+
  • true: indicates to delete the data disks attached to the ECS when deleting the ECS.
  • false: indicates only to detach the data disks attached to the ECS when deleting the ECS.
+
+
+ +
+ + + + + + + + + + + +
Table 3 servers field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the ID of the ECS to be deleted.

+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

Example request
POST https://{endpoint}/v1/{project_id}/cloudservers/delete
+
{
+    "servers": [
+        {
+            "id": "616fb98f-46ca-475e-917e-2563e5a8cd19"
+        }
+    ], 
+    "delete_publicip": false, 
+    "delete_volume": false
+   }
+
+
+

Example Response

{
+    "job_id": "70a599e0-31e7-49b7-b260-868f441e862b"
+}
+

Or

+
{
+    "error": {
+        "message": "request body is illegal.", 
+        "code": "Ecs.0005"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212680.html b/ecs/api-ref/en-us_topic_0020212680.html new file mode 100644 index 000000000..4c02566e6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212680.html @@ -0,0 +1,53 @@ + + +

Deleting an SSH Key Pair

+

Function

This API is used to delete a specified SSH key pair based on the SSH key pair name.

+
+

URI

DELETE /v2.1/{project_id}/os-keypairs/{keypair_name}

+

DELETE /v2/{project_id}/os-keypairs/{keypair_name}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

keypair_name

+

Yes

+

Specifies the key pair name.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/{project_id}/os-keypairs/{keypair_name}
+DELETE https://{endpoint}/v2.1/{project_id}/os-keypairs/{keypair_name}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212688.html b/ecs/api-ref/en-us_topic_0020212688.html new file mode 100644 index 000000000..fd06e176e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212688.html @@ -0,0 +1,281 @@ + + +

Querying ECSs

+

Function

This API is used to query ECSs.

+
+

URI

GET /v2.1/{project_id}/servers?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker={marker}&not-tags={not-tags}&reservation_id={reservation_id}&ip={ip}

+

GET /v2/{project_id}/servers?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker={marker}&not-tags={not-tags}&reservation_id={eservation_id}&ip={ip}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

changes-since

+

No

+

String

+

Specifies the timestamp of the last ECS status update, which is used to filter out the ECSs with statuses updated later than the timestamp. The format must comply with ISO 8601 in the format of CCYY-MM-DDThh:mm:ss+/-hh:mm, for example, 2018-01-17T03:03:32Z.

+

image

+

No

+

String

+

Specifies the image ID.

+

When image is used as a filter criterion, other filter criteria and paging criteria are not supported. If both the image and other filter criteria are specified, the image filter criterion is used. If the query criteria do not contain the image filter criterion, API functions are not restricted.

+

flavor

+

No

+

String

+

Specifies the ECS type ID, which is fuzzy matched.

+

name

+

No

+

String

+

Specifies the ECS name, which is fuzzy matched.

+

status

+

No

+

String

+

Specifies the ECS status.

+

Options:

+

ACTIVE, BUILD, ERROR, HARD_REBOOT, MIGRATING, REBOOT, REBUILD, RESIZE, REVERT_RESIZE, SHUTOFF, and VERIFY_RESIZE

+

In microversion 2.37, the system will return an empty list for the status field out of the preceding options. In microversion 2.38 and later, the system will return error 400.

+

For details, see ECS Statuses.

+

limit

+

No

+

Integer

+

Specifies the upper limit on the number of returned results.

+

The default value on each page is 25, and the information of a maximum of 1000 ECSs is displayed on each page.

+

marker

+

No

+

String

+

Specifies the ECS ID to which the marker points. The query will start from its next ID.

+

tags

+

No

+

String

+

Queries ECSs with tags containing the specified value.

+

not-tags

+

No

+

String

+

Queries ECSs with tags not containing the specified value. The value is the tag key.

+

For details about key rules, see Tag Types.

+
NOTE:

Tag functions have been upgraded on the public cloud. If the tags added before the function upgrade are in the format of "Key.Value", query tags using "Key".

+

For example, an existing tag is a.b. After the tag function upgrade, query the tag using "not-tags=a".

+
+

reservation_id

+

No

+

String

+

Specifies the ID returned when ECSs are created in a batch. This parameter is used to query ECSs created in a batch.

+

sort_key

+

No

+

String

+

Sorts query results by ECS attribute. The default sorting order is the reverse order of created_at.

+

Options: created_at, availability_zone, display_name, host, instance_type_id, key_name, project_id, user_id, updated_at, uuid, and vm_state

+

ip

+

No

+

String

+

Indicates the filtering result for IPv4 addresses, which are fuzzy matched.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

servers

+

Array of objects

+

Specifies the ECSs to be queried. For details, see Table 4.

+

servers_links

+

Array of objects

+

Specifies the link of the next page in pagination query. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 4 servers field description

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the ECS name.

+

id

+

String

+

Specifies an ECS uniquely.

+

links

+

Array of objects

+

Specifies ECS shortcut links. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 servers_links and links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Specifies the shortcut link.

+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers
+GET https://{endpoint}/v2.1/{project_id}/servers
+
+

Example Response

{
+    "servers": [
+        {
+            "id": "616fb98f-46ca-475e-917e-2563e5a8cd19", 
+            "links": [
+                {
+                    "href": "http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19", 
+                    "rel": "self"
+                }, 
+                {
+                    "href": "http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19", 
+                    "rel": "bookmark"
+                }
+            ], 
+            "name": "new-server-test"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212689.html b/ecs/api-ref/en-us_topic_0020212689.html new file mode 100644 index 000000000..da9285e4a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212689.html @@ -0,0 +1,895 @@ + + +

Querying Details About ECSs

+

Function

This API is used to query details about ECSs.

+
+

URI

GET /v2.1/{project_id}/servers/detail?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker={marker}&not-tags={not-tags}&reservation_id={reservation_id}&ip={ip}

+

GET /v2/{project_id}/servers/detail?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker={marker}&not-tags={not-tags}&reservation_id={reservation_id}&ip={ip}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

changes-since

+

No

+

String

+

Specifies the timestamp of the last ECS status update, which is used to filter out the ECSs with statuses updated later than the timestamp. The format must comply with ISO 8601 in the format of CCYY-MM-DDThh:mm:ss+/-hh:mm, for example, 2018-01-17T03:03:32Z.

+

image

+

No

+

String

+

Specifies the image ID.

+

When image is used as a filter criterion, other filter criteria and paging criteria are not supported. If both the image and other filter criteria are specified, the image filter criterion is used. If the query criteria do not contain the image filter criterion, API functions are not restricted.

+

flavor

+

No

+

String

+

Specifies the ECS flavor ID, which is fuzzy matched.

+

name

+

No

+

String

+

Specifies the ECS name, which is fuzzy matched.

+

status

+

No

+

String

+

Specifies the ECS status.

+

Options:

+

ACTIVE, BUILD, ERROR, HARD_REBOOT, MIGRATING, REBOOT, REBUILD, RESIZE, REVERT_RESIZE, SHUTOFF, and VERIFY_RESIZE

+

In microversion 2.37, the system will return an empty list for the status field out of the preceding options. In microversion 2.38 and later, the system will return error 400.

+

For details, see ECS Statuses.

+

limit

+

No

+

Integer

+

Specifies the upper limit on the number of returned results.

+

Each page contains 25 ECSs by default, and a maximum of 1000 ECSs are returned. For large volumes of data, you are advised to set the value to 100.

+

marker

+

No

+

String

+

Specifies the ECS ID to which the marker points. The query will start from its next ID.

+

tags

+

No

+

String

+

Queries ECSs with tags containing the specified value.

+

not-tags

+

No

+

String

+

Queries ECSs with tags not containing the specified value. The value is the tag key.

+

For details about key rules, see Tag Types.

+
NOTE:

Tag functions have been upgraded on the public cloud. If the tags added before the function upgrade are in the format of "Key.Value", query tags using "Key".

+

For example, an existing tag is a.b. After the tag function upgrade, query the tag using "not-tags=a".

+
+

reservation_id

+

No

+

String

+

Specifies the ID returned when ECSs are created in a batch. This parameter is used to query ECSs created in a batch.

+

sort_key

+

No

+

String

+

Sorts query results by ECS attribute. The default sorting order is the reverse order of created_at.

+

The value can be created_at, auto_disk_config, availability_zone, display_description, display_name, host, host_name, image_ref, instance_type_id, kernel_id, key_name, launch_index, launched_at, locked_by, node, power_state, project_id, ramdisk_id, reservation_id, root_device_name, task_state, terminated_at, user_id, updated_at, uuid, or vm_state.

+

ip

+

No

+

String

+

Indicates the filtering result for IPv4 addresses, which are fuzzy matched.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

servers

+

Array of objects

+

Specifies the ECSs to be queried. For details, see Table 4.

+

servers_links

+

Array of objects

+

Specifies the link of the next page in pagination query. For details, see Table 6.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 servers field description

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the ECS name.

+

id

+

String

+

Specifies an ECS uniquely.

+

status

+

String

+

Specifies the ECS status.

+

Options:

+

ACTIVE, BUILD, DELETED, ERROR, HARD_REBOOT, MIGRATING, PAUSED, REBOOT, REBUILD, RESIZE, REVERT_RESIZE, SHUTOFF, SHELVED, SHELVED_OFFLOADED, SOFT_DELETED, SUSPENDED, and VERIFY_RESIZE

+

For details, see ECS Statuses.

+

created

+

String

+

Specifies the time when the ECS was created. The time is in the format of "2019-05-22T07:48:53Z".

+

updated

+

String

+

Specifies the time when the ECS was updated last time. The time is in the format of "2019-05-22T07:48:53Z".

+

flavor

+

Object

+

Specifies the ECS flavor.

+

For details, see Table 5.

+

image

+

Object

+

Specifies the ECS image information. For an ECS created using an image, the image ID and link are returned.

+

For details, see Table 11.

+

tenant_id

+

String

+

Specifies the ID of the tenant to which the ECS belongs. The parameter value is the same as the project ID specified by project_id.

+

key_name

+

String

+

Specifies the SSH key name.

+

user_id

+

String

+

Specifies the ID of the user to which an ECS belongs.

+

metadata

+

Object

+

Specifies the ECS metadata.

+

hostId

+

String

+

Specifies the host ID of the ECS.

+

addresses

+

Object

+

Specifies the network addresses of an ECS.

+

For details, see Table 7.

+

security_groups

+

Array of objects

+

Specifies the security groups to which the ECS belongs.

+

For details, see Table 9.

+

links

+

Array of objects

+

Specifies ECS shortcut links.

+

For details, see Table 6.

+

os:scheduler_hints

+

Object

+

Specifies the ECS scheduling information. For details, see Table 12. This parameter is only available for DeHs.

+

OS-DCF:diskConfig

+

String

+

Specifies the disk configuration mode. This is an extended attribute. This field is valid for the ECS started using an image.

+

Options:

+
  • AUTO: This API uses a single partition to build an ECS with the target disk size. The API automatically adjusts the file system to adapt to the entire partition.
  • MANUAL: This API uses the partitioning scheme in the source image and the file system to build the ECS. If the target disk size is large, the API does not partition the remaining disk space.
+

OS-EXT-AZ:availability_zone

+

String

+

Specifies the AZ ID. This is an extended attribute.

+

OS-EXT-SRV-ATTR:host

+

String

+

Specifies the name of the host on which the ECS is deployed. This is an extended attribute.

+

OS-EXT-SRV-ATTR:hypervisor_hostname

+

String

+

Specifies the hostname of the hypervisor. This is an extended attribute.

+

OS-EXT-SRV-ATTR:instance_name

+

String

+

Specifies the ECS ID. This is an extended attribute.

+

OS-EXT-STS:power_state

+

Integer

+

Specifies the ECS power status. This is an extended attribute.

+

Options: 0, 1, 2, 3, and 4

+
  • 0: pending
  • 1: running
  • 2: paused
  • 3: shutdown
  • 4: crashed
+

OS-EXT-STS:task_state

+

String

+

Specifies the ECS task status. This is an extended attribute.

+

For details about options, see ECS Statuses.

+

OS-EXT-STS:vm_state

+

String

+

Specifies the ECS status. This is an extended attribute.

+

Options:

+

ACTIVE, BUILDING, STOPPED, RESIZED, PAUSED, SUSPENDED, RESCUED, ERROR, DELETED, SOFT_DELETED, SHELVED, and SHELVED_OFFLOADED

+

For details, see ECS Statuses.

+

OS-SRV-USG:launched_at

+

String

+

Specifies the time when the ECS was started. This is an extended attribute. The time is in the format of "2019-05-22T07:48:19.000000".

+

OS-SRV-USG:terminated_at

+

String

+

Specifies the time when the ECS was deleted. This is an extended attribute.

+

The time is in the format of "2019-05-22T07:48:19.000000".

+

os-extended-volumes:volumes_attached

+

Array of objects

+

Specifies information about the EVS disks attached to the ECS.

+

For details, see Table 8.

+

fault

+

Object

+

Describes ECS faults.

+

This parameter is optional. It is returned when an error occurs on an ECS.

+

For details, see Table 10.

+

description

+

String

+

Describes the ECS.

+

This parameter is supported in microversion 2.19 and later.

+

host_status

+

String

+

Specifies the nova-compute status.

+
  • UP: The nova-compute status is normal.
  • UNKNOWN: The nova-compute status is unknown.
  • DOWN: the nova-compute status is abnormal.
  • MAINTENANCE: The nova-compute is in maintenance state.
  • Empty string: There is no host information on the ECS.
+

This parameter is supported in microversion 2.16 and later.

+

OS-EXT-SRV-ATTR:hostname

+

String

+

Specifies the name of the host accommodating the ECS.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:reservation_id

+

String

+

Specifies the reserved ECS ID if multiple ECSs are created in a batch.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:launch_index

+

Integer

+

Specifies the sequence in which ECSs created in a batch start.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:kernel_id

+

String

+

Specifies the UUID of the kernel image if an AMI image is used. In other scenarios, leave this parameter blank.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:ramdisk_id

+

String

+

Specifies the UUID of the Ramdisk image if an AMI image is used. In other scenarios, leave this parameter blank.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:root_device_name

+

String

+

Specifies the device name of the ECS system disk.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:user_data

+

String

+

Specifies the user data specified during ECS creation.

+

This parameter is supported in microversion 2.3 and later.

+

tags

+

Array of strings

+

Specifies ECS tags.

+

This parameter is supported in microversion 2.26 and later. If the microversion is not used for query, the response does not contain the tags field.

+
Tag functions have been upgraded on the public cloud. After the upgrade, the tag values returned by the system comply with the following rules:
  • The key and value of a tag are connected using an equal sign (=), for example, key=value.
  • If the value is empty, only the key is returned.
+
+

For more details about upgraded tag functions, see Tag Types.

+

locked

+

Boolean

+

Specifies the ECS lock status, which is True when the ECS is locked and False when the ECS is unlocked.

+

This parameter is supported in microversion 2.9 and later.

+

accessIPv4

+

String

+

Reserved

+

accessIPv6

+

String

+

Reserved

+

config_drive

+

String

+

Reserved

+

progress

+

Integer

+

Reserved

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 flavor field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS ID.

+

This parameter is not supported in microversion 2.47 and later.

+

links

+

Array of objects

+

Specifies shortcut links for ECS types. For details, see Table 6.

+

This parameter is not supported in microversion 2.47 and later.

+

vcpus

+

Integer

+

Specifies the number of vCPUs in the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

ram

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

disk

+

Integer

+

Specifies the system disk size in the ECS flavor. Value 0 indicates that the disk size is not limited.

+

This parameter is supported in microversion 2.47 and later.

+

ephemeral

+

Integer

+

Reserved

+

This parameter is supported in microversion 2.47 and later.

+

swap

+

Integer

+

Reserved

+

This parameter is supported in microversion 2.47 and later.

+

original_name

+

String

+

Specifies the name of the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

extra_specs

+

Object

+

Extended flavor field

+

For details, see Data Structure for Query Details About Specifications.

+

This parameter is supported in microversion 2.47 and later.

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 servers_links and links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Specifies the shortcut link.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 Data structure of the network which an ECS accesses

Parameter

+

Type

+

Description

+

addr

+

String

+

Specifies the IP address.

+

version

+

Integer

+

Specifies the type of an IP address. The value of this parameter can be 4 or 6.

+
  • 4: The type of the IP address is IPv4.
  • 6: The type of the IP address is IPv6.
+

OS-EXT-IPS-MAC:mac_addr

+

String

+

Specifies the MAC address. This is an extended attribute.

+

OS-EXT-IPS:type

+

String

+

Specifies the IP address assignment mode. This is an extended attribute.

+
+
+ +
+ + + + + + + + + + + + + +
Table 8 os-extended-volumes:volumes_attached field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the EVS disk ID.

+

delete_on_termination

+

Boolean

+

Specifies whether to delete additional disks when deleting the ECS.

+

By default, this parameter is set to False.

+

This parameter is supported in microversion 2.3 and later.

+
+
+ +
+ + + + + + + + + +
Table 9 security_groups field description

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the security group name or UUID.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 10 fault field description

Parameter

+

Type

+

Description

+

code

+

Integer

+

Specifies the error code.

+

created

+

String

+

Specifies the time when an error occurred.

+

message

+

String

+

Describes an error.

+

details

+

String

+

Specifies details about an error. This parameter is optional and is returned only when it is not empty.

+
+
+ +
+ + + + + + + + + + + + + +
Table 11 image field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the image ID.

+

links

+

Array of objects

+

Specifies shortcut links for ECS images. For details, see Table 6.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 12 os:scheduler_hints parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tenancy

+

No

+

Array of strings

+

Creates ECSs on a dedicated or shared host.

+

The value of this parameter can be dedicated or shared.

+

dedicated_host_id

+

No

+

Array of strings

+

Specifies the DeH ID.

+

This parameter takes effect only when tenancy is set to dedicated.

+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/detail
+GET https://{endpoint}/v2.1/{project_id}/servers/detail
+
+

Example Response

{
+    "servers": [
+        {
+            "addresses": {
+                "68269e6e-4a27-441b-8029-35373ad50bd9": [
+                    {
+                        "addr": "192.168.0.3", 
+                        "version": 4
+                    }
+                ]
+            }, 
+            "created": "2012-09-07T16:56:37Z", 
+            "flavor": {
+                "id": "1", 
+                "links": [
+                    {
+                        "href": "http://openstack.example.com/openstack/flavors/1", 
+                        "rel": "bookmark"
+                    }
+                ]
+            }, 
+            "hostId": "16d193736a5cfdb60c697ca27ad071d6126fa13baeb670fc9d10645e", 
+            "id": "05184ba3-00ba-4fbc-b7a2-03b62b884931", 
+            "image": "", 
+            "links": [
+                {
+                    "href": "http://openstack.example.com/v2/openstack/servers/05184ba3-00ba-4fbc-b7a2-03b62b884931", 
+                    "rel": "self"
+                }, 
+                {
+                    "href": "http://openstack.example.com/openstack/servers/05184ba3-00ba-4fbc-b7a2-03b62b884931", 
+                    "rel": "bookmark"
+                }
+            ], 
+            "metadata": {},                         
+            "name": "new-server-test", 
+            "progress": 0, 
+            "status": "ACTIVE", 
+            "tenant_id": "openstack", 
+            "updated": "2012-09-07T16:56:37Z", 
+            "user_id": "fake"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212690.html b/ecs/api-ref/en-us_topic_0020212690.html new file mode 100644 index 000000000..77d78bb3a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212690.html @@ -0,0 +1,758 @@ + + +

Querying Details About ECSs

+

Function

This API is used to query details about an ECS by ECS ID.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}

+

GET /v2/{project_id}/servers/{server_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

server

+

Object

+

Specifies ECS information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 server field description

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the ECS name.

+

id

+

String

+

Specifies an ECS uniquely.

+

status

+

String

+

Specifies the ECS status.

+

Options:

+

ACTIVE, BUILD, DELETED, ERROR, HARD_REBOOT, MIGRATING, PAUSED, REBOOT, REBUILD, RESIZE, REVERT_RESIZE, SHUTOFF, SHELVED, SHELVED_OFFLOADED, SOFT_DELETED, SUSPENDED, and VERIFY_RESIZE

+

For details, see ECS Statuses.

+

created

+

String

+

Specifies the time when the ECS was created. The time is in the format of "2019-05-22T07:48:19Z".

+

updated

+

String

+

Specifies the time when the ECS was updated last time. The time is in the format of "2019-05-22T07:48:19Z".

+

flavor

+

Object

+

Specifies the ECS flavor. For details, see Table 4.

+

image

+

Object

+

Specifies the ECS image information. For an ECS created using an image, the image ID and link are returned.

+

For details, see Table 5.

+

tenant_id

+

String

+

Specifies the ID of the tenant to which the ECS belongs. The parameter value is the same as the project ID specified by project_id.

+

key_name

+

String

+

Specifies the SSH key name.

+

user_id

+

String

+

Specifies the ID of the user to which an ECS belongs.

+

metadata

+

Object

+

Specifies the ECS metadata.

+

hostId

+

String

+

Specifies the host ID of the ECS.

+

addresses

+

Object

+

Specifies the network addresses of an ECS.

+

For details, see Table 7.

+

security_groups

+

Array of objects

+

Specifies the security groups to which the ECS belongs. For details, see Table 9.

+

links

+

Array of objects

+

Specifies ECS shortcut links. For details, see Table 6.

+

tags

+

Array of strings

+

Specifies ECS tags.

+

This parameter is supported in microversion 2.26 and later. If the microversion is not used for query, the response does not contain the tags field.

+
Tag functions have been upgraded on the public cloud. After the upgrade, the tag values returned by the system comply with the following rules:
  • The key and value of a tag are connected using an equal sign (=), for example, key=value.
  • If the value is empty, only the key is returned.
+
+

For more details about upgraded tag functions, see Tag Types.

+

os:scheduler_hints

+

Object

+

Specifies the ECS scheduling information. For details, see Table 11. This parameter is not available for BMSs. and is only available in DeH scenarios.

+

OS-DCF:diskConfig

+

String

+

Specifies the disk configuration mode. This is an extended attribute. This field is valid for the ECS started using an image.

+

Options:

+
  • AUTO: This API uses a single partition to build an ECS with the target disk size. The API automatically adjusts the file system to adapt to the entire partition.
+
  • MANUAL: This API uses the partitioning scheme in the source image and the file system to build the ECS. If the target disk size is large, the API does not partition the remaining disk space.
+

OS-EXT-AZ:availability_zone

+

String

+

Specifies the AZ ID. This is an extended attribute.

+

OS-EXT-SRV-ATTR:host

+

String

+

Specifies the name of the host on which the ECS is deployed. This is an extended attribute.

+

OS-EXT-SRV-ATTR:hypervisor_hostname

+

String

+

Specifies the hostname of the hypervisor. This is an extended attribute.

+

OS-EXT-SRV-ATTR:instance_name

+

String

+

Specifies the ECS ID. This is an extended attribute.

+

OS-EXT-STS:power_state

+

Integer

+

Specifies the ECS power status. This is an extended attribute.

+

Options: 0, 1, 2, 3, and 4

+
  • 0: pending
  • 1: running
  • 2: paused
  • 3: shutdown
  • 4: crashed
+

OS-EXT-STS:task_state

+

String

+

Specifies the ECS task status. This is an extended attribute.

+

For details about options, see ECS Statuses.

+

OS-EXT-STS:vm_state

+

String

+

Specifies the ECS status. This is an extended attribute.

+

Options:

+

ACTIVE, BUILDING, STOPPED, RESIZED, PAUSED, SUSPENDED, RESCUED, ERROR, DELETED, SOFT_DELETED, SHELVED, and SHELVED_OFFLOADED

+

For details, see ECS Statuses.

+

OS-SRV-USG:launched_at

+

String

+

Specifies the time when the ECS was started. This is an extended attribute. The time is in the format of "2019-05-22T07:48:19.000000".

+

OS-SRV-USG:terminated_at

+

String

+

Specifies the time when the ECS was deleted. This is an extended attribute. The time is in the format of "2019-05-22T07:48:19.000000".

+

os-extended-volumes:volumes_attached

+

Array of objects

+

Specifies information about the EVS disks attached to the ECS. For details, see Table 8.

+

fault

+

Object

+

Describes ECS faults.

+

This parameter is optional. It is returned when an error occurs on an ECS.

+

For details, see Table 10.

+

description

+

String

+

Describes the ECS.

+

This parameter is supported in microversion 2.19 and later.

+

host_status

+

String

+

Specifies the nova-compute status.

+
  • UP: The nova-compute status is normal.
  • UNKNOWN: The nova-compute status is unknown.
  • DOWN: the nova-compute status is abnormal.
  • MAINTENANCE: The nova-compute is in maintenance state.
  • Null: There is no host information on the ECS.
+

This parameter is supported in microversion 2.16 and later.

+

OS-EXT-SRV-ATTR:hostname

+

String

+

Specifies the name of the host accommodating the ECS.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:reservation_id

+

String

+

Specifies the reserved ECS ID if multiple ECSs are created in a batch.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:launch_index

+

Integer

+

Specifies the sequence in which ECSs created in a batch start.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:kernel_id

+

String

+

Specifies the UUID of the kernel image if an AMI image is used. In other scenarios, leave this parameter blank.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:ramdisk_id

+

String

+

Specifies the UUID of the Ramdisk image if an AMI image is used. In other scenarios, leave this parameter blank.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:root_device_name

+

String

+

Specifies the device name of the ECS system disk.

+

This parameter is supported in microversion 2.3 and later.

+

OS-EXT-SRV-ATTR:user_data

+

String

+

Specifies the user data specified during ECS creation.

+

This parameter is supported in microversion 2.3 and later.

+

locked

+

Boolean

+

Specifies the ECS lock status, which is True when the ECS is locked and False when the ECS is unlocked.

+

This parameter is supported in microversion 2.9 and later.

+

accessIPv4

+

String

+

Reserved

+

accessIPv6

+

String

+

Reserved

+

config_drive

+

String

+

Reserved

+

progress

+

Integer

+

Reserved

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 flavor field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS ID.

+

This parameter is not supported in microversion 2.47 and later.

+

links

+

Array of objects

+

Specifies shortcut links for ECS types.

+

For details, see Table 6.

+

This parameter is not supported in microversion 2.47 and later.

+

vcpus

+

Integer

+

Specifies the number of vCPUs in the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

ram

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

disk

+

Integer

+

Specifies the system disk size in the ECS flavor. Value 0 indicates that the disk size is not limited.

+

This parameter is supported in microversion 2.47 and later.

+

ephemeral

+

Integer

+

Reserved

+

This parameter is supported in microversion 2.47 and later.

+

swap

+

Integer

+

Reserved

+

This parameter is supported in microversion 2.47 and later.

+

original_name

+

String

+

Specifies the name of the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

extra_specs

+

Object

+

Indicates an extended flavor field. For details, see os_extra_specs (flavor) Field Description.

+

This parameter is supported in microversion 2.47 and later.

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 image field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the image ID.

+

links

+

Array of objects

+

Specifies shortcut links for ECS images. For details, see Table 6.

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Provides the corresponding shortcut link.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 Data structure of the network which an ECS accesses

Parameter

+

Type

+

Description

+

addr

+

String

+

Specifies the IP address.

+

version

+

Integer

+

Specifies the type of an IP address. The value of this parameter can be 4 or 6.

+
  • 4: The type of the IP address is IPv4.
  • 6: The type of the IP address is IPv6.
+

OS-EXT-IPS-MAC:mac_addr

+

String

+

Specifies the MAC address. This is an extended attribute.

+

OS-EXT-IPS:type

+

String

+

Specifies the IP address assignment mode. This is an extended attribute.

+
+
+ +
+ + + + + + + + + + + + + +
Table 8 os-extended-volumes:volumes_attached field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the EVS disk ID.

+

delete_on_termination

+

Boolean

+

Specifies whether to delete additional disks when deleting the ECS.

+

By default, this parameter is set to False.

+

This parameter is supported in microversion 2.3 and later.

+
+
+ +
+ + + + + + + + + +
Table 9 security_groups field description

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the security group name or UUID.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 10 fault field description

Parameter

+

Type

+

Description

+

code

+

Integer

+

Specifies the error code.

+

created

+

String

+

Specifies the time when an error occurred.

+

message

+

String

+

Describes an error.

+

details

+

String

+

Specifies details about an error. This parameter is optional and is returned only when it is not empty.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 11 os:scheduler_hints parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tenancy

+

No

+

Array of strings

+

Creates ECSs on a dedicated or shared host.

+

The value of this parameter can be dedicated or shared.

+

dedicated_host_id

+

No

+

Array of strings

+

Specifies the DeH ID.

+

This parameter takes effect only when the value of tenancy is dedicated.

+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}
+
+

Example Response

{
+    "server": {
+        "addresses": {
+            "68269e6e-4a27-441b-8029-35373ad50bd9": [
+                {
+                    "addr": "192.168.0.3", 
+                    "version": 4,
+                    "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:1b:35:78",
+                    "OS-EXT-IPS:type": "fixed"
+                }
+            ]
+        }, 
+        "created": "2012-08-20T21:11:09Z", 
+        "flavor": {
+            "id": "1", 
+            "links": [
+                {
+                    "href": "http://openstack.example.com/openstack/flavors/1", 
+                    "rel": "bookmark"
+                }
+            ]
+        }, 
+        "hostId": "65201c14a29663e06d0748e561207d998b343e1d164bfa0aafa9c45d", 
+        "id": "893c7791-f1df-4c3d-8383-3caae9656c62", 
+        "image": "", 
+        "links": [
+            {
+                "href": "http://openstack.example.com/v2/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62", 
+                "rel": "self"
+            }, 
+            {
+                "href": "http://openstack.example.com/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62", 
+                "rel": "bookmark"
+            }
+        ], 
+        "metadata": {},
+        "name": "new-server-test", 
+        "progress": 0, 
+        "status": "ACTIVE", 
+        "tenant_id": "openstack", 
+        "updated": "2012-08-20T21:11:09Z", 
+        "user_id": "fake"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020212691.html b/ecs/api-ref/en-us_topic_0020212691.html new file mode 100644 index 000000000..67fedf05d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212691.html @@ -0,0 +1,25 @@ + + +

Status Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0020212692.html b/ecs/api-ref/en-us_topic_0020212692.html new file mode 100644 index 000000000..a49212aa7 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020212692.html @@ -0,0 +1,480 @@ + + +

Modifying ECS Information

+

Function

This API is used to modify ECS information. Only the name and description of an ECS can be modified.

+
+

URI

PUT /v2.1/{project_id}/servers/{server_id}

+

PUT /v2/{project_id}/servers/{server_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

server

+

Yes

+

Object

+

Specifies the ECS data structure. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 server field description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Specifies the name of the modified ECS.

+

The length is greater than 0 and less than 256

+

description

+

No

+

String

+

Describes the ECS. The value contains a maximum of 255 bytes.

+

This parameter is supported in microversion 2.19 and later.

+
+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

server

+

Object

+

Specifies ECS information. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 server field description

Parameter

+

Type

+

Description

+

tenant_id

+

String

+

Specifies the tenant or project ID.

+

image

+

String

+

Specifies the image ID.

+

accessIPv4

+

String

+

Reserved

+

addresses

+

Object

+

Specifies the attributed network information of the ECS.

+

The structure is Map<String, Object>.

+

For details, see Table 6.

+

metadata

+

Object

+

Specifies the ECS metadata.

+

accessIPv6

+

String

+

Reserved

+

created

+

String

+

Specifies the time when the ECS was created. The time is in the format of "2019-05-22T03:19:19Z".

+

hostId

+

String

+

Specifies the host ID of the ECS.

+

flavor

+

Object

+

Specifies the ECS flavor. For details, see Table 7.

+

OS-DCF:diskConfig

+

String

+

Specifies the disk configuration mode. This is an extended attribute. This field is valid for the ECS started using an image.

+

user_id

+

String

+

Specifies the ID of the user to which an ECS belongs.

+

name

+

String

+

Specifies the modified name of the ECS.

+

progress

+

Integer

+

Reserved

+

links

+

Array of Object

+

Specifies ECS shortcut links. For details, see Table 8.

+

id

+

String

+

Specifies the unique ID of an ECS.

+

updated

+

String

+

Specifies the time when the ECS was updated last time.

+

The time is in the format of "2019-05-22T03:19:19Z".

+

locked

+

Boolean

+

Specifies the ECS lock status, which is True when the ECS is locked and False when the ECS is unlocked.

+

This parameter is supported in microversion 2.9 and later.

+

description

+

String

+

Describes the ECS.

+

This parameter is supported in microversion 2.19 and later.

+

tags

+

Array of strings

+

Specifies ECS tags.

+

This parameter is supported in microversion 2.26 and later. If the microversion is not used for query, the response does not contain the tags field.

+
Tag functions have been upgraded on the public cloud. After the upgrade, the tag values returned by the system comply with the following rules:
  • The key and value of a tag are connected using an equal sign (=), for example, key=value.
  • If the value is empty, only the key is returned.
+
+
  • The key and value of a tag are connected using an equal sign (=), for example, key=value.
  • If the value is empty, only the key is returned.
+

For more details about upgraded tag functions, see Tag Types.

+

status

+

String

+

Specifies the ECS status.

+

Options:

+

ACTIVE, BUILD, ERROR, HARD_REBOOT, MIGRATING, REBOOT, RESIZE, REVERT_RESIZE, SHELVED, SHELVED_OFFLOADED, SHUTOFF, UNKNOWN, and VERIFY_RESIZE

+

For details, see ECS Statuses.

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 Data structure of the network which an ECS accesses

Parameter

+

Type

+

Description

+

addr

+

String

+

Specifies the IP address.

+

version

+

Integer

+

Specifies the type of an IP address. The value of this parameter can be 4 or 6.

+
  • 4: The type of the IP address is IPv4.
  • 6: The type of the IP address is IPv6.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 flavor field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS ID.

+

This parameter is not supported in microversion 2.47 and later.

+

links

+

Array of objects

+

Specifies shortcut links for ECS types. For details, see Table 8.

+

This parameter is not supported in microversion 2.47 and later.

+

vcpus

+

Integer

+

Specifies the number of vCPUs in the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

ram

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

disk

+

Integer

+

Specifies the system disk size in the ECS flavor. Value 0 indicates that the disk size is not limited.

+

This parameter is supported in microversion 2.47 and later.

+

ephemeral

+

Integer

+

Reserved

+

This parameter is supported in microversion 2.47 and later.

+

swap

+

Integer

+

Reserved

+

This parameter is supported in microversion 2.47 and later.

+

original_name

+

String

+

Specifies the name of the ECS flavor.

+

This parameter is supported in microversion 2.47 and later.

+

extra_specs

+

Object

+

Indicates an extended flavor field. For details, see os_extra_specs (flavor) Field Description.

+

This parameter is supported in microversion 2.47 and later.

+
+
+ +
+ + + + + + + + + + + + + +
Table 8 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Specifies the shortcut link.

+
+
+
+

Example Request

PUT https://{endpoint}/v2/{project_id}/servers/{server_id}
+PUT https://{endpoint}/v2.1/{project_id}/servers/{server_id}
+
{
+    "server": {
+        "name": "new-server-test"
+    }
+}
+
+

Example Response

{
+  "server": {
+    "tenant_id": "7910a6e50b80402ba028c8d96c1b31fe",
+    "image": "",
+    "accessIPv4": "",
+    "addresses": {
+      "03be5c1e-e05d-4905-a105-c3bd9b730bdc": [
+        {
+          "addr": "192.168.0.72",
+          "version": 4
+        }
+      ]
+    },
+    "metadata": {},
+    "accessIPv6": "",
+    "created": "2018-05-17T03:15:48Z",
+    "hostId": "7dc82f6b1d406200fc63e395cf4829cbffcb49de0e9c75c5773f201f",
+    "flavor": {
+      "links": [
+        {
+          "rel": "bookmark",
+          "href": "https://None/7910a6e50b80402ba028c8d96c1b31fe/flavors/c3.1U1G"
+        }
+      ],
+      "id": "c3.1U1G"
+    },
+    "OS-DCF:diskConfig": "MANUAL",
+    "user_id": "d698a78532ca430f8daec1858f2b500e",
+    "name": "new-server-test",
+    "progress": 0,
+    "links": [
+      {
+        "rel": "self",
+        "href": "https://None/v2/7910a6e50b80402ba028c8d96c1b31fe/servers/1a19ef4f-be0a-4526-bf2f-14b4464d536a"
+      },
+      {
+        "rel": "bookmark",
+        "href": "https://None/7910a6e50b80402ba028c8d96c1b31fe/servers/1a19ef4f-be0a-4526-bf2f-14b4464d536a"
+      }
+    ],
+    "id": "1a19ef4f-be0a-4526-bf2f-14b4464d536a",
+    "updated": "2018-05-21T00:36:27Z",
+    "status": "ACTIVE"
+  }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0020805967.html b/ecs/api-ref/en-us_topic_0020805967.html new file mode 100644 index 000000000..a562c40b6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0020805967.html @@ -0,0 +1,8 @@ + + +

API Usage Guidelines

+

Public cloud APIs comply with the RESTful API design principles. REST-based Web services are organized into resources. Each resource is identified by one or more Uniform Resource Identifiers (URIs). An application accesses a resource based on the resource's Unified Resource Locator (URL). A URL is usually in the following format: https://Endpoint/uri. In the URL, uri indicates the resource path, that is, the API access path.

+

Public cloud APIs use HTTPS as the transmission protocol. Requests/Responses are transmitted by using JSON messages, with media type represented by Application/json.

+

For details about how to use APIs, see API Usage Guidelines.

+
+ diff --git a/ecs/api-ref/en-us_topic_0022067588.html b/ecs/api-ref/en-us_topic_0022067588.html new file mode 100644 index 000000000..a21ae46ee --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067588.html @@ -0,0 +1,23 @@ + + + +

Appendix

+ +

+
+ +
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022067713.html b/ecs/api-ref/en-us_topic_0022067713.html new file mode 100644 index 000000000..89535dacd --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067713.html @@ -0,0 +1,17 @@ + + +

Task Request Result

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0022067714.html b/ecs/api-ref/en-us_topic_0022067714.html new file mode 100644 index 000000000..24edf1f8a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067714.html @@ -0,0 +1,123 @@ + + +

Responses (Task)

+
+ + +
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022067715.html b/ecs/api-ref/en-us_topic_0022067715.html new file mode 100644 index 000000000..f612c758f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067715.html @@ -0,0 +1,116 @@ + + +

Returned Values

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022067716.html b/ecs/api-ref/en-us_topic_0022067716.html new file mode 100644 index 000000000..b348378a3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067716.html @@ -0,0 +1,121 @@ + + +

Returned Values for General Requests

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022067717.html b/ecs/api-ref/en-us_topic_0022067717.html new file mode 100644 index 000000000..890bed18e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067717.html @@ -0,0 +1,1658 @@ + + +

Error Codes

+

Context

+
+

Error Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

HTTP Status Code

+

Error Code

+

Error Message

+

Description

+

Solution

+

400

+

Ecs.0000

+

An existing EIP cannot be assigned to the ECSs created in batches.

+

Request error.

+

Check the request body according to the returned error message.

+

400

+

Ecs.0001

+

the number of instance above quota limits

+

The number of ECSs has reached the maximum allowed.

+

Apply for a higher quota of the corresponding resource according to the returned error message.

+

400

+

Ecs.0002

+

submit job failed

+

Failed to submit the task.

+

Contact customer service to locate the fault.

+

403

+

Ecs.0003

+

The token role contains op_suspended. The current operation is not allowed.

+

You do not have permission or your balance is insufficient.

+

Check whether the account balance is insufficient and the account is frozen according to the returned error message.

+

400

+

Ecs.0004

+

Failed to assign permissions: %s

+

Authentication failed.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0005

+

request body is illegal.

+

Invalid parameters.

+

Check whether the request body is of the correct JSON structure according to the API reference.

+

400

+

Ecs.0007

+

ecs service not support the ironic image [%s]

+

Invalid image attributes.

+

Adjust the specifications or image type.

+

400

+

Ecs.0008

+

performancetype in extended flavor field [%s] is null.

+

Invalid flavor attributes.

+

Contact customer service to check whether the flavor registration is valid.

+

400

+

Ecs.0009

+

Another flavor must be used for resizing.

+

Flavor conflict.

+

Change the flavor when modifying ECS specifications.

+

400

+

Ecs.0010

+

Private IP address %s is already in use.

+

The private IP address is already in use.

+

Change the port.

+

400

+

Ecs.0011

+

The password length must range from 8 to 26.

+

Failed to meet password complexity requirements.

+

Check the password length and change the password.

+

400

+

Ecs.0012

+

Insufficient IP addresses.

+

The number of IP addresses in the subnet is insufficient.

+

Check whether the floating IP addresses of the subnet are used up.

+

400

+

Ecs.0013

+

Insufficient EIP quota.

+

Insufficient EIP quota.

+

Apply for a higher EIP quota because the EIP quota is insufficient.

+

400

+

Ecs.0014

+

vpc parm is illegal

+

Invalid VPC parameters.

+

Check whether the subnets belong to the same VPC.

+

400

+

Ecs.0015

+

Flavor resource_type %s does not match volume_type %s.

+

The disk of this type is not applicable to the ECS.

+

Check whether the disk type is supported by the flavor.

+

400

+

Ecs.0017

+

The vmid [%s] in volume metadata is not the same with vmid [%s]

+

The ECS is not the target one that the system disk or data disk to be attached.

+

Check whether the __system__server_id value in disk metadata is the same as the UUID of the ECS to which the system disk or data disk is to be attached.

+

400

+

Ecs.0021

+

cinder quota check fail:volume count is over limits

+

Insufficient EVS disk quota.

+

Apply for a higher EVS disk quota.

+

400

+

Ecs.0022

+

the number of instance above server group quota limits

+

The number of ECSs in the ECS group exceeded the upper limit.

+

Apply for a higher ECS quota for an ECS group.

+

400

+

Ecs.0023

+

project_id in token mismatches with project_id in url.

+

Invalid token, or the project ID in the token is different from that in the URL.

+

Apply for a valid token or check the project ID in the URL.

+

400

+

Ecs.0025

+

Failed to check the role of kms

+

EVS is not authorized to obtain KMS keys for encrypting EVS disks.

+

Authorize EVS to obtain KMS keys for encrypting EVS disks.

+

400

+

Ecs.0029

+

the flavor[%s] does not exist.

+

The flavor does not exist or has been abandoned.

+

Change another flavor.

+

400

+

Ecs.0030

+

The server %s is freezed.

+

The ECS has been frozen.

+

Check whether the account has been frozen or contact customer service.

+

400

+

Ecs.0031

+

image [%s] does not exist.

+

The image does not exist.

+

Change another image.

+

400

+

Ecs.0032

+

image[%s] status must be active

+

The image is not in Active state.

+

Change another image.

+

400

+

Ecs.0034

+

Backup %s does not exist.

+

The full-ECS backup does not exist or has been deleted.

+

Change another image.

+

400

+

Ecs.0036

+

flavor [%s] does not support auto recovery.

+

The flavor does not support automatic recovery.

+

Change another flavor.

+

400

+

Ecs.0037

+

Instance with flavor %s does not support mounte scsi-type disks.

+

The flavor does not support SCSI disks.

+

Change another flavor or type.

+

400

+

Ecs.0038

+

subnet [%s] is not exist.

+

The subnet does not exist.

+

Adjust network parameter settings.

+

400

+

Ecs.0039

+

privateIp [%s] is not in this subnet [%s]

+

The specified IP address does not belong to the subnet.

+

Change the specified private IP address.

+

400

+

Ecs.0041

+

Description field length cannot be greater than 85 characters and cannot contain '>' and '<' characters

+

Invalid description field.

+

Modify the service description field.

+

400

+

Ecs.0042

+

The number of VBD volumes is %s, but KVM server supports up to 24.

+

The number of attached data disks exceeds the maximum allowed limit.

+

Adjust the number of attached data disks.

+

400

+

Ecs.0043

+

volume type[%s] is not exist.

+

The disk type does not exist.

+

Change the disk type.

+

400

+

Ecs.0044

+

the volumeType [%s] is sellout in az[%s]

+

The disk of this type has been sold out.

+

Change the disk type.

+

400

+

Ecs.0045

+

bandwidth size %d is invalid

+

The bandwidth exceeds the maximum size allowed.

+

Adjust the bandwidth.

+

400

+

Ecs.0046

+

The rootVolume type in the request must be consistent with the snapshot volume.

+

The disk type of the ECS is different from that of the snapshot image.

+

Change the disk type.

+

400

+

Ecs.0048

+

Image[%s] status is error or associated Backup[%s] status is error.

+

The full-ECS image is unavailable.

+

Check the full-ECS image.

+

400

+

Ecs.0050

+

The requested number of vif is bigger than the supplied.

+

The number of NICs attached to the ECS exceeds the maximum value allowed.

+

Adjust the number of NICs.

+

400

+

Ecs.0051

+

Instance can only mount scsi volumes.

+

The attached disk is not of SCSI type.

+

Adjust the disk type.

+

400

+

Ecs.0052

+

Instances can only mount scsi system volumes

+

The attached system disk is not of SCSI type.

+

Change the system disk type.

+

400

+

Ecs.0053

+

Instances can only mount scsi data volumes.

+

The attached data disk is not of SCSI type.

+

Change the data disk type.

+

400

+

Ecs.0057

+

the volume has already been attached to this instance and you cannot repeatedly attch.

+

The disk has been attached to the ECS.

+

Attach a new disk to the ECS.

+

400

+

Ecs.0058

+

current image provider does not match userDomainId

+

The provideId of the image does not match the account ID.

+

Check the account permission and image.

+

400

+

Ecs.0062

+

flavor does not support driver mode

+

The flavor does not allow settings of the NIC driver type.

+

Change another flavor.

+

400

+

Ecs.0064

+

vpcId in the request and vpcId of the main subnetId are not matched

+

Inconsistent VPC ID in the request body from that in the primary NIC.

+

Adjust the NIC parameter settings.

+

400

+

Ecs.0073

+

volume status is backing-up, cannot be deleted at this time.

+

The system disk is being backed up.

+

You are not allowed to delete a system disk that is being backed up.

+

400

+

Ecs.0074

+

windows image does not support external users

+

External users are not allowed to create Windows ECSs.

+

External users, including non-internal users and non-third-party users, are not allowed to purchase Windows images.

+

400

+

Ecs.0075

+

provider user only supports windows images.

+

Partners can purchase only Windows images.

+

Purchase only Windows images.

+

400

+

Ecs.0085

+

Server[%s] does not have port[%s].

+

The ECS does not have the NIC.

+

Replace a NIC.

+

400

+

Ecs.0086

+

Port[%s] is not the primary interface.

+

The NIC is not the primary NIC.

+

Replace a NIC.

+

400

+

Ecs.0100

+

Volumes can be attached to server[%s] only in started or stopped state.

+

The ECS status does not meet requirements.

+

The ECS in the current state does not support this operation. Try again later.

+

400

+

Ecs.0101

+

Status error of the system volume.

+

Abnormal system disk status.

+

For details, contact customer service.

+

400

+

Ecs.0102

+

System disk status does not support uninstallation ,serverId[%s]

+

The system disk status does not allow the disk to be detached.

+

Check the system disk status.

+

400

+

Ecs.0103

+

The volume %s has been frozen and cannot be attached.

+

The disk is unavailable.

+

Check the disk status or contact customer service to change the disk status.

+

400

+

Ecs.0104

+

The number of volumes attached to server[%s] has exceeded the upper limit.

+

Insufficient ECS disk quota for attaching more disks.

+

Adjust the number of attached disks.

+

400

+

Ecs.0105

+

Failed to view the details about the system volume: %s.

+

Failed to query the ECS system disk.

+

Check whether the ECS has a system disk attached.

+

400

+

Ecs.0106

+

Failed to create VLAN network %s because the network status is error.

+

Abnormal network status.

+

For details, contact customer service.

+

403

+

Ecs.0110

+

token role %s is forbidden to perform this action.

+

Operations are prohibited on the client due to permissions.

+

You do not have the permission to perform such an operation. Check token permissions. For details, see the error message returned by the API.

+

400

+

Ecs.0111

+

volume %s is not in server %s attach volume list

+

The disk is not in the attachment list.

+

Check whether the selected disk has been attached to the ECS, or replace the disk.

+

404

+

Ecs.0114

+

Instance[%s] could not be found.

+

The ECS cannot be detected.

+

Check whether the ECS has been created.

+

400

+

Ecs.0118

+

the number of vm %s is overlimit the maximum number %s

+

The number of tasks in a batch is greater than the upper limit.

+

Check the number of ECSs in the batch.

+

400

+

Ecs.0121

+

volume must has same faultDomain with server

+

Failed to attach the disk because the ECS and the disk are in different failure domains.

+

Select a disk that is in the same failure domain as that of the target ECS.

+

400

+

Ecs.0201

+

Failed to create port in network %s because %s.

+

Failed to create the NIC.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0202

+

Failed to create volume %s because %s.

+

Failed to create the system disk.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0203

+

Failed to create volume %s because %s.

+

Failed to create the data disk.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0204

+

Failed to add a tag to server %s: %s.

+

Failed to create the ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0205

+

Failed to call the Nova API to attach volume %s to ECS %s because %s.

+

Failed to attach the data disk.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0207

+

Failed to resize server %s: %s.

+

Failed to modify ECS specifications.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0208

+

Failed to update the metadata of image %s.

+

Failed to update the image metadata.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0209

+

Failed to confirm the flavor change of server %s: %s.

+

Failed to confirm the ECS specifications modification.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0210

+

Failed to call the VPC API to assign an FIP to port %s: %s.

+

Failed to assign the floating IP address.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0211

+

Failed to create QoS because %s.

+

Failed to create the NIC.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0212

+

Failed to call the Neutron API to view private IP addresses because the response is null or invalid.

+

Failed to allocate the private IP address.

+

For details, contact customer service.

+

400

+

Ecs.0213

+

Failed to update allowed_address_pairs of port %s because %s.

+

Failed to update the port attributes.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0214

+

Failed to create VLAN network because %s.

+

Failed to create the network.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0216

+

Failed to create the subnet for vlan %s.

+

Failed to create the subnet.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0217

+

attach server [%s] port [%s] fail ,reason is : %s

+

Failed to attach the NIC.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0219

+

Failed to quickly create server %s because the ECS status is error or %s.

+

Failed to create the ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0221

+

can not cold migrate dedicated host server[%s] to the same dedicated host

+

Failed to migrate the ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0226

+

server[%s] action[%s] fail: [%s, %s]

+

Failed to start the ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0301

+

The information, status, or metadata of server %s is null.

+

Failed to query the ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0302

+

Failed to view the quota usage of tenant %s because %s.

+

Failed to query the ECS quota of the tenant.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0303

+

Failed to view flavor %s because %s.

+

Failed to query the flavor.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0304

+

Failed to view image %s because the image or image name is null.

+

Failed to query the image.

+

Contact customer service to check whether the image has been correctly registered or to check other causes.

+

400

+

Ecs.0306

+

Failed to view the backup because %s.

+

Failed to query the backup.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0307

+

Failed to view the port because %s.

+

Failed to query the port.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0308

+

Failed to view limits because %s.

+

Failed to query the ECS quota of the tenant.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0309

+

Failed to view QoS because %s.

+

Failed to query the NIC QoS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0310

+

Failed to view the network because %s.

+

Failed to view the network information.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0311

+

Failed to view the volume type of tenant %s because %s.

+

Failed to query the disk type.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0313

+

query servergroup fail:%s

+

Failed to query the ECS group.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0314

+

call fsp to query keypair fail,reason is : %s

+

Failed to obtain the key pair.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0315

+

call nova api to query tenantId[%s] server[%s] whether is auto recovery fail: resposne is null or invalid

+

Failed to obtain the automatic recovery status.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0319

+

check capacity: capacity is not enough.

+

Insufficient flavor capacity.

+

Apply for expanding the flavor capacity.

+

400

+

Ecs.0320

+

query availability zones detail failed: the response is null.

+

Failed to obtain AZs.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0321

+

query server[%s] console output failed: %s

+

Failed to query ECS console logs.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0322

+

query subnet[%s] failed: %s

+

Failed to query details of the subnet.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0323

+

query server[%s] interface attachment failed: %s

+

Failed to query the NIC attachment to an ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0401

+

Failed to roll back the port because %s.

+

Failed to undo the operation performed on the port.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0402

+

rollback delete volume[%s] fail: %s

+

Failed to undo the operation performed on the system disk.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0403

+

rollback vm[%s] fail: %s

+

Failed to undo the operation performed on the ECS.

+

Contact customer service to locate the fault.

+

400

+

Ecs.0405

+

Failed to delete volume %s because %s.

+

Failed to undo the operation performed on the data disk.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0501

+

ECS %s cannot be deleted because downloading the system volume data is in progress.

+

Failed to delete the ECS.

+

Try again later.

+

400

+

Ecs.0502

+

Failed to roll back the EIP [%s] unbinding: %s.

+

Failed to delete the private IP address.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0503

+

Failed to view details about the volume because %s.

+

Failed to query the system disk.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0507

+

Resource VLAN NICs cannot be deleted.

+

Failed to delete the NIC.

+

Check the NIC type.

+

501

+

Ecs.0603

+

The running state %s of ECS %s for tenant %s is unstable.

+

Other commands are being executed. Try again 1 minute later.

+

Try again 1 minute later.

+

400

+

Ecs.0605

+

The server [%s] is locked.

+

The ECS is locked.

+

Check whether the ECS is locked. If so, unlock it.

+

400

+

Ecs.0611

+

batch operate fail.

+

Requesting for a batch operation failed.

+

Rectify the fault based on the returned error information and submit the request again.

+

404

+

Ecs.0614

+

itemNotFound: Instance xxx could not be found.

+

The ECS cannot be detected.

+

Check whether the ECS exists.

+

500

+

Ecs.0615

+

thread List is empty.

+

An error has occurred in the request from an ECS.

+

An internal system error occurred.

+

Contact customer service to locate the fault.

+

400

+

Ecs.0616

+

update server[%s] name failed.

+

Failed to modify the ECS.

+

Try again later or contact customer service.

+

400

+

Ecs.0617

+

update server %s block_device %s fail: %s

+

Failed to modify the attributes of the disk attached to an ECS.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0618

+

update port[%s] ip address failed: %s

+

Failed to change the IP address of the ECS NIC.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.0707

+

the product [%s] does not exist

+

The product does not exist.

+

Contact customer service to locate the fault.

+

400

+

Ecs.0905

+

tags number can not be more than 10.

+

The number of tags exceeds the maximum number allowed.

+

Decrease the number of tags.

+

400

+

Ecs.0906

+

tag key is invalid.

+

Invalid tag attribute.

+

Create a tag again.

+

400

+

Ecs.0907

+

The key [%s] of tag include invalid char.

+

Invalid tag character set.

+

Create a tag again.

+

400

+

Ecs.0908

+

tags key can not be duplicate.

+

Duplicate tag key.

+

Create a tag again.

+

400

+

Ecs.0909

+

Flavor %s does not support this volume type %s

+

The flavor does not support the disk type.

+

Change the flavor or disk type.

+

400

+

Ecs.0910

+

the nic param for creating hana instance is illegal.

+

Invalid NIC parameters for creating a HANA ECS.

+

Adjust the NIC parameter settings.

+

400

+

Ecs.0911

+

Disks cluster type is different.

+

Invalid dedicated storage type of the disk.

+

Modify parameter settings for the dedicated storage type.

+

400

+

Ecs.0912

+

encrypted key id [%s] contains illegal character.

+

Invalid disk encryption attribute.

+

Modify parameter settings for the disk encryption attribute.

+

400

+

Ecs.0913

+

the number of vm is illegal.

+

The number of ECSs to be created exceeds the maximum allowed limit.

+

Decrease the number of ECSs to be created.

+

400

+

Ecs.0914

+

the length of serverName is [%d], is illegal

+

The length of the ECS name exceeds the maximum allowed limit.

+

Change the ECS name.

+

400

+

Ecs.0915

+

The name [%s] of server include invalid char

+

The ECS name contains invalid characters.

+

Change the ECS name.

+

400

+

Ecs.0919

+

query the port: [%s] and status is [%s]

+

The port does not allow attaching.

+

Change the port.

+

400

+

Ecs.1000

+

Failed to call the Nova API because %s.

+

Failed to call the Nova API.

+

Internal calling error. Try again later or contact customer service.

+

404

+

Ecs.1000

+

itemNotFound: xxx could not be found.

+

The resource does not exist.

+

Check whether the resource exists.

+

400

+

Ecs.1001

+

Failed to delete the ECS because the ECS is being deleted.

+

OpenStack access error.

+

For details, contact customer service.

+

400

+

Ecs.1002

+

System timed out.

+

OpenStack access timed out.

+

For details, contact customer service.

+

400

+

Ecs.1100

+

Failed to call the IAM API because %s.

+

Failed to access IAM.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.1200

+

Failed to view the EIP because %s.

+

Failed to access the VPC.

+

For details, see the returned error message or contact customer service.

+

400

+

Ecs.1201

+

Operation timed out.

+

VPC access timed out.

+

For details, contact customer service.

+

400

+

Ecs.1300

+

Failed to call the Cinder API to create a volume because %s.

+

EVS access timed out.

+

For details, see the returned error message or contact customer service.

+

403

+

Pdp.0001

+

Policy doesn't allow %s to be performed.

+

API authentication failed.

+

Add permissions on IAM. For details, see API permissions.

+

202

+

Common.0024

+

exceeds flow over limit

+

Limited by traffic control.

+

The number of concurrent requests has exceeded the upper limit. Try again later.

+

400

+

Common.0002

+

Request body is null!

+

Empty request body.

+

Check the request body.

+

400

+

Common.0011

+

query job fail.

+

Invalid job ID.

+

Check whether the source of the job ID is correct.

+

400

+

Common.0018

+

tenantId in token is not the same with in URL.

+

Invalid token, or the project ID in the token is different from that in the URL.

+

Check whether the tenant token is correct.

+

400

+

Common.0020

+

Call redo api failed

+

Failed to retry the task.

+

Contact customer service.

+

400

+

Common.0021

+

Sub job fail!

+

An error has occurred in job query.

+

Try again later or contact customer service.

+

400

+

Common.0022

+

Mission fail!

+

An error has occurred in job submission.

+

Contact customer service.

+

400

+

Common.0999

+

The system was broken, exit.

+

Task terminated.

+

Contact customer service.

+

400

+

Common.0025

+

Query job Error because %s.

+

An error has occurred in task query.

+

Try again later or contact customer service.

+

400

+

Common.0026

+

Fail to get Region Info

+

An error occurred in AZ query.

+

Try again later or contact customer service.

+

401

+

Common.0013

+

The permission is forbidden to perform this action

+

Invalid token.

+

Check whether the tenant token is correct.

+

500

+

Common.0001

+

System Context Error!

+

A system exception occurred.

+

Contact customer service.

+

503

+

Common.1503

+

Api flow control Error because %s.

+

Limited by API traffic control.

+

Too many APIs are being executed. Try again later.

+
+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022067718.html b/ecs/api-ref/en-us_topic_0022067718.html new file mode 100644 index 000000000..4cbcd1bea --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067718.html @@ -0,0 +1,11 @@ + + +

Network APIs

+

For details about network APIs, see the Virtual Private Cloud API Reference.

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022067719.html b/ecs/api-ref/en-us_topic_0022067719.html new file mode 100644 index 000000000..3192cd2ce --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022067719.html @@ -0,0 +1,195 @@ + + +

ECS Monitoring Metrics

+

Function

This section describes metrics reported by ECS to Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metrics of the monitored object and alarms generated for ECS.

+
+

Namespace

SYS.ECS

+
+

Metrics

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Metric

+

Name

+

Description

+

Value Range

+

Remarks

+

cpu_util

+

CPU Usage

+

This metric is used to show CPU usages (%) of monitored objects.

+

0% to 100%

+

ECS monitored

+
NOTE:

The metrics collected using OTC Tools are accurate.

+
+

mem_util

+

Memory Usage

+

This metric is used to show memory usages (%) of monitored objects.

+

0% to 100%

+

ECS monitored

+
NOTE:

This metric is unavailable if the image has no OTC Tools installed.

+
+

disk_util_inband

+

Disks Usage

+

This metric is used to show disk usages (%) of monitored objects.

+

0% to 100%

+

ECS monitored

+
NOTE:

This metric is unavailable if the image has no OTC Tools installed.

+
+

disk_read_bytes_rate

+

Disk Read Bandwidth

+

This metric is used to show the number of bytes read from the monitored object per second (byte/s).

+

≥ 0

+

ECS monitored

+

disk_write_bytes_rate

+

Disk Write Bandwidth

+

This metric is used to show the number of bytes written to the monitored object per second (byte/s).

+

≥ 0

+

ECS monitored

+

disk_read_requests_rate

+

Disk Read IOPS

+

This metric is used to show the number of read requests sent to the monitored object per second (requests/second).

+

≥ 0

+

ECS monitored

+

disk_write_requests_rate

+

Disk Write IOPS

+

This metric is used to show the number of write requests sent to the monitored object per second (requests/second).

+

≥ 0

+

ECS monitored

+

network_incoming_bytes_rate_inband

+

Inband Incoming Rate

+

This metric is used to show the number of incoming bytes received by the monitored object per second (byte/s).

+

≥ 0

+

ECS monitored

+

network_outgoing_bytes_rate_inband

+

Inband Outgoing Rate

+

This metric is used to show the number of outgoing bytes sent by the monitored object per second (byte/s).

+

≥ 0

+

ECS monitored

+

network_incoming_bytes_aggregate_rate

+

Outband Incoming Rate

+

This metric is used to show the number of incoming bytes received by the monitored object per second (byte/s) at the virtualization layer.

+

≥ 0

+

ECS monitored

+
NOTE:

This metric is unavailable if SR-IOV is enabled.

+
+

network_outgoing_bytes_ aggregate_rate

+

Outband Outgoing Rate

+

This metric is used to show the number of outgoing bytes sent by the monitored object per second (byte/s) at the virtualization layer.

+

≥ 0

+

ECS monitored

+
NOTE:

This metric is unavailable if SR-IOV is enabled.

+
+

ib_card_state

+

InfiniBand NIC status

+

This metric is used to monitor the status of an InfiniBand NIC on a high-performance h2 ECS to ensure proper InfiniBand NIC running.

+

The system periodically checks the NIC status and returns check results using value 0 or 1.

+
  • 0: The system is running properly. That is, the InfiniBand NIC is functional.
  • 1: The system is not running properly. That is, the InfiniBand NIC malfunctions.
+

0 or 1

+

ECS monitored

+
NOTE:

Only Mellanox EDR 100 GB single-port InfiniBand NICs are supported.

+
+
+
+

The image based on which the target ECS is created must have OTC Tools installed. Otherwise, the Memory Usage and Disk Usage metrics are unavailable. For details about how to install the OTC Tools, visit https://github.com/UVP-Tools/UVP-Tools/.

+
+
+

Dimension

+
+ + + + + + + +

Key

+

Value

+

instance_id

+

Specifies the ECS ID.

+
+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022225397.html b/ecs/api-ref/en-us_topic_0022225397.html new file mode 100644 index 000000000..6feadf91e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022225397.html @@ -0,0 +1,15 @@ + + +

Task Status Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0022225398.html b/ecs/api-ref/en-us_topic_0022225398.html new file mode 100644 index 000000000..f0419e086 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022225398.html @@ -0,0 +1,299 @@ + + +

Querying Task Execution Status

+

Function

This API is used to query the execution status of an asynchronous request task.

+

After an asynchronous request task is issued, for example, creating or deleting an ECS, performing operations on ECSs in a batch, or performing operations on ECS NICs, a task ID will be returned, based on which you can query the execution status of the task.

+
+

For details about how to obtain the task ID, see Responses (Task).

+

URI

GET /v1/{project_id}/jobs/{job_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

job_id

+

Yes

+

Specifies the ID of an asynchronous request task.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

status

+

String

+

Specifies the task status.

+
  • SUCCESS: indicates the task is successfully executed.
  • RUNNING: indicates that the task is in progress.
  • FAIL: indicates that the task failed.
  • INIT: indicates that the task is being initialized.
+

entities

+

Object

+

Specifies the object of the task.

+

The value of this parameter varies depending on the type of the task. If the task is an ECS-related operation, the value is server_id. If the task is a NIC operation, the value is nic_id. If a sub-Job is available, details about the sub-job are displayed.

+

For details, see Table 3.

+

job_id

+

String

+

Specifies the ID of an asynchronous request task.

+

job_type

+

String

+

Specifies the type of an asynchronous request task.

+

begin_time

+

String

+

Specifies the time when the task started.

+

end_time

+

String

+

Specifies the time when the task finished.

+

error_code

+

String

+

Specifies the returned error code when the task execution fails.

+

After the task is executed successfully, the value of this parameter is null.

+

fail_reason

+

String

+

Specifies the cause of the task execution failure.

+

After the task is executed successfully, the value of this parameter is null.

+

message

+

String

+

Specifies the error message returned when an error occurs in the request to query a task.

+

code

+

String

+

Specifies the error code returned when an error occurs in the request to query a task.

+

For details about the error code, see Returned Values for General Requests.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 entities field description

Parameter

+

Type

+

Description

+

sub_jobs_total

+

Integer

+

Specifies the number of subtasks.

+

sub_jobs

+

Array of objects

+

Specifies the execution information of a subtask.

+

For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 sub_jobs field description

Parameter

+

Type

+

Description

+

status

+

String

+

Specifies the task status.

+
  • SUCCESS: indicates the task is successfully executed.
  • RUNNING: indicates that the task is in progress.
  • FAIL: indicates that the task failed.
  • INIT: indicates that the task is being initialized.
+

entities

+

Object

+

Specifies the object of the task. The value of this parameter varies depending on the type of the task. If the task is an ECS-related operation, the value is server_id. If the task is a NIC operation, the value is nic_id. For details, see Table 5.

+

job_id

+

String

+

Specifies the subtask ID.

+

job_type

+

String

+

Specify the subtask type.

+

begin_time

+

String

+

Specifies the time when the task started.

+

end_time

+

String

+

Specifies the time when the task finished.

+

error_code

+

String

+

Specifies the returned error code when the task execution fails.

+

After the task is executed successfully, the value of this parameter is null.

+

fail_reason

+

String

+

Specifies the cause of the task execution failure.

+

After the task is executed successfully, the value of this parameter is null.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 5 entities field description

Parameter

+

Type

+

Description

+

server_id

+

String

+

If the task is an ECS-related operation, the value is server_id.

+

nic_id

+

String

+

If the task is a NIC-related operation, the value is nic_id.

+

errorcode_message

+

String

+

Indicates the cause of a subtask execution failure.

+
+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/jobs/{job_id}
+
+

Example Response

{
+    "status": "SUCCESS",
+    "entities": {
+        "sub_jobs_total": 1,
+        "sub_jobs": [
+            {
+                "status": "SUCCESS",
+                "entities": {
+                    "server_id": "bae51750-0089-41a1-9b18-5c777978ff6d"
+                },
+                "job_id": "2c9eb2c5544cbf6101544f0635672b60",
+                "job_type": "createSingleServer",
+                "begin_time": "2016-04-25T20:04:47.591Z",
+                "end_time": "2016-04-25T20:08:21.328Z",
+                "error_code": null,
+                "fail_reason": null
+            }
+        ]
+    },
+    "job_id": "2c9eb2c5544cbf6101544f0602af2b4f",
+    "job_type": "createServer",
+    "begin_time": "2016-04-25T20:04:34.604Z",
+    "end_time": "2016-04-25T20:08:41.593Z",
+    "error_code": null,
+    "fail_reason": null
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022472987.html b/ecs/api-ref/en-us_topic_0022472987.html new file mode 100644 index 000000000..55bd8e9e3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022472987.html @@ -0,0 +1,117 @@ + + +

Attaching a Disk to an ECS

+

Function

This API is used to attach a disk to an ECS.

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/attachvolume

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

volumeAttachment

+

Yes

+

Object

+

Specifies the ECS attachment information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 volumeAttachment field description

Parameter

+

Mandatory

+

Type

+

Description

+

volumeId

+

Yes

+

String

+

Specifies the ID of the disk to be attached. The value is in UUID format.

+

device

+

No

+

String

+

Indicates the disk device name.

+
NOTE:
  • The new disk device name cannot be the same as an existing one.
  • For KVM ECSs, set the parameter value to /dev/vda for system disks. The device names for data disks of KVM ECSs are optional. If the device names of data disks are required, set them in alphabetical order. For example, if there are two data disks, set the device names of the two data disks to /dev/vdb and /dev/vdc, respectively. If you set a device name starting with /dev/sd, the system uses /dev/vd by default.
+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/attachvolume
+
{
+    "volumeAttachment": {
+         "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
+         "device": "/dev/sda"
+    }
+}
+
+

Example Response

{
+    "job_id": "70a599e0-31e7-49b7-b260-868f441e862b"
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0022472988.html b/ecs/api-ref/en-us_topic_0022472988.html new file mode 100644 index 000000000..4c5631105 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0022472988.html @@ -0,0 +1,69 @@ + + +

Detaching an EVS Disk from an ECS

+

Function

This API is used to detach an EVS disk from an ECS.

+
+

URI

DELETE /v1/{project_id}/cloudservers/{server_id}/detachvolume/{volume_id}?delete_flag=0

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

volume_id

+

Yes

+

Specifies the disk ID.

+

delete_flag

+

No

+

Indicates whether to forcibly detach a data disk.

+
  • If yes, set it to 1.
  • If no, set it to 0.
+

It is set to 0 by default.

+
+
+
+
+

Request

None

+
+

Response

See Responses (Task).

+
+

Example Request

DELETE https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/detachvolume/{volume_id}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0024734483.html b/ecs/api-ref/en-us_topic_0024734483.html new file mode 100644 index 000000000..302e120be --- /dev/null +++ b/ecs/api-ref/en-us_topic_0024734483.html @@ -0,0 +1,368 @@ + + +

Change History

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Released On

+

Description

+

2022-01-10

+

Deleted the following content:

+
  • 6.2.5 Querying Automatic Recovery of an ECS
  • 6.2.6 Managing Automatic Recovery of an ECS
+

2021-12-30

+

Modified the following content:

+

Added constraints in Creating an ECS.

+

2021-11-20

+

Added description of system disk encryption in the following sections:

+ +

2021-09-11

+

Modified the following content:

+

Modified the description about Xen instances in the following sections:

+ +

2021-06-18

+

Modified the following content:

+ +

2021-04-22

+

Modified the following content:

+

Added parameter extendparam to the data_volumes field in Creating an ECS.

+

2019-12-18

+

Added the following content:

+ +

2019-03-13

+

Modified the following content:

+
  • Deleted "Creating an FPGA Image".
+

2019-02-25

+

Modified the following content:

+
  • Added description in "Creating an FPGA Image", indicating that only Xilinx VU9P images can be created.
  • Added the full spelling of DCP in "Creating an FPGA Image".
  • Changed AEI to its full spelling in "Creating an FPGA Image".
+

2019-02-09

+

Modified the following content:

+ +

2019-01-30

+

Added the following content:

+
  • Added "Creating an FPGA Image".
+

Modified the following content:

+ +

2019-01-25

+

Modified the following content:

+ +

Deleted the following content:

+

Deleted parameter check_resources in Creating an ECS.

+

2018-12-30

+

Modified the following content:

+ +

2018-12-22

+

Added the following content:

+ +

Modified the following content:

+ +

2018-12-10

+

Added the following content:

+ +

2018-11-22

+

Added the following content:

+ +

2018-10-12

+

Added the following content:

+ +

2018-09-30

+

Modified the following content:

+
  • Deleted the API for querying the target ECS flavors to which a flavor can be changed.
+

2018-09-10

+

Accepted in OTC 3.2.

+

2018-08-31

+

Added the following content:

+ +

Modified the following content:

+ +

2018-08-17

+

Modified the following content:

+ +

2018-07-31

+

Modified the following content:

+ +

2018-07-10

+

Added the following content:

+ +

2018-07-05

+

Accepted in OTC 3.1.

+

2018-06-29

+

Modified the following content:

+ +

2018-06-24

+

Modified the following content:

+ +

Deleted the following content:

+
  • Deleted the API for querying ECSs by tag.
  • Deleted the API for querying project tags.
+

2018-06-14

+

Modified the following content:

+
  • Fixed UAT issues in Elastic Cloud Server API Reference 28.
  • Modified description in Creating an ECS for adding the snapshotId field, allowing you to use CSBS backups to create full-ECS images and use the images to create ECSs.
+

Deleted the following content:

+
  • Deleted the API for querying tenant quotas.
  • Deleted the API for querying tenant quotas.
+

2018-05-31

+

Modified the following content:

+
  • Fixed 59 UAT issues in Elastic Cloud Server API Reference 27.
+

2018-05-21

+

Modified the following content:

+ +

2018-03-30

+

Added the following content:

+ +

Modified the following content:

+ +

2018-02-13

+

Modified the following content:

+ +

2018-02-12

+

Modified the following content:

+ +

2017-12-30

+

Modified the following content:

+ +

2017-10-30

+

Modified the following content:

+
  • Modified the adminpass field description.
+

2017-09-30

+

Modified the following content:

+ +

2017-08-30

+

Modified the following content:

+ +

2017-07-31

+

Modified the following content:

+ +

Deleted the following content:

+
  • Deleted the adminPass field.
+

2017-06-30

+

Modified the following content:

+ +

2017-06-16

+

Modified the following content:

+ +

2017-04-28

+

Modified the following content:

+ +

Deleted the following content:

+ +

2017-03-30

+

Modified the following content:

+ +

2017-02-28

+

Modified the following content:

+

Modified the tags field description in Creating an ECS (a maximum of 10 tags can be added to an ECS).

+

2017-02-08

+

Modified the following content:

+ +

2017-01-20

+

Added the following content:

+
  • Added error code "Ecs.0219 Failed to create the ECS."
+

Modified the following content:

+
  • Added the tenancy and dedicated_host_id fields to the os:scheduler_hints field description in Creating an ECS.
  • Added the tenancy and dedicated_host_id fields to the os:scheduler_hints field description in Creating an ECS.
+

2016-11-30

+

Modified the following content:

+ +

2016-09-30

+

This issue is the tenth official release.

+

Modified the following content:

+ +

2016-08-25

+

Modified the following content:

+
  • Modified ECS metric description.
  • Added binding:profile and extra_dhcp_opts to table [2] nics field description in Creating an ECS.
+

2016-08-09

+

Modified the following content:

+
  • Modified ECS metric description and added metrics Outband Incoming Rate and Outband Outgoing Rate.
  • Modified description of ECS metric CPU Usage.
  • Changed the maximum user data length to 32 KB in Creating an ECS and Creating an ECS.
+

2016-07-15

+

Modified the following content:

+ +

2016-06-30

+

Modified the following content:

+ +

2016-06-16

+

Added the following content:

+ +

2016-06-02

+

Added the following content:

+ +

Modified the following content:

+ +

Deleted the following content:

+
  • Deleted Configuring ECS Metadata (Native OpenStack API).
  • Deleted Querying the VNC Link of an ECS (Native OpenStack API).
+

2016-05-05

+

Modified the following content:

+ +

2016-04-14

+

Added the following content:

+ +

2016-03-09

+

This issue is the first official release.

+
+
+
+ diff --git a/ecs/api-ref/en-us_topic_0025560296.html b/ecs/api-ref/en-us_topic_0025560296.html new file mode 100644 index 000000000..2427119e2 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0025560296.html @@ -0,0 +1,55 @@ + + +

Deleting an ECS

+

Function

This API is used to delete an ECS.

+
+

Constraints

When an ECS is deleted, all NICs attached to the ECS through the OpenStack Nova API will be deleted.

+
+

URI

DELETE /v2.1/{project_id}/servers/{server_id}

+

DELETE /v2/{project_id}/servers/{server_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/{project_id}/servers/{server_id}
+DELETE https://{endpoint}/v2.1/{project_id}/servers/{server_id}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0025560298.html b/ecs/api-ref/en-us_topic_0025560298.html new file mode 100644 index 000000000..f581bf5e2 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0025560298.html @@ -0,0 +1,111 @@ + + +

Updating ECS Metadata

+

Function

This API is used to update ECS metadata.

+
+ +

Constraints

An ECS must be in active, stopped, paused, or suspended state, which is specified by OS-EXT-STS:vm_state.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/metadata

+

POST /v2/{project_id}/servers/{server_id}/metadata

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

metadata

+

Yes

+

Object

+

Specifies the user-defined metadata key-value pair.

+

For a metadata key:

+

It contains a maximum of 255 Unicode characters and cannot be left blank. A key can contain uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), hyphens (-), underscores (_), colons (:), and periods (.).

+

For a metadata value:

+

A value contains a maximum of 255 Unicode characters.

+
+
+
+
+

Response

Table 3 describes the response parameters. +
+ + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

metadata

+

Object

+

Specifies the user-defined metadata key-value pair.

+
+
+
+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/metadata
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/metadata
+
{
+    "metadata": {
+        "key": "value"
+    }
+}
+
+

Example Response

{
+    "metadata":{
+        "key":"value"
+    }
+} 
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0025560299.html b/ecs/api-ref/en-us_topic_0025560299.html new file mode 100644 index 000000000..cfe74bb7e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0025560299.html @@ -0,0 +1,62 @@ + + +

Deleting Specified ECS Metadata

+

Function

This API is used to delete specified ECS metadata.

+
+

Constraints

An ECS must be in active, stopped, paused, or suspended state, which is specified by OS-EXT-STS:vm_state.

+
+

URI

DELETE /v2.1/{project_id}/servers/{server_id}/metadata/{key}

+

DELETE /v2/{project_id}/servers/{server_id}/metadata/{key}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

key

+

Yes

+

Specifies the ECS metadata key.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/{project_id}/servers/{server_id}/metadata/{key}
+DELETE https://{endpoint}/v2.1/{project_id}/servers/{server_id}/metadata/{key}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0025567413.html b/ecs/api-ref/en-us_topic_0025567413.html new file mode 100644 index 000000000..99fd2760b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0025567413.html @@ -0,0 +1,118 @@ + + +

Modifying ECS Metadata with a Specified Key

+

Function

This API is used to modify the ECS metadata with a specified key.

+ +
+

Constraints

An ECS must be in active, stopped, paused, or suspended state, which is specified by OS-EXT-STS:vm_state.

+
+

URI

PUT /v2.1/{project_id}/servers/{server_id}/metadata/{key}

+

PUT /v2/{project_id}/servers/{server_id}/metadata/{key}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

key

+

Yes

+

Specifies the ECS metadata key.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

meta

+

Yes

+

Object

+

Specifies the user-defined metadata key pair.

+

For a metadata key:

+

It contains a maximum of 255 Unicode characters and cannot be left blank. A key can contain uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), hyphens (-), underscores (_), colons (:), and periods (.).

+

For a metadata value:

+

It contains a maximum of 255 Unicode characters.

+
+
+
+

Response

Table 3 describes the response parameters. +
+ + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

meta

+

Object

+

Specifies the user-defined metadata key-value pair.

+
+
+
+
+

Example Request

PUT https://{endpoint}/v2/{project_id}/servers/{server_id}/metadata/{key}
+PUT https://{endpoint}/v2.1/{project_id}/servers/{server_id}/metadata/{key}
+
{
+    "meta":{
+        "key":"value"
+    }
+} 
+
+

Example Response

{
+    "meta":{
+        "key":"value"
+    }
+} 
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0028714261.html b/ecs/api-ref/en-us_topic_0028714261.html new file mode 100644 index 000000000..5e1ac7b4c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0028714261.html @@ -0,0 +1,84 @@ + + +

Modifying the Specifications of an ECS

+

Function

This API is used to modify the specifications of an ECS.

+

For a running ECS, the system will automatically stop the ECS, copy the ECS data to the target node, which can be the source node, and then restart the ECS.

+

This API supports automatic rollback if the underlying resources are insufficient.

+

This API must be used with the API for verifying ECS specifications modification (POST /v2.1/{project_id}/servers/{server_id}/action) or the API for rolling back ECS specifications modification (POST /v2.1/{project_id}/servers/{server_id}/action) if an ECS is detected to be in VERIFY_RESIZE state and its OS-EXT-STS:vm_state is RESIZED.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

flavorRef

+

Yes

+

String

+

Specifies the new flavor ID or URI.

+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "resize" : {
+        "flavorRef" : "s6.medium.2"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0028714262.html b/ecs/api-ref/en-us_topic_0028714262.html new file mode 100644 index 000000000..f5658ec56 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0028714262.html @@ -0,0 +1,84 @@ + + +

Confirming ECS Specifications Modification

+

Function

This API is used to confirm the specifications modification of an ECS.

+
+

Constraints

Before calling this API, ensure that the ECS status (which can be queried using the API for querying details about the ECS) meets the following requirements:

+

OS-EXT-STS:vm_state=resized

+

OS-EXT-STS:task_state=""

+

status=VERIFY_RESIZE

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

confirmResize

+

Yes

+

Null

+

Confirms the modification to ECS specifications.

+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "confirmResize" : null
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0028714263.html b/ecs/api-ref/en-us_topic_0028714263.html new file mode 100644 index 000000000..b967ead1a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0028714263.html @@ -0,0 +1,85 @@ + + +

Rolling Back ECS Specifications Modification

+

Function

This API is used to roll back ECS specifications modification.

+
+

Constraints

After the rollback, the data modified during migration will be lost.

+

Before calling this API, ensure that the ECS status (which can be queried using the API for querying details about the ECS) meets the following requirements:

+

OS-EXT-STS:vm_state=resized

+

OS-EXT-STS:task_state=""

+

status=VERIFY_RESIZE

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

revertResize

+

Yes

+

Null

+

Confirms the rollback of the ECS specification modification.

+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "revertResize" : null
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0031167350.html b/ecs/api-ref/en-us_topic_0031167350.html new file mode 100644 index 000000000..300c9c137 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031167350.html @@ -0,0 +1,186 @@ + + +

Attaching a Disk to an ECS

+

Function

This API is used to attach a disk to an ECS.

+
+

Constraints

  1. If you attach a bootable disk to an ECS, you must specify the disk drive letter.
  2. A disk created using a backup cannot be attached to an ECS as the system disk.
  3. An ECS in the SUSPENDED or PAUSED state, which is specified using the OS-EXT-STS:vm_state parameter of the ECS, cannot have a disk attached.
  4. The EVS must be in the available status.
  5. The EVS disk and the target ECS must be located in the same AZ.
  6. VBD EVS disks cannot be attached to BMSs.
+
+

URI

POST /v2/{project_id}/servers/{server_id}/os-volume_attachments

+

POST /v2.1/{project_id}/servers/{server_id}/os-volume_attachments

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

volumeAttachment

+

Yes

+

Object

+

Specifies the volumes to be attached. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 volumeAttachment field description

Parameter

+

Mandatory

+

Type

+

Description

+

volumeId

+

Yes

+

String

+

Specifies the ID of the disk to be attached. The value is in UUID format.

+

device

+

No

+

String

+

Specifies the device name, such as /dev/sda or /dev/sdb.

+

The new disk device name cannot be the same as an existing one.

+

The device name must be specified based on the sequence of existing device names. Otherwise, the system automatically generates one.

+
NOTE:

VBD disk device names can only be /dev/vdb through /dev/vdx. You are advised to attach the VBD disks in alphabetical order. Otherwise, the disk drive letters may be incorrect on the ECS.

+
+
+
+
+
+

Response

Table 4 describes the response parameters. +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

volumeAttachment

+

Object

+

Specifies the disks attached to an ECS. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 volumeAttachment field description

Parameter

+

Type

+

Description

+

device

+

String

+

Specifies the device name.

+

serverId

+

String

+

Specifies the ID of the target ECS in UUID format.

+

id

+

String

+

Specifies the disk ID in UUID format.

+

volumeId

+

String

+

Specifies the attaching ID, which is the same as the UUID.

+
+
+
+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/os-volume_attachments
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-volume_attachments
+
{
+    "volumeAttachment": {
+        "volumeId": "54667652-3029-4af8-9222-2d53066fd61c",
+        "device": "/dev/sdb"
+    }
+}
+
+

Example Response

{
+    "volumeAttachment": {
+        "device": "/dev/vdb",
+        "serverId": "ab258e25-e351-47c7-b6e3-0749c5d9ed6a",
+        "id": "54667652-3029-4af8-9222-2d53066fd61c",
+        "volumeId": "54667652-3029-4af8-9222-2d53066fd61c"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0031167513.html b/ecs/api-ref/en-us_topic_0031167513.html new file mode 100644 index 000000000..90040c335 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031167513.html @@ -0,0 +1,20 @@ + + +

Network Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0031167514.html b/ecs/api-ref/en-us_topic_0031167514.html new file mode 100644 index 000000000..9c746ab5d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031167514.html @@ -0,0 +1,20 @@ + + +

Security Group Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0031169058.html b/ecs/api-ref/en-us_topic_0031169058.html new file mode 100644 index 000000000..54d9f5d97 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031169058.html @@ -0,0 +1,168 @@ + + +

Querying the Networks of a Specified ECS

+

Function

This API is used to query the networks of an ECS.

+
+

Constraints

None

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/ips

+

GET /v2/{project_id}/servers/{server_id}/ips

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

addresses

+

Yes

+

Object

+

Specifies the network address of the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 addresses parameter structure description

Parameter

+

Mandatory

+

Type

+

Description

+

Name of the network where the ECS accesses

+

Yes

+

Array of objects

+

Specifies the network where the ECS accesses. For details about the network parameter, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
Table 4 ECS network parameter structure description

Attribute

+

Type

+

CRUD

+

Default Value

+

Constraint

+

Remarks

+

version

+

Integer

+

R

+

N/A

+

4 or 6

+

Specifies the IP address version. The value of this parameter can be 4 or 6.

+

addr

+

String

+

R

+

N/A

+

IP address format

+

Specifies the IP address.

+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/ips
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/ips
+
+

Example Response

{
+    "addresses": {
+        "demo_net": [
+            {
+                "version": 4,
+                "addr": "10.0.0.4"
+            },
+            {
+                "version": 4,
+                "addr": "192.150.73.132"
+            }
+        ],
+        "private_net": [
+            {
+                "version": 4,
+                "addr": "10.176.42.16"
+            },
+            {
+                "version": 6,
+                "addr": "::babe:10.176.42.16"
+            }
+        ]
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0031169059.html b/ecs/api-ref/en-us_topic_0031169059.html new file mode 100644 index 000000000..662c5dc49 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031169059.html @@ -0,0 +1,154 @@ + + +

Querying the Specified Network of an ECS

+

Function

This API is used to query the specified network of an ECS.

+
+

Constraints

None

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/ips/{networkName}

+

GET /v2/{project_id}/servers/{server_id}/ips/{networkName}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

server_id

+

Yes

+

String

+

Specifies the ECS ID.

+

networkName

+

Yes

+

String

+

Specifies the ECS network name.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

Name of the network where the ECS accesses

+

List(Dict)

+

Specifies the network where the ECS accesses. For details about the network, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
Table 4 ECS network parameter structure description

Attribute

+

Type

+

CRUD

+

Default Value

+

Constraint

+

Remarks

+

version

+

Integer

+

R

+

N/A

+

4 or 6

+

Specifies the IP address version. The value of this parameter can be 4 or 6.

+

addr

+

String

+

R

+

N/A

+

IP address format

+

Specifies the IP address.

+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/ips/{networkName}
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/ips/{networkName}
+
+

Example Response

{
+    "demo_net": [
+        {
+            "version": 4,
+            "addr": "10.0.0.4"
+        },
+        {
+            "version": 4,
+            "addr": "192.150.73.132"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0031169828.html b/ecs/api-ref/en-us_topic_0031169828.html new file mode 100644 index 000000000..532558542 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031169828.html @@ -0,0 +1,199 @@ + + +

Querying Networks

+

Function

This API is used to query the networks available to a tenant.

+
+

Constraints

You can query only the network ID and label (network name). Other fields are all null.

+
+

URI

GET /v2.1/{project_id}/os-networks

+

GET /v2/{project_id}/os-networks

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the network ID in UUID format.

+

label

+

Yes

+

String

+

Specifies the network name.

+

broadcast

+

Yes

+

String

+

The value can only be null.

+

cidr

+

Yes

+

String

+

The value can only be null.

+

cidr_v6

+

Yes

+

String

+

The value can only be null.

+

dns1

+

Yes

+

String

+

The value can only be null.

+

dns2

+

Yes

+

String

+

The value can only be null.

+

gateway

+

Yes

+

String

+

The value can only be null.

+

gateway_v6

+

Yes

+

String

+

The value can only be null.

+

netmask

+

Yes

+

String

+

The value can only be null.

+

netmask_v6

+

Yes

+

String

+

The value can only be null.

+

bridge

+

No

+

String

+

The value is fixed to be null and is in UUID format.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/os-networks
+GET https://{endpoint}/v2.1/{project_id}/os-networks
+
+

Example Response

{
+    "networks": [
+        {
+            "id": "04468f37-500a-4a80-88da-af823e7a1d6c",
+            "cidr_v6": null,
+            "gateway": null,
+            "label": "network_demo1",
+            "broadcast": null,
+            "netmask": null,
+            "cidr": null,
+            "dns2": null,
+            "gateway_v6": null,
+            "netmask_v6": null,
+            "dns1": null
+        },
+        {
+            "id": "1fcff959-21d0-4ba8-976a-974cb564c977",
+            "cidr_v6": null,
+            "gateway": null,
+            "label": "network_demo2",
+            "broadcast": null,
+            "netmask": null,
+            "cidr": null,
+            "dns2": null,
+            "gateway_v6": null,
+            "netmask_v6": null,
+            "dns1": null
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0031176553.html b/ecs/api-ref/en-us_topic_0031176553.html new file mode 100644 index 000000000..410065725 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031176553.html @@ -0,0 +1,76 @@ + + +

Obtaining the Password for Logging In to an ECS

+

Function

This API is used to obtain the random password generated during initial Windows ECS installation for user Administrator or the configured Cloudbase-init user when you use an image that supports Cloudbase-Init to create a Windows ECS.

+

After starting an ECS, wait for 5 to 10 minutes and ensure that the password is injected. Then, you can use this API to query the password.

+

Linux ECSs do not use this API to obtain a password.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-server-password

+

GET /v2/{project_id}/servers/{server_id}/os-server-password

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

password

+

String

+

Specifies the password in ciphertext.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2/{project_id}/servers/{server_id}/os-server-password
+GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-server-password
+
+

Example Response

{
+    "password": "UHC9+YW1xDC1Yu8Mg9n+tnOp7euEO/cW//9KgdJKWhr5w=="
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0031176554.html b/ecs/api-ref/en-us_topic_0031176554.html new file mode 100644 index 000000000..7f9db076c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0031176554.html @@ -0,0 +1,54 @@ + + +

Deleting the Password for Logging In to an ECS

+

Function

This API is used to delete the recorded random password generated during initial Windows ECS installation. After the password is deleted, you can still use your password to log in to your ECS. However, you cannot use the Get Password function to recover the ECS initial password.

+

Linux ECSs do not use this API to delete a password.

+
+

URI

DELETE /v2.1/{project_id}/servers/{server_id}/os-server-password

+

DELETE /v2/{project_id}/servers/{server_id}/os-server-password

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/{project_id}/servers/{server_id}/os-server-password
+DELETE https://{endpoint}/v2.1/{project_id}/servers/{server_id}/os-server-password
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065792792.html b/ecs/api-ref/en-us_topic_0065792792.html new file mode 100644 index 000000000..f19f9beb7 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065792792.html @@ -0,0 +1,17 @@ + + +

API Version Query

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065792793.html b/ecs/api-ref/en-us_topic_0065792793.html new file mode 100644 index 000000000..a42f9f555 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065792793.html @@ -0,0 +1,138 @@ + + +

Querying All API Versions

+

Function

This API is used to query all available Nova versions.

+

To support function extension, Nova APIs can be distinguished by version. There are two types of versions:

+ +
+

URI

GET /

+
+

Request

None

+
+

Response

The following table describes the response parameters.

+ +
+ + + + + + + + + +
Table 1 Response parameters

Parameter

+

Type

+

Description

+

versions

+

Object

+

Specifies the API versions. For details, see Table 2.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 versions field description

Parameter

+

Type

+

Description

+

id

+

string

+

Specifies the version ID.

+

links

+

Object

+

Specifies shortcut links for versions. For details, see Table 3.

+

min_version

+

string

+
  • Specifies the microversion. If the APIs of this version support microversions, set this parameter to the supported minimum microversion.
  • If the microversion is not supported, leave this parameter blank.
+

status

+

string

+

Specifies the API version status. Possible values are as follows:

+
  • CURRENT: This is the preferred API version.
  • SUPPORTED: This is the old API version that is still supported.
  • DEPRECATED: This is the deprecated API version that will be removed.
+

version

+

string

+
  • Specifies the microversion. If the APIs of this version support microversions, set this parameter to the supported maximum microversion.
  • If the microversion is not supported, leave this parameter blank.
+

updated

+

string

+

The value of this parameter varies by API version.

+

If the API version is 2.0, the value is 2011-01-21T11:33:21Z. If the API version is 2.1, the value is 2013-07-23T11:33:21Z.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 links field description

Parameter

+

Type

+

Description

+

href

+

string

+

Specifies the links of the corresponding resources.

+

rel

+

string

+
  • self: A self link contains a versioned link to the resource. Use these links when the link is followed immediately.
  • bookmark: A bookmark link provides a permanent link to a resource that is appropriate for long term storage.
  • alternate: An alternate link can contain an alternate representation of the resource.

    For example, an OpenStack Compute image might have an alternate representation in the OpenStack Image service.

    +
+
+
+
+

Example Request

GET https://{endpoint}/
+
+

Example Response

{
+ "versions": [{
+  "links": [{
+   "rel": "self",
+   "href": "https://ecs.service.domain.com:443/v2/"
+  }],
+  "id": "v2.0",
+  "updated": "2001-09-21T12:33:21Z",
+  "status": "SUPPORTED"
+ }]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065792794.html b/ecs/api-ref/en-us_topic_0065792794.html new file mode 100644 index 000000000..2170b31a9 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065792794.html @@ -0,0 +1,204 @@ + + +

Querying a Specified API Version

+

Function Description

This API is used to query the information of a specified version.

+

To support function extension, Nova APIs can be distinguished by version. There are two types of versions:

+ +
+

URI

GET /{api_version}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

api_version

+

Yes

+

Specifies an API version, such as V2.

+
+
+
+
+

Request

None

+
+

Response

The following table describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

versions

+

Object

+

Specifies the versions. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 versions field description

Parameter

+

Type

+

Description

+

id

+

string

+

Specifies the version ID.

+

links

+

Object

+

Specifies the links to resources. For more information, see the OpenStack Documentation.

+

For details, see Table 4.

+

media-types

+

Object

+

Specifies the media types. For details, see Table 5.

+

min_version

+

string

+
  • Specifies the microversion. If the APIs of this version support microversions, set this parameter to the supported minimum microversion.
  • If the microversion is not supported, leave this parameter blank.
+

status

+

string

+

Specifies the API version status. Possible values are as follows:

+
  • CURRENT: This is the preferred API version.
  • SUPPORTED: This is the old API version that is still supported.
  • DEPRECATED: This is the deprecated API version that will be removed.
+

updated

+

string

+

The value of this parameter varies by API version. If the API version is 2.0, the value is 2011-01-21T11:33:21Z. If the API version is 2.1, the value is 2013-07-23T11:33:21Z.

+

version

+

string

+
  • Specifies the microversion. If the APIs of this version support microversions, set this parameter to the supported maximum microversion.
  • If the microversion is not supported, leave this parameter blank.
+
+
+ +
+ + + + + + + + + + + + + +
Table 4 links field description

Parameter

+

Type

+

Description

+

href

+

string

+

Specifies the links of the corresponding resources.

+

rel

+

string

+
  • self: A self link contains a versioned link to the resource. Use these links when the link is followed immediately.
  • bookmark: A bookmark link provides a permanent link to a resource that is appropriate for long term storage.
  • alternate: An alternate link can contain an alternate representation of the resource. For example, an OpenStack Compute image might have an alternate representation in the OpenStack Image service.
+
+
+ +
+ + + + + + + + + + + + + +
Table 5 media-types field description

Parameter

+

Type

+

Description

+

base

+

string

+

Specifies the basic type.

+

type

+

string

+

Specifies the media type.

+
+
+
+

Example Request

GET https://{endpoint}/v2
+
+

Example Response

{
+ "version": {
+  "min_version": "",
+  "media-types": [{
+   "type": "application/vnd.openstack.compute+json;version=2",
+   "base": "application/json"
+  }],
+  "links": [{
+   "rel": "self",
+   "href": "https://ecs.service.domain.com:443/v2/"
+  },
+  {
+   "rel": "describedby",
+   "href": "http://docs.openstack.org/",
+   "type": "text/html"
+  }],
+  "id": "v2.0",
+  "updated": "1999-02-20T11:33:21Z",
+  "version": "",
+  "status": "SUPPORTED"
+ }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817680.html b/ecs/api-ref/en-us_topic_0065817680.html new file mode 100644 index 000000000..9eff89cdb --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817680.html @@ -0,0 +1,24 @@ + + +

Image Management (OpenStack Nova APIs)

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065817681.html b/ecs/api-ref/en-us_topic_0065817681.html new file mode 100644 index 000000000..c95dd4f38 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817681.html @@ -0,0 +1,26 @@ + + +

Metadata Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065817682.html b/ecs/api-ref/en-us_topic_0065817682.html new file mode 100644 index 000000000..8eb445ecf --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817682.html @@ -0,0 +1,28 @@ + + +

Floating IP Address Management (OpenStack Nova APIs)

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065817683.html b/ecs/api-ref/en-us_topic_0065817683.html new file mode 100644 index 000000000..28ce65ebb --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817683.html @@ -0,0 +1,22 @@ + + +

ECS Group Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065817684.html b/ecs/api-ref/en-us_topic_0065817684.html new file mode 100644 index 000000000..ce01178e1 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817684.html @@ -0,0 +1,16 @@ + + +

AZ

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065817686.html b/ecs/api-ref/en-us_topic_0065817686.html new file mode 100644 index 000000000..dd692b002 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817686.html @@ -0,0 +1,17 @@ + + +

Tag Types

+
Tag functions have been upgraded on the platform. After the upgrade, a tag consists of a key and a value. Keys and values comply with the following rules: +
+

After the tag function upgrade, tag management APIs are classified as the APIs for 1D tags and the APIs for 2D tags.

+ +
  • You are advised to use the APIs of the same type to add, delete, modify, or query tags.
  • You are advised to use 2D tags.
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817688.html b/ecs/api-ref/en-us_topic_0065817688.html new file mode 100644 index 000000000..37e9fdb84 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817688.html @@ -0,0 +1,375 @@ + + +

Rebuilding an ECS

+

Function

This API is used to rebuild an ECS.

+

You can use the original image or another image to rebuild an ECS. This API supports different OSs.

+
+

This API is native from the community for defcore tests.

+

If you are required to reinstall or change an ECS OS, ECS APIs are recommended. For details, see "Reinstalling an ECS OS (Using an Image with Cloud-Init Installed)" and "Changing an OS (Using an Image with Cloud-Init Installed)".

+

Constraints

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameter

Parameter

+

Mandatory

+

Type

+

Description

+

rebuild

+

Yes

+

Object

+

Rebuilds an ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 rebuild parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Specifies the name of the rebuilt ECS.

+

The value contains 1 to 254 characters.

+

metadata

+

No

+

Object

+

Specifies the metadata of the rebuilt ECS.

+

imageRef

+

Yes

+

String

+

Specifies the image ID or URL.

+

adminPass

+

No

+

String

+

Specifies the password for logging in to the rebuilt ECS. This parameter does not take effect.

+

OS-DCF:diskConfig

+

No

+

String

+

Not supported

+

preserve_ephemeral

+

No

+

Boolean

+

Specifies whether to retain the temporary disk. This parameter is not supported.

+

key_name

+

No

+

String

+

Specifies the key pair name. If the value is null, the existing key pair is left blank.

+

This parameter is supported in microversion 2.54 and later.

+

user_data

+

No

+

String

+

Specifies the user data to be injected during the ECS creation. This is an extended attribute. Text and text files can be injected.

+
NOTE:
  • The content of user_data must be encoded with base64.
  • The maximum size of the content to be injected (before encoding) is 32 KB.
+
+

For more information about the user data to be injected, see "Injecting User Data into ECSs" in Elastic Cloud Server User Guide.

+

Examples

+

Before base64 encoding:

+
  • Linux
    #! /bin/bash
    +echo user_test >> /home/user.txt
    +
  • Windows
    rem cmd
    +echo 111 > c:\aaa.txt
    +
+

After base64 encoding:

+
  • Linux
    IyEgL2Jpbi9iYXNoDQplY2hvIHVzZXJfdGVzdCAmZ3Q7Jmd0OyAvaG9tZS91c2VyLnR4dA==
    +
  • Windows
    cmVtIGNtZA0KZWNobyAxMTEgJmd0OyBjOlxhYWEudHh0
    +
+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

status

+

String

+

Specifies the ECS status.

+

Values:

+
  • ACTIVE
  • REBOOT
  • HARD_REBOOT
  • REBUILD
  • MIGRATING
  • BUILD
  • SHUTOFF
  • RESIZE
  • VERIFY_RESIZE
  • ERROR
  • DELETED
+

For details, see ECS Statuses.

+

updated

+

String

+

Specifies the time when the ECS was updated last time.

+

hostId

+

String

+

Specifies the ID of the host on which the ECS is deployed.

+

addresses

+

Array of objects

+

Specifies the network attribute of the ECS.

+

links

+

Array of objects

+

Describes the ECS.

+

image

+

Object

+

Specifies the ECS image information. For the ECS that boots from a volume, the value is left blank.

+

flavor

+

Object

+

Specifies the ECS flavor.

+

id

+

String

+

Specifies the ECS ID in UUID format.

+

user_id

+

String

+

Specifies the user UUID of the ECS.

+

name

+

String

+

Specifies the ECS name.

+

tenant_id

+

String

+

Specifies the UUID of the tenant who owns the ECS.

+

OS-DCF:diskConfig

+

String

+

Specifies the diskConfig type. It is an extended attributed.

+
  • MANUAL: The image space cannot be expanded.
  • AUTO: The image space on the system disk will be automatically expanded to keep the same as that set in the flavor.
+

accessIPv4

+

String

+

Discarded

+

accessIPv6

+

String

+

Discarded

+

progress

+

String

+

Specifies the ECS creation progress.

+

metadata

+

Object

+

Specifies the ECS metadata.

+
+
+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "rebuild" : {
+        "imageRef" : "3ed456f5-3d8f-4383-a6c9-312032afcd1a",
+        "name" : "rebuildName",
+       "metadata" : {
+            "rebuild" : "rebuild vm"
+        }
+    }
+}
+
+

Example Response

{
+    "server": {
+        "tenant_id": "7459f9935ed2422eb9800fea1d4d9378",
+        "image": {
+            "links": [
+                {
+                    "rel": "bookmark",
+                    "href": "https://172.30.32.132:443/7459f9935ed2422eb9800fea1d4d9378/images/3ed456f5-3d8f-4383-a6c9-312032afcd1a"
+                }
+            ],
+            "id": "3ed456f5-3d8f-4383-a6c9-312032afcd1a"
+        },
+        "accessIPv4": "",
+        "addresses": {
+            "443dd9e3-c165-4764-ad92-b17fcf12a3eb": [
+                {
+                    "addr": "192.168.0.119",
+                    "version": 4
+                }
+            ]
+        },
+        "metadata": {
+            "name": "rebuildName"
+        },
+        "accessIPv6": "",
+        "created": "2016-09-19T01:13:26Z",
+        "hostId": "fd16ebd9c2629e8595875cc1e1400fa67f392431d7937fcc9cf37671",
+        "adminPass": "qGVjnEjY3ZoY",
+        "flavor": {
+            "links": [
+                {
+                    "rel": "bookmark",
+                    "href": "https://172.30.32.132:443/7459f9935ed2422eb9800fea1d4d9378/flavors/normal1"
+                }
+            ],
+            "id": "normal1"
+        },
+        "OS-DCF:diskConfig": "MANUAL",
+        "user_id": "ed2965d80d394be0b41e56f50ac650ca",
+        "name": "rebuildName",
+        "progress": 0,
+        "links": [
+            {
+                "rel": "self",
+                "href": "https://172.30.32.132:443/v2/7459f9935ed2422eb9800fea1d4d9378/servers/ea681a24-9b24-4f49-98ef-8e1f73acf19e"
+            },
+            {
+                "rel": "bookmark",
+                "href": "https://172.30.32.132:443/7459f9935ed2422eb9800fea1d4d9378/servers/ea681a24-9b24-4f49-98ef-8e1f73acf19e"
+            }
+        ],
+        "id": "ea681a24-9b24-4f49-98ef-8e1f73acf19e",
+        "updated": "2016-09-19T07:22:05Z",
+        "status": "REBUILD"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817689.html b/ecs/api-ref/en-us_topic_0065817689.html new file mode 100644 index 000000000..bef903f93 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817689.html @@ -0,0 +1,127 @@ + + +

Obtaining ECS Management Console Logs

+

Function

This API is used to obtain ECS management console logs.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Constraints

This API will be discarded since a version later than microversion 2.5. When using this API, set the microversion to 2.5 or earlier.

+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-getConsoleOutput

+

Yes

+

Object

+

Obtains ECS management console logs. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 os-getConsoleOutput parameter description

Parameter

+

Mandatory

+

Type

+

Description

+

length

+

Yes

+

Integer

+

Specifies the number of request log rows. The value is greater than or equal to -1, which indicates that the output is not limited.

+
+
+
+

Response

Table 4 describes the response parameter.

+ +
+ + + + + + + + + +
Table 4 Response parameter

Parameter

+

Type

+

Description

+

output

+

String

+

Specifies the ECS console logs.

+
+
+
+

Example Request

POST https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/servers/47e9be4e-a7b9-471f-92d9-ffc83814e07a/action
+POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers/47e9be4e-a7b9-471f-92d9-ffc83814e07a/action
+
{
+   "os-getConsoleOutput" : {
+        "length" : "50"
+    }
+}
+
+

Example Response

{
+    "output": "FAKE CONSOLEOUTPUT\nANOTHER\nLAST LINE"
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817690.html b/ecs/api-ref/en-us_topic_0065817690.html new file mode 100644 index 000000000..19a920a5a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817690.html @@ -0,0 +1,80 @@ + + +

Locking an ECS

+

Function

This API is used to lock an ECS.

+

You are only allowed to lock your own ECSs. After ECSs are locked, you will not be able to perform management operations on them, including life cycle management, status management, NIC management, disk management, and password management.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Type

+

Mandatory

+

Description

+

lock

+

Null

+

Yes

+

Locks an ECS.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+    "lock": null
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817691.html b/ecs/api-ref/en-us_topic_0065817691.html new file mode 100644 index 000000000..066c01726 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817691.html @@ -0,0 +1,80 @@ + + +

Unlocking an ECS

+

Function

This API is used to unlock an ECS.

+

After an ECS is unlocked, common users are allowed to manage the ECS.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

unlock

+

Yes

+

Null

+

Unlocks an ECS.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+   "unlock": null 
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817692.html b/ecs/api-ref/en-us_topic_0065817692.html new file mode 100644 index 000000000..349265083 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817692.html @@ -0,0 +1,202 @@ + + +

Querying Operations on an ECS

+

Function

This API is used to query all historical operations on an ECS.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-instance-actions?limit={limit}&marker={marker}

+

GET /v2/{project_id}/servers/{server_id}/os-instance-actions?limit={limit}&marker={marker}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+

Pagination query is supported in microversion 2.58 and later. The query results are displayed by the creation time (created_at) of the records in descending order. If the creation time is not provided, the results are displayed by object ID in descending order. The number of records displayed on each page is limit. If the value of limit exceeds the maximum number configured in Nova, the maximum number configured in Nova is returned.

+
+
+ +
+ + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Description

+

limit

+

No

+

Specifies the upper limit on the number of returned results.

+

This parameter is supported in microversion 2.58 and later.

+

marker

+

No

+

Specifies the marker that points to the operation. The query starts from the next piece of data indexed by this parameter. The value is request_id.

+

This parameter is supported in microversion 2.58 and later.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

instanceActions

+

Array of Object

+

Specifies operations performed on the ECS. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 instanceActions field description

Parameter

+

Mandatory

+

Type

+

Description

+

action

+

Yes

+

String

+

Specifies the action.

+

Options:

+

create, delete, evacuate, restore, stop, start, reboot, rebuild, revertResize, confirmResize, detach_volume, attach_volume, attach_interface, detach_interface, lock, unlock, resize, migrate, pause, unpause, suspend, resume, rescue, unrescue, changePassword, shelve, unshelve, live-migration, live_migration_cancel, live_migration_force_complete, trigger_crash_dump, and extend_volume

+

instance_uuid

+

Yes

+

String

+

Specifies the ECS ID in UUID format.

+

message

+

Yes

+

String

+

Specifies the result status of the operation.

+

project_id

+

Yes

+

String

+

Specifies the project ID.

+

request_id

+

Yes

+

String

+

Specifies the request ID.

+

start_time

+

Yes

+

String

+

Specifies the time when the action was started.

+

user_id

+

Yes

+

String

+

Specifies the user ID.

+
+
+
+

Example Request

GET https://{endpoint}/v2/89655fe61c4c4a08b9f3e7f9095441b8/servers/e723eb40-f56e-40f9-8c8c-caa517fe06ba/os-instance-actions
+GET https://{endpoint}/v2.1/89655fe61c4c4a08b9f3e7f9095441b8/servers/e723eb40-f56e-40f9-8c8c-caa517fe06ba/os-instance-actions
+
+

Example Response

{
+    "instanceActions": [
+        {
+            "instance_uuid": "e723eb40-f56e-40f9-8c8c-caa517fe06ba",
+            "user_id": "752be40780484291a9cc7ae50fff3e6d",
+            "start_time": "2014-12-16T10:58:14.000000",
+            "request_id": "req-ee56c2b5-d33b-4749-ae83-09281dbbb716",
+            "action": "resize",
+            "message": "Error",
+            "project_id": "89655fe61c4c4a08b9f3e7f9095441b8"
+        },
+        {
+            "instance_uuid": "e723eb40-f56e-40f9-8c8c-caa517fe06ba",
+            "user_id": "752be40780484291a9cc7ae50fff3e6d",
+            "start_time": "2014-12-16T10:57:56.000000",
+            "request_id": "req-23cfd57f-c58a-45cd-86a6-eab3e38f3753",
+            "action": "resize",
+            "message": "Error",
+            "project_id": "89655fe61c4c4a08b9f3e7f9095441b8"
+        },
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817693.html b/ecs/api-ref/en-us_topic_0065817693.html new file mode 100644 index 000000000..bcccae4bd --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817693.html @@ -0,0 +1,243 @@ + + +

Querying ECS Operations by Request ID

+

Function

This API is used to query a request of an ECS.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-instance-actions/{request_id}

+

GET /v2/{project_id}/servers/{server_id}/os-instance-actions/{request_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

request_id

+

Yes

+

Specifies the request ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

instanceAction

+

Object

+

Specifies an operation performed on the ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 instanceAction field description

Parameter

+

Mandatory

+

Type

+

Description

+

action

+

Yes

+

String

+

Specifies the action name.

+

instance_uuid

+

Yes

+

String

+

Specifies the ECS ID in UUID format.

+

message

+

Yes

+

String

+

Specifies the result status of the action.

+

project_id

+

Yes

+

String

+

Specifies the project ID.

+

request_id

+

Yes

+

String

+

Specifies the request ID.

+

start_time

+

Yes

+

String

+

Specifies the time when the action was started.

+

user_id

+

Yes

+

String

+

Specifies the user ID.

+

events

+

Yes

+

Array of objects

+

Describes events. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 events field description

Parameter

+

Mandatory

+

Type

+

Description

+

event

+

Yes

+

String

+

Specifies the action name.

+

result

+

Yes

+

String

+

Specifies the execution result.

+

traceback

+

Yes

+

String

+

Specifies the error message.

+

start_time

+

Yes

+

String

+

Specifies the time when the event was started.

+

finish_time

+

Yes

+

String

+

Specifies the time when the event was completed.

+
+
+
+

Example Request

GET https://{endpoint}/v2/89655fe61c4c4a08b9f3e7f9095441b8/servers/e723eb40-f56e-40f9-8c8c-caa517fe06ba/os-instance-actions/req-5a429946-c9cc-45cc-b5bd-68864209e5c
+GET https://{endpoint}/v2.1/89655fe61c4c4a08b9f3e7f9095441b8/servers/e723eb40-f56e-40f9-8c8c-caa517fe06ba/os-instance-actions/req-5a429946-c9cc-45cc-b5bd-68864209e5c
+
+

Example Response

{
+    "instanceAction": {
+        "instance_uuid": "e723eb40-f56e-40f9-8c8c-caa517fe06ba",
+        "user_id": "752be40780484291a9cc7ae50fff3e6d",
+        "start_time": "2014-12-11T02:17:49.000000",
+        "request_id": "req-5a429946-c9cc-45cc-b5bd-68864209e5cc",
+        "action": "create",
+        "message": null,
+        "project_id": "89655fe61c4c4a08b9f3e7f9095441b8",
+        "events": [
+            {
+                "finish_time": "2014-12-11T02:17:58.000000",
+                "start_time": "2014-12-11T02:17:50.000000",
+                "traceback": null,
+                "event": "compute_build_and_run_instance",
+                "result": "Success"
+            }
+        ]
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817694.html b/ecs/api-ref/en-us_topic_0065817694.html new file mode 100644 index 000000000..87741ed9a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817694.html @@ -0,0 +1,156 @@ + + +

Creating an Image Using an ECS

+

Function

This API is used to create an image using an ECS. After the creation, you can use this image to create ECSs.

+

Images created using an ECS are stored on storage nodes as snapshots.

+
+

This API is a native OpenStack API that is not applicable to the images on the public cloud platform.

+
  • To create a system disk image or data disk image, use the IMS API (POST /v2/cloudimages/action). For details, see "Creating an Image" in Image Management Service API Reference.
  • To create a full-ECS image, use the IMS API (POST /v1/cloudimages/wholeimages/action). For details, see "Creating a Full-ECS Image" in Image Management Service API Reference.
+
+

Constraints

  1. An ECS in the error state cannot be used to create an image.
  2. If an image created using an ECS is used to create a new ECS, the new ECS must be located in the same AZ as the original ECS.
  3. After an ECS is deleted, the images and snapshots created using this ECS will not be automatically deleted. You must manually delete them.
  4. After an image created using an ECS is deleted, the associated snapshots will not be automatically deleted (this function is implemented by native OpenStack). You must manually delete such snapshots.
  5. The image created using an ECS cannot be used to create data disks.
  6. The images created using the API described in this section (URI: POST /v2/{project_id}/servers/{server_id}/action or POST /v2.1/{project_id}/servers/{server_id}/action) cannot be exported to OBS buckets. If such images must be exported, use the IMS API (POST /v2/cloudimages/action). For details, see "Creating an Image" in Image Management Service API Reference.
+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

createImage

+

Yes

+

Object

+

Specifies the image created using ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 createImage field description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Specifies the image name with a length greater than 0 bytes and less than 243 bytes.

+

metadata

+

No

+

Object

+

Specifies the image attribute with a length greater than 0 bytes and less than 255 bytes.

+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

Location

+

Yes

+

String

+

Specifies the local URL of the image, which is returned in the request header.

+

This parameter is not supported in microversion 2.44 and later.

+

image_id

+

Yes

+

String

+

Specifies the image UUID.

+

This parameter is supported in microversion 2.45 and later.

+
+
+
+

Example Request

POST https://{endpoint}/v2/{project_id}/servers/{server_id}/action
+POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{
+   "createImage" : {
+        "name" : "new-image-name",
+        "metadata": {
+            "ImageType": "Gold",
+            "ImageVersion": "2.0"
+        }
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817695.html b/ecs/api-ref/en-us_topic_0065817695.html new file mode 100644 index 000000000..a0fc3253f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817695.html @@ -0,0 +1,308 @@ + + +

Querying Images (Discarded)

+

Function

This API is used to query all images.

+

This API has been discarded. Use the API described in "Querying Images (Native OpenStack API)".

+
+

URI

GET /v2/{project_id}/images?name={name}&status={status}&changes-since={changes-since}&minRam={minRam}&minDisk={inDisk}

+

GET /v2.1/{project_id}/images?name={name}&status={status}&changes-since={changes-since}&minRam={minRam}&minDisk={inDisk}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Parameters in the following table can be used as URI parameters to filter query results. Usage: /v2/{project_id}/images? name ={name}&status={status}

+

Table 2 describes the query parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Specifies the image name.

+

status

+

No

+

String

+

Specifies the image status.

+

You cannot query images when the value is set to deleted. The value depends on the status in Glance. Table 3 shows the mapping relationship of image status in Nova and Glance.

+

changes-since

+

No

+

String

+

Specifies the images modified after the changes-since time point. The parameter is in ISO 8601 time format, for example, 2013-06-09T06:42:18Z.

+

minRam

+

No

+

Integer

+

Specifies the minimum memory size in MB required by the image.

+

minDisk

+

No

+

Integer

+

Specifies the minimum disk size in GB required by the image.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 Mapping relationship of image status in Nova and Glance

Image Status in Glance

+

Image Status in Nova

+

queued

+

saving

+

saving

+

saving

+

active

+

active

+

deleted

+

deleted

+
+
+

Request

None

+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

images

+

Yes

+

Array of objects

+

Specifies the image information.

+

images_links

+

No

+

Array of objects

+

Specifies the information about the next page when you query images in pages.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 images information

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the image ID in UUID format.

+

links

+

Yes

+

Array of objects

+

Specifies the shortcut link of the image.

+

name

+

Yes

+

String

+

Specifies the image name.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 6 images_links parameters

Parameter

+

Mandatory

+

Type

+

Description

+

href

+

Yes

+

String

+

Specifies the URL of the next page when you query images in pages.

+

rel

+

Yes

+

String

+

Specifies the query direction when you query images in pages.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 links parameter description

Parameter

+

Mandatory

+

Type

+

Description

+

href

+

Yes

+

String

+

Specifies the link of the corresponding resource.

+

rel

+

Yes

+

String

+

The value can be:

+
  • self: A self link contains a version link to the resource. Use these links when the link is followed immediately.
  • bookmark: A bookmark link provides a permanent link to a resource, which is suitable for long term storage.
  • alternate: An alternate link can contain an alternate representation of the resource. For example, an OpenStack Compute image may have an alternate representation in the OpenStack image service.
+

type

+

No

+

String

+

The type attribute provides a hint as to the type of representation to expect when following the link.

+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/images
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/images
+
+

Example Response

{
+    "images": [
+        {
+            "id": "ee10f19c-503c-44af-af2f-73d5e42f7a17",
+            "links": [
+                {
+                    "href": "http://172.25.150.84:8774/v2/d9ebe43510414ef590a4aa158605329e/images/ee10f19c-503c-44af-af2f-73d5e42f7a17",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://172.25.150.84:8774/d9ebe43510414ef590a4aa158605329e/images/ee10f19c-503c-44af-af2f-73d5e42f7a17",
+                    "rel": "bookmark"
+                },
+                {
+                    "href": "http://172.25.150.84:9292/d9ebe43510414ef590a4aa158605329e/images/ee10f19c-503c-44af-af2f-73d5e42f7a17",
+                    "rel": "alternate",
+                    "type": "application/vnd.openstack.image"
+                }
+            ],
+            "name": "image1"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817696.html b/ecs/api-ref/en-us_topic_0065817696.html new file mode 100644 index 000000000..08c6fec6a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817696.html @@ -0,0 +1,335 @@ + + +

Querying Image Details (Discarded)

+

Function

This API is used to query detailed information about an image list.

+

This API has been discarded. Use the API described in "Querying Images (Native OpenStack API)".

+
+

URI

GET /v2/{project_id}/images/detail?name={name}&status={status}&changes-since={changes-since}&minRam={minRam}&minDisk={inDisk}

+

GET /v2.1/{project_id}/images/detail?name={name}&status={status}&changes-since={changes-since}&minRam={minRam}&minDisk={inDisk}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Parameters in the following table can be used as URI parameters to filter query results. Usage: /v2/{tenant_id}/images/detail? name ={name}&status={status}

+

Table 2 describes the query parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Specifies the image name.

+

status

+

No

+

String

+

Specifies the image status.

+

You cannot query images when the value is set to deleted. The value depends on the status in Glance. Table 3 shows the mapping relationship of image status in Nova and Glance.

+

changes-since

+

No

+

String

+

Specifies the images modified after the changes-since time point. The value is in ISO8601 format, such as 2013-06-09T06:42:18Z.

+

minRam

+

No

+

Integer

+

Specifies the minimum memory size in MB required by the image.

+

minDisk

+

No

+

Integer

+

Specifies the minimum disk size in GB required by the image.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 Mapping relationship of image status in Nova and Glance

Image Status in Glance

+

Image Status in Nova

+

queued

+

saving

+

saving

+

saving

+

active

+

active

+

deleted

+

deleted

+
+
+

Request

None

+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the image ID in UUID format.

+

links

+

Array of objects

+

Specifies the shortcut link of the image.

+

name

+

String

+

Specifies the image name.

+

metadata

+

Object

+

Specifies the key pair of the metadata.

+

OS-EXT-IMG-SIZE:size

+

Integer

+

Specifies the image size.

+

The value must be greater than zero.

+

minDisk

+

Integer

+

Specifies the minimum disk size in GB required by the image.

+

The value must be greater than zero.

+

minRam

+

Integer

+

Specifies the minimum memory size in GB required by the image.

+

The value must be greater than zero.

+

progress

+

Integer

+

Specifies the image upload progress.

+

The value must be greater than zero.

+

status

+

String

+

Specifies the image status.

+

created

+

String

+

Specifies the image creation time.

+

The value is in ISO8601 format, such as 2013-06-09T06:42:18Z.

+

updated

+

String

+

Specifies the image update time.

+

The value is in ISO8601 format, such as 2013-06-09T06:42:18Z.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 links parameter description

Parameter

+

Mandatory

+

Type

+

Description

+

href

+

Yes

+

String

+

Specifies the link of the corresponding resource.

+

rel

+

Yes

+

String

+

The value can be:

+
  • self: A self link contains a version link to the resource. Use these links when the link is followed immediately.
  • bookmark: A bookmark link provides a permanent link to a resource, which is suitable for long term storage.
  • alternate: An alternate link can contain an alternate representation of the resource. For example, an OpenStack Compute image may have an alternate representation in the OpenStack image service.
+

type

+

No

+

String

+

The type attribute provides a hint as to the type of representation to expect when following the link.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/images/detail
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/images/detail
+
+

Example Response

{
+    "image": {
+        "OS-EXT-IMG-SIZE:size": 20578304,
+        "created": "2014-02-10T17:05:01Z",
+        "id": "ee10f19c-503c-44af-af2f-73d5e42f7a17",
+        "links": [
+            {
+                "href": "http://172.25.150.84:8774/v2/d9ebe43510414ef590a4aa158605329e/images/ee10f19c-503c-44af-af2f-73d5e42f7a17",
+                "rel": "self"
+            },
+            {
+                "href": "http://172.25.150.84:8774/d9ebe43510414ef590a4aa158605329e/images/ee10f19c-503c-44af-af2f-73d5e42f7a17",
+                "rel": "bookmark"
+            },
+            {
+                "href": "http://172.25.150.84:9292/d9ebe43510414ef590a4aa158605329e/images/ee10f19c-503c-44af-af2f-73d5e42f7a17",
+                "rel": "alternate",
+                "type": "application/vnd.openstack.image"
+            }
+        ],
+        "metadata": {
+            "clean_attempts": "3",
+            "image_location": "snapshot",
+            "image_state": "available",
+            "image_type": "snapshot",
+            "instance_type_ephemeral_gb": "0",
+            "instance_type_flavorid": "6",
+            "instance_type_id": "7",
+            "instance_type_memory_mb": "256",
+            "instance_type_name": "wj.ssd",
+            "instance_type_root_gb": "2",
+            "instance_type_rxtx_factor": "1.0",
+            "instance_type_swap": "0",
+            "instance_type_vcpus": "1",
+            "instance_uuid": "b600b5b1-ed8c-4814-aefa-8b903c894c20",
+            "os_type": "None",
+            "owner_id": "d9ebe43510414ef590a4aa158605329e",
+            "user_id": "74fe4ff0674b434b8a274077d8106c5b"
+        },
+        "minDisk": 2,
+        "minRam": 0,
+        "name": "image1",
+        "progress": 100,
+        "server": {
+            "id": "b600b5b1-ed8c-4814-aefa-8b903c894c20",
+            "links": [
+                {
+                    "href": "http://172.25.150.84:8774/v2/d9ebe43510414ef590a4aa158605329e/servers/b600b5b1-ed8c-4814-aefa-8b903c894c20",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://172.25.150.84:8774/d9ebe43510414ef590a4aa158605329e/servers/b600b5b1-ed8c-4814-aefa-8b903c894c20",
+                    "rel": "bookmark"
+                }
+            ]
+        },
+        "status": "ACTIVE",
+        "updated": "2014-02-10T17:05:07Z"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817697.html b/ecs/api-ref/en-us_topic_0065817697.html new file mode 100644 index 000000000..4073d30f9 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817697.html @@ -0,0 +1,221 @@ + + +

Querying Details About a Specified Image (Discarded)

+

Function

This API is used to query the details about the specified image.

+

This API has been discarded. Use the API described in "Querying Images (Native OpenStack API)".

+
+

URI

GET /v2/{project_id}/images/{image_id}

+

GET /v2.1/{project_id}/images/{image_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

image_id

+

Yes

+

Specifies the image ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the image ID in UUID format.

+

links

+

Array of objects

+

Specifies the shortcut link of the image.

+

name

+

String

+

Specifies the image name.

+

metadata

+

Object

+

Specifies the key pair of the metadata.

+

OS-EXT-IMG-SIZE:size

+

Integer

+

Specifies the image size. The value must be greater than zero.

+

minDisk

+

Integer

+

Specifies the minimum disk size in GB required by the image. The value must be greater than zero.

+

minRam

+

Integer

+

Specifies the minimum memory size in GB required by the image. The value must be greater than zero.

+

progress

+

Integer

+

Specifies the image upload progress. The value must be greater than zero.

+

status

+

String

+

Specifies the image status.

+

created

+

String

+

Specifies the image creation time. The value is in ISO8601 format, such as 2013-06-09T06:42:18Z.

+

updated

+

String

+

Specifies the image update time. The value is in ISO8601 format, such as 2013-06-09T06:42:18Z.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 links parameter description

Parameter

+

Mandatory

+

Type

+

Description

+

href

+

Yes

+

String

+

Specifies the link of the corresponding resource.

+

rel

+

Yes

+

String

+

The value can be:

+
  • self: A self link contains a version link to the resource. Use these links when the link is followed immediately.
  • bookmark: A bookmark link provides a permanent link to a resource, which is suitable for long term storage.
  • alternate: An alternate link can contain an alternate representation of the resource. For example, an OpenStack Compute image may have an alternate representation in the OpenStack image service.
+

type

+

No

+

String

+

The type attribute provides a hint as to the type of representation to expect when following the link.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/images/17a1890b-0fa4-485e-8505-14e294017988
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/images/17a1890b-0fa4-485e-8505-14e294017988
+
+

Example Response

{
+    "image": {
+        "status": "ACTIVE", 
+        "updated": "2015-12-27T02:52:25Z", 
+        "name": "cirror", 
+        "links": [
+            {
+                "href": "https://compute.localdomain.com:8001/v2/719e9483f42d4784a089862ac4c3e8d0/images/17a1890b-0fa4-485e-8505-14e294017988", 
+                "rel": "self"
+            }, 
+            {
+                "href": "https://compute.localdomain.com:8001/719e9483f42d4784a089862ac4c3e8d0/images/17a1890b-0fa4-485e-8505-14e294017988", 
+                "rel": "bookmark"
+            }, 
+            {
+                "href": "https://https://image.az2.dc1.domainname.com:443/719e9483f42d4784a089862ac4c3e8d0/images/17a1890b-0fa4-485e-8505-14e294017988", 
+                "type": "application/vnd.openstack.image", 
+                "rel": "alternate"
+            }
+        ], 
+        "created": "2015-12-27T02:52:24Z", 
+        "minDisk": 0, 
+        "progress": 100, 
+        "minRam": 0, 
+        "metadata": {
+            "__os_version": "CentOS 4.4 32bit", 
+            "file_format": "img", 
+            "file_name": "**.img", 
+            "describe": "", 
+            "__os_type": "Linux", 
+            "virtual_env_type": "KVM", 
+            "hw_disk_bus": "scsi"
+        }, 
+        "id": "17a1890b-0fa4-485e-8505-14e294017988", 
+        "OS-EXT-IMG-SIZE:size": 13167616
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817698.html b/ecs/api-ref/en-us_topic_0065817698.html new file mode 100644 index 000000000..8558c1275 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817698.html @@ -0,0 +1,86 @@ + + +

Querying the Metadata of a Specified Image (Discarded)

+

Function

This API is used to query the metadata of the specified image.

+

This API has been discarded. Use the API described in "Querying Image Metadata (Native OpenStack API)".

+
+

URI

GET /v2/{project_id}/images/{image_id}/metadata

+

GET /v2.1/{project_id}/images/{image_id}/metadata

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

image_id

+

Yes

+

Specifies the image ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

User customization

+

String

+

Specifies the key pair of the metadata.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/images/17a1890b-0fa4-485e-8505-14e294017988/metadata
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/images/17a1890b-0fa4-485e-8505-14e294017988/metadata
+
+

Example Response

{
+    "metadata": {
+        "__os_version": "Suse Linux Enterprise 12.2 64bit",
+        "__image_source_type": "uds",
+        "__imagetype": "gold",
+        "__os_bit": "64",
+        "__os_type": "Suse",
+        "__isregistered": "true",
+        "__image_location": "192.168.80.11:5080:pcsimsbeta:suse12.2-addx710-05-11",
+        "virtual_env_type": "Ironic",
+        "__platform": "Suse",
+        "__support_o3s": "true"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817699.html b/ecs/api-ref/en-us_topic_0065817699.html new file mode 100644 index 000000000..18b2f018d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817699.html @@ -0,0 +1,54 @@ + + +

Deleting an Image (Discarded)

+

Function

This API is used to delete a specified image. The image cannot be restored after being deleted.

+

This API has been discarded. Use the API described in "Deleting an Image (Native OpenStack API)".

+
+

URI

DELETE /v2/{project_id}/images/{image_id}

+

DELETE /v2.1/{project_id}/images/{image_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

image_id

+

Yes

+

Specifies the image ID.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/images/6cad483b-e281-4985-a345-7afef1f3c5b7
+DELETE https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/images/6cad483b-e281-4985-a345-7afef1f3c5b7
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817700.html b/ecs/api-ref/en-us_topic_0065817700.html new file mode 100644 index 000000000..3f6dce12b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817700.html @@ -0,0 +1,356 @@ + + +

Updating a Security Group (Discarded)

+

Function

This API is used to update a security group.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Updating a Security Group" in Virtual Private Network API Reference.

+
+

URI

PUT /v2/{project_id}/os-security-groups/{security_group_id}

+

PUT /v2.1/{project_id}/os-security-groups/{security_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

security_group_id

+

Yes

+

Specifies the security group ID, which is specified in the URI.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

security_group

+

Yes

+

Object

+

Specifies the security group in the message body. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 Objects of request parameter security_group

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Specifies the security group name.

+

The value cannot exceed 255 characters.

+

description

+

Yes

+

String

+

Specifies information about a security group.

+

The value cannot exceed 255 characters.

+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

security_group

+

Yes

+

Object

+

Specifies the security group. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 Objects of response parameter security_group

Parameter

+

Mandatory

+

Type

+

Description

+

description

+

Yes

+

String

+

Specifies information about a security group.

+

The value cannot exceed 255 characters.

+

id

+

Yes

+

String

+

Specifies the security group ID in UUID format.

+

name

+

Yes

+

String

+

Specifies the security group name.

+

The value cannot exceed 255 characters.

+

rules

+

Yes

+

Array of objects

+

Specifies the security group rule list. For details, see Table 6.

+

tenant_id

+

Yes

+

String

+

Specifies the tenant or project ID.

+

The value cannot exceed 255 characters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 security_group_rule objects

Parameter

+

Mandatory

+

Type

+

Description

+

parent_group_id

+

Yes

+

String

+

Specifies the associated security group ID in UUID format.

+

ip_protocol

+

Yes

+

String

+

Specifies the protocol type or the IP protocol number. The value can be icmp, tcp, udp, or the IP protocol number.

+

from_port

+

Yes

+

Integer

+

Specifies the start port. The value ranges from 1 to 65,535 and cannot be greater than to_port. When ip_protocol is icmp, this parameter specifies a port type with a length from 0 to 255 characters.

+

to_port

+

Yes

+

Integer

+

Specifies the end port. The value ranges from 1 to 65,535 and cannot be less than from_port. When ip_protocol is icmp, it specifies the code. The value ranges from 0 to 255. If both from_port and to_port are -1, any ICMP packet can be transmitted.

+

ip_range

+

Yes

+

Object

+

Specifies the peer IP segment in CIDR format. For details, see Table 7. The value of ip_range or group must be empty.

+

group

+

Yes

+

Object

+

Specifies the name of the peer security group and the ID of the tenant in the peer security group. For details, see Table 8. The value of ip_range or group must be empty.

+

id

+

Yes

+

String

+

Specifies the security group rule ID in UUID format.

+
+
+ +
+ + + + + + + + + + + +
Table 7 ip_range objects

Parameter

+

Mandatory

+

Type

+

Description

+

cidr

+

Yes

+

String

+

Specifies the peer IP segment in CIDR format.

+

The value cannot exceed 255 characters.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 8 group objects

Parameter

+

Mandatory

+

Type

+

Description

+

tenant_id

+

Yes

+

String

+

Specifies the ID of the tenant of the peer security group.

+

name

+

Yes

+

String

+

Specifies the name of the peer security group.

+
+
+
+

Example Request

PUT https://{endpoint}/v2/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups/3d02312d-0764-49c9-8244-2368ddce0045
+PUT https://{endpoint}/v2.1/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups/3d02312d-0764-49c9-8244-2368ddce0045
+
{
+    "security_group": {
+        "name": "test",
+        "description": "description"
+    }
+}
+
+

Example Response

{
+  "security_group": {
+    "rules": [
+      {
+        "from_port": null,
+        "group": {
+          "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+          "name": "test"
+        },
+        "ip_protocol": null,
+        "to_port": null,
+        "parent_group_id": "3d02312d-0764-49c9-8244-2368ddce0045",
+        "ip_range": {},
+        "id": "00dec0b6-8e96-4906-aadf-46cfe54cf5ef"
+      }
+    ],
+    "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+    "id": "3d02312d-0764-49c9-8244-2368ddce0045",
+    "name": "test",
+    "description": "description"
+  }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817701.html b/ecs/api-ref/en-us_topic_0065817701.html new file mode 100644 index 000000000..aff08e272 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817701.html @@ -0,0 +1,54 @@ + + +

Deleting a Security Group (Discarded)

+

Function

This API is used to delete a security group.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Deleting a Security Group" in Virtual Private Network API Reference.

+
+

URI

DELETE /v2/{project_id}/os-security-groups/{security_group_id}

+

DELETE /v2.1/{project_id}/os-security-groups/{security_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

security_group_id

+

Yes

+

Specifies the security group ID, which is specified in the URI.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups/81f1d23b-b1e2-42cd-bdee-359b4a065a42
+DELETE https://{endpoint}/v2.1/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups/81f1d23b-b1e2-42cd-bdee-359b4a065a42
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817702.html b/ecs/api-ref/en-us_topic_0065817702.html new file mode 100644 index 000000000..0e00deb40 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817702.html @@ -0,0 +1,337 @@ + + +

Querying Security Groups for a Specified ECS

+

Function

This API is used to query security groups for a specified ECS.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/os-security-groups

+

GET /v2/{project_id}/servers/{server_id}/os-security-groups

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

security_groups

+

+

Yes

+

Array of objects

+

Specifies security groups. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 security_group objects

Parameter

+

Mandatory

+

Type

+

Description

+

description

+

Yes

+

String

+

Specifies information about a security group. It must contain 0 to 255 characters.

+

id

+

Yes

+

String

+

Specifies the security group ID in UUID format.

+

name

+

Yes

+

String

+

Specifies the security group name. It must contain 0 to 255 characters.

+

rules

+

Yes

+

Array of objects

+

Specifies security group rules. For details, see Table 4.

+

tenant_id

+

Yes

+

String

+

Specifies the tenant or project ID.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 security_group_rule objects

Parameter

+

Mandatory

+

Type

+

Description

+

parent_group_id

+

Yes

+

String

+

Specifies the associated security group ID in UUID format.

+

ip_protocol

+

Yes

+

String

+

Specifies the protocol type or the IP protocol number. The value can be icmp, tcp, udp, or the IP protocol number.

+

from_port

+

Yes

+

Integer

+

Specifies the start port number. The value ranges from 1 to 65,535 and cannot be greater than to_port.

+

When ip_protocol is icmp, this parameter specifies a port type with a length from 0 to 255 characters.

+

to_port

+

Yes

+

Integer

+

Specifies the stop port number. The value ranges from 1 to 65,535 and cannot be less than from_port.

+

When ip_protocol is icmp, it specifies the code. The value ranges from 0 to 255. If both from_port and to_port are -1, any ICMP packet can be transmitted.

+

ip_range

+

Yes

+

Object

+

Specifies the peer IP segment in CIDR format. For details, see Table 5.

+

The value of ip_range or group must be empty.

+

group

+

Yes

+

Object

+

Specifies the name of the peer security group and the ID of the tenant in the peer security group. For details, see Table 6.

+

The value of ip_range or group must be empty.

+

id

+

Yes

+

String

+

Specifies the security group rule ID in UUID format.

+
+
+ +
+ + + + + + + + + + + +
Table 5 ip_range objects

Parameter

+

Mandatory

+

Type

+

Description

+

cidr

+

No

+

String

+

Specifies the peer IP segment in CIDR format.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 6 group objects

Parameter

+

Mandatory

+

Type

+

Description

+

tenant_id

+

No

+

String

+

Specifies the ID of the tenant of the peer security group.

+

name

+

No

+

String

+

Specifies the name of the peer security group.

+
+
+
+

Example Request

GET https://{endpoint}/v2/e73621affb8f44e1bc01898747ca09d4/servers/65fae4c2-3a09-46c6-af12-3b04f1fdba1e/os-security-groups
+GET https://{endpoint}/v2.1/e73621affb8f44e1bc01898747ca09d4/servers/65fae4c2-3a09-46c6-af12-3b04f1fdba1e/os-security-groups
+
+

Example Response

{
+    "security_groups": [
+        {
+            "rules": [
+                {
+                    "from_port": null,
+                    "group": {
+                        "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+                        "name": "default"
+                    },
+                    "ip_protocol": null,
+                    "to_port": null,
+                    "parent_group_id": "bc4ac1d1-dc77-4b7d-a97d-af86eb0dc450",
+                    "ip_range": {},
+                    "id": "bb3cc988-e06a-49f6-b668-600e8bf193ee"
+                },
+                {
+                    "from_port": null,
+                    "group": {
+                        "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+                        "name": "default"
+                    },
+                    "ip_protocol": null,
+                    "to_port": null,
+                    "parent_group_id": "bc4ac1d1-dc77-4b7d-a97d-af86eb0dc450",
+                    "ip_range": {},
+                    "id": "f9371051-d7e1-4be4-8748-77b1e0913730"
+                }
+            ],
+            "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+            "description": "default",
+            "id": "bc4ac1d1-dc77-4b7d-a97d-af86eb0dc450",
+            "name": "default"
+        },
+        {
+            "rules": [
+                {
+                    "from_port": 200,
+                    "group": {},
+                    "ip_protocol": "tcp",
+                    "to_port": 400,
+                    "parent_group_id": "b3e4b615-a40f-4e1c-92af-2e0d382141d5",
+                    "ip_range": {
+                        "cidr": "0.0.0.0/0"
+                    },
+                    "id": "3330120d-bbd1-4a73-bda9-0196a84d5670"
+                },
+                {
+                    "from_port": 201,
+                    "group": {},
+                    "ip_protocol": "tcp",
+                    "to_port": 400,
+                    "parent_group_id": "b3e4b615-a40f-4e1c-92af-2e0d382141d5",
+                    "ip_range": {
+                        "cidr": "0.0.0.0/0"
+                    },
+                    "id": "b550c9a6-970a-462d-984e-265e88020818"
+                }
+            ],
+            "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+            "description": "desc-sg",
+            "id": "b3e4b615-a40f-4e1c-92af-2e0d382141d5",
+            "name": "test-sg"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817703.html b/ecs/api-ref/en-us_topic_0065817703.html new file mode 100644 index 000000000..7a3b251f3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817703.html @@ -0,0 +1,288 @@ + + +

Creating a Security Group Rule (Discarded)

+

Function

This API is used to create a security group rule.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Creating a Security Group Rule" in Virtual Private Network API Reference.

+
+

URI

POST /v2/{project_id}/os-security-group-rules

+

POST /v2.1/{project_id}/os-security-group-rules

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

security_group_rule

+

Yes

+

Object

+

Specifies the security group rule, which is configured in the message body. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Objects of request parameter security_group_rule

Parameter

+

Mandatory

+

Type

+

Description

+

parent_group_id

+

Yes

+

String

+

Specifies the associated security group ID in UUID format.

+

ip_protocol

+

Yes

+

String

+

Specifies the IP protocol, which can be icmp, tcp, or udp.

+

from_port

+

Yes

+

Integer

+

Specifies the start port. The value ranges from 1 to 65,535 and is no greater than the value of to_port.

+

If the value of ip_protocol is icmp, this parameter specifies the ICMP type. The value ranges from 0 to 255.

+

to_port

+

Yes

+

Integer

+

Specifies the end port. The value ranges from 1 to 65,535 and cannot be less than from_port.

+

If ip_protocol is icmp, this parameter specifies the ICMP code. The value ranges from 0 to 255. If both from_port and to_port are -1, any ICMP packet can be transmitted.

+

cidr

+

No

+

String

+

Specifies the IP address range. The address is in CIDR format, such as 192.168.0.0/24.

+

group_id

+

No

+

String

+

Specifies the source security group ID. If both group_id and cidr are set, group_id is used.

+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

security_group_rule

+

Yes

+

Object

+

Specifies the security group rule, which is configured in the message body. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 Objects of response parameter security_group_rule

Parameter

+

Mandatory

+

Type

+

Description

+

parent_group_id

+

Yes

+

String

+

Specifies the associated security group ID in UUID format.

+

ip_protocol

+

Yes

+

String

+

Specifies the IP protocol, which can be icmp, tcp, or udp.

+

from_port

+

Yes

+

Integer

+

Specifies the start port number. The value ranges from 1 to 65,535 and cannot be greater than to_port.

+

When the protocol type is set to ICMP, from_port is the ICMP type and ranges from 0 to 255.

+

to_port

+

Yes

+

Integer

+

Specifies the end port number. The value ranges from 1 to 65,535.

+
  • When the protocol type is set to ICMP, to_port is the ICMP code and ranges from 0 to 255.
  • If both from_port and to_port are -1, it indicates that any ICMP packet can be transmitted.
+

ip_range

+

Yes

+

Object

+

Specifies the IP address range, including the CIDR information, such as "ip_range": {"cidr": "0.0.0.0/0"}. For details, see the ip_range object.

+

group

+

Yes

+

Object

+

Nothing is returned.

+

id

+

Yes

+

String

+

Specifies the security group rule ID in UUID format.

+
+
+ +
+ + + + + + + + + + + +
Table 6 ip_range objects

Parameter

+

Mandatory

+

Type

+

Description

+

cidr

+

Yes

+

String

+

Specifies the IP address range. The address is in CIDR format, such as 192.168.0.0/24.

+
+
+
+

Example Request

POST https://{endpoint}/v2/{project_id}/os-security-group-rules
+POST https://{endpoint}/v2.1/{project_id}/os-security-group-rules
+
{
+	"security_group_rule": {
+		"from_port": "443",
+		"ip_protocol": "tcp",
+		"to_port": "443",
+		"cidr": "0.0.0.0/0",
+		"parent_group_id": "48700ff3-30b8-4e63-845f-a79c9633e9fb"
+	}
+}
+
+

Example Response

{
+	"security_group_rule": {
+		"id": "F4966B29-D21D-B211-B6B4-0018E1C5D866",
+		"ip_range": {
+			"cidr": "0.0.0.0/0"
+		},
+		"parent_group_id": "48700ff3-30b8-4e63-845f-a79c9633e9fb",
+		"to_port": 443,
+		"ip_protocol": "tcp",
+		"group": {
+			
+		},
+		"from_port": 443
+	}
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817704.html b/ecs/api-ref/en-us_topic_0065817704.html new file mode 100644 index 000000000..d962f030f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817704.html @@ -0,0 +1,55 @@ + + +

Deleting a Security Group Rule (Discarded)

+

Function

This API is used to delete a security group rule.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Deleting a Security Group Rule" in Virtual Private Network API Reference.

+
+

URI

DELETE /v2/{project_id}/os-security-group-rules/{security_group_rule_id}

+

DELETE /v2.1/{project_id}/os-security-group-rules/{security_group_rule_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

security_group_rule_id

+

Yes

+

Specifies the security group rule ID, which is specified in the URI.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

Example request
DELETE https://{endpoint}/v2/3d72597871904daeb6887f75f848b531/os-security-group-rules/012fa2c6-bf4a-4b0b-b893-70d0caee81c7
+DELETE https://{endpoint}/v2.1/3d72597871904daeb6887f75f848b531/os-security-group-rules/012fa2c6-bf4a-4b0b-b893-70d0caee81c7
+
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817705.html b/ecs/api-ref/en-us_topic_0065817705.html new file mode 100644 index 000000000..0b0f9f237 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817705.html @@ -0,0 +1,216 @@ + + +

Querying ECS Flavors

+

Function

This API is used to query available ECS flavors. After receiving the request, Nova uses nova-api to view the flavors from the database.

+
+

URI

GET /v2.1/{project_id}/flavors?minDisk={minDisk}&minRam={minRam}&sort_key={sort_key}&sort_dir={sort_dir}

+

GET /v2/{project_id}/flavors?minDisk={minDisk}&minRam={minRam}&sort_key={sort_key}&sort_dir={sort_dir}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Parameters in the following table can be used as URI parameters to filter query results. Usage: /v2/{project_id}/flavors?minDisk={minDisk}&minRam={minRam}

+

Table 2 describes the query parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

minDisk

+

No

+

Integer

+

Specifies the minimum disk specification in the unit of GB. Only the ECSs with the disk specification greater than or equal to the minimum specification can be queried.

+

minRam

+

No

+

Integer

+

Specifies the minimum RAM in the unit of MB. Only the ECSs with the RAM specification greater than or equal to the minimum specification can be queried.

+

sort_key

+

No

+

String

+

Indicates a sorting field, the default value of which is flavorid.

+

The value of this parameter can also be name, memory_mb, vcpus, root_gb, or flavorid.

+

sort_dir

+

No

+

String

+

Specifies the ascending (asc) or descending (desc) sorting. The default value is asc.

+
+
+

Request

None

+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

flavors

+

Array of objects

+

Specifies ECS flavors. For details, see Table 4.

+

flavors_links

+

Array of objects

+

Specifies data links for querying the next pages in pagination query. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 4 flavors field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the flavor ID.

+

links

+

Array of objects

+

Specifies the shortcut link of the ECS flavor.

+

For details, see Table 5.

+

name

+

String

+

Specifies the flavor name.

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Specifies the shortcut link.

+
+
+
+

Example Request

GET https://{endpoint}/v2/743b4c0428d94531b9f2add666642e6b/flavors
+GET https://{endpoint}/v2.1/743b4c0428d94531b9f2add666642e6b/flavors
+
+

Example Response

{
+    "flavors": [
+        {
+            "id": "c3.medium",
+            "links": [
+                {
+                    "href": "https://compute.region.xxx.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.medium",
+                    "rel": "self"
+                },
+                {
+                    "href": "https://compute.region.xxx.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.medium",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "c3.medium"
+        },
+        {
+            "id": "c3.xlarge",
+            "links": [
+                {
+                    "href": "https://compute.region.xxx.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.xlarge",
+                    "rel": "self"
+                },
+                {
+                    "href": "https://compute.region.x.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.xlarge",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "c3.xlarge"
+        }
+    ]
+}     
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817706.html b/ecs/api-ref/en-us_topic_0065817706.html new file mode 100644 index 000000000..35d10f79b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817706.html @@ -0,0 +1,78 @@ + + +

Querying the extra_specs Value for an ECS Flavor

+

Function

This API is used to query the extra_specs value for a specified ECS flavor.

+
+

URI

GET /v2.1/{project_id}/flavors/{flavor_id}/os-extra_specs

+

GET /v2/{project_id}/flavors/{flavor_id}/os-extra_specs

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

flavors_id

+

Yes

+

Specifies the flavor ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

extra_specs

+

Map<String,String>

+

Specifies the key-value pair of an ECS flavor.

+

For details about the returned fields, see the os_extra_specs field description in "Querying Details About Flavors and Extended Flavor Information".

+
+
+
+

Example Request

GET https://{endpoint}/v2/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2/os-extra_specs
+GET https://{endpoint}/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2/os-extra_specs
+
+

Example Response

{
+    "extra_specs": {
+        "ecs:performancetype": "computingv3",
+        "resource_type": "IOoptimizedC3_2"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817707.html b/ecs/api-ref/en-us_topic_0065817707.html new file mode 100644 index 000000000..f5f01ea01 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817707.html @@ -0,0 +1,172 @@ + + +

Detaching a Disk from an ECS

+

Function

This API is used to detach a disk from an ECS.

+
+

Constraints

The system disk, the device name of which is /dev/sda, and user disks can be detached from an ECS only when the ECS is stopped. There are no requirements on OTC Tools.

+

When an ECS is in the active state, pay attention to the following constraints:

+
  1. Only data disks, the device name of which is not /dev/sda, can be detached from an ECS.
  2. Make sure that OTC Tools have been installed and enabled on the ECS. Otherwise, the uninstallation will fail.
  3. For a Linux ECS, you need to log in to the ECS and run the umount command to disassociate the target disk from the file system. In addition, you need to ensure that no data is being written into or being read from the disk. Otherwise, the detachment will fail.
  4. For a Windows ECS, you need to ensure that no data is being written into or being read from the disk when a disk is to be detached from the running ECS. Otherwise, data will be lost.
  5. OSs supporting EVS disk detachment from a running ECS include two parts:
    • For the first part, see Formats and OSs Supported for External Image Files.
    • Table 1 lists the second part of supported OSs. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 OSs supporting EVS disk detachment from a running ECS

      OS

      +

      Version

      +

      CentOS

      +

      7.3 64bit

      +

      7.2 64bit

      +

      6.8 64bit

      +

      6.7 64bit

      +

      Debian

      +

      8.6.0 64bit

      +

      8.5.0 64bit

      +

      Fedora

      +

      25 64bit

      +

      24 64bit

      +

      SUSE

      +

      SUSE Linux Enterprise Server 12 SP2 64bit

      +

      SUSE Linux Enterprise Server 12 SP1 64bit

      +

      SUSE Linux Enterprise Server 11 SP4 64bit

      +

      SUSE Linux Enterprise Server 12 64bit

      +

      OpenSUSE

      +

      42.2 64bit

      +

      42.1 64bit

      +

      Oracle Linux Server release

      +

      7.3 64bit

      +

      7.2 64bit

      +

      6.8 64bit

      +

      6.7 64bit

      +

      Ubuntu Server

      +

      16.04 64bit

      +

      14.04 64bit

      +

      14.04.4 64bit

      +

      Windows (SCSI EVS disks cannot be detached from a running ECS.)

      +

      Windows Server 2008 R2 Enterprise 64bit

      +

      Windows Server 2012 R2 Standard 64bit

      +

      Windows Server 2016 R2 Standard 64bit

      +

      Red Hat Linux Enterprise

      +

      7.3 64bit

      +

      6.8 64bit

      +
      +
      +
    +
+
+

URI

DELETE /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

DELETE /v2/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+
Table 2 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 2 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

volume_id

+

Yes

+

Specifies the volume ID.

+
+
+
+
+

Usage: DELETE /v2/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/6fbe9263116a4b68818cf1edce16bc4f/servers/ab258e25-e351-47c7-b6e3-0749c5d9ed6a/os-volume_attachments/54667652-3029-4af8-9222-2d53066fd61c
+DELETE https://{endpoint}/v2.1/6fbe9263116a4b68818cf1edce16bc4f/servers/ab258e25-e351-47c7-b6e3-0749c5d9ed6a/os-volume_attachments/54667652-3029-4af8-9222-2d53066fd61c
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817708.html b/ecs/api-ref/en-us_topic_0065817708.html new file mode 100644 index 000000000..ae8b19341 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817708.html @@ -0,0 +1,253 @@ + + +

Creating a Disk (Discarded)

+

Function

This API is used to create a disk.

+

This API has been discarded. Use the EVS API "Creating EVS Disks (OpenStack Cinder API v2)".

+
+

URI

POST /v2/{project_id}/os-volumes

+

POST /v2.1/{project_id}/os-volumes

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

availability_zone

+

No

+

String

+

Specifies the AZ to which the volume to be created belongs.

+

If the specified AZ does not exist, creating the volume failed, and the volume is in error state.

+

The AZ to which the volume to be created belongs must be specified in the public cloud system.

+

display_description

+

No

+

String

+

Specifies the volume description.

+

snapshot_id

+

No

+

String

+

Specifies the snapshot ID.

+

If this parameter is specified, the volume is to be created from a snapshot.

+

size

+

Yes (If the volume is created from a snapshot, this parameter is optional.)

+

Integer

+

Specifies the volume size.

+

Unit: GB

+

display_name

+

No

+

String

+

Specifies the volume name.

+

volume_type

+

No

+

String

+

Specifies the volume type.

+
Currently, the value can be SSD, SAS, SATA, co-p1, or uh-l1.
  • SSD: specifies the ultra-I/O disk type.
  • SAS: specifies the high I/O disk type.
  • SATA: specifies the common I/O disk type.
  • co-p1: specifies the high I/O (performance-optimized I) disk type.
  • uh-l1: specifies the ultra-high I/O (latency-optimized) disk type.
    NOTE:

    EVS disks of the co-p1 and uh-l1 types are used exclusively for high performance computing (HPC) and SAP HANA ECSs.

    +
    +
+
+

metadata

+

No

+

Object

+

Specifies the volume metadata.

+
+
+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the disk ID in UUID format.

+

displayName

+

String

+

Specifies the volume name.

+

status

+

String

+

Specifies the volume status.

+

attachments

+

Array of objects

+

Specifies the volume attachment information.

+

availabilityZone

+

String

+

Specifies the AZ to which the volume belongs.

+

createdAt

+

String

+

Specifies the time when the volume was created.

+

displayDescription

+

String

+

Specifies the volume description.

+

volumeType

+

String

+

Specifies the volume type.

+

snapshotId

+

String

+

Specifies the snapshot ID.

+

metadata

+

Object

+

Specifies the volume metadata.

+

size

+

Integer

+

Specifies the size of the volume.

+
+
+
+

Example Request

POST https://{endpoint}/v2/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes
+POST https://{endpoint}/v2.1/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes
+
{
+    "volume": {
+        "availability_zone": "az1-dc1",
+        "display_description": "test1",
+        "snapshot_id": null,
+        "size": 1,
+        "display_name": "test",
+        "volume_type": "SSD",
+        "metadata": {
+            "testkey": "testvalue"
+        }
+    }
+}
+
+

Example Response

{
+  "volume": {
+    "displayDescription": "test1",
+    "volumeType": "SATA",
+    "createdAt": "2018-05-18T01:17:03.871808",
+    "metadata": {
+      "testkey": "testvalue",
+      "resourceSpecCode": "SATA"
+    },
+    "attachments": [
+      {}
+    ],
+    "snapshotId": null,
+    "size": 1,
+    "displayName": "test",
+    "id": "b4fb891c-c665-4478-92b0-8a7fa65a57cd",
+    "availabilityZone": "az1.dc1",
+    "status": "creating"
+  }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817709.html b/ecs/api-ref/en-us_topic_0065817709.html new file mode 100644 index 000000000..73a3b1f77 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817709.html @@ -0,0 +1,192 @@ + + +

Querying Brief Information About Disks (Discarded)

+

Function

This API is used to query brief information about disks.

+

This API has been discarded. Use the EVS API "Querying EVS Disks (OpenStack Cinder API v2)".

+
+

URI

GET /v2/{project_id}/os-volumes

+

GET /v2.1/{project_id}/os-volumes

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

N/A

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the disk ID in UUID format.

+

displayName

+

String

+

Specifies the disk name.

+

status

+

String

+

Specifies the disk status.

+

attachments

+

Array of objects

+

Specifies the attachment information about a disk.

+

availabilityZone

+

String

+

Specifies the AZ to which the disk belongs.

+

createdAt

+

String

+

Specifies the time when the disk was created.

+

displayDescription

+

String

+

Specifies the disk description.

+

volumeType

+

String

+

Specifies the disk type.

+

snapshotId

+

String

+

Specifies the snapshot ID.

+

metadata

+

Object

+

Specifies the disk metadata.

+

size

+

Integer

+

Specifies the disk size.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 attachments field description

Parameter

+

Type

+

Description

+

device

+

String

+

Specifies the directory to which the disk is mounted.

+

id

+

String

+

Specifies the ID of the attached resource.

+

serverId

+

String

+

Specifies the ECS ID.

+

volumeId

+

String

+

Specifies the ID of the attached disk.

+
+
+

Example Request

GET https://{endpoint}/v2/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes
+GET https://{endpoint}/v2.1/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes
+
+

Example Response

{
+    "volumes": [
+        {
+        "status": " available",
+        "attachments": [{}],
+        "availabilityZone": "nova",
+        "createdAt": "2016-05-20T07:57:56.299000",
+        "displayDescription": null,
+        "volumeType": null,
+        "dispalyName": "test",
+        "snapshotId": null,
+        "metadata": {},
+        "id": "70b14513-faad-4646-b7ab-a065cef282b4",
+        "size": 1    
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817710.html b/ecs/api-ref/en-us_topic_0065817710.html new file mode 100644 index 000000000..690d58dcb --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817710.html @@ -0,0 +1,192 @@ + + +

Querying Detailed Information About Disks (Discarded)

+

Function

This API is used to query detailed information about disks.

+

This API has been discarded. Use the EVS API "Querying Details About All Disks (OpenStack Cinder API v2)".

+
+

URI

GET /v2/{project_id}/os-volumes/detail

+

GET /v2.1/{project_id}/os-volumes/detail

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

N/A

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the disk ID in UUID format.

+

displayName

+

String

+

Specifies the disk name.

+

status

+

String

+

Specifies the disk status.

+

attachments

+

Array of objects

+

Specifies the attachment information about a disk.

+

availabilityZone

+

String

+

Specifies the AZ to which the disk belongs.

+

createdAt

+

String

+

Specifies the time when the disk was created.

+

displayDescription

+

String

+

Specifies the disk description.

+

volumeType

+

String

+

Specifies the disk type.

+

snapshotId

+

String

+

Specifies the snapshot ID.

+

metadata

+

Object

+

Specifies the disk metadata.

+

size

+

Integer

+

Specifies the disk size.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 attachments field description

Parameter

+

Type

+

Description

+

device

+

String

+

Specifies the directory to which the disk is mounted.

+

id

+

String

+

Specifies the ID of the attached resource.

+

serverId

+

String

+

Specifies the ECS ID.

+

volumeId

+

String

+

Specifies the ID of the attached disk.

+
+
+

Example Request

GET https://{endpoint}/v2/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes/detail
+GET https://{endpoint}/v2.1/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes/detail
+
+

Example Response

{
+    "volumes": [
+        {
+        "status": "available",
+        "attachments": [{}],
+        "availabilityZone": "nova",
+        "createdAt": "2016-05-20T07:57:56.299000",
+        "displayDescription": null,
+        "volumeType": null,
+        "dispalyName": "test",
+        "snapshotId": null,
+        "metadata": {},
+        "id": "70b14513-faad-4646-b7ab-a065cef282b4",
+        "size": 1    
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817711.html b/ecs/api-ref/en-us_topic_0065817711.html new file mode 100644 index 000000000..ad93e125f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817711.html @@ -0,0 +1,198 @@ + + +

Querying Information About a Disk (Discarded)

+

Function

This API is used to query information about a specified disk.

+

This API has been discarded. Use the EVS API "Querying Details About a Disk (OpenStack Cinder API v2)".

+
+

URI

GET /v2/{project_id}/os-volumes/{volume_id}

+

GET /v2.1/{project_id}/os-volumes/{volume_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

volume_id

+

Yes

+

Specifies the disk ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the disk ID in UUID format.

+

displayName

+

String

+

Specifies the disk name.

+

status

+

String

+

Specifies the disk status.

+

attachments

+

Array of objects

+

Specifies the attachment information about a disk.

+

availabilityZone

+

String

+

Specifies the AZ to which the disk belongs.

+

createdAt

+

String

+

Specifies the time when the disk was created.

+

displayDescription

+

String

+

Specifies the disk description.

+

volumeType

+

String

+

Specifies the disk type.

+

snapshotId

+

String

+

Specifies the snapshot ID.

+

metadata

+

Object

+

Specifies the disk metadata.

+

size

+

Integer

+

Specifies the disk size.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 attachments field description

Parameter

+

Type

+

Description

+

device

+

String

+

Specifies the directory to which the disk is mounted.

+

id

+

String

+

Specifies the ID of the attached resource.

+

serverId

+

String

+

Specifies the ECS ID.

+

volumeId

+

String

+

Specifies the ID of the attached disk.

+
+
+

Example Request

GET https://{endpoint}/v2/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes/70b14513-faad-4646-b7ab-a065cef282b4
+GET https://{endpoint}/v2.1/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes/70b14513-faad-4646-b7ab-a065cef282b4
+
+

Example Response

{
+    "volume": 
+    {
+        "status": "available",
+        "attachments": [{}],
+        "availabilityZone": "nova",
+        "createdAt": "2016-05-20T07:57:56.299000",
+        "displayDescription": null,
+        "volumeType": null,
+        "dispalyName": "test",
+        "snapshotId": null,
+        "metadata": {},
+        "id": "70b14513-faad-4646-b7ab-a065cef282b4",
+        "size": 1    
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817712.html b/ecs/api-ref/en-us_topic_0065817712.html new file mode 100644 index 000000000..b1a2c5ffe --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817712.html @@ -0,0 +1,56 @@ + + +

Deleting a Disk (Discarded)

+

Function

This API is used to delete a specified disk.

+

This API has been discarded. Use the EVS API "Deleting an EVS Disk (OpenStack Cinder API v2)".

+
+

Constraints

+
+

URI

DELETE /v2/{project_id}/os-volumes/{volume_id}

+

DELETE /v2.1/{project_id}/os-volumes/{volume_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

volume_id

+

Yes

+

Specifies the volume ID.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes/0cf90bab-c513-46df-8559-45ba6de80e3f
+DELETE https://{endpoint}/v2.1/b84c367e4d1047fc9b54f28b400ddbc2/os-volumes/0cf90bab-c513-46df-8559-45ba6de80e3f
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817713.html b/ecs/api-ref/en-us_topic_0065817713.html new file mode 100644 index 000000000..045a1fa49 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817713.html @@ -0,0 +1,82 @@ + + +

Querying ECS Metadata

+

Function

This API is used to query ECS metadata.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/metadata

+

GET /v2/{project_id}/servers/{server_id}/metadata

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+

Pagination query is not supported.

+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

metadata

+

Yes

+

Object

+

Specifies the user-defined metadata key-value pair.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/servers/998af54b-5762-4041-abc1-f98a2c27b3a2/metadata
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers/998af54b-5762-4041-abc1-f98a2c27b3a2/metadata
+
+

Example Response

{
+    "metadata": {
+        "wj": "True"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817714.html b/ecs/api-ref/en-us_topic_0065817714.html new file mode 100644 index 000000000..245eda65c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817714.html @@ -0,0 +1,83 @@ + + +

Obtaining ECS Metadata with a Specified Key

+

Function

This API is used to obtain ECS metadata with a specified key.

+
+

URI

GET /v2.1/{project_id}/servers/{server_id}/metadata/{key}

+

GET /v2/{project_id}/servers/{server_id}/metadata/{key}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

key

+

Yes

+

Specifies the ECS metadata key.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

meta

+

Object

+

Specifies the user-defined metadata key-value pair.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/servers/998af54b-5762-4041-abc1-f98a2c27b3a2/metadata/key1
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers/998af54b-5762-4041-abc1-f98a2c27b3a2/metadata/key1
+
+

Example Response

{
+	"meta": {
+		"key1": "value1"
+	}
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817716.html b/ecs/api-ref/en-us_topic_0065817716.html new file mode 100644 index 000000000..667c957a7 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817716.html @@ -0,0 +1,207 @@ + + +

Querying Default Quotas

+

Function

This API is used to query default quotas.

+
+

URI

GET /v2.1/{project_id}/os-quota-sets/{project_id}/defaults

+

GET /v2/{project_id}/os-quota-sets/{project_id}/defaults

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

quota_set

+

Object

+

Specifies the quota_set object. For details, see Table 3.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 quota_set parameter description

Parameter

+

Type

+

Description

+

cores

+

Integer

+

Specifies the quantity quota of vCPUs.

+

fixed_ips

+

Integer

+

Specifies the quantity quota of fixed IP addresses. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

floating_ips

+

Integer

+

Specifies the quantity quota of floating IP addresses. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

id

+

String

+

Specifies the project UUID.

+

injected_file_content_bytes

+

Integer

+

Specifies the size quota (bytes) of the files to be injected.

+

This parameter is not supported in microversion 2.57 and later.

+

injected_file_path_bytes

+

Integer

+

Specifies the size quota (bytes) of the path for the files to be injected.

+

This parameter is not supported in microversion 2.57 and later.

+

injected_files

+

Integer

+

Specifies the quantity quota of the files to be injected.

+

This parameter is not supported in microversion 2.57 and later.

+

instances

+

Integer

+

Specifies the quantity quota of ECSs.

+

key_pairs

+

Integer

+

Specifies the quota of key pairs. This parameter is not supported.

+

metadata_items

+

Integer

+

Specifies the metadata quantity quota.

+

ram

+

Integer

+

Specifies the memory quota (MB).

+

security_group_rules

+

Integer

+

Specifies the quota of security group rules. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

security_groups

+

Integer

+

Specifies the quota of security groups. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

server_groups

+

Integer

+

Specifies the quantity quota of ECS groups.

+

server_group_members

+

Integer

+

Specifies the size quota of ECS groups.

+
+
+

Example Request

GET https://{endpoint}/v2/d9ebe43510414ef590a4aa158605329e/os-quota-sets/d9ebe43510414ef590a4aa158605329e/defaults
+GET https://{endpoint}/v2.1/d9ebe43510414ef590a4aa158605329e/os-quota-sets/d9ebe43510414ef590a4aa158605329e/defaults
+
+

Example Response

{
+    "quota_set": {
+	"injected_file_content_bytes": 10240,
+        "metadata_items": 128,
+        "server_group_members": 10,
+        "server_groups": 10,
+        "ram": 51200,
+        "floating_ips": 10,
+        "key_pairs": 100,
+        "injected_file_path_bytes": 255,
+        "instances": 10,
+        "security_group_rules": 20,
+        "injected_files": 5,
+        "cores": 20,
+        "fixed_ips": -1,
+        "id": "474eff20eee84b2e87b5717cc7f34dd8",
+        "security_groups": 10
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817717.html b/ecs/api-ref/en-us_topic_0065817717.html new file mode 100644 index 000000000..5903bc85c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817717.html @@ -0,0 +1,282 @@ + + +

Querying Tenant Quota Limits

+

Function

This API is used to query tenant quota limits.

+

Tenants are only allowed to query their own quota limits.

+
+

URI

GET /v2.1/{project_id}/limits?project_id={project_id}

+

GET /v2/{project_id}/limits?project_id={project_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

limits

+

Object

+

Specifies tenant limits. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 limits parameter information

Parameter

+

Type

+

Description

+

rate

+

List

+

The value is empty.

+

absolute

+

Object

+

Specifies tenant quota limits. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 absolute parameter information

Parameter

+

Type

+

Description

+

maxServerMeta

+

String

+

Specifies the limit of ECS metadata quantity.

+

If the value is -1, there is no quantity limit.

+

maxPersonality

+

String

+

Specifies the quantity limit of injected files.

+

If the value is -1, there is no quantity limit.

+

This parameter is not supported in microversion 2.56 and later.

+

totalServerGroupsUsed

+

String

+

Specifies the number of used ECS groups.

+

maxImageMeta

+

String

+

Specifies the limit of the image metadata quantity.

+

If the value is -1, there is no quantity limit.

+

This parameter is not supported in microversion 2.38 and later.

+

maxPersonalitySize

+

String

+

Specifies the size limit of injected files.

+

If the value is -1, there is no size limit.

+

This parameter is not supported in microversion 2.56 and later.

+

maxTotalRAMSize

+

String

+

Specifies the total memory size limit.

+

If the value is -1, there is no size limit.

+

maxTotalKeypairs

+

String

+

Specifies the limit of key pair quantity.

+

If the value is -1, there is no quantity limit.

+

maxSecurityGroupRules

+

String

+

Specifies the maximum number of security group rules.

+

If the value is -1, there is no quantity limit.

+

This parameter is not supported in microversion 2.35 and later.

+

maxServerGroups

+

String

+

Specifies the maximum number of ECS groups.

+

If the value is -1, there is no quantity limit.

+

totalCoresUsed

+

String

+

Specifies the number of used cores.

+

totalRAMUsed

+

String

+

Specifies the size of used memory.

+

maxSecurityGroups

+

String

+

Specifies the maximum number of security groups.

+

If the value is -1, there is no quantity limit.

+

This parameter is not supported in microversion 2.35 and later.

+

totalFloatingIpsUsed

+

String

+

Specifies the number of used floating IP addresses.

+

This parameter is not supported in microversion 2.35 and later.

+

totalInstancesUsed

+

String

+

Specifies the number of used ECSs.

+

totalSecurityGroupsUsed

+

String

+

Specifies the number of used security groups.

+

maxTotalFloatingIps

+

String

+

Specifies the maximum number of floating IP addresses.

+

If the value is -1, there is no quantity limit.

+

This parameter is not supported in microversion 2.35 and later.

+

maxTotalInstances

+

String

+

Specifies the maximum number of ECSs.

+

If the value is -1, there is no quantity limit.

+

maxTotalCores

+

String

+

Specifies the maximum number of cores.

+

If the value is -1, there is no quantity limit.

+

maxServerGroupMembers

+

String

+

Specifies the maximum number of members in an ECS group.

+

If the value is -1, there is no quantity limit.

+
+
+
+

Example Request

GET https://{endpoint}/v2/d9ebe43510414ef590a4aa158605329e/limits
+GET https://{endpoint}/v2.1/d9ebe43510414ef590a4aa158605329e/limits
+
+

Example Response

{
+  "limits": {
+    "rate": [],
+    "absolute": {
+      "maxServerMeta": 128,
+      "maxPersonality": 5,
+      "totalServerGroupsUsed": 0,
+      "maxImageMeta": 128,
+      "maxPersonalitySize": 10240,
+      "maxTotalRAMSize": 25165824,
+      "maxTotalKeypairs": -1,
+      "maxSecurityGroupRules": 20,
+      "maxServerGroups": -1,
+      "totalCoresUsed": 0,
+      "totalRAMUsed": 0,
+      "maxSecurityGroups": 10,
+      "totalFloatingIpsUsed": 0,
+      "totalInstancesUsed": 0,
+      "totalSecurityGroupsUsed": 0,
+      "maxTotalFloatingIps": 10,
+      "maxTotalInstances": 2048,
+      "maxTotalCores": 20480,
+      "maxServerGroupMembers": -1
+    }
+  }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817718.html b/ecs/api-ref/en-us_topic_0065817718.html new file mode 100644 index 000000000..72f1a9707 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817718.html @@ -0,0 +1,115 @@ + + +

Binding a Floating IP Address (Discarded)

+

Function

This API is used to bind a floating IP address for an ECS.

+

This API has been discarded. Since microversion 2.44, the system will return error 404 when you call this API. You are advised to use the VPC API "Updating a Floating IP Address".

+
+

URI

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameter

Parameter

+

Mandatory

+

Type

+

Description

+

addFloatingIp

+

Yes

+

Object

+

Specifies the floating IP address to be bound to an ECS.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 addFloatingIp parameter information

Parameter

+

Mandatory

+

Type

+

Description

+

address

+

Yes

+

String

+

Specifies the floating IP address.

+

fixed_address

+

No

+

String

+

Specifies the fixed IP address with which the floating IP address associates.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/servers/47e9be4e-a7b9-471f-92d9-ffc83814e07a/action
+POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers/47e9be4e-a7b9-471f-92d9-ffc83814e07a/action
+
{
+   "addFloatingIp" : {
+       "address" : "10.144.2.1",
+       "fixed_address" : "192.168.1.3"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817719.html b/ecs/api-ref/en-us_topic_0065817719.html new file mode 100644 index 000000000..4a75710ad --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817719.html @@ -0,0 +1,105 @@ + + +

Unbinding a Floating IP Address (Discarded)

+

Function

This API is used to unbind a floating IP address from an ECS.

+

This API has been discarded. Since microversion 2.44, the system will return error 404 when you call this API. You are advised to use the VPC API "Updating a Floating IP Address".

+
+

URI

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameter

Parameter

+

Mandatory

+

Type

+

Description

+

removeFloatingIp

+

Yes

+

Object

+

Unbinds a floating IP address from an ECS.

+
+
+ +
+ + + + + + + + + + + +
Table 3 removeFloatingIp parameter information

Parameter

+

Mandatory

+

Type

+

Description

+

address

+

Yes

+

String

+

Specifies the floating IP address.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/servers/47e9be4e-a7b9-471f-92d9-ffc83814e07a/action
+POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers/47e9be4e-a7b9-471f-92d9-ffc83814e07a/action
+
{
+   "removeFloatingIp" : {
+        "address" : "10.144.2.1"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817720.html b/ecs/api-ref/en-us_topic_0065817720.html new file mode 100644 index 000000000..beae9e35c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817720.html @@ -0,0 +1,209 @@ + + +

Creating an ECS Group

+

Function

This API is used to create an ECS group.

+
+

Constraints

Only anti-affinity groups are supported.

+
+

URI

POST /v2.1/{project_id}/os-server-groups

+

POST /v2/{project_id}/os-server-groups

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

server_group

+

Yes

+

Object

+

Specifies the ECS group information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 server_group field description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Specifies the ECS group name. The value contains 1 to 255 characters.

+

policies

+

Yes

+

Array of strings

+

Specifies the policies associated with the ECS group. Options:

+
  • anti-affinity: ECSs in this group must be deployed on different hosts.
  • affinity: ECSs in this group must be deployed on the same host.
  • soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.
  • soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.
+
NOTE:

Only the anti-affinity policy is supported. The other three policies are retained to be compatible with native APIs. However, you are not advised to use the other three policies.

+

You are suggested to use the policy described in Creating an ECS Group.

+
+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

server_group

+

Object

+

Specifies the ECS group information. For details, see Table 5.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 server_group field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS group UUID.

+

name

+

String

+

Specifies the ECS group name.

+

policies

+

Array of strings

+

Specifies the policies associated with the ECS group. Options:

+

anti-affinity: ECSs in this group must be deployed on different hosts.

+

affinity: ECSs in this group must be deployed on the same host.

+

soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.

+

soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.

+

members

+

Array of strings

+

Specifies the ECSs contained in an ECS group.

+

metadata

+

Object

+

Specifies the ECS group metadata.

+

project_id

+

String

+

Specifies the tenant ID in UUID format for the ECS group.

+

This parameter is supported in microversion 2.13 and later.

+

user_id

+

String

+

Specifies the user ID in UUID format for the ECS group.

+

This parameter is supported in microversion 2.13 and later.

+
+
+

Example Request

POST https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/os-server-groups
+POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/os-server-groups
+
{
+    "server_group": {
+        "name": "test",
+        "policies": ["anti-affinity"]
+    }
+}
+
+

Example Response

{
+    "server_group": {
+        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+        "name": "test",
+        "policies": [
+            "anti-affinity"
+        ],
+        "members": [],
+        "metadata": {}
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817721.html b/ecs/api-ref/en-us_topic_0065817721.html new file mode 100644 index 000000000..858246c34 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817721.html @@ -0,0 +1,144 @@ + + +

Querying ECS Groups

+

Function

This API is used to query ECS groups.

+
+

URI

GET /v2.1/{project_id}/os-server-groups

+

GET /v2/{project_id}/os-server-groups

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Parameters in the following table can be used as URI parameters to filter query results.

+

Usage: /v2/{project_id}/os-server-groups?

+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

server_groups

+

Array of objects

+

Specifies the ECS group information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 server_groups parameter information

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS group UUID.

+

name

+

String

+

Specifies the ECS group name.

+

members

+

Array of strings

+

Specifies the ECSs in an ECS group.

+

metadata

+

Object

+

Specifies the ECS group metadata.

+

project_id

+

String

+

Specifies the tenant ID in UUID format for the ECS group.

+

This parameter is supported in microversion 2.13 and later.

+

policies

+

Array of strings

+
Specifies the policies associated with the ECS group. Options:
  • anti-affinity: ECSs in this group must be deployed on different hosts.
  • affinity: ECSs in this group must be deployed on the same host.
  • soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.
  • soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.
+
+
NOTE:

Only anti-affinity policies are supported. You are not advised to use other policies. If other policies are used, creating the ECS group will fail.

+
+

user_id

+

String

+

Specifies the user ID in UUID format for the ECS group.

+

This parameter is supported in microversion 2.13 and later.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/os-server-groups
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/os-server-groups
+
+

Example Response

{
+    "server_groups": [
+        {
+            "id": "616fb98f-46ca-475e-917e-2563e5a8cd19",
+            "name": "test",
+            "policies": ["anti-affinity"],
+            "members": [],
+            "metadata": {},
+            "project_id": "9c53a566cb3443ab910cf0daebca90c4"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817722.html b/ecs/api-ref/en-us_topic_0065817722.html new file mode 100644 index 000000000..b414e8a30 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817722.html @@ -0,0 +1,147 @@ + + +

Querying Details About an ECS Group

+

Function

This API is used to query details bout an ECS group.

+
+

URI

GET /v2.1/{project_id}/os-server-groups/{server_group_id}

+

GET /v2/{project_id}/os-server-groups/{server_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_group_id

+

Yes

+

Specifies the ECS group UUID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

server_group

+

Object

+

Specifies the ECS group information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 server_group parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS group UUID.

+

name

+

String

+

Specifies the ECS group name.

+

policies

+

Array of strings

+
Specifies the policies associated with the ECS group.
  • anti-affinity: ECSs in this group must be deployed on different hosts.
  • affinity: ECSs in this group must be deployed on the same host.
  • soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.
  • soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.
+
+
NOTE:

Only anti-affinity policies are supported. You are not advised to use other policies. If other policies are used, creating the ECS group will fail.

+
+

members

+

Array of strings

+

Specifies the ECSs contained in the ECS group.

+

metadata

+

Object

+

Specifies the ECS group metadata.

+

project_id

+

String

+

Specifies the tenant ID in UUID format for the ECS group.

+

This parameter is supported in microversion 2.13 and later.

+

user_id

+

String

+

Specifies the user ID in UUID format for the ECS group.

+

This parameter is supported in microversion 2.13 and later.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/os-server-groups/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/os-server-groups/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9
+
+

Example Response

{
+    "server_group": {
+        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+        "name": "test",
+        "policies": ["anti-affinity"],
+        "members": [],
+        "metadata": {},
+        "project_id": "9c53a566cb3443ab910cf0daebca90c4"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817723.html b/ecs/api-ref/en-us_topic_0065817723.html new file mode 100644 index 000000000..0cc981928 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817723.html @@ -0,0 +1,51 @@ + + +

Deleting an ECS Group

+

Function

This API is used to delete an ECS group.

+
+

URI

DELETE /v2.1/{project_id}/os-server-groups/{server_group_id}

+

DELETE /v2/{project_id}/os-server-groups/{server_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_group_id

+

Yes

+

Specifies the ECS group UUID.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/os-server-groups/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9
+DELETE https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/os-server-groups/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065817728.html b/ecs/api-ref/en-us_topic_0065817728.html new file mode 100644 index 000000000..5a469196e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065817728.html @@ -0,0 +1,130 @@ + + +

Querying AZs

+

Function

This API is used to query AZs.

+
+

URI

GET /v2.1/{project_id}/os-availability-zone

+

GET /v2/{project_id}/os-availability-zone

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

availabilityZoneInfo

+

Array of objects

+

Specifies the AZ information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 3 AvailabilityZoneInfo parameter information

Parameter

+

Type

+

Description

+

zoneState

+

Object

+

Specifies the AZ status. For details, see Table 4.

+

hosts

+

List

+

The parameter is set to null.

+

zoneName

+

String

+

Specifies the AZ name.

+
+
+ +
+ + + + + + + + + +
Table 4 zoneState parameter information

Parameter

+

Type

+

Description

+

available

+

Boolean

+

Specifies the AZ status.

+
+
+
+

Example Request

GET https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/os-availability-zone
+GET https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/os-availability-zone
+
+

Example Response

{
+	"availabilityZoneInfo": [{
+		"zoneState": {
+			"available": true
+		},
+		"hosts": null,
+		"zoneName": "az1"   //Replace the value with the actual AZ name.
+	},
+	{
+		"zoneState": {
+			"available": true
+		},
+		"hosts": null,
+		"zoneName": "az2"   //Replace the value with the actual AZ name.
+	}]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820816.html b/ecs/api-ref/en-us_topic_0065820816.html new file mode 100644 index 000000000..c61d7b26d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820816.html @@ -0,0 +1,175 @@ + + +

Assigning a Floating IP Address (Discarded)

+

Function

This API is used to assign a floating IP address.

+

This API has been discarded. Use the API described in "Assigning a Floating IP Address".

+
+

Constraints

You need to obtain a network resource pool that provides floating IP addresses. To do so, run GET /v2.0/networks?router:external=True or neutron net-external-list.

+
+

URI

POST /v2/{project_id}/os-floating-ips

+

POST /v2.1/{project_id}/os-floating-ips

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Type

+

Mandatory

+

Description

+

tenant_id

+

String

+

Yes

+

Specifies the tenant ID specified in the URI.

+

The value is in UUID format.

+

pool

+

String

+

No

+

Specifies the network resource pool that provides floating IP addresses. If it is not specified, the default resource pool is used.

+
+
+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

floating_ip

+

Yes

+

Object

+

Specifies the floating IP address. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 floating_ip objects

Parameter

+

Mandatory

+

Type

+

Description

+

fixed_ip

+

Yes

+

String

+

Specifies a private IP address.

+

id

+

Yes

+

String

+

Specifies the floating IP address ID in UUID format.

+

instance_id

+

Yes

+

String

+

Specifies the ID of a bound ECS in UUID format.

+

ip

+

Yes

+

String

+

Specifies the floating IP address.

+

pool

+

Yes

+

String

+

Specifies the name of a network resource pool that provides floating IP addresses.

+
+
+
+

Example Request

POST https://{endpoint}/v2/e73621affb8f44e1bc01898747ca09d4/os-floating-ips
+POST https://{endpoint}/v2.1/e73621affb8f44e1bc01898747ca09d4/os-floating-ips
+
{
+    "pool": "external"
+}
+
+

Example Response

{
+  "floating_ip": {
+    "id": "7aa2aa63-3097-4cfe-a2e4-596c301d3b1b",
+    "pool": "external",
+    "ip": "10.154.53.184",
+    "fixed_ip": null,
+    "instance_id": null
+  }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820817.html b/ecs/api-ref/en-us_topic_0065820817.html new file mode 100644 index 000000000..84dc52247 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820817.html @@ -0,0 +1,169 @@ + + +

Querying Floating IP Addresses (Discarded)

+

Function

This API is used to query floating IP addresses.

+

This API has been discarded. Use the API described in "Querying Floating IP Addresses".

+
+

URI

GET /v2/{project_id}/os-floating-ips

+

GET /v2.1/{project_id}/os-floating-ips

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

floating_ips

+

Yes

+

Array of objects

+

Specifies the floating IP addresses.

+
+
+ +
+ + + + + + + + + + + +
Table 3 floating_ip objects

Parameter

+

Mandatory

+

Type

+

Description

+

floating_ip

+

Yes

+

Object

+

Specifies the floating IP address.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 floating_ip attributes

Parameter

+

Mandatory

+

Type

+

Description

+

fixed_ip

+

Yes

+

String

+

Specifies a private IP address.

+

id

+

Yes

+

String

+

Specifies the floating IP address ID in UUID format.

+

instance_id

+

Yes

+

String

+

Specifies the ID of a bound ECS in UUID format.

+

ip

+

Yes

+

String

+

Specifies the floating IP address.

+

pool

+

Yes

+

String

+

Specifies the name of a network resource pool that provides floating IP addresses.

+
+
+
+

Example Request

GET https://{endpoint}/v2/e73621affb8f44e1bc01898747ca09d4/os-floating-ips
+GET https://{endpoint}/v2.1/e73621affb8f44e1bc01898747ca09d4/os-floating-ips
+
+

Example Response

{
+  "floating_ips": [
+    {
+      "id": "05f71f43-f3c9-47ef-ac8d-9f02aef66418",
+      "pool": "external",
+      "ip": "10.154.51.235",
+      "fixed_ip": "192.168.1.2",
+      "instance_id": "8b380f68-5057-4aa2-a33a-170b37218fa8"
+    },
+    {
+      "id": "a25236cf-dd76-4adc-916a-f0b4a24048d3",
+      "pool": "external",
+      "ip": "10.154.51.237",
+      "fixed_ip": null,
+      "instance_id": null
+    }
+  ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820818.html b/ecs/api-ref/en-us_topic_0065820818.html new file mode 100644 index 000000000..4c9d940fe --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820818.html @@ -0,0 +1,144 @@ + + +

Querying Details About a Floating IP Address (Discarded)

+

Function

This API is used to query the details about a floating IP address based on the ID of the IP address.

+

This API has been discarded. Use the API described in "Querying a Floating IP Address".

+
+

URI

GET /v2/{project_id}/os-floating-ips/{floating_ip_id}

+

GET /v2.1/{project_id}/os-floating-ips/{floating_ip_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

floating_ip_id

+

Yes

+

Specifies the ID of the floating IP address.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

floating_ip

+

Yes

+

Object

+

Specifies the floating IP address. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 floating_ip objects

Parameter

+

Mandatory

+

Type

+

Description

+

fixed_ip

+

Yes

+

String

+

Specifies a private IP address.

+

id

+

Yes

+

String

+

Specifies the floating IP address ID in UUID format.

+

instance_id

+

Yes

+

String

+

Specifies the ID of a bound ECS in UUID format.

+

ip

+

Yes

+

String

+

Specifies the floating IP address.

+

pool

+

Yes

+

String

+

Specifies the name of a network resource pool that provides floating IP addresses.

+
+
+
+

Example Request

GET https://{endpoint}/v2/e73621affb8f44e1bc01898747ca09d4/os-floating-ips/05f71f43-f3c9-47ef-ac8d-9f02aef66418
+GET https://{endpoint}/v2.1/e73621affb8f44e1bc01898747ca09d4/os-floating-ips/05f71f43-f3c9-47ef-ac8d-9f02aef66418
+
+

Example Response

{
+  "floating_ip":{
+      "id": "05f71f43-f3c9-47ef-ac8d-9f02aef66418",
+      "pool": "external",
+      "ip": "10.154.51.235",
+      "fixed_ip": "192.168.1.2",
+      "instance_id": "8b380f68-5057-4aa2-a33a-170b37218fa8"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820819.html b/ecs/api-ref/en-us_topic_0065820819.html new file mode 100644 index 000000000..b15e91937 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820819.html @@ -0,0 +1,54 @@ + + +

Releasing a Floating IP Address (Discarded)

+

Function

This API is used to release a floating IP address.

+

This API has been discarded. Use the API described in "Deleting a Floating IP Address".

+
+

URI

DELETE /v2/{project_id}/os-floating-ips/{floating_ip_id}

+

DELETE /v2.1/{project_id}/os-floating-ips/{floating_ip_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

floating_ip_id

+

Yes

+

Specifies the ID of the floating IP address.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2/e73621affb8f44e1bc01898747ca09d4/os-floating-ips/05f71f43-f3c9-47ef-ac8d-9f02aef66418
+DELETE https://{endpoint}/v2.1/e73621affb8f44e1bc01898747ca09d4/os-floating-ips/05f71f43-f3c9-47ef-ac8d-9f02aef66418
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820820.html b/ecs/api-ref/en-us_topic_0065820820.html new file mode 100644 index 000000000..8f095f493 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820820.html @@ -0,0 +1,92 @@ + + +

Querying Floating IP Address Pools (Discarded)

+

Function

This API is used to query floating IP address pools.

+

There is only one network resource pool that can be queried through this API by tenants in Open Telekom Cloud live network environment.

+

This API has been discarded. Use the API described in "Querying Networks".

+
+

Constraints

The API parameter is as follows: router:external=True

+
GET /networks?router:external=True //Name in the result is returned.
+
+

URI

GET /v2/{project_id}/os-floating-ip-pools

+

GET /v2.1/{project_id}/os-floating-ip-pools

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

floating_ip_pools

+

Yes

+

Array of objects

+

Specifies the floating IP address pool.

+

name

+

Yes

+

String

+

Specifies the name of the floating IP address pool.

+
+
+
+

Example Request

GET https://{endpoint}/v2/e73621affb8f44e1bc01898747ca09d4/os-floating-ip-pools
+GET https://{endpoint}/v2.1/e73621affb8f44e1bc01898747ca09d4/os-floating-ip-pools
+
+

Example Response

{
+    "floating_ip_pools": [
+        {
+            "name": "pool1"
+        },
+        {
+            "name": "pool2"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820821.html b/ecs/api-ref/en-us_topic_0065820821.html new file mode 100644 index 000000000..0398f8455 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820821.html @@ -0,0 +1,15 @@ + + +

Common Parameters

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820822.html b/ecs/api-ref/en-us_topic_0065820822.html new file mode 100644 index 000000000..7db165763 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820822.html @@ -0,0 +1,76 @@ + + +

Querying Tags of an ECS

+

This API is used to query all tags of an ECS.

+

You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.

+

URI

GET /v2.1/{project_id}/servers/{server_id}/tags

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

tags

+

Array of strings

+

Specifies ECS tags.

+

Tag functions have been upgraded on the public cloud. After the upgrade, the tag values returned by the system comply with the following rules:

+
  • The key and value of a tag are connected using an equal sign (=), for example, key=value.
  • If the value is empty, only the key is returned.
+

For more details about upgraded tag functions, see Tag Types.

+
+
+
+

Example Request

GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/tags
+
+

Example Response

Example response
{ 
+    "tags": ["baz=xyy", "foo", "qux"]
+}
+
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820823.html b/ecs/api-ref/en-us_topic_0065820823.html new file mode 100644 index 000000000..4dc1412e6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820823.html @@ -0,0 +1,123 @@ + + +

Adding Tags to an ECS

+

This API is used to add tags to an ECS.

+

You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.

+

URI

PUT /v2.1/{project_id}/servers/{server_id}/tags

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

Yes

+

Array of strings

+

Specifies ECS tags.

+

A maximum of 50 tags can be configured, and each tag can contain up to 80 characters.

+

Can only consist of digits, letters, hyphens (-), and underscores (_).

+
+
+
+

Response

+
+ + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

Yes

+

Array of strings

+

Specifies ECS tags.

+
+
+ +
+ + + + + + + + + + +
Table 4 Reserved tag parameters

Tag Name

+

Description

+

__type_baremetal

+

Specifies that the server is a BMS.

+

__type_virtual

+

Specifies that the server is an ECS.

+
+
+
+

Example Request

PUT https://{endpoint}/v2.1/{project_id}/servers/{server_id}/tags
+
{ 
+   "tags": ["baz", "foo", "qux"]
+}
+
+

Example Response

{ 
+   "tags": ["baz", "foo", "qux"]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820824.html b/ecs/api-ref/en-us_topic_0065820824.html new file mode 100644 index 000000000..21a6b3e19 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820824.html @@ -0,0 +1,51 @@ + + +

Deleting Tags from an ECS

+

This API is used to delete all tags of an ECS.

+

You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.

+

URI

DELETE /v2.1/{project_id}/servers/{server_id}/tags

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2.1/{project_id}/servers/{server_id}/tags
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820825.html b/ecs/api-ref/en-us_topic_0065820825.html new file mode 100644 index 000000000..48e9d014d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820825.html @@ -0,0 +1,114 @@ + + +

Adding a Tag to an ECS

+

This API is used to add a tag to an ECS.

+

You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.

+

Constraints

+
+

URI

PUT /v2.1/{project_id}/servers/{server_id}/tags/{tag}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

tag

+

Yes

+

Specifies the key of the tag to be added.

+

For details about key rules, see Tag Types.

+
NOTE:

Tag functions have been upgraded on the public cloud. If the tags added before the function upgrade are in the format of "Key.Value", query tags using "Key".

+

For example, an existing tag is "a.b". The tag can be queried in the format of "tag=a.b" before and in the format of "tag=a" now according to the new tag rules.

+
+
+
+
+
+

Request

None

+
+

Response

+
+ + + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

message

+

String

+

Example: "<br /><br />\n\n\n"

+

code

+

String

+

Example: "201 Created"

+

title

+

String

+

Example: "Created"

+
+
+
+

Example Request

PUT https://{endpoint}/v2.1/{project_id}/servers/{server_id}/tags/{tag}
+
+

Example Response

By default, the response is in HTML format.

+
<html>
+<head>
+      <title>201 Created</title>
+</head>
+<body>
+      <h1>201 Created</h1>
+      <br /><br />
+
+
+
+</body>
+</html>
+

JSON format

+
{
+   "message": "<br /><br />\n\n\n",
+   "code": "201 Created",
+   "title": "Created"
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820826.html b/ecs/api-ref/en-us_topic_0065820826.html new file mode 100644 index 000000000..bee9fa1d3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820826.html @@ -0,0 +1,62 @@ + + +

Querying a Specified Tag for an ECS

+

This API is used to query whether an ECS has a specified tag.

+

You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.

+

URI

GET /v2.1/{project_id}/servers/{server_id}/tags/{tag}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

tag

+

Yes

+

Specifies the key of the tag to be queried. If no key is specified, all tags of the ECS will be displayed.

+

For details about key rules, see Tag Types.

+
NOTE:

Tag functions have been upgraded on the public cloud. If the tags added before the function upgrade are in the format of "Key.Value", query tags using "Key".

+

For example, an existing tag is "a.b". The tag can be queried in the format of "tag=a.b" before and in the format of "tag=a" now according to the new tag rules.

+
+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

GET https://{endpoint}/v2.1/{project_id}/servers/{server_id}/tags/{tag}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065820827.html b/ecs/api-ref/en-us_topic_0065820827.html new file mode 100644 index 000000000..7f913703c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065820827.html @@ -0,0 +1,64 @@ + + +

Deleting a Specified Tag from an ECS

+

This API is used to delete a specified tag from an ECS.

+

You are required to use the HTTP header X-OpenStack-Nova-API-Version: 2.26 to specify the microversion on the client.

+

Constraints

+
+

URI

DELETE /v2.1/{project_id}/servers/{server_id}/tags/{tag}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+

tag

+

Yes

+

Specifies the key of the tag to be deleted. If no key is specified, all tags of the ECS will be deleted.

+

For details about key rules, see Tag Types.

+
NOTE:

Tag functions have been upgraded on the public cloud. If the tags added before the function upgrade are in the format of "Key.Value", delete tags using "Key".

+

For example, an existing tag is a.b. After the tag function upgrade, delete the tag using "a".

+
+
+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v2.1/{project_id}/servers/{server_id}/tags/{tag}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065827313.html b/ecs/api-ref/en-us_topic_0065827313.html new file mode 100644 index 000000000..a853f348c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065827313.html @@ -0,0 +1,105 @@ + + +

HTTP Status Codes

+
+
+ + + + + + + + + + + + + + + + +

Normal Status Code

+

Description

+

200

+

OK

+

201

+

Created

+

202

+

Accepted

+

204

+

No Content

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Error Status Code

+

Description

+

400

+

Bad Request

+

401

+

Unauthorized

+

403

+

Forbidden

+

404

+

Not Found

+

405

+

Method Not Allowed

+

409

+

Conflict

+

413

+

Request Entity Too Large

+

415

+

Unsupported Media Type

+

500

+

Internal Server Error

+

501

+

Not Implemented

+

503

+

Service Unavailable

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065962596.html b/ecs/api-ref/en-us_topic_0065962596.html new file mode 100644 index 000000000..9ee374588 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065962596.html @@ -0,0 +1,26 @@ + + +

FPGA Logical File Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0065962597.html b/ecs/api-ref/en-us_topic_0065962597.html new file mode 100644 index 000000000..e1ee0df24 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065962597.html @@ -0,0 +1,189 @@ + + +

Registering an FPGA Image

+

Function

This API is used to register an FPGA image.

+
+

An FPGA image, which is also called accelerated engine image (AEI), is a logic FPGA file developed by a user. During FPGA image registration, the logic file must be stored in the Object Storage Service (OBS) bucket of the user.

+

URI

POST /v1/{project_id}/cloudservers/fpga_image

+

Table 1 describes the parameters in the URI.

+ +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Type

+

Mandatory

+

Description

+

fpga_image

+

Object

+

Yes

+

Indicates details about an FPGA image.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 fpga_image field description

Parameter

+

Type

+

Mandatory

+

Description

+

location

+

String

+

Yes

+

Specifies the OBS bucket path in which the logic FPGA file is stored. The format of the path is "Bucket name:File name", for example, "obs-fpga:fpga.bin".

+

Bucket naming rules comply with the following OBS requirements:

+
  • Consists of lowercase letters, digits, and special characters . and -.
  • Must start and end with a digit or letter.
  • Contains 3 to 63 characters.
  • Cannot be an IP address.
  • Cannot contain .., .-, or -..
+

A file name must conform to the following rules:

+
  • Consists of uppercase and lowercase letters, digits, hyphens (-), underscores (_), slashes (/), and periods (.).
  • Must end with .bin or xclbin.
  • Contains 4 to 64 characters.
+

name

+

String

+

Yes

+

Specifies the name of the FPGA image.

+

Value range:

+
  • Contains only letters, digits, underscores, and hyphens.
  • Contains 1 to 64 characters.
+

metadata

+

Object

+

Yes

+

Specifies the FPGA image metadata, which must be a valid JavaScript Object Notation (JSON) object.

+

The number of characters in metadata after JSON serialization cannot exceed 1024.

+

description

+

String

+

No

+

Describes an FPGA image. The value consists of uppercase and lowercase letters, digits, hyphens (-), underscores (_), periods (.), commas, and spaces. The value consists of 0 to 255 characters.

+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

fpga_image

+

Object

+

Indicates details about an FPGA image.

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 fpga_image field description

Parameter

+

Type

+

Description

+

id

+

String

+

ID of an FPGA image

+

status

+

String

+

Specifies the FPGA image status. Options:

+
  • saving: indicates that the FPGA image file is being uploaded to the backend storage.
  • deleting: indicates that the FPGA image is being deleted.
  • error: indicates that creating the FPGA image failed.
  • active: indicates that the FPGA image is available for use.
+
+
+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/fpga_image
+
{ 
+  "fpga_image": { 
+    "location": "obs-fpga:fpga.bin", 
+    "name": "fpga-image-test", 
+    "description": "fpga description", 
+    "metadata": { 
+      "shell_type": "OCL", 
+      "shell_version": "1.0" 
+    } 
+  } 
+}
+
+

Example Response

{
+  "fpga_image": {
+    "status": "saving",
+    "id": "4010a32c5c62bad9015c62dc2290002b"
+  }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065962598.html b/ecs/api-ref/en-us_topic_0065962598.html new file mode 100644 index 000000000..ce4752ec5 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065962598.html @@ -0,0 +1,104 @@ + + +

Associating an FPGA Image with an ECS Image

+

Function

This API is used to create a mapping between an FPGA image and an ECS image.

+
+

URI

POST /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/association

+

Table 1 describes the parameters in the URI.

+ +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

fpga_image_id

+

Yes

+

Specifies the FPGA image ID.

+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Type

+

Mandatory

+

Description

+

image

+

Object

+

Yes

+

Specifies the ECS image.

+
+
+
+ +
+ + + + + + + + + + + +
Table 3 image field description

Parameter

+

Type

+

Mandatory

+

Description

+

id

+

String

+

Yes

+

Specifies the ECS image ID.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/association
+
{
+  "image": {
+    "id": "18efee75-e058-4c52-a49c-9e3ba4d1c8de"
+  }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065962599.html b/ecs/api-ref/en-us_topic_0065962599.html new file mode 100644 index 000000000..0afb0d7b5 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065962599.html @@ -0,0 +1,53 @@ + + +

Deleting an FPGA Image

+

Function

This API is used to delete an FPGA image.

+
+

URI

DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}

+

Table 1 describes the parameters in the URI.

+ +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

fpga_image_id

+

Yes

+

Specifies the FPGA image ID.

+
+
+
+

Request

None

+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0065962600.html b/ecs/api-ref/en-us_topic_0065962600.html new file mode 100644 index 000000000..59b09874e --- /dev/null +++ b/ecs/api-ref/en-us_topic_0065962600.html @@ -0,0 +1,217 @@ + + +

Viewing Details of FPGA Images

+

Function

This API is used to view the details of the FPGA images of a tenant.

+
+

URI

GET /v1/{project_id}/cloudservers/fpga_image/detail?fpga_image_id={fpga_image_id}&page={page}&size={size}

+

Table 1 describes the parameters in the URI.

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

fpga_image_id

+

No

+

Specifies the FPGA image ID.

+

page

+

No

+

Specifies the number of pages in a pagination query.

+

The value of this parameter must meet the following requirements:

+
  • Must be a decimal integer.
  • Ranges from 1 (inclusive) to 65,535 (exclusive).
  • Cannot contain +.
+

size

+

No

+

Specifies the maximum records displayed on a page in a pagination query.

+
  • Must be a decimal integer.
  • Ranges from 1 (inclusive) to 100 (inclusive).
  • Cannot contain +.
+
+
+
  • Pagination query takes effect only if parameters page and size both have a value. If only one of them has a value, an error message indicating invalid parameter will be displayed.
  • If fpga_image_id is used, pagination query specified by page and size does not take effect.
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

count

+

Integer

+

Specifies the number of FPGA images to be queried.

+

fpgaimages

+

Array of objects

+

Specifies details of FPGA images.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 fpgaimages field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the FPGA image ID.

+

name

+

String

+

Specifies the FPGA image name.

+

description

+

String

+

Describes the FPGA image.

+

status

+

String

+

Specifies the FPGA image status. Options:

+
  • initialing: indicates that the task of creating an FPGA image is being initialized.
  • scheduling: indicates that the task of creating an FPGA image is waiting for scheduling.
  • creating: indicates that the FPGA image is being created.
  • saving: indicates that the FPGA image file is being uploaded to the backend storage.
  • deleting: indicates that the FPGA image is being deleted.
  • error: indicates that creating the FPGA image failed.
  • active: indicates that the FPGA image is available for use.
+

size

+

Integer

+

Specifies the size (MB) of the FPGA image file.

+

createdAt

+

String

+

Specifies the time when the FPGA image was created.

+

Coordinated Universal Time (UTC) time is used.

+

protected

+

Boolean

+

Specifies whether an FPGA image is protected.

+

If an FPGA image is protected, it is associated with an image used to create ECSs and cannot be deleted.

+

message

+

String

+

Specifies the FPGA image supplementation.

+

metadata

+

Object

+

Specifies the FPGA image metadata.

+

log_directory

+

String

+

Specifies the directory, in the format of "Bucket name:Directory", in which the log file for constructing the FPGA image is stored in OBS, for example, "obs-fpga:vu9p/log".

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/fpga_image/detail
+
+

Example Response

{ 
+  "count": 2, 
+  "fpgaimages": [ 
+    { 
+      "id": "4010a32c5c7d7711015c81ac714c009d", 
+      "name": "FPGA001", 
+      "description": "fpga test", 
+      "status": "active", 
+      "size": 40, 
+      "createdAt": "2017-06-07 08:29:41", 
+      "protected": false, 
+      "message": null, 
+      "metadata": { 
+        "shell_type": "OCL", 
+        "shell_version": "1.0" 
+      },
+      "log_directory": "obs-fpga:vu9p/log"
+    }, 
+    { 
+      "id": "4010a32c5c7d7711015c813e69bd002c", 
+      "name": "FPGA002", 
+      "description": "fpga test", 
+      "status": "active", 
+      "size": 43, 
+      "createdAt": "2017-06-07 16:29:30", 
+      "protected": true, 
+      "message": null,
+      "metadata": { 
+        "shell_type": "OCL", 
+        "shell_version": "1.0" 
+      },
+      "log_directory": "obs-fpga:vu9p/log"
+    } 
+  ] 
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0067161469.html b/ecs/api-ref/en-us_topic_0067161469.html new file mode 100644 index 000000000..b19bd2265 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0067161469.html @@ -0,0 +1,104 @@ + + +

Adding a Security Group

+

Function

This API is used to add an ECS to a security group.

+

You are suggested to add an ECS to a maximum of five security groups.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameter

Parameter

+

Mandatory

+

Type

+

Description

+

addSecurityGroup

+

Yes

+

Object

+

Specifies the security group where the ECS is added. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 addSecurityGroup parameter description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Specifies the UUID or name of the security group to which the ECS is added. The configuration takes effect for the NICs on the ECS.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{ 
+    "addSecurityGroup": { 
+        "name": "sg-test"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0067161717.html b/ecs/api-ref/en-us_topic_0067161717.html new file mode 100644 index 000000000..2340b1f97 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0067161717.html @@ -0,0 +1,103 @@ + + +

Deleting a Security Group

+

Function

This API is used to delete a security group for an ECS.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2/{project_id}/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameter

Parameter

+

Mandatory

+

Type

+

Description

+

removeSecurityGroup

+

Yes

+

Object

+

Specifies the security group to be deleted for an ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 removeSecurityGroup parameter description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Specifies the UUID or name of the security group from which the ECS is removed. The configuration takes effect for the NICs on the ECS.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v2.1/{project_id}/servers/{server_id}/action
+
{ 
+    "removeSecurityGroup": { 
+        "name": "sg-test"
+    }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0067298110.html b/ecs/api-ref/en-us_topic_0067298110.html new file mode 100644 index 000000000..af9b6a502 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0067298110.html @@ -0,0 +1,215 @@ + + +

Querying Tenant Quotas

+

Function

This API is used to query quotas, including ECSs, vCPUs, and memory.

+

This API provides the user_id parameter for obtaining the quota configuration of a specified user.

+
+

URI

GET /v2.1/{project_id}/os-quota-sets/{project_id}?user_id={user_id}

+

GET /v2/{project_id}/os-quota-sets/{project_id}?user_id={user_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID. If the specified project does not exist, the default quota in the system is returned.

+

user_id

+

No

+

Specifies the user ID. If the specified user does not exist, the default quota in the system is returned.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

quota_set

+

Object

+

Specifies the quota_set object. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 quota_set parameter description

Parameter

+

Type

+

Description

+

cores

+

Integer

+

Specifies the quantity quota of vCPUs.

+

fixed_ips

+

Integer

+

Specifies the quantity quota of fixed IP addresses. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

floating_ips

+

Integer

+

Specifies the quantity quota of floating IP addresses. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

id

+

String

+

Specifies the project UUID.

+

injected_file_content_bytes

+

Integer

+

Specifies the size quota (bytes) of the files to be injected.

+

This parameter is not supported in microversion 2.56 and later.

+

injected_file_path_bytes

+

Integer

+

Specifies the size quota (bytes) of the path for the files to be injected.

+

This parameter is not supported in microversion 2.56 and later.

+

injected_files

+

Integer

+

Specifies the quantity quota of the files to be injected.

+

This parameter is not supported in microversion 2.56 and later.

+

instances

+

Integer

+

Specifies the quantity quota of ECSs.

+

key_pairs

+

Integer

+

Specifies the quantity quota of key pairs. This parameter is not supported.

+

metadata_items

+

Integer

+

Specifies the metadata quantity quota.

+

ram

+

Integer

+

Specifies the memory quota (MB).

+

security_group_rules

+

Integer

+

Specifies the quota of security group rules. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

security_groups

+

Integer

+

Specifies the quantity quota of security groups. This parameter is not supported.

+

This parameter is not supported in microversion 2.36 and later.

+

server_groups

+

Integer

+

Specifies the quantity quota of ECS groups.

+

server_group_members

+

Integer

+

Specifies the size quota of ECS groups.

+
+
+
+

Example Request

GET https://{endpoint}/v2/d9ebe43510414ef590a4aa158605329e/os-quota-sets/d9ebe43510414ef590a4aa158605329e
+GET https://{endpoint}/v2.1/d9ebe43510414ef590a4aa158605329e/os-quota-sets/d9ebe43510414ef590a4aa158605329e
+
+

Example Response

{
+    "quota_set": {
+        "cores": 20,
+        "fixed_ips": 40,
+        "floating_ips": 10,
+        "id": "d9ebe43510414ef590a4aa158605329e",
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 20,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 50,
+        "server_group_members": 10,
+        "server_groups": 10
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0067600148.html b/ecs/api-ref/en-us_topic_0067600148.html new file mode 100644 index 000000000..3e66e0fec --- /dev/null +++ b/ecs/api-ref/en-us_topic_0067600148.html @@ -0,0 +1,76 @@ + + +

Querying Automatic Recovery of an ECS

+

Function

This API is used to query automatic recovery configured for an ECS.

+
+

URI

GET /v1/{project_id}/cloudservers/{server_id}/autorecovery

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

support_auto_recovery

+

String

+

Queries automatic recovery configured for an ECS.

+
  • true: indicates that automatic recovery is configured for an ECS.
  • false: indicates that automatic recovery is not configured for an ECS.
+
+
+
+

Example Request

None

+
+

Example Response

GET https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/autorecovery
+
{ 
+   "support_auto_recovery": "true"
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0067876349.html b/ecs/api-ref/en-us_topic_0067876349.html new file mode 100644 index 000000000..b014c42b3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0067876349.html @@ -0,0 +1,216 @@ + + +

Reinstalling an ECS OS (Using an Image with Cloud-Init Installed)

+

Function

This API is used to reinstall an ECS OS. During the system disk reinstallation using the original image, the data disks of the ECS remain unchanged.

+

After this API is called, the system uninstalls the system disk, uses the original image to create a system disk, and attaches it to the ECS. In this way, the OS is reinstalled.

+
+

Constraints

+
+

URI

POST /v2/{project_id}/cloudservers/{server_id}/reinstallos

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-reinstall

+

Yes

+

Object

+

Reinstalls an ECS OS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 os-reinstall field description

Parameter

+

Mandatory

+

Type

+

Description

+

keyname

+

Yes

+

String

+

Specifies the key pair name.

+

userid

+

Yes

+

String

+

Specifies the user ID. This parameter is mandatory when keyname is used.

+

metadata

+

No

+

Object

+

Specifies metadata of the reinstalled ECS.

+

For more information, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 metadata field description

Parameter

+

Mandatory

+

Type

+

Description

+

BYOL

+

No

+

String

+

Specifies whether a user has the license of an image.

+
  • If this parameter is set to true, the license file delivered with the image is used, indicating that BYOL is used.
  • If this parameter is set to a value other than true, BYOL is not used, and the license file provided by the public cloud platform must be used.
+

The default value is not true, indicating that BYOL is not used.

+

user_data

+

No

+

String

+

Specifies the user data to be injected to the ECS during the creation. Text and text files can be injected.

+
NOTE:
  • The content of user_data must be encoded with base64.
  • The maximum size of the content to be injected (before encoding) is 32 KB.
+
+

For more details, see "Injecting User Data into ECSs" in Elastic Cloud Server User Guide.

+

Examples

+

Before base64 encoding:

+
  • Linux
    #! /bin/bash
    +echo user_test >> /home/user.txt
    +
  • Windows
    rem cmd
    +echo 111 > c:\aaa.txt
    +
+

After base64 encoding:

+
  • Linux
    IyEgL2Jpbi9iYXNoDQplY2hvIHVzZXJfdGVzdCAmZ3Q7Jmd0OyAvaG9tZS91c2VyLnR4dA==
    +
  • Windows
    cmVtIGNtZA0KZWNobyAxMTEgJmd0OyBjOlxhYWEudHh0
    +
+

__system__encrypted

+

No

+

String

+

Specifies encryption in metadata. The value can be 0 (encryption disabled) or 1 (encryption enabled).

+

If this parameter does not exist, the system disk will not be encrypted by default.

+

__system__cmkid

+

No

+

String

+

Specifies the CMK ID, which indicates encryption in metadata. This parameter is used with __system__encrypted.

+
NOTE:

For details about how to obtain the CMK ID, see "Querying the List of CMKs" in Key Management Service API Reference.

+
+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

+ +
+ +

Example Response

See Responses (Task).

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0067876971.html b/ecs/api-ref/en-us_topic_0067876971.html new file mode 100644 index 000000000..8af1a9b55 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0067876971.html @@ -0,0 +1,229 @@ + + +

Changing an ECS OS (Using an Image with Cloud-Init Installed)

+

Function

This API is used to change an ECS OS. During the system disk reinstallation using a new image, the data disks of the ECS remain unchanged.

+

After this API is called, the system uninstalls the system disk, uses the new image to create a system disk, and attaches it to the ECS. In this way, the OS is changed.

+
+

Constraints

+
+

URI

POST /v2/{project_id}/cloudservers/{server_id}/changeos

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

os-change

+

Yes

+

Object

+

Changes an ECS OS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 os-change field description

Parameter

+

Mandatory

+

Type

+

Description

+

keyname

+

Yes

+

String

+

Specifies the key pair name.

+

userid

+

No

+

String

+

Specifies the user ID. When the keyname parameter is being specified, the value of this parameter is used preferentially. If this parameter is left blank, the user ID in the token is used by default.

+

imageid

+

Yes

+

String

+

Specifies the ID of the new image in UUID format.

+

You can obtain the image ID from the console or by following the instructions provided in "Querying Images" in Image Management Service API Reference.

+

metadata

+

No

+

Object

+

Specifies the metadata of the ECS for which the OS is to be changed.

+

For more information, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 metadata field description

Parameter

+

Mandatory

+

Type

+

Description

+

BYOL

+

No

+

String

+

Specifies whether a user has the license of an image.

+
  • If this parameter is set to true, the license file delivered with the image is used, indicating that BYOL is used.
  • If this parameter is set to a value other than true, BYOL is not used, and the license file provided by the public cloud platform must be used.
+

The default value is not true, indicating that BYOL is not used.

+

user_data

+

No

+

String

+

Specifies the user data to be injected to the ECS during the creation. Text and text files can be injected.

+
NOTE:
  • The content of user_data must be encoded with base64.
  • The maximum size of the content to be injected (before encoding) is 32 KB.
+
+

For more details, see "Injecting User Data into ECSs" in Elastic Cloud Server User Guide.

+

Examples

+

Before base64 encoding:

+
  • Linux
    #! /bin/bash
    +echo user_test >> /home/user.txt
    +
  • Windows
    rem cmd
    +echo 111 > c:\aaa.txt
    +
+

After base64 encoding:

+
  • Linux
    IyEgL2Jpbi9iYXNoDQplY2hvIHVzZXJfdGVzdCAmZ3Q7Jmd0OyAvaG9tZS91c2VyLnR4dA==
    +
  • Windows
    cmVtIGNtZA0KZWNobyAxMTEgJmd0OyBjOlxhYWEudHh0
    +
+

__system__encrypted

+

No

+

String

+

Specifies encryption in metadata. The value can be 0 (encryption disabled) or 1 (encryption enabled).

+

If this parameter does not exist, the system disk will not be encrypted by default.

+

__system__cmkid

+

No

+

String

+

Specifies the CMK ID, which indicates encryption in metadata. This parameter is used with __system__encrypted.

+
NOTE:

For details about how to obtain the CMK ID, see "Querying the List of CMKs" in Key Management Service API Reference.

+
+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

+ + + +
+

Example Response

See Responses (Task).

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0068473331.html b/ecs/api-ref/en-us_topic_0068473331.html new file mode 100644 index 000000000..213759442 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0068473331.html @@ -0,0 +1,870 @@ + + +

Creating an ECS

+

Function

This API is used to create ECS.

+
+

This API does not support automatic rollback after creating an ECS failed. If automatic rollback is required, call the API POST /v1/{project_id}/cloudservers. For details, see Creating an ECS.

+

URI

POST /v2.1/{project_id}/servers

+

POST /v2/{project_id}/servers

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+

Alias of the API for creating ECSs: /v2/{project_id}/os-volumes_boot

+

This calling mode can only be used in OpenStack client.

+
+
+

Constraints

  1. This API is native, which does not support the creation of ECSs using full-ECS images. To use full-ECS images to create ECSs, refer to Creating an ECS.
  2. During the creation of an ECS using this API, you cannot bind an EIP to the ECS. If you want to create an ECS and bind an EIP to it, refer to Creating an ECS.
  3. Parameter port in the three network parameters (port, uuid, and fixed_ip) has the highest priority. If parameter fixed_ip is set, you must specify the UUID.
  4. A file injection failure will result in the ECS creation failure.
  5. The following restrictions apply when you create ECSs using an image:
    1. You cannot create an ECS on a specified host.
    2. If a tenant backs up a disk in an ECS, the disk can be deleted only after the tenant deletes all the snapshots of the disk.
    3. The flavors with different resource types cannot be adjusted if you adjust the specifications of an ECS created using an image.
    +
  6. Native APIs /v2/{project_id}/servers and /v2.1/{project_id}/servers provided by the public cloud platform is developed based on and compatible with the community-version native OpenStack API.
    Compared with the community-version native API, this API has the following restrictions when you create an ECS using a specified image:
    • Community-version native OpenStack API: creates an ECS using the local disk by default.
    • Native API provided by the public cloud platform: creates an ECS using the shared storage as the system disk.
    +
    +
    Specifically, when you use the native API to create an ECS:
    1. You can query information about the disks attached to the ECS.
    2. The ECS system disk uses the EVS disk quota.
    3. You cannot query ECSs created based on a specified image using the image filtering function.
    +
    +
  7. When you create an ECS with a specified disk, ensure that the disk and the ECS are in the same AZ.
  8. The device_name field configured in block_device_mapping_v2 during the ECS creation does not take effect. The system generates a device name by default.
  9. ECSs cannot be created in networks with provider:network_type set to geneve.

    provider:network_type being set to geneve indicates the internal high-speed network for BMSs.

    +
    +
  10. If your ECS is remotely logged in using a key, use the key_name parameter. If your ECS is remotely logged in using a password, use the adminPass parameter. Linux ECSs support user_data for injection. Windows ECSs support admin_pass for injection.
  11. If the image based on which the ECS is created uses the native OpenStack API, ensure that the specified AZ and system disk capacity and type used when the ECS is created are the same as those used when the image is created. Otherwise, the ECS creation will fail.
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

server

+

Yes

+

Object

+

Specifies the ECS information. For details, see Table 3.

+

os:scheduler_hints

+

No

+

Object

+

Specifies the ECS scheduling information. For details, see Table 8. This parameter is not available for BMSs.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 server parameters

Parameter

+

Mandatory

+

Type

+

Description

+

imageRef

+

No

+

+

String

+

Specifies the ECS image ID or URL.

+
  • Example image ID: 3b8d6fef-af77-42ab-b8b7-5a7f0f0af8f2
  • Example image URL: http://glance.openstack.example.com/images/3b8d6fef-af77-42ab-b8b7-5a7f0f0af8f2
  • If you use a specified disk as the system disk to create an ECS, this parameter is not required. If you do not use a disk to create an ECS, you must set a valid UUID. Otherwise, the API will return error code 400.
+
NOTE:
  • Certain ECS flavors cannot support all public images provided on the public cloud platform. To obtain the images supported by an ECS flavor, log in to the management console, view the images displayed on the Create ECS page, and obtain the image IDs on the Image Management Service page.
  • If the creation fails, modify the parameter settings.
+
+

flavorRef

+

Yes

+

String

+

Specifies the flavor ID or URL.

+

For example: c3.2xlarge

+

name

+

Yes

+

String

+

Specifies the ECS name. The value contains 1 to 255 characters.

+
NOTE:

ECS hostnames comply with RFC952 and RFC1123 naming rules. It is recommended that you configure hostnames using digits, letters (case sensitive), and hyphens (-). Underscores (_) are converted into hyphens (-) by default.

+
+

metadata

+

No

+

Map<String,String>

+

Specifies the ECS metadata. For details, see Table 4.

+
  • The key contains 1 to 255 characters.
  • The value contains 0 to 255 characters.
+

adminPass

+

No

+

String

+

Specifies the initial login password of the administrator account for logging in to an ECS using password authentication. The Linux administrator is root, and the Windows administrator is Administrator.

+

block_device_mapping_v2

+

No

+

Array of objects

+

Indicates the V2 API for specifying the ECS storage device. This is an extended attribute. This is the storage resource API of the new version. You are not allowed to create ECSs in batches when the volume is specified. For details, see Table 5. This parameter is not available for BMSs.

+

config_drive

+

No

+

String

+

Specifies the config_drive disk to be attached to the ECS during the ECS creation for transferring information to the ECS. This is an extended attribute.

+

This function is not supported.

+

security_groups

+

No

+

Array of objects

+

Specifies the security group that the ECS belongs to. This parameter is an extended attribute. The default parameter value is default.

+

This parameter is valid when you create an ECS on a specified network. For an existing port, the requested security groups are invalid. For details, see Table 6.

+

networks

+

Yes

+

Array of objects

+

Specifies information about the ECS NIC. This parameter is an extended attribute. This parameter must be specified if multiple tenant networks are used. For details, see Table 7.

+

key_name

+

No

+

String

+

Specifies the name of a key pair. This parameter is an extended attribute.

+

user_data

+

No

+

String

+

Specifies the user data to be injected to the ECS during the creation. Text and text files can be injected.

+
NOTE:
  • The content of user_data must be encoded with base64.
  • The maximum size of the content to be injected (before encoding) is 32 KB.
+
+

For more information about the user data to be injected, see "Injecting User Data into ECSs" in Elastic Cloud Server User Guide.

+

Examples

+

Before base64 encoding:

+
  • Linux
    #! /bin/bash
    +echo user_test >> /home/user.txt
    +
  • Windows
    rem cmd
    +echo 111 > c:\aaa.txt
    +
+

After base64 encoding:

+
  • Linux
    IyEgL2Jpbi9iYXNoDQplY2hvIHVzZXJfdGVzdCAmZ3Q7Jmd0OyAvaG9tZS91c2VyLnR4dA==
    +
  • Windows
    cmVtIGNtZA0KZWNobyAxMTEgJmd0OyBjOlxhYWEudHh0
    +
+

availability_zone

+

No

+

String

+

Specifies the AZ of a specified ECS. This is an extended attribute.

+

This parameter is mandatory when you create an ECS.

+

return_reservation_id

+

No

+

Boolean

+

Specifies whether the reservation IDs of the ECSs created in a batch are returned. This is an extended attribute. You can query the ECSs created this time based on the returned reservation IDs.

+
  • true: The reservation IDs are returned.
  • false: The ECS information is returned.
    NOTE:

    When you create ECSs in a batch, this parameter is available.

    +
    +
+

min_count

+

No

+

Integer

+

Specifies the minimum number of ECSs that can be created. This is an extended attribute.

+

The default value is 1.

+
NOTE:

When you use a specified image to create ECSs, this parameter is available.

+
+

max_count

+

No

+

Integer

+

Specifies the maximum number of ECSs that can be created.

+

The default value of max_count is the same as that of min_count.

+

Note:

+
  • The max_count value must be greater than or equal to the min_count value.
  • If both min_count and max_count are specified, the number of ECSs that can be created depends on host resources. If host resources permit, you can create a maximum number of ECSs ranging from min_count to max_count values.
+
NOTE:

When you use a specified image to create ECSs, this parameter is available.

+
+

OS-DCF:diskConfig

+

No

+

String

+

Specifies the disk configuration mode. The value can be AUTO or MANUAL.

+
  • MANUAL: indicates that the image space of the system disk cannot be expanded.
  • AUTO: indicates that the image space of the system disk can be automatically expanded to a value same as that specified in flavor.
+

This function is not supported.

+

description

+

No

+

String

+

Specifies the description of an ECS, which is a null string by default. This is an extended attribute.

+

This parameter is supported in microversion 2.19 and later.

+
  • Can contain a maximum of 85 characters.
  • Cannot contain special characters, such as < and >.
+
+
+ +
+ + + + + + + + + + + +
Table 4 metadata field description

Parameter

+

Mandatory

+

Type

+

Description

+

admin_pass

+

No

+

String

+

Specifies the password of user Administrator for logging in to a Windows ECS.

+
NOTE:

This parameter is mandatory when a Windows ECS using password authentication is created.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 block_device_mapping_v2 parameters

Parameter

+

Type

+

Mandatory

+

Description

+

source_type

+

String

+

Yes

+

Specifies the source type of the volume device. Its value can be volume, image, snapshot, or blank.

+

If you use a volume to create an ECS, set source_type to volume. If you use an image to create an ECS, set source_type to image. If you use a snapshot to create an ECS, set source_type to snapshot. If you create an empty data volume, set source_type to blank.

+
NOTE:

If source_type is snapshot and boot_index is 0, the EVS disk of this snapshot must be the system disk.

+
+

destination_type

+

String

+

No

+

Specifies the target type of the disk device. Its value can only be volume.

+
  • volume: indicates the volume type.
  • local: indicates the local file, which has not been supported.
+

guest_format

+

String

+

No

+

Specifies the local file system format. Its value can be swap or ext4.

+

This function is not supported.

+

device_name

+

String

+

No

+

Specifies the disk device name.

+
NOTE:

This field has been discarded.

+

The specified device_name does not take effect. The system generates a device name by default.

+
+

delete_on_termination

+

Boolean

+

No

+

Specifies whether disks are deleted when an ECS is deleted. Its default value is false.

+
  • true: When an ECS is deleted, its disks are deleted.
  • false: When an ECS is deleted, its disks are not deleted.
+

boot_index

+

String

+

No

+

Specifies whether it is a boot disk. 0 specifies a boot disk, and -1 specifies a non-boot disk.

+
NOTE:

If source_type of the volume device is volume, there must be one boot_index whose value is 0.

+
+

uuid

+

String

+

No

+
  • If source_type is volume, the value of this parameter is the volume UUID.
  • If source_type is snapshot, the value of this parameter is the snapshot UUID.
  • If source_type is image, the value of this parameter is the image UUID.
+

volume_size

+

Integer

+

No

+

Specifies the volume size. The value is an integer. This parameter is mandatory when source_type is set to image or blank, and destination_type is set to volume.

+

Unit: GB

+

volume_type

+

String

+

No

+

Specifies the volume type. This parameter is recommended when source_type is set to image and destination_type is set to volume.

+
+
+ +
+ + + + + + + + + + + +
Table 6 security_groups parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Specifies the security group name or UUID.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 networks parameters

Parameter

+

Mandatory

+

Type

+

Description

+

port

+

No

+

String

+

Specifies the network port UUID.

+

This parameter must be set when the network UUID is not specified.

+

uuid

+

No

+

String

+

Specifies the network UUID.

+

This parameter must be set when the network port is not specified.

+

fixed_ip

+

No

+

String

+

Specifies the fixed IP address. Parameter port in the three network parameters (port, uuid, and fixed_ip) has the highest priority. If parameter fixed_ip is set, you must specify the UUID.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 os:scheduler_hints parameters

Parameter

+

Mandatory

+

Type

+

Description

+

group

+

No

+

String

+

Specifies the anti-affinity group.

+

The value is in UUID format.

+
NOTE:

Ensure that the ECS group uses the anti-affinity policy. You are not advised to use other policies.

+
+

different_host

+

No

+

Array of strings

+

The function has not been supported, and this field is reserved.

+

same_host

+

No

+

Array of strings

+

The function has not been supported, and this field is reserved.

+

cidr

+

No

+

String

+

The function has not been supported, and this field is reserved.

+

build_near_host_ip

+

No

+

String

+

The function has not been supported, and this field is reserved.

+

tenancy

+

No

+

String

+

Specifies whether the ECS is created on a Dedicated Host (DeH) or in a shared pool (default).

+

The value can be shared or dedicated.

+
  • shared: indicates the shared pool.
  • dedicated: indicates the DeH.
+

The parameter value also takes effect for ECS query operations.

+

dedicated_host_id

+

No

+

String

+

Specifies the DeH ID.

+

This parameter takes effect only when the value of tenancy is dedicated.

+

If you do not specify this parameter, the system will automatically assign a DeH to you to deploy ECSs.

+

The parameter value also takes effect for ECS query operations.

+

check_resources

+

No

+

String

+

Specifies whether to check resource sufficiency when creating an ECS. If this parameter is not configured, the system does not check resource sufficiency by default.

+

The value can be true or false. The default value is false.

+
  • true: indicates that the system will check resource sufficiency. If the resources are insufficient, the check result will be returned.
  • false: indicates that the system will not check resource sufficiency.
+
NOTE:

Since the resource usage is dynamic, the resource sufficiency check result is not accurate.

+
+
+
+
+

Response

Table 9 describes the response parameters.

+ +
+ + + + + + + + + +
Table 9 Response parameters

Parameter

+

Type

+

Description

+

server

+

Object

+

Specifies ECS information. For details, see Table 10.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 10 server field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS ID in UUID format.

+

links

+

Array of objects

+

Specifies the URI of the ECS. For details, see Table 11.

+

security_groups

+

Array of objects

+

Specifies the security groups to which the ECS belongs. For details, see Table 12.

+

OS-DCF:diskConfig

+

String

+

Specifies the disk configuration mode.

+
  • MANUAL: indicates that the image space of the system disk cannot be expanded.
  • AUTO: indicates that the image space of the system disk can be automatically expanded to a value same as that specified in flavor.
+

reservation_id

+

String

+
Specifies a filtering criteria to query the created ECSs.
NOTE:

When you create ECSs in a batch, this parameter is available.

+
+
+

adminPass

+

String

+

Specifies the password of user Administrator for logging in to a Windows ECS.

+
+
+ +
+ + + + + + + + + + + + + +
Table 11 links field description

Parameter

+

Type

+

Description

+

rel

+

String

+

Specifies the shortcut link marker name.

+

href

+

String

+

Provides the corresponding shortcut link.

+
+
+ +
+ + + + + + + + + +
Table 12 security_groups field description

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the security group name or UUID.

+
+
+
+

Example Request (Creating an ECS)

Example URL request

+
POST https://{endpoint}/v2/9c53a566cb3443ab910cf0daebca90c4/servers
+POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers
+

Example 1: Use an image to create an ECS through the API block_device_mapping_v2.

+
 { 
+    "server": { 
+        "flavorRef": "2", 
+        "name": "wjvm48", 
+        "metadata": { 
+            "name": "name_xx1", 
+            "id": "id_xxxx1" 
+        }, 
+        "block_device_mapping_v2": [{ 
+            "source_type": "image", 
+            "destination_type": "volume", 
+            "uuid": "b023fe17-11db-4efb-b800-78882a0e394b", 
+            "delete_on_termination": "False", 
+            "boot_index": "0",
+            "volume_type": "SAS",
+            "volume_size": "40"
+        }], 
+        "security_groups": [{ 
+            "name": "name_xx5_sg" 
+        }], 
+        "networks": [{ 
+            "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", 
+            "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", 
+            "fixed_ip": "10.20.30.137" 
+        }], 
+        "key_name": "test", 
+        "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", 
+        "availability_zone":"az1-dc1"
+    } 
+}
+
Example 2: Use a snapshot to create an ECS through the API block_device_mapping_v2.

When source_type is snapshot, boot_index is 0, and the EVS disk corresponding to the snapshot must be a system disk.

+
+
{
+    "server":{
+        "name":"wjvm48",
+        "availability_zone":"az1-dc1",
+        "block_device_mapping_v2": [
+            {
+                "source_type":"snapshot",
+                "boot_index":"0",
+                "uuid":"df51997d-ee35-4fb3-a372-e2ac933a6565", //Specifies the snapshot ID, which is returned by the API for creating a snapshot.
+                "destination_type":"volume"
+            }
+        ],
+        "flavorRef":"s3.xlarge.2",
+        "max_count":1,
+        "min_count":1,
+        "networks": [
+            {
+                "uuid":"79a68cef-0936-4e21-b1f4-b800ecb70246"
+            }
+        ] 
+    } 
+}
+
+
Example 3: Use a disk to create an ECS through the API block_device_mapping_v2.
{ 
+    "server": { 
+        "flavorRef": "2", 
+        "name": "wjvm48", 
+        "metadata": { 
+            "name": "name_xx1", 
+            "id": "id_xxxx1" 
+        }, 
+        "block_device_mapping_v2": [{ 
+            "source_type": "volume", 
+            "destination_type": "volume", 
+            "uuid": "bd7e4f86-b004-4745-bea2-a55b1085f107", 
+            "delete_on_termination": "False", 
+            "boot_index": "0", 
+            "volume_type": "dsware",
+            "volume_size": "40"
+        }], 
+        "security_groups": [{ 
+            "name": "name_xx5_sg" 
+        }], 
+        "networks": [{ 
+            "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", 
+            "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", 
+            "fixed_ip": "10.20.30.137" 
+        }], 
+        "key_name": "test", 
+        "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", 
+        "availability_zone":"az1-dc1"
+    } 
+}
+
+
Example 4: Create an ECS through the API imageRef.
{ 
+    "server": { 
+        "flavorRef": "2", 
+        "name": "wjvm48", 
+        "metadata": { 
+            "name": "name_xx1", 
+            "id": "id_xxxx1" 
+        }, 
+        "adminPass": "name_xx1", 
+        "imageRef": "6b344c54-d606-4e1a-a99e-a7d0250c3d14",
+        "security_groups": [{ 
+            "name": "name_xx5_sg" 
+        }], 
+        "networks": [{ 
+            "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c",
+            "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f",
+            "fixed_ip": "10.20.30.137" 
+        }], 
+        "key_name": "test", 
+        "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", 
+        "availability_zone":"az1-dc1"
+    } 
+}
+
+
+

Example Response (Creating an ECS)

{
+    "server": {
+        "security_groups": [
+            {
+                "name": "name_xx5_sg"
+            }
+        ],
+        "OS-DCF:diskConfig": " MANUAL",
+        "id": "567c1557-0eca-422c-bfce-149d6b8f1bb8",
+        "links": [
+            {
+                "href": "http://192.168.82.230:8774/v2/dc4059e8e7994f2498b514ca04cdaf44/servers/567c1557-0eca-422c-bfce-149d6b8f1bb8",
+                "rel": "self"
+            },
+            {
+                "href": "http://192.168.82.230:8774/dc4059e8e7994f2498b514ca04cdaf44/servers/567c1557-0eca-422c-bfce-149d6b8f1bb8",
+                "rel": "bookmark"
+            }
+        ],
+        "adminPass": "name_xx1"
+    }
+}
+
+

Example Request (Creating ECSs in a Batch)

{
+    "server": {
+        "availability_zone":"az1.dc1",
+        "name": "test",
+        "imageRef": "10ff4f01-35b6-4209-8397-359cb4475fa0",
+        "flavorRef": "s3.medium",
+        "return_reservation_id": "true",
+        "networks": [
+            {
+                "uuid": "51bead38-d1a3-4d08-be20-0970c24b7cab"
+            }
+        ],
+        "min_count": "2",
+        "max_count": "3"
+    }
+}
+
+

Example Response (Creating ECSs in a Batch)

{
+    "reservation_id": "r-3fhpjulh"
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0077847902.html b/ecs/api-ref/en-us_topic_0077847902.html new file mode 100644 index 000000000..5afa79a76 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0077847902.html @@ -0,0 +1,113 @@ + + +

Configuring ECS Metadata

+

Function

This API is used to configure ECS metadata.

+

When you call this API, all the metadata of this ECS will be deleted, and the ECS uses the value configured in the request.

+
+

Constraints

An ECS must be in active, stopped, paused, or suspended state, which is specified by OS-EXT-STS:vm_state.

+
+

URI

PUT /v2.1/{project_id}/servers/{server_id}/metadata

+

PUT /v2/{project_id}/servers/{server_id}/metadata

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request

Parameter

+

Type

+

Mandatory

+

Description

+

metadata

+

Object

+

Yes

+

Specifies the user-defined metadata key-value pair.

+

For a metadata key:

+

A key contains a maximum of 255 Unicode characters and cannot be empty. A key can contain uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), hyphens (-), underscores (_), colons (:), and periods (.).

+

For a metadata value:

+

A value contains a maximum of 255 Unicode characters.

+
+
+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

metadata

+

Object

+

Specifies the user-defined metadata key-value pair.

+
+
+
+

Example Request

PUT https://{endpoint}/v2/{project_id}/servers/{server_id}/metadata
+PUT https://{endpoint}/v2.1/{project_id}/servers/{server_id}/metadata
+
{
+    "metadata": {
+            "key1": "value1",
+            "key2": "value2"
+    }
+}
+
+

Example Response

{
+    "metadata": {
+            "key1": "value1",
+            "key2": "value2"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0081529857.html b/ecs/api-ref/en-us_topic_0081529857.html new file mode 100644 index 000000000..92cc4ad7b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0081529857.html @@ -0,0 +1,73 @@ + + +

Adding an ECS to the Monitoring List

+

Function

This API is used to add an ECS to the monitoring list.

+

Ceilometer periodically collects monitoring data on the ECSs added to the monitoring list and reports the data to Cloud Eye. The data includes the platform version, CPU, memory, NICs, disks, and hardware version. For example, the plug-in of an SAP ECS periodically obtains monitoring data from Cloud Eye and reports the data to SAP in reports.

+
+

URI

POST /v1.0/servers/{server_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

monitorMetrics

+

Yes

+

Null

+

Enables monitoring on the ECS.

+
+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1.0/servers/{server_id}/action
+
{  
+   "monitorMetrics" : null 
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0081950549.html b/ecs/api-ref/en-us_topic_0081950549.html new file mode 100644 index 000000000..d056e63cc --- /dev/null +++ b/ecs/api-ref/en-us_topic_0081950549.html @@ -0,0 +1,104 @@ + + +

Disassociating an FPGA Image from an ECS Image

+

Function

This API is used to delete a mapping between an FPGA image and an ECS image.

+
+

URI

DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/association

+

Table 1 describes the parameters in the URI.

+ +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

fpga_image_id

+

Yes

+

Specifies the FPGA image ID.

+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Type

+

Mandatory

+

Description

+

image

+

Object

+

Yes

+

Specifies the ECS image.

+
+
+ +
+ + + + + + + + + + + +
Table 3 image field description

Parameter

+

Type

+

Mandatory

+

Description

+

id

+

String

+

Yes

+

Specifies the ECS image ID.

+
+
+
+

Response

None

+
+

Example Request

DELETE https://{endpoint}/v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/association
+
{
+  "image": {
+    "id": "18efee75-e058-4c52-a49c-9e3ba4d1c8de"
+  }
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0081950550.html b/ecs/api-ref/en-us_topic_0081950550.html new file mode 100644 index 000000000..e5d42988b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0081950550.html @@ -0,0 +1,247 @@ + + +

Querying Associations Between an FPGA Image and an ECS Image

+

Function

This API is used to query associations that are available to a tenant and between an FPGA image and an ECS image.

+
+

URI

GET /v1/{project_id}/cloudservers/fpga_image/associations?image_id={image_id}&fpga_image_id={fpga_image_id}&page={page}&size={size}

+

Table 1 describes the parameters in the URI.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

image_id

+

No

+

Specifies the ECS image ID.

+

fpga_image_id

+

No

+

Specifies the FPGA image ID.

+

page

+

No

+

Specifies the number of pages in a pagination query.

+

The value of this parameter must meet the following requirements:

+
  • Must be a decimal integer.
  • Ranges from 1 (inclusive) to 65,535 (exclusive).
  • Cannot contain +.
+

size

+

No

+

Specifies the maximum records displayed on a page in a pagination query.

+
  • Must be a decimal integer.
  • Ranges from 1 (inclusive) to 100 (inclusive).
  • Cannot contain +.
+
+
+
  • You can obtain the association only after specifying either fpga_image_id or image_id. Otherwise, only one empty list is returned.
  • Pagination query takes effect only if parameters page and size both have a value. If only one of them has a value, an error message indicating invalid parameter will be displayed. If both image_id and fpga_image_id are used, pagination query specified by page and size does not take effect.
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

associations

+

Array of objects

+

Specifies queried associations.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 associations field description

Parameter

+

Type

+

Description

+

image_id

+

String

+

Specifies the ECS ID.

+

fpgaimages

+

Array of objects

+

Specifies details of associated FPGA images.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 fpgaimages field description

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the FPGA image ID.

+

name

+

String

+

Specifies the FPGA image name.

+

description

+

String

+

Describes the FPGA image.

+

status

+

String

+

Specifies the FPGA image status. Options:

+
  • active: indicates that the FPGA image is available for use.
+

size

+

Integer

+

Specifies the size (MB) of the FPGA image file.

+

createdAt

+

String

+

Specifies the time when the FPGA image was created.

+

UTC time is used.

+

protected

+

Boolean

+

Specifies whether an FPGA image is protected.

+

If an FPGA image is protected, it is associated with an image used to create ECSs and cannot be deleted.

+

message

+

String

+

Specifies the FPGA image supplementation.

+

metadata

+

Object

+

Specifies the FPGA image metadata.

+

log_directory

+

String

+

Specifies the directory, in the format of "Bucket name:Directory", in which the log file for constructing the FPGA image is stored in OBS, for example, "obs-fpga:vu9p/log".

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/fpga_image/associations
+
+

Example Response

{ 
+  "associations": [ 
+    { 
+      "image_id": "89e38a0a-de83-4f3d-83b9-a2df2c605487", 
+      "fpgaimages": [ 
+        { 
+          "id": "4010a32b5f231f04015f24259efd0429", 
+          "name": "relate-test", 
+          "description": "relate-test", 
+          "status": "active", 
+          "size": 40, 
+          "createdAt": "2017-10-16 07:46:06", 
+          "protected": true, 
+          "message": null, 
+          "metadata": { 
+            "shell_type": "OCL", 
+            "shell_version": "1.0" 
+          },
+          "log_directory": "obs-fpga:vu9p/log"
+        }, 
+        { 
+          "id": "4010a32b5f231f04015f23f0c07c041a", 
+          "name": "name123", 
+          "description": "desc123", 
+          "status": "active", 
+          "size": 60, 
+          "createdAt": "2017-10-16 06:48:21", 
+          "protected": true, 
+          "message": null, 
+          "metadata": { 
+            "shell_type": "OCL", 
+            "shell_version": "1.0" 
+          },
+          "log_directory": "obs-fpga:vu9p/log"
+        } 
+      ] 
+    } 
+  ] 
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0090187679.html b/ecs/api-ref/en-us_topic_0090187679.html new file mode 100644 index 000000000..18abaf77b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0090187679.html @@ -0,0 +1,294 @@ + + +

Querying Security Groups (Discarded)

+

Function

This API is used to query security groups.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Querying Security Groups" in Virtual Private Network API Reference.

+
+

URI

GET /v2/{project_id}/os-security-groups

+

GET /v2.1/{project_id}/os-security-groups

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+

Pagination query is not supported.

+
+
+

Request

N/A

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

security_groups

+

Array of objects

+

Specifies security groups. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 security_group objects

Parameter

+

Type

+

Description

+

description

+

String

+

Specifies information about a security group. It must contain 0 to 255 characters.

+

id

+

String

+

Specifies the security group ID in UUID format.

+

name

+

String

+

Specifies the security group name. It must contain 0 to 255 characters.

+

rules

+

Array of objects

+

Specifies security group rules. For details, see Table 4.

+

tenant_id

+

String

+

Specifies the tenant or project ID.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 security_group_rule objects

Parameter

+

Type

+

Description

+

parent_group_id

+

String

+

Specifies the associated security group ID in UUID format.

+

ip_protocol

+

String

+

Specifies the protocol type or the IP protocol number. The value can be icmp, tcp, udp, or the IP protocol number.

+

from_port

+

Integer

+

Specifies the start port number. The value ranges from 1 to 65,535 and cannot be greater than to_port.

+

When ip_protocol is icmp, this parameter indicates the ICMP type field with a length from 0 to 255 characters.

+
NOTE:

The ICMP message type is determined by the type field and code field in the packet. For details, see Appendix > ICMP-Port Range Relationship Table in Virtual Private Cloud API Reference. port_range_min indicates the ICMP type field, and port_range_max indicates the ICMP code field.

+
+

to_port

+

Integer

+

Specifies the stop port number. The value ranges from 1 to 65,535 and cannot be less than from_port.

+

When ip_protocol is icmp, this parameter indicates the ICMP code field with a length from 0 to 255 characters.

+
NOTE:

The ICMP message type is determined by the type field and code field in the packet. For details, see Appendix > ICMP-Port Range Relationship Table in Virtual Private Cloud API Reference. port_range_min indicates the ICMP type, and port_range_max indicates the ICMP code.

+
+

ip_range

+

Object

+

Specifies the peer IP segment in CIDR format. For details, see Table 5.

+

Specify either ip_range or group.

+

group

+

Object

+

Specifies the name of the peer security group and the ID of the tenant in the peer security group. For details, see Table 6.

+

Specify either ip_range or group.

+

id

+

String

+

Specifies the security group rule ID in UUID format.

+
+
+ +
+ + + + + + + + + +
Table 5 ip_range objects

Parameter

+

Type

+

Description

+

cidr

+

String

+

Specifies the peer IP segment in CIDR format.

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 group objects

Parameter

+

Type

+

Description

+

tenant_id

+

String

+

Specifies the ID of the tenant of the peer security group.

+

name

+

String

+

Specifies the name of the peer security group.

+
+
+
+

Example Request

GET https://{endpoint}/v2/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups
+GET https://{endpoint}/v2.1/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups
+
+

Example Response

{
+    "security_groups": [
+        {
+            "rules": [
+                {
+                    "from_port": null,
+                    "group": {
+                        "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+                        "name": "default"
+                    },
+                    "ip_protocol": null,
+                    "to_port": null,
+                    "parent_group_id": "bc4ac1d1-dc77-4b7d-a97d-af86eb0dc450",
+                    "ip_range": {},
+                    "id": "bb3cc988-e06a-49f6-b668-600e8bf193ee"
+                },
+                {
+                    "from_port": null,
+                    "group": {
+                        "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+                        "name": "default"
+                    },
+                    "ip_protocol": null,
+                    "to_port": null,
+                    "parent_group_id": "bc4ac1d1-dc77-4b7d-a97d-af86eb0dc450",
+                    "ip_range": {},
+                    "id": "f9371051-d7e1-4be4-8748-77b1e0913730"
+                }
+            ],
+            "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+            "description": "default",
+            "id": "bc4ac1d1-dc77-4b7d-a97d-af86eb0dc450",
+            "name": "default"
+        },
+        {
+            "rules": [
+                {
+                    "from_port": 200,
+                    "group": {},
+                    "ip_protocol": "tcp",
+                    "to_port": 400,
+                    "parent_group_id": "b3e4b615-a40f-4e1c-92af-2e0d382141d5",
+                    "ip_range": {
+                        "cidr": "0.0.0.0/0"
+                    },
+                    "id": "3330120d-bbd1-4a73-bda9-0196a84d5670"
+                },
+                {
+                    "from_port": 201,
+                    "group": {},
+                    "ip_protocol": "tcp",
+                    "to_port": 400,
+                    "parent_group_id": "b3e4b615-a40f-4e1c-92af-2e0d382141d5",
+                    "ip_range": {
+                        "cidr": "0.0.0.0/0"
+                    },
+                    "id": "b550c9a6-970a-462d-984e-265e88020818"
+                }
+            ],
+            "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+            "description": "desc-sg",
+            "id": "b3e4b615-a40f-4e1c-92af-2e0d382141d5",
+            "name": "test-sg"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0090187680.html b/ecs/api-ref/en-us_topic_0090187680.html new file mode 100644 index 000000000..0cc030bb6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0090187680.html @@ -0,0 +1,182 @@ + + +

Creating a Security Group (Discarded)

+

Function

This API is used to create a security group.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Creating a Security Group" in Virtual Private Network API Reference.

+
+

URI

POST /v2/{project_id}/os-security-groups

+

POST /v2.1/{project_id}/os-security-groups

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

security_group

+

Yes

+

Object

+

Specifies the security group, which is configured in the message body. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 Objects of request parameter security_group

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Specifies the security group name. It must contain 0 to 255 characters.

+

description

+

No

+

String

+

Specifies information about a security group. It must contain 0 to 255 characters.

+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

security_group

+

Object

+

Specifies the security group. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 Objects of response parameter security_group

Parameter

+

Type

+

Description

+

description

+

String

+

Provides supplementary information about the security group.

+

id

+

String

+

Specifies the security group ID in UUID format.

+

name

+

String

+

Specifies the security group name.

+

rules

+

Array of objects

+

Specifies the rules of the security group. The list is empty.

+

tenant_id

+

String

+

Specifies the tenant or project ID.

+
+
+
+

Example Request

POST https://{endpoint}/v2/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups
+POST https://{endpoint}/v2.1/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups
+
{
+    "security_group": {
+        "name": "test",
+        "description": "description"
+    }
+}
+
+

Example Response

{
+    "security_group": {
+        "rules": [],
+        "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+        "description": "desc-sg",
+        "id": "81f1d23b-b1e2-42cd-bdee-359b4a065a42",
+        "name": "test-sg"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0090187681.html b/ecs/api-ref/en-us_topic_0090187681.html new file mode 100644 index 000000000..86c49b601 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0090187681.html @@ -0,0 +1,244 @@ + + +

Querying Details About a Security Group (Discarded)

+

Function

This API is used to query details about a security group.

+

This API can only query the inbound security group rules. To query the outbound security group rules, see "Querying a Security Group" in "Security Group (Native OpenStack API)" in the Virtual Private Cloud API Reference.

+

This API has been discarded. Use the API described in section "Security Group (OpenStack Neutron APIs) > Querying a Security Group" in Virtual Private Network API Reference.

+
+

URI

GET /v2/{project_id}/os-security-groups/{security_group_id}

+

GET /v2.1/{project_id}/os-security-groups/{security_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

security_group_id

+

Yes

+

Specifies the security group ID, which is specified in the URI.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

security_group

+

+

Object

+

Specifies the security group. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 security_group objects

Parameter

+

Type

+

Description

+

description

+

String

+

Specifies information about a security group. It must contain 0 to 255 characters.

+

id

+

String

+

Specifies the security group ID in UUID format.

+

name

+

String

+

Specifies the security group name. It must contain 0 to 255 characters.

+

rules

+

Array of objects

+

Specifies security group rules. For details, see Table 4.

+

tenant_id

+

String

+

Specifies the tenant or project ID.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 security_group_rule objects

Parameter

+

Type

+

Description

+

parent_group_id

+

String

+

Specifies the associated security group ID in UUID format.

+

ip_protocol

+

String

+

Specifies the protocol type or the IP protocol number. The value can be icmp, tcp, udp, or the IP protocol number.

+

from_port

+

Integer

+

Specifies the start port number. The value ranges from 1 to 65,535 and cannot be greater than to_port.

+

When ip_protocol is icmp, this parameter indicates the ICMP type field with a length from 0 to 255 characters.

+
NOTE:

The ICMP message type is determined by the type field and code field in the packet. For details, see Appendix > ICMP-Port Range Relationship Table in Virtual Private Cloud API Reference. port_range_min indicates the ICMP type, and port_range_max indicates the ICMP code.

+
+

to_port

+

Integer

+

Specifies the stop port number. The value ranges from 1 to 65,535 and cannot be less than from_port.

+

When ip_protocol is icmp, this parameter indicates the ICMP code field with a length from 0 to 255 characters.

+
NOTE:

The ICMP message type is determined by the type field and code field in the packet. For details, see Appendix > ICMP-Port Range Relationship Table in Virtual Private Cloud API Reference. port_range_min indicates the ICMP type, and port_range_max indicates the ICMP code.

+
+

ip_range

+

Object

+

Specifies the peer IP segment in CIDR format. For details, see Table 5.

+

Specify either ip_range or group.

+

group

+

Object

+

Specifies the name of the peer security group and the ID of the tenant in the peer security group. For details, see Table 6.

+

Specify either ip_range or group.

+

id

+

String

+

Specifies the security group rule ID.

+
+
+ +
+ + + + + + + + + +
Table 5 ip_range objects

Parameter

+

Type

+

Description

+

cidr

+

String

+

Specifies the peer IP segment in CIDR format.

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 group objects

Parameter

+

Type

+

Description

+

tenant_id

+

String

+

Specifies the ID of the tenant of the peer security group.

+

name

+

String

+

Specifies the name of the peer security group.

+
+
+
+

Example Request

GET https://{endpoint}/v2/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups/81f1d23b-b1e2-42cd-bdee-359b4a065a42
+GET https://{endpoint}/v2.1/bb1118612ba64af3a6ea63a1bdcaa5ae/os-security-groups/81f1d23b-b1e2-42cd-bdee-359b4a065a42
+
+

Example Response

{
+    "security_group": {
+        "rules": [],
+        "tenant_id": "bb1118612ba64af3a6ea63a1bdcaa5ae",
+        "id": "81f1d23b-b1e2-42cd-bdee-359b4a065a42",
+        "name": "test-sg",
+        "description": "desc-sg"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0101860613.html b/ecs/api-ref/en-us_topic_0101860613.html new file mode 100644 index 000000000..97eec82f3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0101860613.html @@ -0,0 +1,204 @@ + + +

Querying Disk Attachment of an ECS

+

Function

This API is used to query disk attachment of an ECS.

+
+

URI

GET /v2.1/servers/{server_id}/block_device

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

server_id

+

Yes

+

Specifies the ECS ID in UUID format.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

volumeAttachments

+

Array of objects

+

Specifies the disks attached to an ECS. For details, see Table 3.

+

attachableQuantity

+

Object

+

Specifies the number of disks that can be attached to an ECS. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 volumeAttachments parameters

Parameter

+

Type

+

Description

+

serverId

+

String

+

Specifies the ECS ID in UUID format.

+

volumeId

+

String

+

Specifies the EVS disk ID in UUID format.

+

id

+

String

+

Specifies the mount ID, which is the same as the EVS disk ID.

+

The value is in UUID format.

+

size

+

Integer

+

Specifies the EVS disk size in GB.

+

device

+

String

+

Specifies the drive letter of the EVS disk, which is the device name of the EVS disk.

+

pciAddress

+

String

+

Specifies the PCI address.

+

bootIndex

+

Boolean

+

Specifies the EVS disk boot sequence.

+
  • 0 indicates the system disk.
  • Non-0 indicates a data disk.
+

bus

+

String

+

Indicates the disk bus type.

+

Options: virtio and scsi

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 4 attachableQuantity parameters

Parameter

+

Type

+

Description

+

free_scsi

+

Integer

+

Specifies the number of SCSI disks that can be attached to an ECS.

+

free_blk

+

Integer

+

Specifies the number of virtio_blk disks that can be attached to an ECS.

+

free_disk

+

Integer

+

Specifies the total number of disks that can be attached to an ECS.

+
+
+
+
+

Example Request

GET https://{endpoint}/v2.1/servers/4d8c3732-a248-40ed-bebc-539a6ffd25c0/block_device
+
+

Example Response

{
+    "attachableQuantity": {
+            "free_scsi": 23,
+            "free_blk": 15,
+            "free_disk": 23
+     },
+    "volumeAttachments": [
+        {
+            "pciAddress": "0000:02:01.0",
+            "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
+            "device": "/dev/vda",
+            "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
+            "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
+            "size": "40",
+            "bootIndex": 0,
+            "bus":"virtio"
+        },
+        {
+            "pciAddress": "0000:02:02.0",
+            "volumeId": "a26887c6-c47b-4654-abb5-asdf234r234r",
+            "device": "/dev/vdb",
+            "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
+            "id": "a26887c6-c47b-4654-abb5-asdf234r234r",
+            "size": "10",
+            "bootIndex": 1,
+            "bus":"virtio"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0101860614.html b/ecs/api-ref/en-us_topic_0101860614.html new file mode 100644 index 000000000..98b00479b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0101860614.html @@ -0,0 +1,154 @@ + + +

Querying a Single Disk Attached to an ECS

+

Function

This API is used to query a disk attached to an ECS.

+
+

URI

GET /v2.1/servers/{server_id}/block_device/{volume_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

server_id

+

Yes

+

Specifies the ECS ID in UUID format.

+

volume_id

+

Yes

+

Specifies the EVS disk ID in UUID format.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters. +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

volumeAttachment

+

Object

+

Specifies the disk attached to an ECS. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 volumeAttachment parameters

Parameter

+

Type

+

Description

+

serverId

+

String

+

Specifies the ECS ID in UUID format.

+

volumeId

+

String

+

Specifies the EVS disk ID in UUID format.

+

id

+

String

+

Specifies the mount ID, which is the same as the EVS disk ID.

+

The value is in UUID format.

+

size

+

Integer

+

Specifies the EVS disk size in GB.

+

device

+

String

+

Specifies the drive letter of the EVS disk, which is the device name of the EVS disk.

+

pciAddress

+

String

+

Specifies the PCI address.

+

bootIndex

+

Boolean

+

Specifies the EVS disk boot sequence.

+
  • 0 indicates the system disk.
  • Non-0 indicates a data disk.
+

bus

+

String

+

Specifies the disk bus type.

+

Options: virtio and scsi

+
+
+
+
+

Example Request

GET https://{endpoint}/v2.1/servers/{server_id}/block_device/{volume_id}
+
+

Example Response

{
+    "volumeAttachment": {
+        "pciAddress": "0000:02:01.0",
+        "volumeId": "a26887c6-c47b-4654-abb5-asdf234r234r",
+        "device": "/dev/vda",
+        "serverId": "4d8c3732-a248-40ed-bebc-539a6ffd25c0",
+        "id": "a26887c6-c47b-4654-abb5-asdf234r234r",
+        "size": "40",
+        "bootIndex": 0,
+        "bus":"virtio"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0102606095.html b/ecs/api-ref/en-us_topic_0102606095.html new file mode 100644 index 000000000..fd6d97cc4 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0102606095.html @@ -0,0 +1,323 @@ + + +

Querying ECSs by Tag

+

Function

This API is used to filter ECSs by tag and obtain all tags of an ECS.

+
+

URI

POST /v1/{project_id}/servers/resource_instances/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

No

+

Array of objects

+

Displays the ECSs with all the specified tags. For details, see Table 3.

+
  • A maximum of 10 keys are included. Each key can have a maximum of 10 values.
  • The structure body must be included.
  • This field cannot be left blank.
  • A key must be unique.
  • Values of the same key must be unique.
+

not_tags

+

No

+

Array of strings

+

Displays the ECSs with none of specified tags.

+
  • A maximum of 10 keys are included. Each key can have a maximum of 10 values.
  • The structure body must be included.
  • This field cannot be left blank.
  • Keys must be unique.
  • Values of the same key must be unique.
+

limit

+

No

+

String

+

Limits the maximum number of queried ECSs. The value cannot be a negative number. The maximum value is 1000.

+
  • If the action value is count, this parameter is invalid.
  • If the action value is filter, the default value is 1000.
+

offset

+

No

+

String

+

Specifies index position. The query starts from the next piece of data indexed by this parameter. The value must be a number and cannot be a negative number.

+

This parameter is not required when data on the first page is queried. When you query the subsequent page data, the value in the response body for the query of the data on the previous page is contained in this parameter.

+
  • If the action value is count, this parameter is invalid.
  • If the action value is filter, the default value is 0.
+

action

+

Yes

+

String

+

Specifies the operation, which can be filter or count.

+
  • filter: filters ECSs by tag. The ECSs that meet the filter criteria are displayed on pages.
  • count: searches ECSs by tag. The number of ECSs that meet the search criteria is displayed.
+

matches

+

No

+

Array of objects

+

Specifies the search field, which is used to search for ECSs.

+

Currently, only resource_name can be used for search. For more information, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 tag field description

Parameter

+

Mandatory

+

Type

+

Description

+

key

+

Yes

+

String

+

Specifies the tag key.

+
  • A key contains a maximum of 127 Unicode characters.
  • This field cannot be left blank.
+

values

+

No

+

Array of strings

+

Specifies the tag value.

+
  • Each tag contains a maximum of 10 values.
  • Values of the same tag must be unique.
  • Each value contains a maximum of 255 Unicode characters.
  • If this parameter is not specified, any value can be used.
  • The values are in the OR relationship.
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 match field description

Parameter

+

Mandatory

+

Type

+

Description

+

key

+

Yes

+

String

+

Specifies the key field to be matched.

+

The tag key can only be resource_name. In such a case, the tag value is the ECS name.

+
  • The key must be unique, and the value is used for matching.
  • This field is a fixed dictionary value.
  • This field cannot be left blank.
+

value

+

Yes

+

String

+

Specifies the tag value.

+

The tag key can only be resource_name. In such a case, the tag value is the ECS name.

+
  • Each value contains a maximum of 255 Unicode characters.
  • This field cannot be left blank.
+
+
+
+
+

Response

Table 5 describes the response parameters.

+ +
+ + + + + + + + + + + + + +
Table 5 Response parameters

Parameter

+

Type

+

Description

+

resources

+

Array of objects

+

Specifies returned ECSs. For details, see Table 6.

+

total_count

+

Integer

+

Specifies the total number of queried ECSs.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 6 resource field description

Parameter

+

Type

+

Description

+

resource_id

+

String

+

Specifies the ECS ID.

+

resource_detail

+

String

+

Queries ECS details.

+

tags

+

Array of objects

+

Specifies tags.

+

resource_name

+

String

+

Specifies the resource name, which is the ECS name.

+
+
+ +
+ + + + + + + + + + + + + +
Table 7 resource_tag field description

Parameter

+

Type

+

Description

+

key

+

String

+

Specifies the tag key.

+
  • It contains a maximum of 36 Unicode characters.
  • This field cannot be left blank.
  • Can only consist of digits, letters, hyphens (-), and underscores (_).
+

value

+

String

+

Specifies the tag value.

+
  • Each value contains a maximum of 43 Unicode characters.
  • This field can be left blank.
  • Can only consist of digits, letters, hyphens (-), and underscores (_).
+
+
+
+

Example Request

POST https://{endpoint}/v1/{project_id}/servers/resource_instances/action
+
{
+    "offset": "100", 
+    "limit": "100", 
+    "action": "filter", 
+    "matches":[
+    {
+        "key": "resource_name", 
+        "value": "ecs_test"
+     }], 
+    "tags": [
+    {
+        "key": "key1", 
+        "values": [
+            "value1", 
+            "value2"
+        ]
+    }]
+}
+
+

Example Response

+ +
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071509.html b/ecs/api-ref/en-us_topic_0103071509.html new file mode 100644 index 000000000..3a36f0772 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071509.html @@ -0,0 +1,48 @@ + + +

Permissions Policies and Supported Actions

+

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071510.html b/ecs/api-ref/en-us_topic_0103071510.html new file mode 100644 index 000000000..99d978dca --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071510.html @@ -0,0 +1,151 @@ + + +

Lifecycle Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Creating an ECS

+

POST /v1/{project_id}/cloudservers

+
  • Assigning a New EIP

    ecs:cloudServers:create

    +
  • Using an Existing EIP

    ecs:cloudServers:create

    +
+
  • Assigning a New EIP

    vpc:publicIps:create

    +
  • Using an Existing EIP

    vpc:publicIps:update

    +
+

Deleting ECSs

+

POST /v1/{project_id}/cloudservers/delete

+

ecs:cloudServers:delete

+

N/A

+

Querying Details About ECSs (Native OpenStack API)

+

GET /v2/{project_id}/servers/detail

+

GET /v2.1/{project_id}/servers/detail

+

ecs:servers:list

+

ecs:servers:get

+

ecs:serverVolumes:use

+

ecs:diskConfigs:use

+

ecs:securityGroups:use

+

ecs:serverKeypairs:get

+

vpc:securityGroups:get

+

vpc:securityGroupRules:get

+

vpc:networks:get

+

vpc:subnets:get

+

vpc:ports:get

+

vpc:routers:get

+

Querying ECSs (Native OpenStack API)

+

GET /v2/{project_id}/servers

+

GET /v2.1/{project_id}/servers

+

ecs:servers:list

+

N/A

+

Querying Details About an ECS (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}

+

GET /v2.1/{project_id}/servers/{server_id}

+

ecs:servers:get

+

ecs:serverVolumes:use

+

ecs:diskConfigs:use

+

ecs:securityGroups:use

+

ecs:serverKeypairs:get

+

vpc:securityGroups:get

+

vpc:securityGroupRules:get

+

vpc:networks:get

+

vpc:subnets:get

+

vpc:ports:get

+

vpc:routers:get

+

Creating an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers

+

POST /v2/{project_id}/os-volumes_boot

+

POST /v2.1/{project_id}/servers

+

POST /v2.1/{project_id}/os-volumes_boot

+

ecs:servers:create

+

ecs:servers:get

+

ecs:serverInterfaces:use

+

ecs:serverInterfaces:get

+

ecs:flavors:get

+

ecs:securityGroups:use

+

evs:volumes:list

+

evs:volumes:get

+

evs:volumes:create

+

evs:volumes:attach

+

evs:volumes:manage

+

vpc:securityGroups:get

+

vpc:networks:get

+

vpc:networks:update

+

vpc:subnets:get

+

vpc:subnets:update

+

vpc:ports:create

+

vpc:ports:update

+

vpc:ports:get

+

vpc:ports:delete

+

vpc:networks:create

+

vpc:subnets:create

+

vpc:routers:get

+

vpc:routers:update

+

ims:images:list

+

ims:images:get

+

Deleting an ECS (Native OpenStack API)

+

DELETE /v2/{project_id}/servers/{server_id}

+

DELETE /v2.1/{project_id}/servers/{server_id}

+

ecs:servers:delete

+

N/A

+

Modifying an ECS (Native OpenStack API)

+

PUT /v2/{project_id}/servers/{server_id}

+

PUT /v2.1/{project_id}/servers/{server_id}

+

ecs:servers:update

+

ecs:servers:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071511.html b/ecs/api-ref/en-us_topic_0103071511.html new file mode 100644 index 000000000..9ece13828 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071511.html @@ -0,0 +1,134 @@ + + +

ECS Status Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Changing an ECS OS

+

POST /v2/{project_id}/cloudservers/{server_id}/changeos

+

ecs:cloudServers:changeOS

+

N/A

+

Reinstalling an ECS OS

+

POST /v2/{project_id}/cloudservers/{server_id}/reinstallos

+

ecs:cloudServers:rebuild

+

N/A

+

Modifying the Specifications of an ECS

+

POST /v1/{project_id}/cloudservers/{server_id}/resize

+

ecs:cloudServers:resize

+

N/A

+

Cold Migrating an ECS

+

POST /v1/{project_id}/cloudservers/{server_id}/migrate

+

ecs:cloudServers:migrate

+

N/A

+

Stopping an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:stop

+

ecs:servers:get

+

Restarting an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:reboot

+

ecs:servers:get

+

Modifying the Specifications of an ECS (Native OpenStack API)

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:resize

+

ecs:servers:get

+

evs:volumes:list

+

evs:volumes:create

+

evs:volumes:get

+

evs:volumes:attach

+

evs:volumes:detach

+

evs:volumes:manage

+

vpc:ports:get

+

vpc:ports:update

+

vpc:ports:create

+

vpc:ports:delete

+

Rebuilding an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:rebuild

+

ecs:servers:get

+

ecs:servers:update

+

ims:images:get

+

ims:images:list

+

ims:images:update

+

Locking an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:lock

+

ecs:servers:get

+

Unlocking an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:unlock

+

ecs:servers:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071513.html b/ecs/api-ref/en-us_topic_0103071513.html new file mode 100644 index 000000000..6b2ae5331 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071513.html @@ -0,0 +1,105 @@ + + +

NIC Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Deleting NICs from an ECS in a Batch

+

POST /v1/{project_id}/cloudservers/{server_id}/nics/delete

+

ecs:cloudServerNics:delete

+

N/A

+

Adding NICs to an ECS in a Batch

+

POST /v1/{project_id}/cloudservers/{server_id}/nics

+

ecs:cloudServers:addNics

+

N/A

+

Adding an ECS NIC (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/os-interface

+

POST /v2.1/{project_id}/servers/{server_id}/os-interface

+

ecs:serverInterfaces:use

+

ecs:serverInterfaces:get

+

vpc:networks:get

+

vpc:networks:update

+

vpc:subnets:get

+

vpc:subnets:update

+

vpc:ports:create

+

vpc:ports:update

+

vpc:ports:get

+

vpc:networks:create

+

vpc:subnets:create

+

vpc:routers:get

+

vpc:routers:update

+

Deleting an ECS NIC (Native OpenStack API)

+

DELETE /v2/{project_id}/servers/{server_id}/os-interface/{id}

+

DELETE /v2.1/{project_id}/servers/{server_id}/os-interface/{id}

+

ecs:serverInterfaces:use

+

ecs:serverInterfaces:get

+

ecs:servers:get

+

vpc:networks:create

+

vpc:subnets:create

+

vpc:networks:get

+

vpc:networks:update

+

vpc:subnets:get

+

vpc:subnets:update

+

vpc:ports:delete

+

vpc:ports:update

+

vpc:ports:get

+

vpc:routers:get

+

vpc:routers:update

+

Querying ECS NICs (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/os-interface

+

GET /v2.1/{project_id}/servers/{server_id}/os-interface

+

ecs:serverInterfaces:get

+

vpc:ports:get

+

Querying NIC Information About an ECS (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/os-interface/{id}

+

GET /v2.1/{project_id}/servers/{server_id}/os-interface/{id}

+

ecs:serverInterfaces:get

+

vpc:ports:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071514.html b/ecs/api-ref/en-us_topic_0103071514.html new file mode 100644 index 000000000..f5376cc67 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071514.html @@ -0,0 +1,147 @@ + + +

Disk Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Detaching a Disk from a Specified ECS

+

DELETE /v1/{project_id}/cloudservers/{server_id}/detachvolume/{attachment_id}

+

ecs:cloudServers:detachVolume

+

N/A

+

Attaching a Disk to an ECS

+

POST /v1/{project_id}/cloudservers/{server_id}/attachvolume

+

ecs:cloudServers:attach

+

evs:volumes:use

+

Attaching a Disk from an ECS (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/os-volume_attachments

+

POST /v2.1/{project_id}/servers/{server_id}/os-volume_attachments

+

ecs:serverVolumeAttachments:create

+

ecs:serverVolumes:use

+

evs:volumes:list

+

evs:volumes:get

+

evs:volumes:update

+

evs:volumes:attach

+

evs:volumes:manage

+

Detaching a Disk from an ECS (Native OpenStack API)

+

DELETE /v2/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

DELETE /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

ecs:serverVolumeAttachments:delete

+

ecs:serverVolumes:use

+

evs:volumes:list

+

evs:volumes:get

+

evs:volumes:update

+

evs:volumes:detach

+

evs:volumes:manage

+

Querying Information About the Disks Attached to an ECS (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/os-volume_attachments

+

GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments

+

ecs:serverVolumeAttachments:list

+

ecs:serverVolumes:use

+

ecs:servers:get

+

Querying Information About a Disk Attached to an ECS (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}

+

ecs:serverVolumeAttachments:get

+

ecs:serverVolumes:use

+

Creating a Disk (Native OpenStack API)

+

POST /v2/{project_id}/os-volumes

+

POST /v2.1/{project_id}/os-volumes

+

ecs:serverVolumes:use

+

evs:volumes:create

+

Deleting a Disk (Native OpenStack API)

+

DELETE /v2/{project_id}/os-volumes/{volume_id}

+

DELETE /v2.1/{project_id}/os-volumes/{volume_id}

+

ecs:serverVolumes:use

+

evs:volumes:get

+

evs:volumes:delete

+

Querying a Disk (Native OpenStack API)

+

GET /v2/{project_id}/os-volumes/{volume_id}

+

GET /v2.1/{project_id}/os-volumes/{volume_id}

+

ecs:serverVolumes:use

+

evs:volumes:get

+

Querying Disks (Native OpenStack API)

+

GET /v2/{project_id}/os-volumes

+

GET /v2.1/{project_id}/os-volumes

+

ecs:serverVolumes:use

+

evs:volumes:get

+

evs:volumes:list

+

Querying Detailed Disk Information (Native OpenStack API)

+

GET /v2/{project_id}/os-volumes/detail

+

GET /v2.1/{project_id}/os-volumes/detail

+

ecs:serverVolumes:use

+

evs:volumes:get

+

evs:volumes:list

+
+
+

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071515.html b/ecs/api-ref/en-us_topic_0103071515.html new file mode 100644 index 000000000..fdc94a160 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071515.html @@ -0,0 +1,64 @@ + + +

SSH Key Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Creating and Importing an SSH Key Pair (Native OpenStack API)

+

POST /v2/{project_id}/os-keypairs

+

POST /v2.1/{project_id}/os-keypairs

+

ecs:serverKeypairs:create

+

N/A

+

Querying an SSH Key Pair (Native OpenStack API)

+

GET /v2/{project_id}/os-keypairs/{keypair_name}

+

GET /v2.1/{project_id}/os-keypairs/{keypair_name}

+

ecs:serverKeypairs:get

+

N/A

+

Querying SSH Key Pairs (Native OpenStack API)

+

GET /v2/{project_id}/os-keypairs

+

GET /v2.1/{project_id}/os-keypairs

+

ecs:serverKeypairs:list

+

N/A

+

Deleting an SSH Key Pair (Native OpenStack API)

+

DELETE /v2/{project_id}/os-keypairs/{keypair_name}

+

DELETE /v2.1/{project_id}/os-keypairs/{keypair_name}

+

ecs:serverKeypairs:delete

+

N/A

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071516.html b/ecs/api-ref/en-us_topic_0103071516.html new file mode 100644 index 000000000..99e725c35 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071516.html @@ -0,0 +1,102 @@ + + +

Metadata Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Querying ECS Metadata (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/metadata

+

GET /v2.1/{project_id}/servers/{server_id}/metadata

+

ecs:servers:listMetadata

+

N/A

+

Querying Metadata of an ECS Key (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/metadata/{key}

+

GET /v2.1/{project_id}/servers/{server_id}/metadata/{key}

+

ecs:servers:getMetadata

+

N/A

+

Deleting Specified ECS Metadata (Native OpenStack API)

+

DELETE /v2/{project_id}/servers/{server_id}/metadata/{key}

+

DELETE /v2.1/{project_id}/servers/{server_id}/metadata/{key}

+

ecs:servers:setMetadata

+

N/A

+

Modifying the Key Value in Metadata of an ECS (Native OpenStack API)

+

PUT /v2/{project_id}/servers/{server_id}/metadata/{key}

+

PUT /v2.1/{project_id}/servers/{server_id}/metadata/{key}

+

ecs:servers:setMetadata

+

N/A

+

Updating ECS Metadata (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/metadata

+

POST /v2.1/{project_id}/servers/{server_id}/metadata

+

ecs:servers:setMetadata

+

N/A

+

Configuring ECS Metadata (Native OpenStack API)

+

PUT /v2/{project_id}/servers/{server_id}/metadata

+

PUT /v2.1/{project_id}/servers/{server_id}/metadata

+

ecs:servers:setMetadata

+

ecs:servers:get

+

Managing Automatic Recovery of an ECS

+

PUT /v1/{project_id}/cloudservers/{server_id}/autorecovery

+

ecs:cloudServers:setAutoRecovery

+

N/A

+

Querying Automatic Recovery of an ECS

+

GET /v1/{project_id}/cloudservers/{server_id}/autorecovery

+

ecs:cloudServers:getAutoRecovery

+

N/A

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071517.html b/ecs/api-ref/en-us_topic_0103071517.html new file mode 100644 index 000000000..1cac3a9f9 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071517.html @@ -0,0 +1,53 @@ + + +

Tenant Quota Management

+
+
+ + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Querying the Tenant Quota

+

GET /v1/{project_id}/cloudservers/limits

+

ecs:cloudServerQuotas:get

+

-

+

Querying Quotas of a Tenant (Native OpenStack API)

+

GET /v2/{project_id}/os-quota-sets/{project_id}?user_id={user_id}

+

GET /v2.1/{project_id}/os-quota-sets/{project_id}?user_id={user_id}

+

ecs:quotas:get

+

-

+

Querying Default Quotas (Native OpenStack API)

+

GET /v2/{project_id}/os-quota-sets/{project_id}/defaults

+

GET /v2.1/{project_id}/os-quota-sets/{project_id}/defaults

+

ecs:quotas:get

+

-

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071519.html b/ecs/api-ref/en-us_topic_0103071519.html new file mode 100644 index 000000000..d838693c6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071519.html @@ -0,0 +1,34 @@ + + +

AZ Management

+
+
+ + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Querying AZs (Native OpenStack API)

+

GET /v2/{project_id}/os-availability-zone

+

GET /v2.1/{project_id}/os-availability-zone

+

ecs:availabilityZones:list

+

-

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071520.html b/ecs/api-ref/en-us_topic_0103071520.html new file mode 100644 index 000000000..79b536aa2 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071520.html @@ -0,0 +1,118 @@ + + +

ECS Group Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Deleting an ECS Group

+

DELETE /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}

+

ecs:cloudServers:delete

+

N/A

+

Creating an ECS Group

+

POST /v1{project_id}/cloudservers/os-server-groups

+

ecs:cloudServers:create

+

N/A

+

Adding an ECS to an ECS Group

+

POST /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}/action

+

ecs:cloudServers:create

+

N/A

+

Removing an ECS from an ECS Group

+

POST /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}/action

+

ecs:cloudServers:delete

+

N/A

+

Querying ECS Groups

+

GET /v1/{project_id}/cloudservers/os-server-groups

+

ecs:cloudServers:list

+

N/A

+

Querying Details About an ECS Group

+

GET /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}

+

ecs:cloudServers:get

+

N/A

+

Creating an ECS Group (Native OpenStack API)

+

POST /v2/{project_id}/os-server-groups

+

POST /v2.1/{project_id}/os-server-groups

+

ecs:serverGroups:manage

+

N/A

+

Querying ECS Groups (Native OpenStack API)

+

GET /v2/{project_id}/os-server-groups

+

GET /v2.1/{project_id}/os-server-groups

+

ecs:serverGroups:manage

+

N/A

+

Querying Details About an ECS Group (Native OpenStack API)

+

GET /v2/{project_id}/os-server-groups/{server_group_id}

+

GET /v2.1/{project_id}/os-server-groups/{server_group_id}

+

ecs:serverGroups:manage

+

N/A

+

Deleting an ECS Group (Native OpenStack API)

+

DELETE /v2/{project_id}/os-server-groups/{server_group_id}

+

DELETE /v2.1/{project_id}/os-server-groups/{server_group_id}

+

ecs:serverGroups:manage

+

N/A

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071521.html b/ecs/api-ref/en-us_topic_0103071521.html new file mode 100644 index 000000000..f017efbc7 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071521.html @@ -0,0 +1,139 @@ + + +

Tag Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Adding or Deleting Tags to or from an ECS in a Batch

+

POST /v1/{project_id}/cloudservers/{server_id}/tags/action

+

ecs:cloudServers:put

+

N/A

+

Querying Project Tags

+

GET /v1/{project_id}/cloudservers/tags

+

ecs:cloudServers:list

+

N/A

+

Adding Tags in a Batch

+

Deleting Tags in a Batch

+

POST /v1/{project_id}/servers/{server_id}/tags/action

+

ecs:servers:setTags

+

N/A

+

Querying ECSs by Tag

+

POST /v1/{project_id}/servers/resource_instances/action

+

ecs:servers:getTags

+

N/A

+

Querying Project Tags

+

GET /v1/{project_id}/servers/tags

+

ecs:servers:getTags

+

N/A

+

Querying Tags of an ECS

+

GET /v1/{project_id}/servers/{server_id}/tags

+

ecs:servers:getTags

+

N/A

+

Querying Tags of a Specified ECS (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/tags

+

GET /v2.1/{project_id}/servers/{server_id}/tags

+

ecs:servers:getTags

+

ecs:servers:get

+

Adding a Tag to an ECS (Native OpenStack API)

+

PUT /v2/{project_id}/servers/{server_id}/tags/{tag}

+

PUT /v2.1/{project_id}/servers/{server_id}/tags/{tag}

+

ecs:servers:setTags

+

ecs:servers:get

+

Creating an ECS Tag (Native OpenStack API)

+

PUT /v2/{project_id}/servers/{server_id}/tags

+

PUT /v2.1/{project_id}/servers/{server_id}/tags

+

ecs:servers:setTags

+

ecs:servers:get

+

Deleting a Specified Tag from an ECS (Native OpenStack API)

+

DELETE /v2/{project_id}/servers/{server_id}/tags/{tag}

+

DELETE /v2.1/{project_id}/servers/{server_id}/tags/{tag}

+

ecs:servers:setTags

+

ecs:servers:get

+

Querying an ECS Tag (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/tags/{tag}

+

GET /v2.1/{project_id}/servers/{server_id}/tags/{tag}

+

ecs:servers:getTags

+

ecs:servers:get

+

Deleting All ECS Tags (Native OpenStack API)

+

DELETE /v2/{project_id}/servers/{server_id}/tags

+

DELETE /v2.1/{project_id}/servers/{server_id}/tags

+

ecs:servers:setTags

+

ecs:servers:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103071522.html b/ecs/api-ref/en-us_topic_0103071522.html new file mode 100644 index 000000000..9b9e193da --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103071522.html @@ -0,0 +1,43 @@ + + +

Specifications Query

+
+
+ + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Querying Specifications and Expansion Details About ECSs

+

GET /v1/{project_id}/cloudservers/flavors

+

ecs:cloudServerFlavors:get

+

N/A

+

Querying Details About extra_specs of an ECS (Native OpenStack API)

+

GET /v2/{project_id}/flavors/{flavors_id}/os-extra_specs

+

GET /v2.1/{project_id}/flavors/{flavors_id}/os-extra_specs

+

ecs:flavors:get

+

N/A

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103072347.html b/ecs/api-ref/en-us_topic_0103072347.html new file mode 100644 index 000000000..0fb1391a8 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103072347.html @@ -0,0 +1,145 @@ + + +

Security Group Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Creating a Security Group (Native OpenStack API)

+

POST /v2/{project_id}/os-security-groups

+

POST /v2.1/{project_id}/os-security-groups

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

vpc:securityGroups:create

+

vpc:securityGroups:update

+

Deleting a Security Group (Native OpenStack API)

+

DELETE /v2/{project_id}/os-security-groups/{security_group_id}

+

DELETE /v2.1/{project_id}/os-security-groups/{security_group_id}

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

vpc:securityGroups:delete

+

vpc:securityGroups:update

+

Querying Details About a Security Group (Native OpenStack API)

+

GET /v2/{project_id}/os-security-groups/{security_group_id}

+

GET /v2.1/{project_id}/os-security-groups/{security_group_id}

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

Querying Security Groups (Native OpenStack API)

+

GET /v2/{project_id}/os-security-groups

+

GET /v2.1/{project_id}/os-security-groups

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

Creating a Security Group Rule (Native OpenStack API)

+

POST /v2/{project_id}/os-security-group-rules

+

POST /v2.1/{project_id}/os-security-group-rules

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

vpc:securityGroups:update

+

vpc:securityGroupRules:get

+

vpc:securityGroupRules:create

+

Deleting a Security Group Rule (Native OpenStack API)

+

DELETE /v2/{project_id}/os-security-group-rules/{security_group_rule_id}

+

DELETE /v2.1/{project_id}/os-security-group-rules/{security_group_rule_id}

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

vpc:securityGroups:update

+

vpc:securityGroupRules:get

+

vpc:securityGroupRules:delete

+

Updating Information About a Security Group (Native OpenStack API)

+

PUT /v2/{project_id}/os-security-groups/{security_group_id}

+

PUT /v2.1/{project_id}/os-security-groups/{security_group_id}

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

vpc:securityGroups:update

+

Querying Security Groups to Which an ECS Belongs (Native OpenStack API)

+

GET /v2/{project_id}/servers/{server_id}/os-security-groups

+

GET /v2.1/{project_id}/servers/{server_id}/os-security-groups

+

ecs:securityGroups:use

+

vpc:securityGroups:get

+

Adding a Security Group (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:securityGroups:use

+

ecs:servers:get

+

vpc:securityGroups:get

+

vpc:securityGroups:create

+

vpc:securityGroups:update

+

vpc:ports:get

+

vpc:ports:update

+

Removing a Security Group (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:securityGroups:use

+

ecs:servers:get

+

vpc:securityGroups:get

+

vpc:securityGroups:delete

+

vpc:securityGroups:update

+

vpc:ports:get

+

vpc:ports:update

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103072348.html b/ecs/api-ref/en-us_topic_0103072348.html new file mode 100644 index 000000000..7a94271c6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103072348.html @@ -0,0 +1,40 @@ + + +

Image Management

+
+
+ + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Creating an Image (Native OpenStack API)

+

POST /v2/{project_id}/servers/{server_id}/action

+

POST /v2.1/{project_id}/servers/{server_id}/action

+

ecs:servers:createImage

+

evs:volumes:get

+

evs:snapshots:create

+

ims:images:create

+

ims:images:get

+

ims:images:list

+

ims:images:update

+

ims:images:delete

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103072349.html b/ecs/api-ref/en-us_topic_0103072349.html new file mode 100644 index 000000000..2f0eed95d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103072349.html @@ -0,0 +1,72 @@ + + +

Floating IP Address Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Allocating a Floating IP Address (Native OpenStack API)

+

POST /v2/{project_id}/os-floating-ips

+

POST /v2.1/{project_id}/os-floating-ips

+

ecs:serverFloatingIps:use

+

vpc:floatingIps:get

+

vpc:floatingIps:create

+

vpc:floatingIps:update

+

vpc:ports:get

+

Querying Floating IP Addresses (Native OpenStack API)

+

GET /v2/{project_id}/os-floating-ips

+

GET /v2.1/{project_id}/os-floating-ips

+

ecs:serverFloatingIps:use

+

vpc:floatingIps:get

+

vpc:ports:get

+

Querying Details About Floating IP Addresses (Native OpenStack API)

+

GET /v2/{project_id}/os-floating-ips/{floating_ip_id}

+

GET /v2.1/{project_id}/os-floating-ips/{floating_ip_id}

+

ecs:serverFloatingIps:use

+

vpc:floatingIps:get

+

vpc:ports:get

+

Releasing a Floating IP Address (Native OpenStack API)

+

DELETE /v2/{project_id}/os-floating-ips/{floating_ip_id}

+

DELETE /v2.1/{project_id}/os-floating-ips/{floating_ip_id}

+

ecs:serverFloatingIps:use

+

vpc:floatingIps:get

+

vpc:floatingIps:delete

+

vpc:floatingIps:update

+

vpc:ports:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0103072350.html b/ecs/api-ref/en-us_topic_0103072350.html new file mode 100644 index 000000000..a3755d7b5 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0103072350.html @@ -0,0 +1,34 @@ + + +

Network Management

+
+
+ + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Querying Networks (Native OpenStack API)

+

GET /v2/{project_id}/os-networks

+

GET /v2.1/{project_id}/os-networks

+

ecs:networks:list

+

vpc:networks:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0108433460.html b/ecs/api-ref/en-us_topic_0108433460.html new file mode 100644 index 000000000..3d0e8da8d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0108433460.html @@ -0,0 +1,27 @@ + + +

Tag Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0108433461.html b/ecs/api-ref/en-us_topic_0108433461.html new file mode 100644 index 000000000..aea4c2ac2 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0108433461.html @@ -0,0 +1,25 @@ + + +

Tag Management

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0110472767.html b/ecs/api-ref/en-us_topic_0110472767.html new file mode 100644 index 000000000..c88cb3514 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0110472767.html @@ -0,0 +1,384 @@ + + +

Querying the Target Flavors to Which an ECS Flavor Can Be Changed

+

Function

An ECS flavor cannot be changed to certain flavors. This API is used to query the target flavors to which a specified ECS flavor can be changed.

+
+

URI

GET /v2.1/{project_id}/resize_flavors?instance_uuid={instance_uuid}&source_flavor_id={source_flavor_id}&source_flavor_name={source_flavor_name}&sort_key={sort_key}&sort_dir={sort_dir}&limit={limit}&marker={marker}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

One of the instance_uuid, source_flavor_id, and source_flavor_name parameters must be configured. If multiple parameters are configured, the system processes the instance_uuid, source_flavor_id, and source_flavor_name parameters in descending order by default.

+
+

Table 2 describes the query parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

instance_uuid

+

No

+

String

+

Specifies the ID, in UUID format, of the target ECS.

+

source_flavor_id

+

No

+

String

+

Specifies the source flavor ID.

+

source_flavor_name

+

No

+

String

+

Specifies the source flavor name.

+

sort_key

+

No

+

String

+

Indicates the field for sorting.

+

Options:

+
  • flavorid: indicates the flavor ID. The default value is flavorid.
  • name: indicates the flavor name.
  • memory_mb: indicates the memory size.
  • vcpus: indicates the number of vCPUs.
  • root_gb: indicates the system disk size.
+

sort_dir

+

No

+

String

+

Specifies the ascending or descending sorting.

+

Options:

+
  • asc: indicates the ascending order.
  • desc: indicates the descending order.
+

limit

+

No

+

Integer

+

Specifies the maximum number of flavors that can be displayed on one page. The default value is 1000.

+

marker

+

No

+

String

+

Uses the ID of the last flavor on one page as the paging marker.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters.

+ +
+ + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

flavors

+

Yes

+

Array of objects

+

Specifies ECS flavors.

+

For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 flavors field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Specifies the ECS flavor ID.

+

name

+

Yes

+

String

+

Specifies the name of the ECS flavor.

+

vcpus

+

Yes

+

Integer

+

Specifies the number of vCPUs in the ECS flavor.

+

ram

+

Yes

+

Integer

+

Specifies the memory size (MB) in the ECS flavor.

+

disk

+

Yes

+

Integer

+

Specifies the system disk size in the ECS flavor.

+

This parameter has not been used. Its default value is 0.

+

swap

+

No

+

String

+

Specifies the swap partition size required by the ECS flavor.

+

This parameter has not been used. Its default value is "".

+

OS-FLV-EXT-DATA:ephemeral

+

Yes

+

Integer

+

Specifies the temporary disk size. This is an extended attribute.

+

This parameter has not been used. Its default value is 0.

+

OS-FLV-DISABLED:disabled

+

Yes

+

Boolean

+

This is an extended attribute, specifying whether a flavor is available.

+
  • true: indicates that a flavor is available.
  • false: indicates that a flavor is unavailable.
+
NOTE:

This parameter is not used.

+
+

rxtx_factor

+

Yes

+

Float

+

This is an extended attribute.

+
NOTE:

This parameter is not used.

+
+

rxtx_quota

+

Yes

+

String

+

Specifies the software constraints of the network bandwidth that can be used by the ECS.

+

This parameter has not been used. Its default value is null.

+

rxtx_cap

+

Yes

+

String

+

Specifies the hardware constraints of the network bandwidth that can be used by the ECS.

+

This parameter has not been used. Its default value is null.

+

os-flavor-access:is_public

+

Yes

+

Boolean

+

Specifies whether a flavor is available to all tenants. This is an extended attribute.

+
  • true: indicates that a flavor is available to all tenants.
  • false: indicates that a flavor is available only to certain tenants.
+

Default value: true

+

links

+

Yes

+

Array of objects

+

Specifies the shortcut link of the ECS flavor.

+

For details, see Table 5.

+

extra_specs

+

Yes

+

Array of objects

+

Specifies the extended field of the ECS specifications.

+

For details, see Table 6.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 links field description

Parameter

+

Mandatory

+

Type

+

Description

+

rel

+

Yes

+

String

+

Specifies the shortcut link marker name.

+

href

+

Yes

+

String

+

Specifies the shortcut link.

+

type

+

Yes

+

String

+

Specifies the shortcut link type. This parameter has not been used. Its default value is null.

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/resize_flavors?source_flavor_id=c3.xlarge.2
+
+

Example Response

{
+    "flavors": [
+        {
+            "id": "c3.15xlarge.2",
+            "name": "c3.15xlarge.2",
+            "vcpus": "60",
+            "ram": 131072,
+            "disk": "0",
+            "swap": "",
+            "links": [
+                {
+                    "rel": "self",
+                    "href": "https://compute-ext.region.xxx.com/v1.0/743b4c0428d94531b9f2add666642e6b/flavors/c3.15xlarge.2",
+                    "type": null
+                },
+                {
+                    "rel": "bookmark",
+                    "href": "https://compute-ext.region.xxx.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.15xlarge.2",
+                    "type": null
+                }
+            ],
+            "OS-FLV-EXT-DATA:ephemeral": 0,
+            "rxtx_factor": 1,
+            "OS-FLV-DISABLED:disabled": false,
+            "rxtx_quota": null,
+            "rxtx_cap": null,
+            "os-flavor-access:is_public": true,
+            "extra_specs": {
+                "ecs:virtualization_env_types": "CloudCompute",
+                "ecs:generation": "c3",
+                "ecs:performancetype": "computingv3",
+                "resource_type": "IOoptimizedC3_2"
+             }
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0111860831.html b/ecs/api-ref/en-us_topic_0111860831.html new file mode 100644 index 000000000..b2d1317d5 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0111860831.html @@ -0,0 +1,22 @@ + + +

Disk Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0111860833.html b/ecs/api-ref/en-us_topic_0111860833.html new file mode 100644 index 000000000..490f976c8 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0111860833.html @@ -0,0 +1,20 @@ + + +

Tenant Quota Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0112708160.html b/ecs/api-ref/en-us_topic_0112708160.html new file mode 100644 index 000000000..c48bfade3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0112708160.html @@ -0,0 +1,18 @@ + + +

Flavor Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0124385011.html b/ecs/api-ref/en-us_topic_0124385011.html new file mode 100644 index 000000000..c530b3370 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0124385011.html @@ -0,0 +1,29 @@ + + +

APIs (Recommended)

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0124385012.html b/ecs/api-ref/en-us_topic_0124385012.html new file mode 100644 index 000000000..fd235ccf5 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0124385012.html @@ -0,0 +1,18 @@ + + +

NIC Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0124385014.html b/ecs/api-ref/en-us_topic_0124385014.html new file mode 100644 index 000000000..aec0f4b23 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0124385014.html @@ -0,0 +1,42 @@ + + +

OpenStack Nova APIs

+

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0124385015.html b/ecs/api-ref/en-us_topic_0124385015.html new file mode 100644 index 000000000..b6029e60f --- /dev/null +++ b/ecs/api-ref/en-us_topic_0124385015.html @@ -0,0 +1,26 @@ + + +

Lifecycle Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0124385016.html b/ecs/api-ref/en-us_topic_0124385016.html new file mode 100644 index 000000000..63ea7cbb2 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0124385016.html @@ -0,0 +1,34 @@ + + +

Status Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0132778339.html b/ecs/api-ref/en-us_topic_0132778339.html new file mode 100644 index 000000000..e18017847 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0132778339.html @@ -0,0 +1,78 @@ + + +

FPGA Logical File Management

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Querying Associations Between an FPGA Image and an ECS Image

+

GET /v1/{project_id}/cloudservers/fpga_image/associations{?image_id,fpga_image_id,page,size}

+

ecs:cloudServerFpgaImages:getRelations

+

N/A

+

Disassociating an FPGA Image from an ECS Image

+

DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/association

+

ecs:cloudServerFpgaImags:unrelate

+

N/A

+

Viewing Details of FPGA Images

+

GET /v1/{project_id}/cloudservers/fpga_image/detail

+

ecs:cloudServerFpgaImages:list

+

N/A

+

Deleting an FPGA Image

+

DELETE /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}

+

ecs:cloudServerFpgaImages:delete

+

N/A

+

Associating an FPGA Image with an ECS Image

+

POST /v1/{project_id}/cloudservers/fpga_image/{fpga_image_id}/association

+

ecs:cloudServerFpgaImages:relate

+

N/A

+

Registering an FPGA Image

+

POST /v1/{project_id}/cloudservers/fpga_image

+

ecs:cloudServerFpgaImages:register

+

N/A

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0132905656.html b/ecs/api-ref/en-us_topic_0132905656.html new file mode 100644 index 000000000..53ea1e0c8 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0132905656.html @@ -0,0 +1,112 @@ + + +

Cold Migrating an ECS

+

Function

+
+

Constraints

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/migrate

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters. +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

migrate

+

Yes

+

Object

+

Specifies the ECS to be migrated. For details, see Table 3.

+

When migrating an ECS from a DeH to a public resource pool, the migrate value is null.

+
+
+ +
+ + + + + + + + + + + +
Table 3 migrate field description

Parameter

+

Mandatory

+

Type

+

Description

+

dedicated_host_id

+

No

+

String

+

Specifies the DeH ID.

+

This parameter takes effect when an ECS is migrated from a public resource pool to a DeH or when an ECS is migrated between DeHs.

+
+
+
+
+

Response

See Responses (Task).

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/migrate
+
{
+    "migrate": {
+        "dedicated_host_id": "459a2b9d-804a-4745-ab19-a113bb1b4ddc"
+    }
+}
+Or
+{
+    "migrate": null
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0133622595.html b/ecs/api-ref/en-us_topic_0133622595.html new file mode 100644 index 000000000..d5d657fd3 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0133622595.html @@ -0,0 +1,107 @@ + + +

Adding an ECS to an ECS Group

+

Function

This API is used to add an ECS to an ECS group. The system automatically deploys the newly added ECS to a host that is different from the ones accommodating other ECSs in the ECS group.

+
+

Constraints

+
+

URI

POST /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_group_id

+

Yes

+

Specifies the ECS group ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

add_member

+

Yes

+

Object

+

Specifies the information of the ECS to be added to an ECS group.

+

For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + +
Table 3 add_member parameters

Parameter

+

Mandatory

+

Type

+

Description

+

instance_uuid

+

Yes

+

String

+

Specifies the ECS UUID.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/os-server-groups/{server_group_id}/action
+
{
+    "add_member": {
+        "instance_uuid":"34dac9a0-c4a7-457b-bab2-e2c696e0e401"
+    }
+}
+
+

Example Response

Status code 200, indicating that the operation is successful

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0133622596.html b/ecs/api-ref/en-us_topic_0133622596.html new file mode 100644 index 000000000..72c33e3b0 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0133622596.html @@ -0,0 +1,106 @@ + + +

Removing an ECS from an ECS Group

+

Function

This API is used to remove an ECS from an ECS group. After being removed, the anti-affinity policy will not take effect on this ECS and other ECSs in the same ECS group.

+
+

Constraints

Only the anti-affinity policy is supported. ECSs in the same ECS group are deployed on different hosts, improving service reliability.

+
+

URI

POST /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_group_id

+

Yes

+

Specifies the ECS group ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

remove_member

+

Yes

+

Object

+

Specifies the information of the ECS to be removed from an ECS group.

+
+
+ +
+ + + + + + + + + + + +
Table 3 remove_member parameters

Parameter

+

Mandatory

+

Type

+

Description

+

instance_uuid

+

Yes

+

String

+

Specifies the ECS UUID.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/os-server-groups/{server_group_id}/action
+
{
+    "remove_member": {
+        "instance_uuid": "34dac9a0-c4a7-457b-bab2-e2c696e0e401"
+    }
+}
+
+

Example Response

Status code 200, indicating that the operation is successful

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0142195138.html b/ecs/api-ref/en-us_topic_0142195138.html new file mode 100644 index 000000000..c2abf8ad6 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0142195138.html @@ -0,0 +1,15 @@ + + +

Batch Task Request

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0142195139.html b/ecs/api-ref/en-us_topic_0142195139.html new file mode 100644 index 000000000..cf7fbf491 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0142195139.html @@ -0,0 +1,168 @@ + + +

Responses (Batch Operation)

+

The following responses are only for resetting the passwords for logging in to ECSs in a batch and for modifying ECS specifications in a batch. For details about the responses of other batch operations, see Responses (Task).

+ + + +
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0142763126.html b/ecs/api-ref/en-us_topic_0142763126.html new file mode 100644 index 000000000..5d53d3d3d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0142763126.html @@ -0,0 +1,176 @@ + + +

Obtaining a VNC-based Remote Login Address (Microversion 2.6 or Later)

+

Function

This API is used to obtain the address for remotely logging in to an ECS using VNC.

+
+

URI

POST /v2.1/{project_id}/servers/{server_id}/remote-consoles

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Constraints

+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

remote_console

+

Yes

+

Object

+

Obtains the address for remotely logging in to an ECS using VNC. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 remote_console parameters

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

Yes

+

String

+

Specifies a remote login mode. Set it to novnc.

+

protocol

+

Yes

+

String

+

Specifies a remote login protocol. Set it to vnc.

+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

remote_console

+

Object

+

Obtains the address for remotely logging in to an ECS. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 5 remote_console parameters

Parameter

+

Type

+

Description

+

type

+

String

+

Specifies a remote login mode.

+

protocol

+

String

+

Specifies a remote login protocol.

+

url

+

String

+

Specifies a remote login URL.

+

The URL is valid for 10 minutes. Obtain a new one after expiration.

+
+
+
+

Example Request

POST https://{endpoint}/v2.1/13c67a214ced4afb88d911ae4bd5721a/servers/47bc79ae-df61-4ade-9197-283a74e5d70e/remote-consoles
+
{
+   "remote_console" : {
+        "type" : "novnc",
+        "protocol": "vnc"
+    }
+}
+
+

Example Response

{
+	"remote_console": {
+		"url": "https://nova-novncproxy.az21.dc1.domainname.com:8002/vnc.auto.html?token=80fa7c8d-37fe-451e-8b08-bfbd9fb6a4df&lang=EN",
+		"type": "novnc",
+		"protocol": "vnc"
+	}
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0161097717.html b/ecs/api-ref/en-us_topic_0161097717.html new file mode 100644 index 000000000..9e2c89be4 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0161097717.html @@ -0,0 +1,26 @@ + + +

ECS Group Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0161097718.html b/ecs/api-ref/en-us_topic_0161097718.html new file mode 100644 index 000000000..e4e7b1531 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0161097718.html @@ -0,0 +1,189 @@ + + +

Creating an ECS Group

+

Function

This API is used to create an ECS group.

+
+

Constraints

Only anti-affinity policies are supported.

+
+

URI

POST /v1/{project_id}/cloudservers/os-server-groups

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

server_group

+

Yes

+

Object

+

Specifies the ECS group information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 server_group parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Specifies the ECS group name. The value contains 1 to 255 characters.

+

policies

+

Yes

+

Array of strings

+

Specifies the policies associated with the ECS group. Options:

+
  • anti-affinity: ECSs in this group must be deployed on different hosts.
  • affinity: ECSs in this group must be deployed on the same host.
  • soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.
  • soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.
+
NOTE:

Only anti-affinity policies are supported. You are not advised to use other policies. If other policies are used, creating the ECS group will fail.

+
+
+
+
+

Response

Table 4 describes the response parameters.

+ +
+ + + + + + + + + +
Table 4 Response parameters

Parameter

+

Type

+

Description

+

server_group

+

Object

+

Specifies the ECS group information. For details, see Table 5.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 server_group parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS group UUID.

+

name

+

String

+

Specifies the ECS group name.

+

policies

+

Array of strings

+

Specifies the policies associated with the ECS group. Options:

+
  • anti-affinity: ECSs in this group must be deployed on different hosts.
  • affinity: ECSs in this group must be deployed on the same host.
  • soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.
  • soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.
+

members

+

Array of strings

+

Specifies the IDs of the ECSs in an ECS group.

+

metadata

+

Object

+

Specifies the ECS group metadata.

+
+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/os-server-groups
+
{
+    "server_group": {
+        "name": "test",
+        "policies": ["anti-affinity"]
+    }
+}
+
+

Example Response

{
+    "server_group": {
+        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+        "name": "test",
+        "policies": [
+            "anti-affinity"
+        ],
+        "members": [],
+        "metadata": {}
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0161097719.html b/ecs/api-ref/en-us_topic_0161097719.html new file mode 100644 index 000000000..e6adf9ae8 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0161097719.html @@ -0,0 +1,53 @@ + + +

Deleting an ECS Group

+

Function

This API is used to delete an ECS group.

+
+

URI

DELETE /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_group_id

+

Yes

+

Specifies the ECS group UUID.

+
+
+
+
+

Request Parameters

None

+
+

Response Parameters

None

+
+

Example Request

DELETE https://{endpoint}/v1/{project_id}/cloudservers/os-server-groups/{server_group_id}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0161341998.html b/ecs/api-ref/en-us_topic_0161341998.html new file mode 100644 index 000000000..313b6fc4b --- /dev/null +++ b/ecs/api-ref/en-us_topic_0161341998.html @@ -0,0 +1,44 @@ + + +

Password Management

+
+
+ + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Obtaining the Password for Logging In to a Windows ECS (Native OpenStack)

+

GET /v2/{project_id}/servers/{server_id}/os-server-password

+

GET /v2.1/{project_id}/servers/{server_id}/os-server-password

+

ecs:serverPasswords:manage

+

N/A

+

Deleting the Password for Logging In to a Windows ECS (Native OpenStack)

+

DELETE /v2/{project_id}/servers/{server_id}/os-server-password

+

DELETE /v2.1/{project_id}/servers/{server_id}/os-server-password

+

ecs:serverPasswords:manage

+

N/A

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0167809633.html b/ecs/api-ref/en-us_topic_0167809633.html new file mode 100644 index 000000000..78b3526a0 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167809633.html @@ -0,0 +1,18 @@ + + +

ECS Operation Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0167809634.html b/ecs/api-ref/en-us_topic_0167809634.html new file mode 100644 index 000000000..aa6c7ed12 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167809634.html @@ -0,0 +1,18 @@ + + +

ECS Console Management

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0167811962.html b/ecs/api-ref/en-us_topic_0167811962.html new file mode 100644 index 000000000..46de18b3c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167811962.html @@ -0,0 +1,14 @@ + + +

Tag Types

+

Tag management APIs are classified as the APIs for one-dimensional (1D) tags and the APIs for two-dimensional (2D) tags.

+ +
  • Use the APIs of the same type to add, delete, modify, or query tags.
  • 2D tags are recommended.
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0167811963.html b/ecs/api-ref/en-us_topic_0167811963.html new file mode 100644 index 000000000..70712e6ee --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167811963.html @@ -0,0 +1,135 @@ + + +

Adding Tags to an ECS in a Batch

+

Function

+
+

Constraints

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/tags/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

Yes

+

Array of objects

+

Specifies tags. For details, see Table 3.

+

action

+

Yes

+

String

+

Specifies the operation. (Only lowercase letters are supported.) For example, create indicates the creation operation.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 tags field description

Parameter

+

Mandatory

+

Type

+

Description

+

key

+

Yes

+

String

+

Specifies the tag key.

+
  • Cannot be left blank.
  • Must be unique for each resource.
  • Contains a maximum of 36 characters.
  • Can only consist of digits, letters, hyphens (-), and underscores (_).
  • Must be unique and cannot be left blank.
+

value

+

Yes

+

String

+

Specifies the tag value.

+
  • Contains a maximum of 43 characters.
  • Can only consist of digits, letters, hyphens (-), and underscores (_).
+
+
+
+

Response

None

+
+

Example Request

POST  https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/tags/action
+
{
+    "action": "create",
+    "tags": [
+        {
+            "key": "key1",
+            "value": "value1"
+        },
+        {
+            "key": "key2",
+            "value": "value3"
+        }
+    ]
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0167811964.html b/ecs/api-ref/en-us_topic_0167811964.html new file mode 100644 index 000000000..494faa364 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167811964.html @@ -0,0 +1,137 @@ + + +

Deleting Tags from an ECS in a Batch

+

Function

+
  • This API is idempotent. When you delete a tag but the tag does not exist, a successful result is returned.
+
+
+

Constraints

An ECS allows a maximum of 10 tags.

+
+

URI

POST /v1/{project_id}/cloudservers/{server_id}/tags/action

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

Table 2 describes the request parameters.

+ +
+ + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

tags

+

Yes

+

Array of objects

+

Specifies tags. For details, see Table 3.

+

action

+

Yes

+

String

+

Specifies the operation. (Only lowercase letters are supported.) For example, delete indicates the deletion operation.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 tags field description

Parameter

+

Mandatory

+

Type

+

Description

+

key

+

Yes

+

String

+

Specifies the tag key.

+

It contains a maximum of 127 Unicode characters and cannot be left blank.

+

The tag key of an ECS must be unique.

+

value

+

No

+

String

+

Specifies the tag value.

+

It contains a maximum of 255 Unicode characters and can be left blank.

+
+
+
+

Response

None

+
+

Example Request

POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/tags/action
+
{
+    "action": "delete",
+    "tags": [
+        {
+            "key": "key1",
+            "value": "value1"
+        },
+        {
+            "key": "key2",
+            "value": "value3"
+        }
+    ]
+}
+
+

Example Response

None

+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0167811966.html b/ecs/api-ref/en-us_topic_0167811966.html new file mode 100644 index 000000000..316033061 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167811966.html @@ -0,0 +1,111 @@ + + +

Querying Project Tags

+

Function

Projects are used to group and isolate OpenStack resources, which include computing, storage, and network resources. A project can be a department or a team. Multiple projects can be created under one account.

+

This API is used to query all tags used by a user in a specified project.

+
+

URI

GET /v1/{project_id}/cloudservers/tags

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

tags

+

Array of objects

+

Specifies the tag list. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 tag field description

Parameter

+

Type

+

Description

+

key

+

String

+

Specifies the tag key.

+
  • Contains a maximum of 36 Unicode characters.
  • Can only consist of digits, letters, hyphens (-), and underscores (_).
+

values

+

Array of strings

+

Specifies the tag value.

+
  • Contains a maximum of 43 Unicode characters.
  • Can be left blank.
  • Can only consist of digits, letters, hyphens (-), and underscores (_).
+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/tags
+
+

Example Response

{
+      "tags": [
+        {
+            "key": "key1",
+            "values": [
+                "value1",
+                "value2"
+            ]
+        },
+        {
+            "key": "key2",
+            "values": [
+                "value1",
+                "value2"
+            ]
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0167811967.html b/ecs/api-ref/en-us_topic_0167811967.html new file mode 100644 index 000000000..abb0f6152 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167811967.html @@ -0,0 +1,109 @@ + + +

Querying Tags of an ECS

+

Function

+
+

URI

GET /v1/{project_id}/cloudservers/{server_id}/tags

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_id

+

Yes

+

Specifies the ECS ID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

tags

+

Array of objects

+

Specifies tags. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 tags field description

Parameter

+

Type

+

Description

+

key

+

String

+

Specifies the tag key.

+

value

+

String

+

Specifies the tag value.

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/tags
+
+

Example Response

{
+       "tags": [
+        {
+            "key": "key1",
+            "value": "value1"
+        },
+        {
+            "key": "key2",
+            "value": "value3"
+        }
+    ]
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0167816247.html b/ecs/api-ref/en-us_topic_0167816247.html new file mode 100644 index 000000000..1c07c3d9a --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167816247.html @@ -0,0 +1,20 @@ + + +

Batch Operations

+

+
+
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0167957246.html b/ecs/api-ref/en-us_topic_0167957246.html new file mode 100644 index 000000000..12280acd1 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0167957246.html @@ -0,0 +1,507 @@ + + +

Data Structure for Creating ECSs

+

Contents

+
+

publicip Field Description

This field is used by the following APIs:
  • Creating ECSs /v1/{project_id}/cloudservers
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 publicip field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

No

+

String

+

Specifies the ID of the existing EIP assigned to the ECS to be created. The value is in UUID format.

+

Only EIPs in DOWN state can be assigned.

+

eip

+

No

+

Object

+

Specifies an EIP that will be automatically assigned to an ECS.

+

For details, see Table 3.

+

delete_on_termination

+

No

+

Boolean

+

Specifies whether the EIP is released when the ECS where the EIP is bound is deleted.

+
  • true: The EIP is released when the ECS is deleted.
  • false: The EIP is not released when the ECS is deleted.
+

The default value is false.

+
NOTE:

This parameter is available only for pay-per-use EIPs.

+
+
+
+

Either id or eip in the publicip field can be configured.

+
+
+

security_groups Field Description

This field is used by the following APIs:

+ +
+
+ + + + + + + + + + + +
Table 2 security_groups field description

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

No

+

String

+

Specifies the ID of the security group to which an ECS is to be added. The configuration will take effect on the NICs of the ECS. You need to specify the ID of an existing security group in UUID format. Otherwise, the default security group will be used at the underlying layer.

+
+
+
+
+

eip Field Description

This field is used by the following APIs:
  • Creating ECSs /v1/{project_id}/cloudservers
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 eip field description

Parameter

+

Mandatory

+

Type

+

Description

+

iptype

+

Yes

+

String

+

Specifies the EIP type.

+

For details about the enumerated values, see the publicip field in "Assigning an EIP" in Virtual Private Cloud API Reference.

+

bandwidth

+

Yes

+

Object

+

Specifies the EIP bandwidth.

+

For details, see bandwidth Field Description.

+
+
+
+

bandwidth Field Description

This field is used by the following APIs:
  • Creating ECSs /v1/{project_id}/cloudservers
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 bandwidth field description

Parameter

+

Mandatory

+

Type

+

Description

+

size

+

Yes

+

Integer

+

Specifies the bandwidth size.

+

Specifies the bandwidth (Mbit/s). The value ranges from 1 to 1000.

+

The specific range may vary depending on the configuration in each region. You can see the bandwidth range of each region on the management console.

+

sharetype

+

Yes

+

String

+

Specifies the bandwidth sharing type.

+

Enumerated values: PER (indicates exclusive bandwidth) and WHOLE (indicates sharing)

+

chargemode

+

Yes

+

String

+

Specifies the bandwidth billing mode.

+
  • If the field value is traffic, the ECS is billed by traffic.
  • If the field value is others, creating the ECS will fail.
+
+
+
+

extendparam Field Description for Creating Disks

This field is used by the following APIs:

+ +
+
+ + + + + + + + + + + +
Table 5 extendparam field description for creating disks

Parameter

+

Mandatory

+

Type

+

Description

+

snapshotId

+

No

+

String

+

Specifies the snapshot ID or ID of the original data disk contained in the full-ECS image.

+

Application scenarios:

+

This parameter is used if an ECS is created using a full-ECS image, and the image contains one or more data disks.

+

If you use a full-ECS image to create an ECS, the system automatically restores the data type and data from the data disks in the image. The snapshotId parameter allows you to specify the disk type for the original data disk after restoration.

+
NOTE:
  • You are advised to set snapshotId for each original data disk. Otherwise, the original data disks without snapshotId specified will use the default settings.
  • If you are required to change a disk size, ensure that the changed disk size is greater than or equal to the size of the original data disk. Otherwise, restoring data of the original data disk will fail.
+
+

Working rules:

+

snapshotId uniquely identifies an original data disk contained in a full-ECS image. You can use snapshotId to obtain the information of the original data disk for data restoration.

+

Obtaining snapshotId through the management console:

+

Log in to the management console, choose Elastic Volume Service > Snapshot. Then, use the name of the original data disk to find the snapshot ID or the original disk ID.

+

Obtaining snapshotId through the API:

+
If you have obtained the full-ECS image ID, obtain the Cloud Backup and Recovery (CBR) or Cloud Server Backup Service (CSBS) backup ID associated with the full-ECS image ID by following the instructions provided in the API for querying image details.
  • If CBR backup is used, use the CBR backup ID to obtain the backup. The resource_id or snapshot_id contained in the children field in the response is the desired snapshotId. For details, see the API for "Querying a Specified Backup" in Cloud Backup and Recovery User Guide.
  • If CSBS backup is used, use the CSBS backup ID to obtain the backup. The source_volume_id or snapshot_id contained in the volume_backups field in the response is the desired snapshotId. For details, see the API for "Querying a Single Backup" in Cloud Server Backup Service User Guide.
+
+
+
+
+
+

extendparam Field Description for Creating ECSs

This field is used by the following APIs:
  • Creating ECSs /v1/{project_id}/cloudservers
+
+ +
+ + + + + + + + + + + + + + + + +
Table 6 extendparam field description for creating ECSs (for V1 APIs)

Parameter

+

Mandatory

+

Type

+

Description

+

regionID

+

No

+

String

+

Specifies the ID of the region where the ECS resides.

+

support_auto_recovery

+

No

+

Boolean

+

Specifies whether automatic recovery is enabled on the ECS.

+
  • true: enables this function.
  • false: disables this function.
+
NOTE:

This parameter is of boolean type. If a non-boolean character is imported, the parameter value is set to false.

+

When support_auto_recovery is set to false and "cond:compute": autorecovery is unavailable in the flavor, automatic recovery is not supported.

+

When support_auto_recovery is set to false and "cond:compute": autorecovery is available in the flavor, automatic recovery is supported.

+

You can query whether "cond:compute": autorecovery is available in the flavor by referring to Querying Details About Flavors and Extended Flavor Information.

+
+
+
+

+
+

metadata Field Description for Creating Disks

This field is used by the following APIs:

+ +
  • When you create an ECS, both root_volume and data_volume contain the metadata field.
+
+
+
+ + + + + + + + + + + + + + + + +
Table 7 metadata field description for creating disks

Parameter

+

Mandatory

+

Type

+

Description

+

__system__encrypted

+

No

+

String

+

Specifies encryption in metadata. The value can be 0 (encryption disabled) or 1 (encryption enabled).

+

If this parameter does not exist, the disk will not be encrypted by default.

+

__system__cmkid

+

No

+

String

+

Specifies the CMK ID, which indicates encryption in metadata. This parameter is used with __system__encrypted.

+
NOTE:

For details about how to obtain the CMK ID, see "Querying the List of CMKs" in Key Management Service API Reference.

+
+
+
+
+
+

metadata Field Description for Creating ECSs

This field is used by the following APIs:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 metadata reserved field description

Parameter

+

Mandatory

+

Type

+

Description

+

admin_pass

+

No

+

String

+

Specifies the password of user Administrator for logging in to a Windows ECS. For details, see Function.

+
NOTE:

This parameter is mandatory when a Windows ECS using password authentication is created.

+
+

op_svc_userid

+

No

+

String

+

Specifies the user ID.

+

agency_name

+

No

+

String

+

Specifies the IAM agency name.

+

An agency is created by a tenant administrator on Identity and Access Management (IAM) to provide temporary credentials for ECSs to access cloud services.

+

BYOL

+

No

+

String

+

If you have an OS or a software license (a license certified based on the number of physical servers and cores), you can migrate your services to the cloud platform in BYOL mode to continue using your existing licenses.

+
  • True: Use your existing licenses.
  • False: System licenses are used.
+
+
+
+
+

os:scheduler_hints Field Description

This field is used by the following APIs:
  • Creating ECSs /v1/{project_id}/cloudservers
  • Creating ECSs (native API): /v2.1/{project_id}/servers
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 9 os:scheduler_hints field description (request parameters)

Parameter

+

Mandatory

+

Type

+

Description

+

group

+

No

+

String

+

Specifies an ECS group ID, which is in UUID format.

+

Obtain the parameter value from the console or by performing operations provided in Querying ECS Groups.

+
NOTE:

Ensure that the ECS group uses the anti-affinity policy. You are not advised to use other policies.

+
+

tenancy

+

No

+

String

+

Creates ECSs on a dedicated or shared host.

+

The value of this parameter can be dedicated or shared.

+

dedicated_host_id

+

No

+

String

+

Specifies the dedicated host ID.

+
NOTE:

A DeH ID takes effect only when tenancy is set to dedicated.

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + +
Table 10 os:scheduler_hints field description (response parameters)

Parameter

+

Type

+

Description

+

group

+

Array of strings

+

Specifies an ECS group ID, which is in UUID format.

+

Obtain the parameter value from the console or by performing operations provided in Querying ECS Groups.

+

tenancy

+

Array of strings

+

Creates ECSs on a dedicated or shared host.

+

The value of this parameter can be dedicated or shared.

+

dedicated_host_id

+

Array of strings

+

Specifies the dedicated host ID.

+
NOTE:

A DeH ID takes effect only when tenancy is set to dedicated.

+
+
+
+
+
+

binding:profile Field Description

This field is used by the following APIs:
  • Creating ECSs: /v1/{project_id}/cloudservers
+
+ +
+ + + + + + + + + + + +
Table 11 binding:profile field description

Parameter

+

Mandatory

+

Type

+

Description

+

disable_security_groups

+

No

+

Boolean

+

Indicates that a HANA ECS NIC is not added to a security group.

+
NOTE:
  • A primary HANA ECS NIC must be added to a security group.
  • At most one HANA ECS NIC is allowed not to add to any security group.
+
+
+
+
+

extra_dhcp_opts Field Description

This field is used by the following APIs:
  • Creating ECSs: /v1/{project_id}/cloudservers
+
+ +
+ + + + + + + + + + + + + + + + +
Table 12 extra_dhcp_opts field description

Parameter

+

Mandatory

+

Type

+

Description

+

opt_value

+

Yes

+

Integer

+

Specifies the NIC MTU, which ranges from 1280 to 8888.

+

opt_name

+

Yes

+

String

+

Set the parameter value to 26.

+
+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0169494074.html b/ecs/api-ref/en-us_topic_0169494074.html new file mode 100644 index 000000000..26e244343 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0169494074.html @@ -0,0 +1,406 @@ + + +

Data Structure for Querying Details About ECSs

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 address parameters

Parameter

+

Type

+

Description

+

version

+

String

+

Specifies the IP address version.

+
  • 4: indicates IPv4.
  • 6: indicates IPv6.
+

addr

+

String

+

Specifies the IP address.

+

OS-EXT-IPS:type

+

String

+

Specifies the IP address type.

+
  • fixed: indicates the private IP address.
  • floating: indicates the floating IP address.
+

OS-EXT-IPS-MAC:mac_addr

+

String

+

Specifies the MAC address.

+

OS-EXT-IPS:port_id

+

String

+

Specifies the port ID corresponding to the IP address.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 flavor parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS flavor ID.

+

name

+

String

+

Specifies the ECS flavor name.

+

disk

+

String

+

Specifies the system disk size in the ECS flavor. Value 0 indicates that the disk size is not limited.

+

The field is invalid in this system.

+

vcpus

+

String

+

Specifies the number of vCPUs in the ECS flavor.

+

ram

+

String

+

Specifies the memory size (MB) in the ECS flavor.

+
+
+ +
+ + + + + + + + + + + + + +
Table 3 security_groups parameters

Parameter

+

Type

+

Description

+

name

+

String

+

Specifies the security group name or UUID.

+

id

+

String

+

Specifies the security group ID.

+
+
+

The following table lists parameters involved in the fault information attribute.

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 fault parameters

Parameter

+

Type

+

Description

+

message

+

String

+

Specifies the fault information.

+

code

+

Integer

+

Specifies the error code.

+

details

+

String

+

Specifies the fault details.

+

created

+

String

+

Specifies the time when the fault occurred. The time is in ISO 8601 time format.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 os-extended-volumes:volumes_attached parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the disk ID in UUID format.

+

delete_on_termination

+

String

+

Specifies whether the disk is deleted with the ECS.

+
  • true: indicates that the disk is deleted with the ECS.
  • false: indicates that the disk is not deleted with the ECS.
+

This parameter is supported in microversion 2.3 and later.

+

bootIndex

+

String

+

Specifies the EVS disk boot sequence.

+
  • 0 indicates the system disk.
  • Non-0 indicates a data disk.
+

device

+

String

+

Specifies the drive letter of the EVS disk, which is the device name of the EVS disk.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 metadata parameters

Parameter

+

Type

+

Description

+

charging_mode

+

String

+

Specifies the ECS billing mode.

+
  • 0: pay-per-use payment (postpaid)
+

vpc_id

+

String

+

Specifies the ID of the VPC where the ECS is located.

+

EcmResStatus

+

String

+

Specifies the ECS frozen status.

+
  • normal: The ECS is not frozen.
  • freeze: The ECS has been frozen.
+
NOTE:

The system automatically adds this field, which is mandatory, after an ECS is frozen or unfrozen.

+
+

metering.image_id

+

String

+

Specifies the image ID of the ECS.

+

metering.imagetype

+

String

+

Specifies the image type. The following types are supported:

+
  • Public image: The value is gold.
  • Private image: The value is private.
  • Shared image: The value is shared.
+

metering.resourcespeccode

+

String

+

Specifies the resource specifications of the ECS.

+

metering.resourcetype

+

String

+

Specifies the resource type of the ECS.

+

Value 1 indicates ECSs.

+

cascaded.instance_extrainfo

+

String

+

Specifies the extended information about the internal ECSs.

+

image_name

+

String

+

Specifies the image name of the ECS.

+

agency_name

+

String

+

Specifies the IAM agency name.

+

An agency is created by a tenant administrator on IAM to provide temporary credentials for ECSs to access cloud services.

+

os_bit

+

String

+

Specifies the number of bits in the operating system: 32 or 64.

+

os_type

+

String

+

Specifies the OS type. The value can be Linux or Windows.

+

lockCheckEndpoint

+

String

+

Specifies the callback URL for checking whether ECS locking is enabled.

+
  • If ECS locking is enabled, the ECS is locked.
  • If ECS locking is disabled, the ECS is unlocked, and invalid locks are deleted.
+

lockSource

+

String

+

Specifies the lock source.

+
  • Order lock (ORDER)
+

lockSourceId

+

String

+

Specifies the ECS lock source ID.

+

If lockSource is set to ORDER, lockSourceId is the order ID.

+

lockScene

+

String

+

Specifies the ECS lock type.

+

virtual_env_type

+

String

+
  • If an ECS is created using an iOS image, the value of this parameter is IsoImage.
  • If an ECS is created using a non-iOS image, the value of this parameter is FusionCompute in versions earlier than 19.5.0, and this parameter will be unavailable in versions later than 19.5.0.
+
NOTE:
  • The virtual_env_type cannot be added, deleted, or modified.
+
+
+
+ +
+ + + + + + + + + + + + + +
Table 7 sys_tags parameters

Parameter

+

Type

+

Description

+

key

+

String

+

Specifies the system tag key.

+

value

+

String

+

Specifies the system tag value.

+
+
+ +
+ + + + + + + + + +
Table 8 image parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the image ID.

+
+
+

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0170710254.html b/ecs/api-ref/en-us_topic_0170710254.html new file mode 100644 index 000000000..934c41fc5 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0170710254.html @@ -0,0 +1,178 @@ + + +

Data Structure for Query Details About Specifications

+

os_extra_specs (flavor) Field Description

This field is used by the following APIs:
  • Querying details about flavors and extended flavor information: /v1/{project_id}/cloudservers/flavors
  • Querying details about the extended ECS flavor field: /v1/{project_id}/flavors/{flavor_id}/os-extra_specs
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 os_extra_specs field description

Parameter

+

Type

+

Description

+

ecs:performancetype

+

String

+

Specifies the ECS flavor type:

+
  • normal: general computing
  • cpuv1: computing I
  • cpuv2: computing II
  • computingv3: general computing-plus
  • highmem: memory-optimized
  • saphana: large-memory
  • saphana: large-memory HANA ECS
  • diskintensive: disk-intensive
  • highcpu: high-performance computing
  • gpu: GPU-accelerated
  • fpga: FPGA-accelerated
+

resource_type

+

String

+

Specifies the resource type. resource_type is used to differentiate between the types of the physical servers accommodating ECSs.

+

instance_vnic:type

+

String

+

Specifies the NIC type. The value of this parameter is consistently enhanced, indicating that network enhancement ECSs are to be created.

+

instance_vnic:instance_bandwidth

+

String

+

Specifies the maximum bandwidth in the unit of Mbit/s. The maximum value of this parameter is 10000.

+

instance_vnic:max_count

+

String

+

Specifies the maximum number of NICs. The maximum value of this parameter is 4.

+

quota:local_disk

+

String

+

The value of this parameter is in format of "{type}:{count}:{size}:{safeFormat}", where,

+
  • type: indicates the disk type, which can only be HDD.
  • count: indicates the number of local disks.
    • For D2 ECSs, the value can be 2, 4, 8, 12, 16, or 24.
    • For D3 ECSs, the value can be 2, 4, 8, 12, 16, 24, or 28.
    +
  • size: indicates the capacity of a single disk, in GB. Currently, only 1675 is supported. The actual disk size is 1800, and the available size after formatting is 1675.
  • safeFormat: indicates whether the local disks of the ECS are securely formatted.
    • For D2 or D3 ECSs, the value is True.
    +
+
NOTE:

This field is dedicated for disk-intensive ECSs.

+
+

quota:nvme_ssd

+

String

+

The value of this parameter is in the format of {type}:{spec}:{num}:{size}:{safeFormat}:.

+
  • type: indicates the capacity of a single NVME SSD disk attached to the ECS, which can only be 1.6 TB or 3.2 TB.
  • spec: indicates the specification of the NVME SSD disk, which can be large or small.

    If the value is large, only I3 ECSs are supported.

    +
  • num: indicates the number of partitions on the disk.
  • size: indicates the capacity, in the unit of GB, of the disk used by the guest user. If the spec value is large, the value of this parameter is the size of a single disk attached to the ECS. If the spec value is small, the value of this parameter is 1/4 or 1/2 of the specification.
  • safeFormat: indicates whether the local disks of the ECS are securely formatted.

    If the value is True, only I3 ECSs are supported.

    +
+
NOTE:

This field is dedicated for ultra-high I/O ECSs.

+
+

ecs:generation

+

String

+

Specifies the generation of an ECS type.

+

For example, 3 in s3 indicates the general-purpose third-generation ECSs. For details about flavors and generations, see ECS Specifications in Elastic Cloud Server User Guide.

+

ecs:virtualization_env_types

+

String

+

Specifies a virtualization type.

+
  • If the parameter value is FusionCompute, the ECS uses Xen virtualization. Currently, the Xen virtualization technology is not supported.
  • If the parameter value is CloudCompute, the ECS uses KVM virtualization.
+
NOTE:

This field is optional.

+
+

pci_passthrough:enable_gpu

+

String

+

Indicates whether the GPU is passthrough.

+

If the value is true, the GPU is passthrough.

+

pci_passthrough:alias

+

String

+

Indicates the model and quantity of passthrough-enabled GPUs on P1 ECSs. The parameter value can be set to nvidia-p100:1, indicating that the ECS using this specification will occupy one NVIDIA P100 GPU.

+

cond:operation:status

+

String

+

This parameter takes effect region-wide. If an AZ is not configured in the cond:operation:az parameter, the value of this parameter is used by default. If this parameter is not set or used, the meaning of normal applies. Options:

+
  • normal: indicates normal commercial use of the flavor.
  • abandon: indicates that the flavor has been canceled (not displayed).
  • sellout: indicates that the flavor has been sold out.
  • obt: indicates that the flavor is under open beta testing (OBT).
  • obt_sellout: indicates that the OBT resources are sold out.
  • promotion: indicates the recommended flavor (commercial use, which is similar to normal).
+

cond:operation:az

+

String

+

This parameter takes effect AZ-wide. If an AZ is not configured in this parameter, the value of the cond:operation:status parameter is used by default. This parameter is in the format of "az(xx)". The value in parentheses is the flavor status in an AZ. If the parentheses are left blank, the configuration is invalid. The cond:operation:az options are the same as the cond:operation:status options.

+

For example, a flavor is for commercial use in AZs 0 and 3, sold out in AZ 1, for OBT in AZ 2, and is canceled in other AZs. Then, set parameters as follows:

+
  • cond:operation:status: abandon
  • cond:operation:az: az0(normal), az1(sellout), az2(obt), az3(normal)
+
NOTE:

Configure this parameter if the flavor status in an AZ is different from the cond:operation:status value.

+
+

quota:max_rate

+

String

+

Specifies the maximum bandwidth.

+
  • Unit: Mbit/s. If a bandwidth is in the unit of Gbit/s, it must be divided by 1000.
+

quota:min_rate

+

String

+

Specified the assured bandwidth.

+
  • Unit: Mbit/s. If a bandwidth is in the unit of Gbit/s, it must be divided by 1000.
+

quota:max_pps

+

String

+

Specifies the maximum intranet PPS.

+
  • Unit: number. If a value is in the unit of 10000, it must be divided by 10000.
+

cond:operation:charge

+

String

+

Specifies a billing type.

+
  • Both billing types are supported if this parameter is not set.
  • Pay-per-use
+

cond:compute

+

String

+

Specifies computing constraints.

+
  • autorecovery: indicates that automatic recovery is supported.
  • If this parameter does not exist, automatic recovery is not supported.
+
+
+
+

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0175308115.html b/ecs/api-ref/en-us_topic_0175308115.html new file mode 100644 index 000000000..b23875fa1 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0175308115.html @@ -0,0 +1,16 @@ + + +

Data Structure

+

+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0175597846.html b/ecs/api-ref/en-us_topic_0175597846.html new file mode 100644 index 000000000..db8f3590c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0175597846.html @@ -0,0 +1,187 @@ + + +

Querying ECS Groups

+

Function

This API is used to query ECS groups.

+
+

URI

GET /v1/{project_id}/cloudservers/os-server-groups?limit={limit}&marker={marker}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + +
Table 1 Path parameters

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

limit

+

No

+

Integer

+

Specifies the upper limit on the number of returned server groups. The maximum value is 1000.

+

marker

+

No

+

String

+

Specifies the marker that points to the ECS group. The query starts from the next piece of data indexed by this parameter.

+

Parameters marker and limit must be used together.

+
+
+

Request

None

+
+

Response

Table 3 describes the response parameters. +
+ + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Type

+

Description

+

server_groups

+

Array of objects

+

Specifies ECS groups. For details, see Table 4.

+

page_info

+

Object

+

If the pagination function is enabled, the UUID of the last ECS group on the current page is returned. For details, see Table 5.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 server_groups parameter information

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies the ECS group UUID.

+

name

+

String

+

Specifies the ECS group name.

+

members

+

Array of strings

+

Specifies the ECSs contained in an ECS group.

+

metadata

+

Object

+

Specifies the ECS group metadata.

+

policies

+

Array of strings

+
Specifies the policies associated with the ECS group. Options:
  • anti-affinity: ECSs in this group must be deployed on different hosts.
  • affinity: ECSs in this group must be deployed on the same host.
  • soft-anti-affinity: ECSs in this group are deployed on different hosts if possible. If the ECSs cannot be deployed on different hosts, deploy them based on the actual condition for successful ECS creation.
  • soft-affinity: ECSs in this group are deployed on the same host if possible. If the ECSs cannot be deployed on the same host, deploy them based on the actual condition for successful ECS creation.
+
NOTE:

Only anti-affinity policies are supported. You are not advised to use other policies. If other policies are used, creating the ECS group will fail.

+
+
+
+
+ +
+ + + + + + + + + +
Table 5 page_info field description

Parameter

+

Type

+

Description

+

next_marker

+

String

+

Specifies an ECS group UUID.

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/os-server-groups
+
+

Example Response

{
+    "server_groups": [
+        {
+            "id": "616fb98f-46ca-475e-917e-2563e5a8cd19",
+            "name": "test",
+            "policies": ["anti-affinity"],
+            "members": [],
+            "metadata": {}
+        }
+    ],
+    "page_info": {
+        "next_marker": "616fb98f-46ca-475e-917e-2563e5a8cd19"
+    }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0175597847.html b/ecs/api-ref/en-us_topic_0175597847.html new file mode 100644 index 000000000..18fdc400d --- /dev/null +++ b/ecs/api-ref/en-us_topic_0175597847.html @@ -0,0 +1,127 @@ + + +

Querying Details About an ECS Group

+

Function

This API is used to query details bout an ECS group.

+
+

URI

GET /v1/{project_id}/cloudservers/os-server-groups/{server_group_id}

+
Table 1 describes the parameters in the URI. +
+ + + + + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Mandatory

+

Description

+

project_id

+

Yes

+

Specifies the project ID.

+

server_group_id

+

Yes

+

Specifies an ECS group UUID.

+
+
+
+
+

Request

None

+
+

Response

Table 2 describes the response parameters.

+ +
+ + + + + + + + + +
Table 2 Response parameters

Parameter

+

Type

+

Description

+

server_group

+

Object

+

Specifies the ECS group information. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 server_group parameters

Parameter

+

Type

+

Description

+

id

+

String

+

Specifies an ECS group UUID.

+

name

+

String

+

Specifies the ECS group name.

+

policies

+

Array of strings

+

Specifies the policies associated with the ECS group.

+

members

+

Array of strings

+

Specifies the ECS contained in an ECS group.

+

metadata

+

Object

+

Specifies the ECS group metadata.

+
+
+
+

Example Request

GET https://{endpoint}/v1/{project_id}/cloudservers/os-server-groups/{server_group_id}
+
+

Example Response

{
+    "server_group": {
+        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+        "name": "test",
+        "policies": ["anti-affinity"],
+        "members": [],
+        "metadata": {}
+       }
+}
+
+

Returned Values

See Returned Values for General Requests.

+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0178420672.html b/ecs/api-ref/en-us_topic_0178420672.html new file mode 100644 index 000000000..1abb0e259 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0178420672.html @@ -0,0 +1,358 @@ + + +

ECS Statuses

+

An ECS can be in one of the following statuses specified in ECS APIs:

+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Statuses

Status

+

Description

+

BUILD

+

The ECS has been created but is not running.

+

REBOOT

+

The ECS is being restarted.

+

HARD_REBOOT

+

The ECS is being forcibly restarted.

+

REBUILD

+

The ECS is being rebuilt.

+

MIGRATING

+

The ECS is being live migrated.

+

RESIZE

+

The ECS has received a specifications modification request and and has started to perform the modification.

+

ACTIVE

+

The ECS is running properly.

+

SHUTOFF

+

The ECS has been properly stopped.

+

REVERT_RESIZE

+

The ECS is rolling back resizing.

+

VERIFY_RESIZE

+

The ECS is verifying the modified configuration.

+

ERROR

+

An error has occurred on the ECS.

+

DELETED

+

The ECS has been deleted.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
Table 2 OS-EXT-STS:vm_state statuses

Status

+

Description

+

building

+

The ECS has been created but is not running.

+

active

+

The ECS is running properly.

+

stopped

+

The ECS has been properly stopped.

+

resized

+

The ECS specifications have been modified.

+

error

+

An error has occurred on the ECS.

+

deleted

+

The ECS has been deleted.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 OS-EXT-STS:task_state statuses

Status

+

Description

+

scheduling

+

The ECS is being created.

+

block_device_mapping

+

The ECS is being created, and disks are being prepared for the ECS.

+

networking

+

The ECS is being created, and network resources are being prepared for the ECS.

+

spawning

+

The ECS is being created.

+

rebooting

+

The ECS is being restarted.

+

reboot_pending

+

A restarting command has been issued to an ECS, and the ECS is to be restarted.

+

reboot_started

+

The ECS is being restarted.

+

rebooting_hard

+

The ECS is being forcibly restarted.

+

reboot_pending_hard

+

A forcible restarting command has been issued to an ECS, and the ECS is to be restarted.

+

reboot_started_hard

+

The ECS is being forcibly restarted.

+

rebuilding

+

The ECS is being rebuilt.

+

rebuild_block_device_mapping

+

The ECS is being rebuilt, and disks are being prepared for the ECS.

+

rebuild_spawning

+

The ECS is being rebuilt.

+

migrating

+

The ECS is being live migrated.

+

resize_prep

+

The ECS specifications are to be modified, and resources are being prepared for the ECS.

+

resize_migrating

+

The specifications of the ECS are being modified, and it is being migrated.

+

resize_migrated

+

The specifications of the ECS are being modified, and it has been migrated.

+

resize_finish

+

The specifications of the ECS are being modified.

+

resize_reverting

+

The specifications modification of the ECS is being rolled back.

+

powering-off

+

The ECS is stopped.

+

powering-on

+

The ECS is being started.

+

deleting

+

The ECS is being deleted.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Mapping between statuses

vm_state

+

task_state

+

status

+

building

+

scheduling

+

block_device_mapping

+

networking

+

spawning

+

null

+

BUILD

+

active

+

rebooting

+

reboot_pending

+

reboot_started

+

REBOOT

+

rebooting_hard

+

reboot_pending_hard

+

reboot_started_hard

+

HARD_REBOOT

+

rebuilding

+

rebuild_block_device_mapping

+

rebuild_spawning

+

REBUILD

+

migrating

+

MIGRATING

+

powering-off

+

deleting

+

null

+

ACTIVE

+

stopped

+

resize_prep

+

resize_migrating

+

resize_migrated

+

resize_finish

+

RESIZE

+

rebuilding

+

rebuild_block_device_mapping

+

rebuild_spawning

+

REBUILD

+

powering-on

+

deleting

+

null

+

SHUTOFF

+

resized

+

resize_reverting

+

REVERT_RESIZE

+

null

+

VERIFY_RESIZE

+

error

+

rebuilding

+

rebuild_block_device_mapping

+

rebuild_spawning

+

REBUILD

+

deleting

+

null

+

ERROR

+

deleted

+

null

+

DELETED

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0184167662.html b/ecs/api-ref/en-us_topic_0184167662.html new file mode 100644 index 000000000..8df9303d0 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0184167662.html @@ -0,0 +1,69 @@ + + +

Batch Operations

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Stopping ECSs in a Batch

+

POST /v1/{project_id}/cloudservers/action

+

ecs:cloudServers:stop

+

N/A

+

Restarting ECSs in a Batch

+

POST /v1/{project_id}/cloudservers/action

+

ecs:cloudServers:reboot

+

N/A

+

Starting ECSs in a Batch

+

POST /v1/{project_id}/cloudservers/action

+

ecs:cloudServers:start

+

N/A

+

Modifying ECSs in a Batch

+

PUT /v1/{project_id}/cloudservers/server-name

+

ecs:cloudServers:put

+

N/A

+

Attaching a Specified Shared EVS Disk to Multiple ECSs in a Batch

+

POST /v1/{project_id}/batchaction/attachvolumes/{volume_id}

+

ecs:cloudServers:attachSharedVolume

+

evs:volumes:use

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0184192952.html b/ecs/api-ref/en-us_topic_0184192952.html new file mode 100644 index 000000000..a30dfa53c --- /dev/null +++ b/ecs/api-ref/en-us_topic_0184192952.html @@ -0,0 +1,33 @@ + + +

ECS Management Through Console

+
+
+ + + + + + + + + + + +

Permission

+

API

+

Action

+

Dependent Permission

+

Obtaining the Address for Logging In to the Console Using VNC

+

POST /v2.1/{project_id}/servers/{server_id}/remote-consoles

+

ecs:servers:createConsole

+

ecs:servers:get

+
+
+
+
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0267425395.html b/ecs/api-ref/en-us_topic_0267425395.html new file mode 100644 index 000000000..01c9cc0ef --- /dev/null +++ b/ecs/api-ref/en-us_topic_0267425395.html @@ -0,0 +1,25 @@ + + + +

Out-of-Date APIs

+ +

+
+ +
+ +
+ diff --git a/ecs/api-ref/en-us_topic_0267427144.html b/ecs/api-ref/en-us_topic_0267427144.html new file mode 100644 index 000000000..7065ebc33 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0267427144.html @@ -0,0 +1,31 @@ + + + +

Security Group Management (OpenStack Nova APIs)

+ +

+
+ +
+ + + +
+ diff --git a/ecs/api-ref/en-us_topic_0267427881.html b/ecs/api-ref/en-us_topic_0267427881.html new file mode 100644 index 000000000..e189ffd42 --- /dev/null +++ b/ecs/api-ref/en-us_topic_0267427881.html @@ -0,0 +1,27 @@ + + + +

Disk Management (OpenStack Nova APIs)

+ +

+
+ +
+ + + +
+ diff --git a/ecs/api-ref/public_sys-resources/ExpandCollapse.js b/ecs/api-ref/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..3f1b7db00 --- /dev/null +++ b/ecs/api-ref/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";var href="";function ExpandorCollapseNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseClassName}else{a.className=expandClassName}}function ExpandorCollapseTableNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseTableClassName}else{a.className=expandClassName}}function ExpandorCollapseAllNodes(g,h,c){var a=g.getAttribute("title");var b=g.parentNode;if(a=="collapse"){g.setAttribute("title","expand");g.className="dropdownAllButtonexpand";g.innerHTML=h}else{g.setAttribute("title","collapse");g.className="dropdownAllButtoncollapse";g.innerHTML=c}var f=b.getElementsByTagName("*");for(var d=0;d-1){ExpandForHref(href.substring(href.lastIndexOf("#")+1))}}catch(a){}}; \ No newline at end of file diff --git a/ecs/api-ref/public_sys-resources/caution_3.0-en-us.png b/ecs/api-ref/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 000000000..60f607621 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/caution_3.0-en-us.png differ diff --git a/ecs/api-ref/public_sys-resources/commonltr.css b/ecs/api-ref/public_sys-resources/commonltr.css new file mode 100644 index 000000000..c5480b0ab --- /dev/null +++ b/ecs/api-ref/public_sys-resources/commonltr.css @@ -0,0 +1 @@ +body{font-size:10pt;font-family:Arial;margin:1.5em;border-top:2pt;padding-top:1em;padding-bottom:2em}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:.6em;margin-bottom:.6em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.figcap{font-size:10pt}img{margin-top:.3em}.figdesc{font-style:normal}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.fignone{font-size:10pt;margin-top:8pt;margin-bottom:8pt}.familylinks{margin-top:1.5em;margin-bottom:1em}.ullinks{list-style-type:none}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-top:.6em;margin-bottom:.6em}.reltasks{margin-top:.6em;margin-bottom:.6em}.relref{margin-top:.6em;margin-bottom:.6em}.relinfo{margin-top:.6em;margin-bottom:.6em}.breadcrumb{font-size:smaller;margin-bottom:.6em}.prereq{margin-left:20px}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.topictitle1{margin-top:0;margin-bottom:1em;font-size:14pt;color:#007af4}.topictitle2{margin-top:1pc;margin-bottom:.45em;font-size:1.17em;color:#007af4}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-size:1.17em;font-weight:bold;color:#007af4}.topictitle4{margin-top:.83em;font-size:1.17em;font-weight:bold}.topictitle5{font-size:1.17em;font-weight:bold}.topictitle6{font-size:1.17em;font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:1em;color:black;font-size:10.5pt;font-weight:bold;color:#007af4;overflow:auto}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}.sectiontitle2contents:link{color:#007af4}.sectiontitle2contents:visited{color:#800080}.note{margin-top:1em;margin-bottom:1em;background-color:#ffc}.notetitle{font-weight:bold}.notelisttitle{font-weight:bold}.tip{margin-top:1em;margin-bottom:1em;background-color:#ffc}.tiptitle{font-weight:bold}.fastpath{margin-top:1em;margin-bottom:1em;background-color:#ffc}.fastpathtitle{font-weight:bold}.important{margin-top:1em;margin-bottom:1em;background-color:#ffc}.importanttitle{font-weight:bold}.remember{margin-top:1em;margin-bottom:1em;background-color:#ffc}.remembertitle{font-weight:bold}.restriction{margin-top:1em;margin-bottom:1em;background-color:#ffc}.restrictiontitle{font-weight:bold}.attention{margin-top:1em;margin-bottom:1em;background-color:#ffc}.attentiontitle{font-weight:bold}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;background-color:#ffc}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;background-color:#ffc}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;background-color:#ffc}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;background-color:#ffc}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}ol{margin-top:1em;margin-bottom:1em;margin-left:2.4em;padding-left:0}ul{margin-top:1em;margin-bottom:1em;margin-left:2.0em;padding-left:0}ol ul{list-style:disc}ul ul{list-style:square}ol ul ul{list-style:square}ol ul{list-style-type:disc}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}.firstcol{font-weight:bold}th{background-color:#cfcfcf}table{margin-top:8pt;margin-bottom:12pt;width:100%}table caption{margin-top:8pt;text-align:left}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:.3em;margin-bottom:.3em}.substepexpand{margin-top:.3em;margin-bottom:.3em}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}.hrcopyright{color:#3f4e5d;margin-top:18pt}.hwcopyright{text-align:center}.comment{margin:2px 2px 2px 2px;font-family:Arial;font-size:10pt;background-color:#bfb;color:#000}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowncontext{display:none}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdowncollapsetable{border:0}.dropdowncollapsetable .dropdowncontext{display:none}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}pre{font-size:10pt;font-weight:normal;margin-left:9;margin-top:2;margin-bottom:2}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0} \ No newline at end of file diff --git a/ecs/api-ref/public_sys-resources/commonltr_print.css b/ecs/api-ref/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/ecs/api-ref/public_sys-resources/commonltr_print.css @@ -0,0 +1 @@ +body{font-size:12.0pt;margin:1.5em;margin-left:1.6cm}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:1em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.covertable{border:0;width:100% cellpadding:8pt;cellspacing:8pt}.cover_productname{font-size:15.0pt;font-family:"Arial"}.cover_manualtitle{font-size:24.0pt;font-weight:bold;font-family:"Arial"}.cover_manualsubtitle{font-size:18.0pt;font-weight:bold;font-family:"Arial"}.cover_heading{font-size:12.0pt;font-weight:bold;font-family:"Arial"}.cover_text{font-size:9.0pt;font-family:"Arial"}.tocheading,.heading1,.topictitle1{margin-top:40.0pt;margin-right:0;margin-bottom:20.0pt;margin-left:-1cm;text-align:left;border:0;border-bottom:solid windowtext .5pt;font-size:22.0pt;font-family:"Arial";font-weight:bold}.topictitlenumber1{font-size:72.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle2{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Arial";font-weight:bold}.topictitle3{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:16.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle4{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:14.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle5{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.blocklabel,.topictitle6{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.sectiontitle{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:-1cm;text-indent:0;font-size:13.0pt;font-family:"Arial";font-weight:bold}.tocentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Book Antiqua";font-weight:bold}.tocentry2{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry3{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry4{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry5{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tofentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.totentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.indexheading{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.indexentry1{margin-top:4pt;margin-right:0;margin-bottom:0;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Times New Roman"}.indexentry2{margin-top:0;margin-right:0;margin-bottom:0;margin-left:24.0pt;line-height:12.0pt;font-size:12.0pt}.indexentry3{margin-top:0;margin-right:0;margin-bottom:0;margin-left:48pt;line-height:12.0pt;font-size:12.0pt}.figurenumber{font-weight:bold}.tablenumber{font-weight:bold}.familylinks{margin-top:1.5em;margin-bottom:1em}.figcap{font-size:11.0pt}.tablecap{font-size:11.0pt}.figdesc{font-style:normal}.fignone{margin-top:8.0pt}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.ullinks{margin-left:0;list-style-type:none}.ulchildlink{margin-top:1em;margin-bottom:1em}.olchildlink{margin-top:1em;margin-bottom:1em;margin-left:1em}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-left:1cm;margin-top:1em;margin-bottom:1em}.reltasks{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relref{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relinfo{margin-top:1em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-left:0}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}table .note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.notetitle{font-weight:bold;font-size:11.0pt}.notelisttitle{font-weight:bold}table .tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.tiptitle{font-weight:bold;font-size:11.0pt}table .fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.fastpathtitle{font-weight:bold;font-size:11.0pt}table .important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.importanttitle{font-weight:bold;font-size:11.0pt}table .remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.remembertitle{font-weight:bold;font-size:11.0pt}table .restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.restrictiontitle{font-weight:bold;font-size:11.0pt}table .attention{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.attention{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}.attentiontitle{font-weight:bold}table .danger{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .notice{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .warning{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .caution{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}table caption{margin-top:8pt;text-align:left;font-weight:bold}.tablenoborder{margin-top:8pt}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}.firstcol{font-weight:bold}th{background-color:#cfcfcf}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:1em;margin-bottom:1em}.substepexpand{margin-top:1em;margin-bottom:1em}table{margin-top:8pt;margin-bottom:10.0pt;width:100%}thead{font-size:10.0pt;font-family:"Book Antiqua";font-weight:bold}tbody{font-size:11.0pt}ol{margin-top:1em;margin-bottom:1em;margin-left:1.7em;-webkit-padding-start:0}ul{margin-top:1em;margin-bottom:1em;margin-left:1.2em;-webkit-padding-start:0}ol ul{list-style:disc}ul ul{list-style:square}ol ol{list-style-type:lower-alpha}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre{font-size:10.0pt;border-width:2px;padding:2px;margin-top:5px;margin-bottom:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.prefacesectiontitle1{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Book Antiqua";font-weight:bold;overflow:auto}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0}.hrcopyright{color:#3f4e5d;margin-top:18pt;margin-left:-1cm}.hwcopyright{text-align:center;font-family:Arial;margin-left:-1cm} \ No newline at end of file diff --git a/ecs/api-ref/public_sys-resources/commonrtl.css b/ecs/api-ref/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..947a9a033 --- /dev/null +++ b/ecs/api-ref/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +.msgph{font-family:Courier New}.unresolved{background-color:#87ceeb}.noTemplate{background-color:#ff0}.base{background-color:#fff}/*! Add space for top level topics */.nested0,.p{margin-top:1em}/*! div with class=p is used for paragraphs that contain blocks, to keep the XHTML valid *//*! Default of italics to set apart figure captions */.figcap,.italic,.var{font-style:italic}.figdesc{font-style:normal}/*! Use @frame to create frames on figures */.figborder{padding-left:3px;padding-right:3px;margin-top:1em;border:2px solid Silver}.figsides{margin-top:1em;padding-left:3px;padding-right:3px;border-left:2px solid Silver;border-right:2px solid Silver}.figtop{border-top:2px solid Silver;margin-top:1em}.figbottom{border-bottom:2px solid Silver}.figtopbot{border-top:2px solid Silver;border-bottom:2px solid Silver;margin-top:1em}/*! Most link groups are created with
. Ensure they have space before and after. */.ullinks,ul.simple{list-style-type:none}.attention,.danger,.ddexpand,.dlexpand,.example,.fastpath,.important,.liexpand,.linklist,.note,.notice,.olchildlink,.relconcepts,.relinfo,.relref,.reltasks,.remember,.restriction,.section,.sliexpand,.stepexpand,.substepexpand,.tip,.ulchildlink,.warning{margin-top:1em;margin-bottom:1em}.linklistwithchild,.sublinklist{margin-top:1em;margin-right:1.5em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-right:20px}/*! Set heading sizes, getting smaller for deeper nesting */.topictitle1{font-size:1.34em;margin-top:0;margin-bottom:.1em}.topictitle2,.topictitle3,.topictitle4,.topictitle5,.topictitle6,.sectiontitle{font-size:1.17em}.topictitle2{margin-top:1pc;margin-bottom:.45em}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-weight:700}.topictitle4{margin-top:.83em;font-weight:700}.topictitle5{font-weight:700}.topictitle6{font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:0;color:#000;font-weight:700}/*! All note formats have the same default presentation */.attentiontitle,.bold,.cautiontitle,.dangertitle,.dlterm,.fastpathtitle,.firstcol,.importanttitle,.notelisttitle,.notetitle,.noticetitle,.parmname,.remembertitle,.restrictiontitle,.tiptitle,.uicontrol,.warningtitle{font-weight:700}.caution{font-weight:700;margin-bottom:1em}/*! Simple lists do not get a bullet *//*! Used on the first column of a table, when rowheader="firstcol" is used *//*! Various basic phrase styles */.boldItalic{font-weight:700;font-style:italic}.shortcut,.underlined{text-decoration:underline}/*! 2008-10-27 keyword采用跟随上下文的样式 +*//*! Default of bold for definition list terms *//*! Use CSS to expand lists with @compact="no" */.dltermexpand{font-weight:700;margin-top:1em}[compact="yes"]>li{margin-top:0}[compact="no"]>li{margin-top:.53em}/*! Align images based on @align on topic/image */div.imageleft,.text-align-left{text-align:left}div.imagecenter,.text-align-center{text-align:center}div.imageright,.text-align-right{text-align:right}div.imagejustify,.text-align-justify{text-align:justify}.cellrowborder{border-right:0;border-top:0;border-left:1px solid;border-bottom:1px solid}.row-nocellborder{border-left:hidden;border-right:0;border-top:0;border-bottom:1px solid}.cell-norowborder{border-top:0;border-bottom:hidden;border-right:0;border-left:1px solid}.nocellnorowborder{border:0;border-left:hidden;border-bottom:hidden}pre.codeblock,pre.screen{padding:5px;border:outset;background-color:#ccc;margin-top:2px;margin-bottom:2px;white-space:pre} \ No newline at end of file diff --git a/ecs/api-ref/public_sys-resources/danger_3.0-en-us.png b/ecs/api-ref/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 000000000..47a9c7235 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/danger_3.0-en-us.png differ diff --git a/ecs/api-ref/public_sys-resources/delta.gif b/ecs/api-ref/public_sys-resources/delta.gif new file mode 100644 index 000000000..0d1b1f674 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/delta.gif differ diff --git a/ecs/api-ref/public_sys-resources/deltaend.gif b/ecs/api-ref/public_sys-resources/deltaend.gif new file mode 100644 index 000000000..cc7da0fc8 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/deltaend.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-arrowdn.gif b/ecs/api-ref/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 000000000..84eec9be2 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-arrowdn.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-arrowrt.gif b/ecs/api-ref/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 000000000..39583d168 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-arrowrt.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-caution.gif b/ecs/api-ref/public_sys-resources/icon-caution.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-caution.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-danger.gif b/ecs/api-ref/public_sys-resources/icon-danger.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-danger.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-huawei.gif b/ecs/api-ref/public_sys-resources/icon-huawei.gif new file mode 100644 index 000000000..a31d60f89 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-huawei.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-note.gif b/ecs/api-ref/public_sys-resources/icon-note.gif new file mode 100644 index 000000000..31be2b039 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-note.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-notice.gif b/ecs/api-ref/public_sys-resources/icon-notice.gif new file mode 100644 index 000000000..409070650 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-notice.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-tip.gif b/ecs/api-ref/public_sys-resources/icon-tip.gif new file mode 100644 index 000000000..c47bae05c Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-tip.gif differ diff --git a/ecs/api-ref/public_sys-resources/icon-warning.gif b/ecs/api-ref/public_sys-resources/icon-warning.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/icon-warning.gif differ diff --git a/ecs/api-ref/public_sys-resources/note_3.0-en-us.png b/ecs/api-ref/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 000000000..57a0e1f53 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/note_3.0-en-us.png differ diff --git a/ecs/api-ref/public_sys-resources/notice_3.0-en-us.png b/ecs/api-ref/public_sys-resources/notice_3.0-en-us.png new file mode 100644 index 000000000..fa4b64990 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/notice_3.0-en-us.png differ diff --git a/ecs/api-ref/public_sys-resources/popup.js b/ecs/api-ref/public_sys-resources/popup.js new file mode 100644 index 000000000..a550862ed --- /dev/null +++ b/ecs/api-ref/public_sys-resources/popup.js @@ -0,0 +1 @@ +var i=0;var dhtmlgoodies_tooltipFlag=false;var dhtmlgoodies_tooltip="";var dhtmlgoodies_tooltipShadow="";var dhtmlgoodies_shadowSize=3;var dhtmlgoodies_tooltipMaxWidth=500;var dhtmlgoodies_tooltipMinWidth=100;var dhtmlgoodies_iframe=false;var timeId;var clickFlag=false;var tooltip_is_msie=(navigator.userAgent.indexOf("MSIE")>=0&&navigator.userAgent.indexOf("opera")==-1&&document.all)?true:false;var xPos;var yPos;window.document.onmousemove=function(a){a=a||window.event;if(a.pageX){xPos=a.pageX;yPos=a.pageY}else{if(document.body!==null&&typeof document.body!=="undefined"){xPos=a.clientX+document.body.scrollLeft-document.body.clientLeft;yPos=a.clientY+document.body.scrollTop-document.body.clientTop}}};function showTooltip(e){if(document.body===null||typeof document.body==="undefined"){return}if(i==0){return}clickFlag=true;var f=Json.parse("jsonData."+e);var a=Math.max(document.body.clientWidth,document.documentElement.clientWidth)-20;if(!dhtmlgoodies_tooltipFlag){dhtmlgoodies_tooltip=document.createElement("DIV");dhtmlgoodies_tooltip.id="dhtmlgoodies_tooltip";dhtmlgoodies_tooltipShadow=document.createElement("DIV");dhtmlgoodies_tooltipShadow.id="dhtmlgoodies_tooltipShadow";document.body.appendChild(dhtmlgoodies_tooltip);document.body.appendChild(dhtmlgoodies_tooltipShadow);if(tooltip_is_msie){dhtmlgoodies_iframe=document.createElement("IFRAME");dhtmlgoodies_iframe.frameborder="5";dhtmlgoodies_iframe.style.backgroundColor="#FFFFFF";dhtmlgoodies_iframe.src="#";dhtmlgoodies_iframe.style.zIndex=100;dhtmlgoodies_iframe.style.position="absolute";document.body.appendChild(dhtmlgoodies_iframe)}}dhtmlgoodies_tooltip.style.display="block";dhtmlgoodies_tooltipShadow.style.display="block";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="block"}var b=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(navigator.userAgent.toLowerCase().indexOf("safari")>=0){b=0}var c=xPos+10;dhtmlgoodies_tooltip.style.width=null;dhtmlgoodies_tooltip.innerHTML=f;dhtmlgoodies_tooltip.style.left=c+"px";if(tooltip_is_msie){dhtmlgoodies_tooltip.style.top=yPos+20+b+"px"}else{dhtmlgoodies_tooltip.style.top=yPos+20+"px"}dhtmlgoodies_tooltipShadow.style.left=c+dhtmlgoodies_shadowSize+"px";if(tooltip_is_msie){dhtmlgoodies_tooltipShadow.style.top=yPos+20+b+dhtmlgoodies_shadowSize+"px"}else{dhtmlgoodies_tooltipShadow.style.top=yPos+20+dhtmlgoodies_shadowSize+"px"}if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){dhtmlgoodies_tooltip.style.width=dhtmlgoodies_tooltipMaxWidth+"px"}var d=dhtmlgoodies_tooltip.offsetWidth;if(da){dhtmlgoodies_tooltip.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((c+d)-a))+"px";dhtmlgoodies_tooltipShadow.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((c+d)-a)+dhtmlgoodies_shadowSize)+"px"}if(tooltip_is_msie){dhtmlgoodies_iframe.style.left=dhtmlgoodies_tooltip.style.left;dhtmlgoodies_iframe.style.top=dhtmlgoodies_tooltip.style.top;dhtmlgoodies_iframe.style.width=dhtmlgoodies_tooltip.offsetWidth+"px";dhtmlgoodies_iframe.style.height=dhtmlgoodies_tooltip.offsetHeight+"px"}}function hideTooltip(){i=0;clickFlag=false;if((dhtmlgoodies_tooltip!==null&&typeof dhtmlgoodies_tooltip!=="undefined")&&+(dhtmlgoodies_tooltip.style!==null&&typeof dhtmlgoodies_tooltip.style!=="undefined")){dhtmlgoodies_tooltip.style.display="none";dhtmlgoodies_tooltipShadow.style.display="none";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="none"}}if(timeId!==null&&typeof timeId!=="undefined"&&timeId!=""){clearTimeout(timeId)}}function showText(a){i=1;timeId=setTimeout(function(){showTooltip(a)},500)}function showText2(a){if(!clickFlag){i=1;showTooltip(a);i=0;if(timeId!==null&&typeof timeId!=="undefined"&&timeId!=""){clearTimeout(timeId)}}}function anchorScroll(b){var d=document.getElementsByName(b);if(d!=null&&d.length>0){var c=d[0];var a=c.getBoundingClientRect().left+(document.body.scrollLeft||(document.documentElement&&document.documentElement.scrollLeft));var e=c.getBoundingClientRect().top+(document.body.scrollTop||(document.documentElement&&document.documentElement.scrollTop));window.scrollTo(a,e-30)}}; \ No newline at end of file diff --git a/ecs/api-ref/public_sys-resources/warning_3.0-en-us.png b/ecs/api-ref/public_sys-resources/warning_3.0-en-us.png new file mode 100644 index 000000000..def5c3565 Binary files /dev/null and b/ecs/api-ref/public_sys-resources/warning_3.0-en-us.png differ diff --git a/ecs/dev/ALL_META.TXT.json b/ecs/dev/ALL_META.TXT.json new file mode 100644 index 000000000..101bc813f --- /dev/null +++ b/ecs/dev/ALL_META.TXT.json @@ -0,0 +1,112 @@ +[ + { + "uri":"en-us_topic_0134192990.html", + "product_code":"ecs", + "code":"1", + "des":"This document describes how to call the APIs of Elastic Cloud Server (ECS) to use ECS functions. The concepts related to ECS help you quickly learn this service.An ECS is", + "doc_type":"devg", + "kw":"Overview,Developer Guide", + "title":"Overview", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134327704.html", + "product_code":"ecs", + "code":"2", + "des":"Before using ECS through APIs, learn how to call ECS APIs. For details about how to call REST APIs, see section API Usage Guidelines.", + "doc_type":"devg", + "kw":"Notes,Developer Guide", + "title":"Notes", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134193004.html", + "product_code":"ecs", + "code":"3", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"devg", + "kw":"Request Format", + "title":"Request Format", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134193005.html", + "product_code":"ecs", + "code":"4", + "des":"OpenStack APIs are of version v2 or v2.1. The two versions use the same set of main code, and v2.1 supports microversions.", + "doc_type":"devg", + "kw":"Versions,Request Format,Developer Guide", + "title":"Versions", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134193006.html", + "product_code":"ecs", + "code":"5", + "des":"v2.1 APIs support microversions for small/medium API changes or document changes.Users can use a microversion to obtain the latest API microversion supported by a cloud s", + "doc_type":"devg", + "kw":"Microversions,Request Format,Developer Guide", + "title":"Microversions", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134192984.html", + "product_code":"ecs", + "code":"6", + "des":"POST: https://{endpoint}/v3/auth/tokensHeadersParameter descriptionParameterValueContent-Typeapplication/jsonBody{\n \"auth\":{\n \"identity\":{\n \"password", + "doc_type":"devg", + "kw":"Request Example,Request Format,Developer Guide", + "title":"Request Example", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134192987.html", + "product_code":"ecs", + "code":"7", + "des":"An ECS with EVS disks is required.An ECS can be created using a disk or image. This section uses an image as an example to describe how to create an ECS.Creating an ECS i", + "doc_type":"devg", + "kw":"Creating an ECS,Developer Guide", + "title":"Creating an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134192993.html", + "product_code":"ecs", + "code":"8", + "des":"When ECS specifications fail to meet service requirements, they can be modified, for example, by upgrading the vCPUs and memory. Certain ECSs also support changing ECS ty", + "doc_type":"devg", + "kw":"Modifying ECS Specifications,Developer Guide", + "title":"Modifying ECS Specifications", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134192996.html", + "product_code":"ecs", + "code":"9", + "des":"If the existing disks of an ECS fail to meet service requirements, for example, due to insufficient disk space or poor disk performance, you can attach more available dis", + "doc_type":"devg", + "kw":"Attaching a Disk to an ECS,Developer Guide", + "title":"Attaching a Disk to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134192997.html", + "product_code":"ecs", + "code":"10", + "des":"If an ECS requires multiple NICs, you can call the API for creating NICs and bind them to the ECS.You can bind a NIC by setting the nics parameter during ECS creation or ", + "doc_type":"devg", + "kw":"Binding a NIC to an ECS,Developer Guide", + "title":"Binding a NIC to an ECS", + "githuburl":"" + }, + { + "uri":"en-us_topic_0134883593.html", + "product_code":"ecs", + "code":"11", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"devg", + "kw":"Change History,Developer Guide", + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/ecs/dev/CLASS.TXT.json b/ecs/dev/CLASS.TXT.json new file mode 100644 index 000000000..b1484a2c2 --- /dev/null +++ b/ecs/dev/CLASS.TXT.json @@ -0,0 +1,101 @@ +[ + { + "desc":"This document describes how to call the APIs of Elastic Cloud Server (ECS) to use ECS functions. The concepts related to ECS help you quickly learn this service.An ECS is", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0134192990.html", + "doc_type":"devg", + "p_code":"", + "code":"1" + }, + { + "desc":"Before using ECS through APIs, learn how to call ECS APIs. For details about how to call REST APIs, see section API Usage Guidelines.", + "product_code":"ecs", + "title":"Notes", + "uri":"en-us_topic_0134327704.html", + "doc_type":"devg", + "p_code":"", + "code":"2" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Request Format", + "uri":"en-us_topic_0134193004.html", + "doc_type":"devg", + "p_code":"", + "code":"3" + }, + { + "desc":"OpenStack APIs are of version v2 or v2.1. The two versions use the same set of main code, and v2.1 supports microversions.", + "product_code":"ecs", + "title":"Versions", + "uri":"en-us_topic_0134193005.html", + "doc_type":"devg", + "p_code":"3", + "code":"4" + }, + { + "desc":"v2.1 APIs support microversions for small/medium API changes or document changes.Users can use a microversion to obtain the latest API microversion supported by a cloud s", + "product_code":"ecs", + "title":"Microversions", + "uri":"en-us_topic_0134193006.html", + "doc_type":"devg", + "p_code":"3", + "code":"5" + }, + { + "desc":"POST: https://{endpoint}/v3/auth/tokensHeadersParameter descriptionParameterValueContent-Typeapplication/jsonBody{\n \"auth\":{\n \"identity\":{\n \"password", + "product_code":"ecs", + "title":"Request Example", + "uri":"en-us_topic_0134192984.html", + "doc_type":"devg", + "p_code":"3", + "code":"6" + }, + { + "desc":"An ECS with EVS disks is required.An ECS can be created using a disk or image. This section uses an image as an example to describe how to create an ECS.Creating an ECS i", + "product_code":"ecs", + "title":"Creating an ECS", + "uri":"en-us_topic_0134192987.html", + "doc_type":"devg", + "p_code":"", + "code":"7" + }, + { + "desc":"When ECS specifications fail to meet service requirements, they can be modified, for example, by upgrading the vCPUs and memory. Certain ECSs also support changing ECS ty", + "product_code":"ecs", + "title":"Modifying ECS Specifications", + "uri":"en-us_topic_0134192993.html", + "doc_type":"devg", + "p_code":"", + "code":"8" + }, + { + "desc":"If the existing disks of an ECS fail to meet service requirements, for example, due to insufficient disk space or poor disk performance, you can attach more available dis", + "product_code":"ecs", + "title":"Attaching a Disk to an ECS", + "uri":"en-us_topic_0134192996.html", + "doc_type":"devg", + "p_code":"", + "code":"9" + }, + { + "desc":"If an ECS requires multiple NICs, you can call the API for creating NICs and bind them to the ECS.You can bind a NIC by setting the nics parameter during ECS creation or ", + "product_code":"ecs", + "title":"Binding a NIC to an ECS", + "uri":"en-us_topic_0134192997.html", + "doc_type":"devg", + "p_code":"", + "code":"10" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Change History", + "uri":"en-us_topic_0134883593.html", + "doc_type":"devg", + "p_code":"", + "code":"11" + } +] \ No newline at end of file diff --git a/ecs/dev/PARAMETERS.txt b/ecs/dev/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/ecs/dev/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/ecs/dev/en-us_image_0173496405.png b/ecs/dev/en-us_image_0173496405.png new file mode 100644 index 000000000..f8c9f975b Binary files /dev/null and b/ecs/dev/en-us_image_0173496405.png differ diff --git a/ecs/dev/en-us_image_0173496413.png b/ecs/dev/en-us_image_0173496413.png new file mode 100644 index 000000000..63f98f52f Binary files /dev/null and b/ecs/dev/en-us_image_0173496413.png differ diff --git a/ecs/dev/en-us_topic_0134192984.html b/ecs/dev/en-us_topic_0134192984.html new file mode 100644 index 000000000..3ade03d75 --- /dev/null +++ b/ecs/dev/en-us_topic_0134192984.html @@ -0,0 +1,239 @@ + + +

Request Example

+
  1. Obtain a token.

    • POST: https://{endpoint}/v3/auth/tokens
    • Headers +
      + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Value

      +

      Content-Type

      +

      application/json

      +
      +
      +
    • Body
      {
      +    "auth":{
      +        "identity":{
      +            "password":{
      +                "user":{
      +                    "name":"testuser",
      +                    "domain":{
      +                        "id":"2aa29cbca17a4822abd096610e378ffa"
      +                    },
      +                    "password":"Test@123"
      +                }
      +            },
      +            "methods":[
      +                "password"
      +            ]
      +        },
      +        "scope":{
      +            "project":{
      +                "id":"fb770eb43f934b5a8bda955642b954b9"
      +            }
      +        }
      +    }
      +}
      +
    +

    Obtain the token (x-subject-token) in Headers

    +
    Figure 1 Obtaining the token
    +

  2. Initiate a request and access the API for viewing details about an ECS.

    • GET: https://{endpoint}/v2/fb770eb43f934b5a8bda955642b954b9/servers/detail
      • URI format: GET /v2/{tenant_id}/servers/detail{?changes-since,image,flavor,name,status,limit,marker,not-tags,reservation_id,all_tenants}
      • tenant_id: fb770eb43f934b5a8bda955642b954b9
      • The fields, changes-since,image,flavor,name,status,limit,marker,not-tags,reservation_id,all_tenants, following the question mark (?) are optional for viewing an ECS.
      +
    • Headers +
      + + + + + + +

      Content-Type

      +

      application/json

      +

      X-Auth-Token

      +

      Obtained in 1

      +
      +
      +
    • Response body: JSON data in UTF-8 code format
      {
      +  "servers": [
      +    {
      +      "tenant_id": "fb770eb43f934b5a8bda955642b954b9",
      +      "addresses": {
      +        "196b63ba-4201-4b55-b5aa-62ab6085d884": [
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:82:2b:a0",
      +            "OS-EXT-IPS:type": "fixed",
      +            "addr": "192.168.1.10",
      +            "version": 4
      +          },
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:82:2b:a0",
      +            "OS-EXT-IPS:type": "floating",
      +            "addr": "192.168.213.134",
      +            "version": 4
      +          }
      +        ]
      +      },
      +      "metadata": {},
      +      "OS-EXT-STS:task_state": null,
      +      "OS-DCF:diskConfig": "MANUAL",
      +      "OS-EXT-AZ:availability_zone": "eu-de-02",
      +      "links": [
      +        {
      +          "rel": "self",
      +          "href": "https://xxx/v2/fb770eb43f934b5a8bda955642b954b9/servers/0e56e372-31d4-40b6-8c85-d82a3cfeb05c"
      +        },
      +        {
      +          "rel": "bookmark",
      +          "href": "https://xxx/fb770eb43f934b5a8bda955642b954b9/servers/0e56e372-31d4-40b6-8c85-d82a3cfeb05c"
      +        }
      +      ],
      +      "OS-EXT-STS:power_state": 1,
      +      "id": "0e56e372-31d4-40b6-8c85-d82a3cfeb05c",
      +      "os-extended-volumes:volumes_attached": [
      +        {
      +          "id": "3e3fd674-a816-4602-8175-d9b2e20a65d5"
      +        }
      +      ],
      +      "OS-EXT-SRV-ATTR:host": "pod01.eu-de-02",
      +      "image": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://xxx/fb770eb43f934b5a8bda955642b954b9/images/f3966520-45ce-45d3-b099-0123d1cd0043"
      +          }
      +        ],
      +        "id": "f3966520-45ce-45d3-b099-0123d1cd0043"
      +      },
      +      "OS-SRV-USG:terminated_at": null,
      +      "accessIPv4": "",
      +      "accessIPv6": "",
      +      "created": "2018-05-10T09:13:29Z",
      +      "hostId": "1ee40e90e4774fc712d7e881d62ac5be9b05c9006504a69b9ab15aa0",
      +      "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova005@7",
      +      "key_name": null,
      +      "flavor": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://xxx/fb770eb43f934b5a8bda955642b954b9/flavors/s2.small.1"
      +          }
      +        ],
      +        "id": "s2.small.1"
      +      },
      +      "security_groups": [
      +        {
      +          "name": "default"
      +        }
      +      ],
      +      "config_drive": "",
      +      "OS-EXT-STS:vm_state": "active",
      +      "OS-EXT-SRV-ATTR:instance_name": "instance-0009d9c4",
      +      "user_id": "f79791beca3c48159ac2553fff22e166",
      +      "name": "ecs-65a7",
      +      "progress": 0,
      +      "OS-SRV-USG:launched_at": "2018-05-10T12:11:10.803603",
      +      "updated": "2018-05-10T12:11:10Z",
      +      "status": "ACTIVE"
      +    },
      +    {
      +      "tenant_id": "fb770eb43f934b5a8bda955642b954b9",
      +      "addresses": {
      +        "21bcff3b-3a71-4304-ab62-dad0b305890e": [
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:e8:ab:b2",
      +            "OS-EXT-IPS:type": "fixed",
      +            "addr": "192.168.0.79",
      +            "version": 4
      +          },
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:e8:ab:b2",
      +            "OS-EXT-IPS:type": "floating",
      +            "addr": "192.168.218.86",
      +            "version": 4
      +          }
      +        ]
      +      },
      +      "metadata": {},
      +      "OS-EXT-STS:task_state": null,
      +      "OS-DCF:diskConfig": "MANUAL",
      +      "OS-EXT-AZ:availability_zone": "eu-de-02",
      +      "links": [
      +        {
      +          "rel": "self",
      +          "href": "https://xxx/v2/fb770eb43f934b5a8bda955642b954b9/servers/3e6388ea-3467-436e-b11f-4dddbc3dd810"
      +        },
      +        {
      +          "rel": "bookmark",
      +          "href": "https://xxx/fb770eb43f934b5a8bda955642b954b9/servers/3e6388ea-3467-436e-b11f-4dddbc3dd810"
      +        }
      +      ],
      +      "OS-EXT-STS:power_state": 1,
      +      "id": "3e6388ea-3467-436e-b11f-4dddbc3dd810",
      +      "os-extended-volumes:volumes_attached": [
      +        {
      +          "id": "1bb5c0f6-300d-45c9-81f0-ad41736716de"
      +        }
      +      ],
      +      "OS-EXT-SRV-ATTR:host": "pod01.eu-de-02",
      +      "image": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://xxx/fb770eb43f934b5a8bda955642b954b9/images/f1d75ee7-83bc-4e43-81fb-b69b4625fdea"
      +          }
      +        ],
      +        "id": "f1d75ee7-83bc-4e43-81fb-b69b4625fdea"
      +      },
      +      "OS-SRV-USG:terminated_at": null,
      +      "accessIPv4": "",
      +      "accessIPv6": "",
      +      "created": "2018-01-27T10:01:35Z",
      +      "hostId": "1ee40e90e4774fc712d7e881d62ac5be9b05c9006504a69b9ab15aa0",
      +      "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova005@7",
      +      "key_name": null,
      +      "flavor": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://xxx/fb770eb43f934b5a8bda955642b954b9/flavors/s2.small.1"
      +          }
      +        ],
      +        "id": "s2.small.1"
      +      },
      +      "security_groups": [
      +        {
      +          "name": "default"
      +        }
      +      ],
      +      "config_drive": "",
      +      "OS-EXT-STS:vm_state": "active",
      +      "OS-EXT-SRV-ATTR:instance_name": "instance-00070c07",
      +      "user_id": "f79791beca3c48159ac2553fff22e166",
      +      "name": "ecs-terraformCLI",
      +      "progress": 0,
      +      "OS-SRV-USG:launched_at": "2018-05-10T10:19:04.709851",
      +      "updated": "2018-05-10T10:19:04Z",
      +      "status": "ACTIVE"
      +    }
      +  ]
      +}
      +
    +

+
+
+ +
+ + + \ No newline at end of file diff --git a/ecs/dev/en-us_topic_0134192987.html b/ecs/dev/en-us_topic_0134192987.html new file mode 100644 index 000000000..7187eb4a9 --- /dev/null +++ b/ecs/dev/en-us_topic_0134192987.html @@ -0,0 +1,297 @@ + + +

Creating an ECS

+

Scenarios

An ECS with EVS disks is required.

+

An ECS can be created using a disk or image. This section uses an image as an example to describe how to create an ECS.

+
+

Involved APIs

Creating an ECS involves viewing flavors and AZs as well as creating EVS disks. The following APIs are required:

+
  • API for viewing details about ECS flavors
  • API for viewing details about images
  • API for viewing networks
  • API for creating and importing an SSH key pair
  • API for creating an ECS
  • API for viewing details about an ECS
+
+

Procedure

  1. Determine the ECS flavor.

    1. View ECS flavors.
      • API

        URI format: GET /v2/{tenant_id}/flavors/detail{?minDisk,minRam,is_public,sort_key,sort_dir}

        +

        The fields following the question mark (?) are optional for viewing flavors. For details, see section Querying Details About ECS Flavors.

        +
      • Request example

        GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/flavors/detail

        +

        Obtain the endpoint from Regions and Endpoints.

        +
      • Response example
        {
        +  "flavors": [
        +    {
        +      "name": "c1.2xlarge",
        +      "links": [
        +        {
        +          "href": "https://xxx/v2/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge",
        +          "rel": "self"
        +        },
        +        {
        +          "href": "https://xxx/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge",
        +          "rel": "bookmark"
        +        }
        +      ],
        +      "ram": 8192,
        +      "OS-FLV-DISABLED:disabled": false,
        +      "vcpus": 8,
        +      "swap": "",
        +      "os-flavor-access:is_public": true,
        +      "rxtx_factor": 1,
        +      "OS-FLV-EXT-DATA:ephemeral": 0,
        +      "disk": 0,
        +      "id": "c1.2xlarge"
        +    }
        +]
        +}
        +
      +
    2. Select a flavor based on site requirements and record the flavor ID.
    +

  2. Determine the image.

    1. View images.
      • API

        URI format: GET /v2/{tenant_id}/images/detail

        +

        For details, see section "Querying Image Details" in Elastic Cloud Server API Reference.

        +
      • Request example

        GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/images/detail

        +

        Obtain the endpoint from Regions and Endpoints.

        +
      • Response example
        {
        +  "images": [
        +    {
        +      "OS-EXT-IMG-SIZE:size": 0,
        +      "metadata": {
        +        "__os_type": "Linux",
        +        "hw_vif_multiqueue_enabled": "true",
        +        "__imagetype": "gold",
        +        "__quick_start": "true",
        +        "virtual_env_type": "FusionCompute",
        +        "__support_xen": "true",
        +        "__support_kvm": "true",
        +        "__image_source_type": "uds",
        +        "__platform": "EulerOS",
        +        "__os_version": "EulerOS 2.2 64bit",
        +        "__os_bit": "64",
        +        "__isregistered": "false"
        +      },
        +      "created": "2018-05-14T06:13:50Z",
        +      "minRam": 0,
        +      "name": "DBS-MySQL-Image_2.1.3.3",
        +      "progress": 100,
        +      "links": [
        +        {
        +          "rel": "self",
        +          "href": "https://None/v2/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4"
        +        },
        +        {
        +          "rel": "bookmark",
        +          "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4"
        +        },
        +        {
        +          "rel": "alternate",
        +          "href": "https://None/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4",
        +          "type": "application/vnd.openstack.image"
        +        }
        +      ],
        +      "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4",
        +      "updated": "2018-05-14T06:13:52Z",
        +      "minDisk": 40,
        +      "status": "ACTIVE"
        +    }
        +  ]
        +}
        +
      +
    2. Select an image based on site requirements and record the image ID.
    +

  3. Determine the network configuration.

    1. View networks.
      • API

        URI format: GET /v2/{tenant_id}/os-networks

        +

        For details, see section "Querying Networks" in Elastic Cloud Server API Reference.

        +
      • Request example

        GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/os-networks

        +

        Obtain the endpoint from Regions and Endpoints.

        +
      • Response example
        {
        +  "networks": [
        +    {
        +      "id": "07a9557d-4256-48ae-847c-415a9c8f7ff6",
        +      "label": "b_tt3_td1b",
        +      "broadcast": null,
        +      "cidr": null,
        +      "dns1": null,
        +      "dns2": null,
        +      "gateway": null,
        +      "netmask": null,
        +      "cidr_v6": null,
        +      "gateway_v6": null,
        +      "netmask_v6": null
        +    }
        +  ]
        +}
        +
      +
    2. Select a network based on site requirements and record the network ID.
    +

  4. Set the login mode to key pair.

    1. Create a key pair.
      • API

        URI format: POST /v2/{tenant_id}/os-keypairs

        +

        For details, see section "Creating and Importing an SSH Key Pair" in Elastic Cloud Server API Reference.

        +
      • Request example

        POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/os-keypairs

        +

        Obtain the endpoint from Regions and Endpoints.

        +

        Body

        +
        {
        +    "keypair": {
        +        "type": "ssh",
        +        "name": "demo1",
        +        "user_id": "fake"
        +    }
        +}
        +
      • Response example
        {
        +  "keypair": {
        +    "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrR5Gcwlh5ih7JOvzIUuQxS5qzWWPMYHeDXkDKSQ9W5pumOV05SiO3WCswnaQ5xMdOl31mNiHtwlwq9dJi7X6jJBB2shTD+00G5WuwkBbFU4CLvt1B44u0NUiaTJ35NAvW2/4XvpXm9OwiQ3B5ge6ZY7Esi38Unh+pkbhPkYxNBCK8yoOlojQhWs75abdxZBi811/8RwLcNiFiocA2RGxtRjBdpEScj+1TU+OcfZdQnr0AFbO11z7yxfIygwwzVTgUuJNbMbKHStQqRbklfMlHY4RBPQgb7RN/YaXKTQSXT84k+D9xlDNo7Wj4fwOJTOz/s/PvbIOqjRHt9D6Y4IKd Generated-by-Nova\n",
        +    "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAq0eRnMJYeYoeyTr8yFLkMUuas1ljzGB3g15AykkPVuabpjld\nOUojt1grMJ2kOcTHTpd9ZjYh7cJcKvXSYu1+oyQQdrIUw/tNBuVrsJAWxVOAi77d\nQeOLtDVImkyd+TQL1tv+F76V5vTsIkNweYHumWOxLIt/FJ4fqZG4T5GMTQQivMqD\npaI0IVrO+Wm3cWQYvNdf/EcC3DYhYqHANkRsbUYwXaREnI/tU1PjnH2XUJ69ABWz\ntdc+8sXyMoMMM1U4FLiTWzGyh0rUKkW5JXzJR2OEQT0IG+0Tf2Glyk0El0/OJPg/\ncZQzaO1o+H8DiUzs/7Pz72yDqo0R7fQ+mOCCnQIDAQABAoIBAA6/c9dGmK2mae4z\nyQ5KrOFdvC1TNhej+sZx+CwyzEJUSvSuHcvQCXFBAz8FY92hhvPKcX66jINXZ+4/\nCmWAQ5YyhcRiow0Y91HvsS0bywoknX3q6kxBFodmyyCWFkgd5iMTADb1Lx0a27Y7\njlS4Dl5gyiGmxUN2Ng24wWEAjE8ZNuI0lrtr5IZKp+s5IAi/rb5AG/mL7EzicE8c\nmGP+QAa+nzwhAwNhFwVID230xen/ZcoL1d77hxeARNqJUxoR25gwJd6Ebg2y9pDW\nVu6cbbzgdGUCfQYlMEoAamAkCswOsDpVDBXwQnt2A537n6Wq2bgYIKusHr9thtxP\n/5ubQLUCgYEA4zYuBG2vtLHnvce26P8o2j1xcJS9K0ozkah9JFl3hqFN0sAqLlz7\n/Fm1jA4kzHJS3d0UqP3AMDxY3HkIqCn4Be7lqeAAe2AfqkOZpt9MDNv4VwKe9sPb\nViW1qjL3FxziLC/YWTRNSlpwRjqJJGhA+UQt8rOia1k/zXmrEs7bXLcCgYEAwPsu\nK3j5QoAiziYVMYf5iCzWwAM9Ljpf9gw23lefTdIzhhfFtJplVRSyxRGU0UZ84GMI\nTd5zmcIF/1KUfhqmeiQzz6NIPEYEReahjpQ/sOH/Gk5Rwr3QwYPrwAu5x+kk/SRi\nKPkqw7APTR0sMQBcUq+ZYwGYLGPMdd1zUdLfb0sCgYBkuz11iydtxb3G/obSD2WO\nM9VaIycmzRPFzNwGRH/gOR0mhTluKp0wyJjbSd34oeqpH/2r2ivddrOysxoqa8jg\n4IQDZyLvj7MaKjQxrieqP89+y9Or9TMFo1xB46x2G8EN8/xHuA9YGnZSPFtWv72m\nhRqV0hv82amWsA0vHnRUSwKBgDsKHXvrTMbNkNhkykMXCH5iyWiBFSyZa1ZJMlgf\nknsqfdzeVPwF6E55QKAN2uuTlwzG/3ljPxahR1hvmUJjQN9JSBiUKbtW6GPCRVbr\nf/jLi1Iu99COZdluVKeybqn8Z/aSNP24DR9FM8kxzZ1IMPaTBmhFypp6BclhcLBt\nxTG1AoGAfcrkVbV1SOy7fECUtMpUECcw0yU4GWj3sR2RbII63C500RVYQlUpUaRR\naANbASHTVR4myOKtGSxEUhAQHlxFDwsDL7W3gzAqTFbEDp1xAAUyT/nkOAhQjEm4\nORFdDETeXLQG1KMUj+8AdnhfYp3JTdft6rmPpZEBUFiCAUMAvb0=\n-----END RSA PRIVATE KEY-----\n",
        +    "user_id": "f79791beca3c48159ac2553fff22e166",
        +    "name": "demo1",
        +    "fingerprint": "57:a7:a2:ed:5f:aa:e7:54:62:2e:bb:e7:92:22:cb:40"
        +  }
        +}
        +
      +
    2. Import the key pair.
      • API

        URI format: POST /v2/{tenant_id}/os-keypairs

        +

        For details, see section "Creating and Importing an SSH Key Pair" in Elastic Cloud Server API Reference.

        +
      • Request example

        POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/os-keypairs

        +

        Obtain the endpoint from Regions and Endpoints.

        +

        Body

        +
        {
        +    "keypair": {
        +        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n",
        +        "type": "ssh",
        +        "name": "demo2",
        +        "user_id": "fake"
        +    }
        +}
        +
      • Response example
        {
        +  "keypair": {
        +    "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n",
        +    "user_id": "f79791beca3c48159ac2553fff22e166",
        +    "name": "demo2",
        +    "fingerprint": "dd:44:45:49:d9:f6:4f:c0:24:2d:81:aa:c4:4b:83:c2"
        +  }
        +}
        +
      +
    3. Record the name in the response body, for example, demo2.
    +

  5. Create an ECS authenticated using the key pair.

    • API

      URI format: POST /v2/{tenant_id}/servers

      +

      For details about API constraints and request parameters, see section "Creating an ECS" in Elastic Cloud Server API Reference.

      +

      In this example, the ECS is created using a specified image. Therefore,

      +
      • In block_device_mapping_v2, set source_type to image, uuid to the image ID, destination_type to volume, and boot_index to 0.
      • The volume_size must be greater than or equal to the minimum value specified in the image metadata.
      +
      +
    • Request example

      POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers

      +

      Obtain the endpoint from Regions and Endpoints.

      +

      Body

      +
      {
      +    "server": {
      +        "flavorRef": "c1.large",
      +        "name": "zttestvm1",
      +        "block_device_mapping_v2": [{
      +        "source_type": "image",
      +        "destination_type": "volume",
      +        "volume_type": "SATA",
      +              "volume_size": "40",
      +              "delete_on_termination": "true",
      +        "uuid": "11e8f727-d439-4ed1-b3b8-33f46c0379c4",
      +        "boot_index": "0"
      +        }],
      +        "networks": [{
      +            "uuid": "fb68519f-a7c0-476e-98d4-2e4cf6de6def"
      +        }],
      +        "key_name": "demo2",
      +        "availability_zone": "eu-de-01"
      +    }
      +}
      +
    • Response example
      {
      +  "server": {
      +    "security_groups": [
      +      {
      +        "name": "default"
      +      }
      +    ],
      +    "OS-DCF:diskConfig": "MANUAL",
      +    "links": [
      +      {
      +        "rel": "self",
      +        "href": "https://None/v2/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077"
      +      },
      +      {
      +        "rel": "bookmark",
      +        "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077"
      +      }
      +    ],
      +    "id": "6d311127-bce1-48db-bf0f-cac9f8f7f077",
      +    "adminPass": "WcC4QoVZPXpV"
      +  }
      +}
      +
    +

  6. Verify the ECS creation.

    • API

      URI format: GET /v2/{tenant_id}/servers/{server_id}

      +

      For details, see section "Querying Details About an ECS" in Elastic Cloud Server API Reference.

      +
    • Request example

      GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6

      +

      Where,

      +

      0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6 is the UUID of the created ECS.

      +

      Obtain the endpoint from Regions and Endpoints.

      +
    • Response example
      {
      +  "server": {
      +    "tenant_id": "74610f3a5ad941998e91f076297ecf27",
      +    "addresses": {
      +      "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68": [
      +        {
      +          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:88:01:1b",
      +          "OS-EXT-IPS:type": "fixed",
      +          "addr": "192.168.2.192",
      +          "version": 4
      +        }
      +      ]
      +    },
      +    "metadata": {},
      +    "OS-EXT-STS:task_state": null,
      +    "OS-DCF:diskConfig": "MANUAL",
      +    "OS-EXT-AZ:availability_zone": "eu-de-01",
      +    "links": [
      +      {
      +        "rel": "self",
      +        "href": "https://None/v2/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6"
      +      },
      +      {
      +        "rel": "bookmark",
      +        "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6"
      +      }
      +    ],
      +    "OS-EXT-STS:power_state": 1,
      +    "id": "0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6",
      +    "os-extended-volumes:volumes_attached": [
      +      {
      +        "id": "b551445a-e749-4d53-932a-638a455cb6c3"
      +      }
      +    ],
      +    "OS-EXT-SRV-ATTR:host": "pod1a.eude1",
      +    "image": {
      +      "links": [
      +        {
      +          "rel": "bookmark",
      +          "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4"
      +        }
      +      ],
      +      "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4"
      +    },
      +    "OS-SRV-USG:terminated_at": null,
      +    "accessIPv4": "",
      +    "accessIPv6": "",
      +    "created": "2018-05-25T01:47:11Z",
      +    "hostId": "b2792bef989888d2df1f51bff81de5ac58a4117f4e9ec3059c1a0410",
      +    "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova001@36",
      +    "key_name": null,
      +    "flavor": {
      +      "links": [
      +        {
      +          "rel": "bookmark",
      +          "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/c1.large"
      +        }
      +      ],
      +      "id": "c1.large"
      +    },
      +    "security_groups": [
      +      {
      +        "name": "default"
      +      }
      +    ],
      +    "config_drive": "",
      +    "OS-EXT-STS:vm_state": "active",
      +    "OS-EXT-SRV-ATTR:instance_name": "instance-001883cd",
      +    "user_id": "f79791beca3c48159ac2553fff22e166",
      +    "name": "zttestvm1",
      +    "progress": 0,
      +    "OS-SRV-USG:launched_at": "2018-05-25T01:47:55.755922",
      +    "updated": "2018-05-25T01:47:55Z",
      +    "status": "ACTIVE"
      +  }
      +}
      +
    +

+
+
+ diff --git a/ecs/dev/en-us_topic_0134192990.html b/ecs/dev/en-us_topic_0134192990.html new file mode 100644 index 000000000..5e6ada92a --- /dev/null +++ b/ecs/dev/en-us_topic_0134192990.html @@ -0,0 +1,24 @@ + + +

Overview

+

This document describes how to call the APIs of Elastic Cloud Server (ECS) to use ECS functions. The concepts related to ECS help you quickly learn this service.

+

ECS

An ECS is a cloud server that allows on-demand allocation and elastic scaling to create an efficient, reliable, and secure computing environment. This ensures stable and uninterrupted operation of services.

+
+

Basic Concepts

  • Region

    A region is a geographic area where resources used by ECSs are located.

    +
+
  • Availability zone (AZ)

    An AZ is a physical location where power and networks are physically isolated within a region. Each AZ provides cost-effective and low-latency network connections that are unaffected by faults that may occur in other AZs. Each region contains one or more AZs. AZs are physically isolated but interconnected through an internal network.

    +
  • Project

    A project groups and isolates OpenStack resources, such as computing, storage, and network resources. A project can be either a department or a project team.

    +

    A tenant can create multiple projects.

    +
+
  • Flavor

    Specifies hardware resources required for running an ECS, including the vCPUs, memory, and storage capacities.

    +
+
  • Elastic Volume Service (EVS)

    Provides persistent block storage for computing services, such as ECS and Bare Metal Server (BMS). With advanced data redundancy and cache acceleration capabilities, EVS offers high availability and durability with a low latency. Users can format an EVS disk, create a file system on it, and store data persistently.

    +
+
  • Image

    An image is an ECS template that contains an OS and may also contain application software (such as database software) and software configuration.

    +

    Images can be public or private. Public images are provided by the system by default, and private images are manually created by users. Users can use any type of image to create an ECS. They can also create a private image using an existing ECS or external image. This provides users with a simple way to create ECSs that comply with their service requirements.

    +
+
  • Virtual Private Cloud (VPC)

    VPC allows users to create private, isolated virtual networks. Users can define IP address segments, subnets, and security groups, assign EIPs, and allocate bandwidth in a VPC.

    +
+
+
+ diff --git a/ecs/dev/en-us_topic_0134192993.html b/ecs/dev/en-us_topic_0134192993.html new file mode 100644 index 000000000..572efe0ff --- /dev/null +++ b/ecs/dev/en-us_topic_0134192993.html @@ -0,0 +1,42 @@ + + +

Modifying ECS Specifications

+

Scenarios

When ECS specifications fail to meet service requirements, they can be modified, for example, by upgrading the vCPUs and memory. Certain ECSs also support changing ECS types.

+
+

Constraints

  • You can modify the ECS specifications only when the ECS is stopped.
  • The EVS disk capacity of the ECS cannot be reduced during the specifications modification.
  • ECS specifications (vCPU or memory) reduction degrades the ECS performance.
  • Certain ECSs do not support specifications modification. For details about available ECS types as well as their functions and usage on the public cloud, see section "Notes" in Instances and Application Scenarios.
+
+

Involved APIs

Modifying ECS specifications involves the following APIs:

+
  • API for modifying the specifications of an ECS
  • API for confirming ECS specifications modification
  • API for rolling back ECS specifications modification
+
+

Procedure

  1. Modify the ECS specifications.

    • API

      URI format: POST /v2/{tenant_id}/servers/{server_id}/action

      +

      For details, see section "Modifying the Specifications of an ECS" in Elastic Cloud Server API Reference.

      +
    • Request example
      {
      +    "resize": {
      +                  "flavorRef": "4"
      +    }
      +}
      +
    • Response example

      N/A

      +
    +

  2. Confirm the specifications modification.

    The ECS must be in resized state. That is, the OS-EXT-STS:vm_state value of the ECS must be resized.
    • API

      URI format: POST /v2/{tenant_id}/servers/{server_id}/action

      +

      For details, see section "Confirming ECS Specifications Modification" in Elastic Cloud Server API Reference.

      +
    • Request example
      {
      +   "confirmResize": null
      +}
      +
    • Response example

      N/A

      +
    +
    +

  3. (Optional) Roll back the specifications modification.

    Fallback notice:

    +

    The ECS must be in resized state. That is, the OS-EXT-STS:vm_state value of the ECS must be resized.

    +

    The data modified during specifications modification will be lost after the rollback.

    +
    • API

      URI format: POST /v2/{tenant_id}/servers/{server_id}/action

      +

      For details, see section "Rolling Back ECS Specifications Modification" in Elastic Cloud Server API Reference.

      +
    • Request example
      {
      +    "revertResize": null
      +}
      +
    • Response example

      N/A

      +
    +

+
+
+
+ diff --git a/ecs/dev/en-us_topic_0134192996.html b/ecs/dev/en-us_topic_0134192996.html new file mode 100644 index 000000000..ca8b06c24 --- /dev/null +++ b/ecs/dev/en-us_topic_0134192996.html @@ -0,0 +1,107 @@ + + +

Attaching a Disk to an ECS

+

Scenarios

If the existing disks of an ECS fail to meet service requirements, for example, due to insufficient disk space or poor disk performance, you can attach more available disks to the ECS, or call the EVS disk creation API to create disks and attach them to the ECS. To attach an EVS disk to an ECS, you need to call the required API.

You can attach a data disk by setting the data_volumes parameter during ECS creation or attach a data disk after the ECS is created. This section describes how to attach a disk to a created ECS.

+
+
+
+

Involved APIs

Attaching a disk involves the following APIs:

+
  • API for creating an EVS disk
  • API for attaching a disk to an ECS
  • API for viewing disks attached to an ECS
+
+

Procedure

  1. Create an EVS disk.

    1. Create an EVS disk.
      • API

        URI format: POST /v2/{tenant_id}/volumes

        +

        For details, see section "Creating an EVS Disk (Native OpenStack API v2)" in Elastic Cloud Server API Reference.

        +
      • Request example

        POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/volumes

        +

        Obtain the endpoint from Regions and Endpoints.

        +

        Body

        +
        {
        +    "volume": {
        +        "name": "openapi_vol02", 
        +        "availability_zone": "eu-de-01", 
        +        "description": "create for api test", 
        +        "volume_type": "SATA", 
        +        "size": 40
        +    }
        +}
        +
      • Response example
        {
        +  "volume": {
        +    "status": "creating",
        +    "user_id": "f79791beca3c48159ac2553fff22e166",
        +    "attachments": [],
        +    "links": [
        +      {
        +        "href": "https://xxx/v2/74610f3a5ad941998e91f076297ecf27/volumes/51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
        +        "rel": "self"
        +      },
        +      {
        +        "href": "https://xxx/74610f3a5ad941998e91f076297ecf27/volumes/51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
        +        "rel": "bookmark"
        +      }
        +    ],
        +    "availability_zone": "eu-de-01",
        +    "bootable": "false",
        +    "encrypted": false,
        +    "created_at": "2018-05-16T11:19:33.992984",
        +    "description": "create for api test",
        +    "updated_at": null,
        +    "volume_type": "SATA",
        +    "name": "openapi_vol02",
        +    "replication_status": "disabled",
        +    "consistencygroup_id": null,
        +    "source_volid": null,
        +    "snapshot_id": null,
        +    "shareable": false,
        +    "multiattach": false,
        +    "metadata": {
        +      "__system__volume_name": "openapi_vol02"
        +    },
        +    "id": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
        +    "size": 40
        +  }
        +}
        +
      +
    2. Record the volume ID in the response.
    +

  2. Attach the disk to the ECS.

    • API

      URI format: POST /v2/{tenant_id}/servers/{server_id}/os-volume_attachments

      +

      For details, see section "Attaching a Disk to an ECS" in Elastic Cloud Server API Reference.

      +
    • Request example

      https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-volume_attachments

      +

      Obtain the endpoint from Regions and Endpoints.

      +

      Body

      +
      {
      +    "volumeAttachment": {
      +        "volumeId": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
      +        "device": "/dev/sdb"
      +    }
      +}
      +
    • Response example
      {
      +  "volumeAttachment": {
      +    "id": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
      +    "volumeId": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
      +    "serverId": "9f4d9281-95e7-4915-a126-1ee597101e2e",
      +    "device": "/dev/sdb"
      +  }
      +}
      +
    +

  3. Verify the disk attachment.

    • API

      URI format: GET /v2/{tenant_id}/servers/{server_id}/os-volume_attachments

      +

      For details, see section "Querying Disks Attached to an ECS" in Elastic Cloud Server API Reference.

      +
    • Request example

      https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-volume_attachments

      +

      Obtain the endpoint from Regions and Endpoints.

      +
    • Response example
      {
      +  "volumeAttachments": [
      +    {
      +      "volumeId": "4fc0b4cc-9d6c-431c-be70-3dfeec2ff6e0",
      +      "id": "4fc0b4cc-9d6c-431c-be70-3dfeec2ff6e0",
      +      "device": "/dev/sda",
      +      "serverId": "9f4d9281-95e7-4915-a126-1ee597101e2e"
      +    },
      +    {
      +      "volumeId": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
      +      "id": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3",
      +      "device": "/dev/sdb",
      +      "serverId": "9f4d9281-95e7-4915-a126-1ee597101e2e"
      +    }
      +  ]
      +}
      +
    +

+
+
+ diff --git a/ecs/dev/en-us_topic_0134192997.html b/ecs/dev/en-us_topic_0134192997.html new file mode 100644 index 000000000..8f9d87142 --- /dev/null +++ b/ecs/dev/en-us_topic_0134192997.html @@ -0,0 +1,204 @@ + + +

Binding a NIC to an ECS

+

Scenarios

If an ECS requires multiple NICs, you can call the API for creating NICs and bind them to the ECS.

You can bind a NIC by setting the nics parameter during ECS creation or bind a NIC after the ECS is created. This section describes how to bind a NIC to a created ECS.

+
+
+
+

Involved APIs

Binding a NIC involves the following APIs:

+
  • API for creating a network
  • API for creating a subnet
  • API for creating a port
  • API for binding a NIC to an ECS
  • API for viewing ECS NICs
+
+

Procedure

  1. Create a NIC.

    1. Create a network.
      • API

        URI format: POST /v2.0/networks

        +

        For details, see section "Creating a Network" in Virtual Private Cloud API Reference.

        +
      • Request example

        POST: https://{endpoint}/v2.0/networks

        +

        Obtain the endpoint from Regions and Endpoints.

        +

        Body

        +
        {
        +  "network": {
        +    "shared": false, 
        +    "name": "demo-net", 
        +    "admin_state_up": true, 
        +    "tenant_id": "74610f3a5ad941998e91f076297ecf27"
        +  }
        +}
        +
      • Response example
        {
        +  "network": {
        +    "id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
        +    "name": "demo-net",
        +    "status": "ACTIVE",
        +    "shared": false,
        +    "subnets": [],
        +    "availability_zone_hints": [],
        +    "availability_zones": [
        +      "eu-de-01",
        +      "eu-de-02"
        +    ],
        +    "admin_state_up": true,
        +    "tenant_id": "74610f3a5ad941998e91f076297ecf27",
        +    "provider:network_type": "vxlan",
        +    "router:external": false
        +  }
        +}
        +
      +
    2. Record the network ID in the response.
    3. Create a subnet.
      • API

        URI format: POST /v2.0/subnets

        +

        For details, see section "Creating a Subnet" in Virtual Private Cloud API Reference.

        +
      • Request example

        POST: https://{endpoint}/v2.0/subnets

        +

        Obtain the endpoint from Regions and Endpoints.

        +

        Body

        +
        {
        +    "subnet": {
        +        "name": "testsubnet",
        +        "enable_dhcp": true,
        +        "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
        +        "tenant_id": "74610f3a5ad941998e91f076297ecf27",
        +        "dns_nameservers": [
        +            "8.8.8.8",
        +            "8.8.8.7"
        +        ],
        +        "allocation_pools": [
        +            {
        +                "start": "10.0.10.2",
        +                "end": "10.0.10.254"
        +            }
        +        ],
        +        "host_routes": [],
        +        "ip_version": 4,
        +        "gateway_ip": "10.0.10.1",
        +        "cidr": "10.0.10.0/24"
        +    }
        +}
        +
      • Response example
        {
        +  "subnet": {
        +    "name": "testsubnet",
        +    "cidr": "10.0.10.0/24",
        +    "id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",
        +    "enable_dhcp": true,
        +    "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
        +    "tenant_id": "74610f3a5ad941998e91f076297ecf27",
        +    "dns_nameservers": [
        +      "8.8.8.8",
        +      "8.8.8.7"
        +    ],
        +    "allocation_pools": [
        +      {
        +        "start": "10.0.10.2",
        +        "end": "10.0.10.254"
        +      }
        +    ],
        +    "host_routes": [],
        +    "ip_version": 4,
        +    "gateway_ip": "10.0.10.1"
        +  }
        +}
        +
      +
    4. Record the subnet ID in the response.
    5. Create a port.
      • API

        URI format: POST /v2.0/ports

        +

        For details, see section "Creating a Port" in Virtual Private Cloud API Reference.

        +
      • Request example

        POST: https://{endpoint}/v2.0/ports

        +

        Obtain the endpoint from Regions and Endpoints.

        +

        Body

        +
        {
        +    "port": {
        +        "admin_state_up": true, 
        +
        +        "fixed_ips": [
        +            {
        +                "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5"
        +            }
        +        ], 
        +        "name": "test", 
        +        "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
        +        "tenant_id": "74610f3a5ad941998e91f076297ecf27"
        +    }
        +}
        +
      • Response example
        {
        +  "port": {
        +    "id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4",
        +    "name": "test",
        +    "status": "DOWN",
        +    "admin_state_up": true,
        +    "fixed_ips": [
        +      {
        +        "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",
        +        "ip_address": "10.0.10.233"
        +      }
        +    ],
        +    "mac_address": "fa:16:3e:db:91:f6",
        +    "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
        +    "tenant_id": "74610f3a5ad941998e91f076297ecf27",
        +    "device_id": "",
        +    "device_owner": "",
        +    "security_groups": [
        +      "93031677-2895-4b83-855a-637e309aa9e6"
        +    ],
        +    "extra_dhcp_opts": [],
        +    "allowed_address_pairs": [],
        +    "binding:vnic_type": "normal",
        +    "binding:vif_details": {},
        +    "binding:profile": {}
        +  }
        +}
        +
      +
    6. Record the port ID in the response.
    +

  2. Bind the NIC to the ECS.

    • API

      URI format: POST /v2/{tenant_id}/servers/{server_id}/os-interface

      +

      For details, see section "Adding a NIC to an ECS" in Elastic Cloud Server API Reference.

      +
    • Request example

      POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-interface

      +

      Obtain the endpoint from Regions and Endpoints.

      +

      Body

      +
      {
      +    "interfaceAttachment": {
      +        "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4"
      +    }
      +}
      +
    • Response example
      {
      +  "interfaceAttachment": {
      +    "port_state": "ACTIVE",
      +    "fixed_ips": [
      +      {
      +        "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",
      +        "ip_address": "10.0.10.233"
      +      }
      +    ],
      +    "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4",
      +    "net_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
      +    "mac_addr": "fa:16:3e:db:91:f6"
      +  }
      +}
      +
    +

  3. Verify the NIC binding.

    • API

      URI format: GET /v2/{tenant_id}/servers/{server_id}/os-interface

      +

      For details, see section "Querying ECS NICs" in Elastic Cloud Server API Reference.

      +
    • Request example

      GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-interface

      +

      Obtain the endpoint from Regions and Endpoints.

      +
    • Response example
      {
      +  "interfaceAttachments": [
      +    {
      +      "port_state": "ACTIVE",
      +      "fixed_ips": [
      +        {
      +          "subnet_id": "46712fe4-25bd-4eae-874b-a528abfb76be",
      +          "ip_address": "192.168.0.50"
      +        }
      +      ],
      +      "port_id": "dd706739-b696-40be-a9f4-477ce478cb18",
      +      "net_id": "17251a8f-a671-4d7c-85d9-af5415962994",
      +      "mac_addr": "fa:16:3e:a5:e0:3c"
      +    },
      +{
      +      "port_state": "ACTIVE",
      +      "fixed_ips": [
      +        {
      +          "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",
      +          "ip_address": "10.0.10.233"
      +        }
      +      ],
      +      "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4",
      +      "net_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",
      +      "mac_addr": "fa:16:3e:db:91:f6"
      +    }
      +  ]
      +}
      +
    +

+
+
+
+ diff --git a/ecs/dev/en-us_topic_0134193004.html b/ecs/dev/en-us_topic_0134193004.html new file mode 100644 index 000000000..b10dde1c9 --- /dev/null +++ b/ecs/dev/en-us_topic_0134193004.html @@ -0,0 +1,48 @@ + + +

Request Format

+

Public cloud APIs follow RESTful API design rules.

+

Representational State Transfer (REST) allocates Uniform Resource Identifiers (URIs) to dispersed resources so that resources can be located. Applications on clients use Uniform Resource Locators (URLs) to obtain resources.

+

URLs are in the format of https://Endpoint/uri. Table 1 describes the parameters in a URL.

+ +
+ + + + + + + + + + +
Table 1 Parameter description

Parameter

+

Description

+

Endpoint

+

Specifies the URL that is the entry point for a web service. Obtain the endpoint from Regions and Endpoints.

+

URI

+

Specifies a resource path, which is an API access path and obtained from the API URI module, for example, /v2/{tenant_id}/servers.

+
+
+

A project ID is required for some URLs when an API is called. Therefore, you need to obtain a project ID on the console before calling an API. To do so, perform the following operations:

+
  1. Register yourself on the management console and log in to it.
  2. Hover the mouse over the username and select Basic Information from the drop-down list.
  3. On the Account Info page, click Manage following Security Credentials.
  4. On the My Credential page, view the project ID in the project list.
    Figure 1 Viewing project IDs
    +
+
+
+ +
+ + + \ No newline at end of file diff --git a/ecs/dev/en-us_topic_0134193005.html b/ecs/dev/en-us_topic_0134193005.html new file mode 100644 index 000000000..8d4faeb96 --- /dev/null +++ b/ecs/dev/en-us_topic_0134193005.html @@ -0,0 +1,11 @@ + + +

Versions

+

OpenStack APIs are of version v2 or v2.1. The two versions use the same set of main code, and v2.1 supports microversions.

+
+
+ +
+ diff --git a/ecs/dev/en-us_topic_0134193006.html b/ecs/dev/en-us_topic_0134193006.html new file mode 100644 index 000000000..680930346 --- /dev/null +++ b/ecs/dev/en-us_topic_0134193006.html @@ -0,0 +1,274 @@ + + +

Microversions

+

v2.1 APIs support microversions for small/medium API changes or document changes.

+

Users can use a microversion to obtain the latest API microversion supported by a cloud service. A cloud service that has been upgraded to the latest microversion is compatible with the original microversions. Users can also use a microversion to obtain new cloud service properties.

+

The version API returns the minimum and maximum microversions. The client uses the two values to specify the microversion range supported by an API.

+

Microversion Response Example

If the values of version and min_version are null, the endpoint does not support microversions.

+
  • version: indicates the maximum microversion.
  • min_version: indicates the minimum microversion.
+

A microversion on the client must be within the range specified by version and min_version to access the endpoint. The client uses the following HTTP header to specify a microversion:

+

X-OpenStack-Nova-API-Version: 2.4

+

Since microversion 2.27, the client can also use the following header to specify a microversion:

+

Openstack-API-Version: compute 2.27

+

In the following response example, the maximum microversion is 2.14 and the minimum one is 2.1:

+
{
+  "versions": [
+      {
+          "id": "v2.0",
+          "links": [
+              {
+                  "href": "http://openstack.example.com/v2/",
+                  "rel": "self"
+              }
+          ],
+          "status": "SUPPORTED",
+          "version": "",
+          "min_version": "",
+          "updated": "2011-01-21T11:33:21Z"
+      },
+      {
+          "id": "v2.1",
+          "links": [
+              {
+                  "href": "http://openstack.example.com/v2.1/",
+                  "rel": "self"
+              }
+          ],
+          "status": "CURRENT",
+          "version": "2.14",
+          "min_version": "2.1",
+          "updated": "2013-07-23T11:33:21Z"
+      }
+  ]
+}
+
+

Microversion Request Example

For example, you are required to use the API for details about an ECS to view the OS-EXT-SRV-ATTR:hostname field.

+
+
  • Using a v2 API without a microversion
    • GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/detail

      Obtain the endpoint from Regions and Endpoints.

      +
    • Headers +
      + + + + + + +

      Content-Type

      +

      application/json

      +

      X-Auth-Token

      +

      ${token}

      +
      +
      +
    +
    • Response body
      {
      +  "servers": [
      +    {
      +      "tenant_id": "74610f3a5ad941998e91f076297ecf27",
      +      "addresses": {
      +        "05d4fb93-84e5-4964-853b-32992ffef627": [
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95",
      +            "OS-EXT-IPS:type": "fixed",
      +            "addr": "192.168.0.228",
      +            "version": 4
      +          },
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95",
      +            "OS-EXT-IPS:type": "floating",
      +            "addr": "192.168.51.61",
      +            "version": 4
      +          }
      +        ]
      +      },
      +      "metadata": {},
      +      "OS-EXT-STS:task_state": null,
      +      "OS-DCF:diskConfig": "MANUAL",
      +      "OS-EXT-AZ:availability_zone": "eu-de-01",
      +      "links": [
      +        {
      +          "rel": "self",
      +          "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e"
      +        },
      +        {
      +          "rel": "bookmark",
      +          "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e"
      +        }
      +      ],
      +      "OS-EXT-STS:power_state": 1,
      +      "id": "89c312bb-285a-4026-a237-d441908c2f9e",
      +      "os-extended-volumes:volumes_attached": [
      +        {
      +          "id": "c70c4b8e-33bd-4d1f-ab16-14a5a38cdeaf"
      +        }
      +      ],
      +      "OS-EXT-SRV-ATTR:host": "pod05.eude01",
      +      "image": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/1189efbf-d48b-46ad-a823-94b942e2a000"
      +          }
      +        ],
      +        "id": "1189efbf-d48b-46ad-a823-94b942e2a000"
      +      },
      +      "OS-SRV-USG:terminated_at": null,
      +      "accessIPv4": "",
      +      "accessIPv6": "",
      +      "created": "2018-05-11T03:21:56Z",
      +      "hostId": "fc7a8ff86bac050f0d9454b1b078dcc97060e819acbf06f04c3e338f",
      +      "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova012@7",
      +      "key_name": "id_rsa",
      +      "flavor": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/s3.small.1"
      +          }
      +        ],
      +        "id": "s3.small.1"
      +      },
      +      "security_groups": [
      +        {
      +          "name": "default"
      +        }
      +      ],
      +      "config_drive": "",
      +      "OS-EXT-STS:vm_state": "active",
      +      "OS-EXT-SRV-ATTR:instance_name": "instance-0016c624",
      +      "user_id": "f79791beca3c48159ac2553fff22e166",
      +      "name": "zt-test",
      +      "progress": 0,
      +      "OS-SRV-USG:launched_at": "2018-05-11T03:22:16.701600",
      +      "updated": "2018-05-11T03:22:51Z",
      +      "status": "ACTIVE"
      +    }
      +  ]
      +}
      +
    • Conclusion: The response body does not contain the OS-EXT-SRV-ATTR:hostname field.
    +
+
  • Using a v2.1 API with a microversion
    • GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/detail

      Obtain the endpoint from Regions and Endpoints.

      +
    • Headers +
      + + + + + + + + + +

      Content-Type

      +

      application/json

      +

      X-Auth-Token

      +

      ${token}

      +

      X-OpenStack-Nova-API-Version

      +

      2.26

      +
      +
      +
    +
    • Response body
      {
      +  "servers": [
      +    {
      +      "tenant_id": "74610f3a5ad941998e91f076297ecf27",
      +      "addresses": {
      +        "05d4fb93-84e5-4964-853b-32992ffef627": [
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95",
      +            "OS-EXT-IPS:type": "fixed",
      +            "addr": "192.168.0.228",
      +            "version": 4
      +          },
      +          {
      +            "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95",
      +            "OS-EXT-IPS:type": "floating",
      +            "addr": "192.168.51.61",
      +            "version": 4
      +          }
      +        ]
      +      },
      +      "metadata": {},
      +      "OS-EXT-STS:task_state": null,
      +      "description": "zt-test",
      +      "OS-EXT-SRV-ATTR:hostname": "zt-test",
      +      "OS-DCF:diskConfig": "MANUAL",
      +      "OS-EXT-AZ:availability_zone": "eu-de-01",
      +      "links": [
      +        {
      +          "rel": "self",
      +          "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e"
      +        },
      +        {
      +          "rel": "bookmark",
      +          "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e"
      +        }
      +      ],
      +      "OS-EXT-STS:power_state": 1,
      +      "id": "89c312bb-285a-4026-a237-d441908c2f9e",
      +      "os-extended-volumes:volumes_attached": [
      +        {
      +          "delete_on_termination": true,
      +          "id": "c70c4b8e-33bd-4d1f-ab16-14a5a38cdeaf"
      +        }
      +      ],
      +      "locked": false,
      +      "OS-EXT-SRV-ATTR:kernel_id": "",
      +      "OS-EXT-SRV-ATTR:host": "pod05.eude01",
      +      "OS-EXT-SRV-ATTR:ramdisk_id": "",
      +      "image": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/1189efbf-d48b-46ad-a823-94b942e2a000"
      +          }
      +        ],
      +        "id": "1189efbf-d48b-46ad-a823-94b942e2a000"
      +      },
      +      "accessIPv4": "",
      +      "OS-SRV-USG:terminated_at": null,
      +      "accessIPv6": "",
      +      "OS-EXT-SRV-ATTR:launch_index": 0,
      +      "created": "2018-05-11T03:21:56Z",
      +      "OS-EXT-SRV-ATTR:user_data": null,
      +      "hostId": "fc7a8ff86bac050f0d9454b1b078dcc97060e819acbf06f04c3e338f",
      +      "OS-EXT-SRV-ATTR:reservation_id": "r-pbqmaxer",
      +      "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda",
      +      "host_status": "UP",
      +      "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova012@7",
      +      "tags": [],
      +      "key_name": "id_rsa",
      +      "flavor": {
      +        "links": [
      +          {
      +            "rel": "bookmark",
      +            "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/s3.small.1"
      +          }
      +        ],
      +        "id": "s3.small.1"
      +      },
      +      "security_groups": [
      +        {
      +          "name": "default"
      +        }
      +      ],
      +      "config_drive": "",
      +      "OS-EXT-STS:vm_state": "active",
      +      "OS-EXT-SRV-ATTR:instance_name": "instance-0016c624",
      +      "user_id": "f79791beca3c48159ac2553fff22e166",
      +      "name": "zt-test",
      +      "progress": 0,
      +      "OS-SRV-USG:launched_at": "2018-05-11T03:22:16.701600",
      +      "updated": "2018-05-11T03:22:51Z",
      +      "status": "ACTIVE"
      +    }
      +  ]
      +}
      +
    • Conclusion: The response body contains the OS-EXT-SRV-ATTR:hostname field.
    +
+
+
+ +
+ diff --git a/ecs/dev/en-us_topic_0134327704.html b/ecs/dev/en-us_topic_0134327704.html new file mode 100644 index 000000000..ea872ce88 --- /dev/null +++ b/ecs/dev/en-us_topic_0134327704.html @@ -0,0 +1,7 @@ + + +

Notes

+

Before using ECS through APIs, learn how to call ECS APIs. For details about how to call REST APIs, see section API Usage Guidelines.

+
+
+ diff --git a/ecs/dev/en-us_topic_0134883593.html b/ecs/dev/en-us_topic_0134883593.html new file mode 100644 index 000000000..0ac6f841f --- /dev/null +++ b/ecs/dev/en-us_topic_0134883593.html @@ -0,0 +1,26 @@ + + +

Change History

+
+
+ + + + + + + + + + +

Release Date

+

What's New

+

2021-10-20

+

This issue is the second official release.

+

Optimized descriptions in Overview.

+

2018-11-08

+

This issue is the first official release.

+
+
+
+ diff --git a/ecs/dev/public_sys-resources/ExpandCollapse.js b/ecs/dev/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..3f1b7db00 --- /dev/null +++ b/ecs/dev/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";var href="";function ExpandorCollapseNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseClassName}else{a.className=expandClassName}}function ExpandorCollapseTableNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseTableClassName}else{a.className=expandClassName}}function ExpandorCollapseAllNodes(g,h,c){var a=g.getAttribute("title");var b=g.parentNode;if(a=="collapse"){g.setAttribute("title","expand");g.className="dropdownAllButtonexpand";g.innerHTML=h}else{g.setAttribute("title","collapse");g.className="dropdownAllButtoncollapse";g.innerHTML=c}var f=b.getElementsByTagName("*");for(var d=0;d-1){ExpandForHref(href.substring(href.lastIndexOf("#")+1))}}catch(a){}}; \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/caution_3.0-en-us.png b/ecs/dev/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 000000000..60f607621 Binary files /dev/null and b/ecs/dev/public_sys-resources/caution_3.0-en-us.png differ diff --git a/ecs/dev/public_sys-resources/commonltr.css b/ecs/dev/public_sys-resources/commonltr.css new file mode 100644 index 000000000..c5480b0ab --- /dev/null +++ b/ecs/dev/public_sys-resources/commonltr.css @@ -0,0 +1 @@ +body{font-size:10pt;font-family:Arial;margin:1.5em;border-top:2pt;padding-top:1em;padding-bottom:2em}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:.6em;margin-bottom:.6em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.figcap{font-size:10pt}img{margin-top:.3em}.figdesc{font-style:normal}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.fignone{font-size:10pt;margin-top:8pt;margin-bottom:8pt}.familylinks{margin-top:1.5em;margin-bottom:1em}.ullinks{list-style-type:none}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-top:.6em;margin-bottom:.6em}.reltasks{margin-top:.6em;margin-bottom:.6em}.relref{margin-top:.6em;margin-bottom:.6em}.relinfo{margin-top:.6em;margin-bottom:.6em}.breadcrumb{font-size:smaller;margin-bottom:.6em}.prereq{margin-left:20px}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.topictitle1{margin-top:0;margin-bottom:1em;font-size:14pt;color:#007af4}.topictitle2{margin-top:1pc;margin-bottom:.45em;font-size:1.17em;color:#007af4}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-size:1.17em;font-weight:bold;color:#007af4}.topictitle4{margin-top:.83em;font-size:1.17em;font-weight:bold}.topictitle5{font-size:1.17em;font-weight:bold}.topictitle6{font-size:1.17em;font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:1em;color:black;font-size:10.5pt;font-weight:bold;color:#007af4;overflow:auto}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}.sectiontitle2contents:link{color:#007af4}.sectiontitle2contents:visited{color:#800080}.note{margin-top:1em;margin-bottom:1em;background-color:#ffc}.notetitle{font-weight:bold}.notelisttitle{font-weight:bold}.tip{margin-top:1em;margin-bottom:1em;background-color:#ffc}.tiptitle{font-weight:bold}.fastpath{margin-top:1em;margin-bottom:1em;background-color:#ffc}.fastpathtitle{font-weight:bold}.important{margin-top:1em;margin-bottom:1em;background-color:#ffc}.importanttitle{font-weight:bold}.remember{margin-top:1em;margin-bottom:1em;background-color:#ffc}.remembertitle{font-weight:bold}.restriction{margin-top:1em;margin-bottom:1em;background-color:#ffc}.restrictiontitle{font-weight:bold}.attention{margin-top:1em;margin-bottom:1em;background-color:#ffc}.attentiontitle{font-weight:bold}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;background-color:#ffc}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;background-color:#ffc}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;background-color:#ffc}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;background-color:#ffc}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}ol{margin-top:1em;margin-bottom:1em;margin-left:2.4em;padding-left:0}ul{margin-top:1em;margin-bottom:1em;margin-left:2.0em;padding-left:0}ol ul{list-style:disc}ul ul{list-style:square}ol ul ul{list-style:square}ol ul{list-style-type:disc}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}.firstcol{font-weight:bold}th{background-color:#cfcfcf}table{margin-top:8pt;margin-bottom:12pt;width:100%}table caption{margin-top:8pt;text-align:left}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:.3em;margin-bottom:.3em}.substepexpand{margin-top:.3em;margin-bottom:.3em}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}.hrcopyright{color:#3f4e5d;margin-top:18pt}.hwcopyright{text-align:center}.comment{margin:2px 2px 2px 2px;font-family:Arial;font-size:10pt;background-color:#bfb;color:#000}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowncontext{display:none}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdowncollapsetable{border:0}.dropdowncollapsetable .dropdowncontext{display:none}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}pre{font-size:10pt;font-weight:normal;margin-left:9;margin-top:2;margin-bottom:2}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0} \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/commonltr_print.css b/ecs/dev/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/ecs/dev/public_sys-resources/commonltr_print.css @@ -0,0 +1 @@ +body{font-size:12.0pt;margin:1.5em;margin-left:1.6cm}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:1em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.covertable{border:0;width:100% cellpadding:8pt;cellspacing:8pt}.cover_productname{font-size:15.0pt;font-family:"Arial"}.cover_manualtitle{font-size:24.0pt;font-weight:bold;font-family:"Arial"}.cover_manualsubtitle{font-size:18.0pt;font-weight:bold;font-family:"Arial"}.cover_heading{font-size:12.0pt;font-weight:bold;font-family:"Arial"}.cover_text{font-size:9.0pt;font-family:"Arial"}.tocheading,.heading1,.topictitle1{margin-top:40.0pt;margin-right:0;margin-bottom:20.0pt;margin-left:-1cm;text-align:left;border:0;border-bottom:solid windowtext .5pt;font-size:22.0pt;font-family:"Arial";font-weight:bold}.topictitlenumber1{font-size:72.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle2{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Arial";font-weight:bold}.topictitle3{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:16.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle4{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:14.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle5{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.blocklabel,.topictitle6{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.sectiontitle{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:-1cm;text-indent:0;font-size:13.0pt;font-family:"Arial";font-weight:bold}.tocentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Book Antiqua";font-weight:bold}.tocentry2{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry3{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry4{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry5{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tofentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.totentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.indexheading{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.indexentry1{margin-top:4pt;margin-right:0;margin-bottom:0;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Times New Roman"}.indexentry2{margin-top:0;margin-right:0;margin-bottom:0;margin-left:24.0pt;line-height:12.0pt;font-size:12.0pt}.indexentry3{margin-top:0;margin-right:0;margin-bottom:0;margin-left:48pt;line-height:12.0pt;font-size:12.0pt}.figurenumber{font-weight:bold}.tablenumber{font-weight:bold}.familylinks{margin-top:1.5em;margin-bottom:1em}.figcap{font-size:11.0pt}.tablecap{font-size:11.0pt}.figdesc{font-style:normal}.fignone{margin-top:8.0pt}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.ullinks{margin-left:0;list-style-type:none}.ulchildlink{margin-top:1em;margin-bottom:1em}.olchildlink{margin-top:1em;margin-bottom:1em;margin-left:1em}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-left:1cm;margin-top:1em;margin-bottom:1em}.reltasks{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relref{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relinfo{margin-top:1em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-left:0}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}table .note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.notetitle{font-weight:bold;font-size:11.0pt}.notelisttitle{font-weight:bold}table .tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.tiptitle{font-weight:bold;font-size:11.0pt}table .fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.fastpathtitle{font-weight:bold;font-size:11.0pt}table .important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.importanttitle{font-weight:bold;font-size:11.0pt}table .remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.remembertitle{font-weight:bold;font-size:11.0pt}table .restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.restrictiontitle{font-weight:bold;font-size:11.0pt}table .attention{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.attention{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}.attentiontitle{font-weight:bold}table .danger{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .notice{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .warning{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .caution{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}table caption{margin-top:8pt;text-align:left;font-weight:bold}.tablenoborder{margin-top:8pt}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}.firstcol{font-weight:bold}th{background-color:#cfcfcf}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:1em;margin-bottom:1em}.substepexpand{margin-top:1em;margin-bottom:1em}table{margin-top:8pt;margin-bottom:10.0pt;width:100%}thead{font-size:10.0pt;font-family:"Book Antiqua";font-weight:bold}tbody{font-size:11.0pt}ol{margin-top:1em;margin-bottom:1em;margin-left:1.7em;-webkit-padding-start:0}ul{margin-top:1em;margin-bottom:1em;margin-left:1.2em;-webkit-padding-start:0}ol ul{list-style:disc}ul ul{list-style:square}ol ol{list-style-type:lower-alpha}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre{font-size:10.0pt;border-width:2px;padding:2px;margin-top:5px;margin-bottom:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.prefacesectiontitle1{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Book Antiqua";font-weight:bold;overflow:auto}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0}.hrcopyright{color:#3f4e5d;margin-top:18pt;margin-left:-1cm}.hwcopyright{text-align:center;font-family:Arial;margin-left:-1cm} \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/commonrtl.css b/ecs/dev/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..947a9a033 --- /dev/null +++ b/ecs/dev/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +.msgph{font-family:Courier New}.unresolved{background-color:#87ceeb}.noTemplate{background-color:#ff0}.base{background-color:#fff}/*! Add space for top level topics */.nested0,.p{margin-top:1em}/*! div with class=p is used for paragraphs that contain blocks, to keep the XHTML valid *//*! Default of italics to set apart figure captions */.figcap,.italic,.var{font-style:italic}.figdesc{font-style:normal}/*! Use @frame to create frames on figures */.figborder{padding-left:3px;padding-right:3px;margin-top:1em;border:2px solid Silver}.figsides{margin-top:1em;padding-left:3px;padding-right:3px;border-left:2px solid Silver;border-right:2px solid Silver}.figtop{border-top:2px solid Silver;margin-top:1em}.figbottom{border-bottom:2px solid Silver}.figtopbot{border-top:2px solid Silver;border-bottom:2px solid Silver;margin-top:1em}/*! Most link groups are created with
. Ensure they have space before and after. */.ullinks,ul.simple{list-style-type:none}.attention,.danger,.ddexpand,.dlexpand,.example,.fastpath,.important,.liexpand,.linklist,.note,.notice,.olchildlink,.relconcepts,.relinfo,.relref,.reltasks,.remember,.restriction,.section,.sliexpand,.stepexpand,.substepexpand,.tip,.ulchildlink,.warning{margin-top:1em;margin-bottom:1em}.linklistwithchild,.sublinklist{margin-top:1em;margin-right:1.5em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-right:20px}/*! Set heading sizes, getting smaller for deeper nesting */.topictitle1{font-size:1.34em;margin-top:0;margin-bottom:.1em}.topictitle2,.topictitle3,.topictitle4,.topictitle5,.topictitle6,.sectiontitle{font-size:1.17em}.topictitle2{margin-top:1pc;margin-bottom:.45em}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-weight:700}.topictitle4{margin-top:.83em;font-weight:700}.topictitle5{font-weight:700}.topictitle6{font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:0;color:#000;font-weight:700}/*! All note formats have the same default presentation */.attentiontitle,.bold,.cautiontitle,.dangertitle,.dlterm,.fastpathtitle,.firstcol,.importanttitle,.notelisttitle,.notetitle,.noticetitle,.parmname,.remembertitle,.restrictiontitle,.tiptitle,.uicontrol,.warningtitle{font-weight:700}.caution{font-weight:700;margin-bottom:1em}/*! Simple lists do not get a bullet *//*! Used on the first column of a table, when rowheader="firstcol" is used *//*! Various basic phrase styles */.boldItalic{font-weight:700;font-style:italic}.shortcut,.underlined{text-decoration:underline}/*! 2008-10-27 keyword采用跟随上下文的样式 +*//*! Default of bold for definition list terms *//*! Use CSS to expand lists with @compact="no" */.dltermexpand{font-weight:700;margin-top:1em}[compact="yes"]>li{margin-top:0}[compact="no"]>li{margin-top:.53em}/*! Align images based on @align on topic/image */div.imageleft,.text-align-left{text-align:left}div.imagecenter,.text-align-center{text-align:center}div.imageright,.text-align-right{text-align:right}div.imagejustify,.text-align-justify{text-align:justify}.cellrowborder{border-right:0;border-top:0;border-left:1px solid;border-bottom:1px solid}.row-nocellborder{border-left:hidden;border-right:0;border-top:0;border-bottom:1px solid}.cell-norowborder{border-top:0;border-bottom:hidden;border-right:0;border-left:1px solid}.nocellnorowborder{border:0;border-left:hidden;border-bottom:hidden}pre.codeblock,pre.screen{padding:5px;border:outset;background-color:#ccc;margin-top:2px;margin-bottom:2px;white-space:pre} \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/danger_3.0-en-us.png b/ecs/dev/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 000000000..47a9c7235 Binary files /dev/null and b/ecs/dev/public_sys-resources/danger_3.0-en-us.png differ diff --git a/ecs/dev/public_sys-resources/delta.gif b/ecs/dev/public_sys-resources/delta.gif new file mode 100644 index 000000000..0d1b1f674 Binary files /dev/null and b/ecs/dev/public_sys-resources/delta.gif differ diff --git a/ecs/dev/public_sys-resources/deltaend.gif b/ecs/dev/public_sys-resources/deltaend.gif new file mode 100644 index 000000000..cc7da0fc8 Binary files /dev/null and b/ecs/dev/public_sys-resources/deltaend.gif differ diff --git a/ecs/dev/public_sys-resources/icon-arrowdn.gif b/ecs/dev/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 000000000..84eec9be2 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-arrowdn.gif differ diff --git a/ecs/dev/public_sys-resources/icon-arrowrt.gif b/ecs/dev/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 000000000..39583d168 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-arrowrt.gif differ diff --git a/ecs/dev/public_sys-resources/icon-caution.gif b/ecs/dev/public_sys-resources/icon-caution.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-caution.gif differ diff --git a/ecs/dev/public_sys-resources/icon-danger.gif b/ecs/dev/public_sys-resources/icon-danger.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-danger.gif differ diff --git a/ecs/dev/public_sys-resources/icon-huawei.gif b/ecs/dev/public_sys-resources/icon-huawei.gif new file mode 100644 index 000000000..a31d60f89 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-huawei.gif differ diff --git a/ecs/dev/public_sys-resources/icon-note.gif b/ecs/dev/public_sys-resources/icon-note.gif new file mode 100644 index 000000000..31be2b039 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-note.gif differ diff --git a/ecs/dev/public_sys-resources/icon-notice.gif b/ecs/dev/public_sys-resources/icon-notice.gif new file mode 100644 index 000000000..409070650 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-notice.gif differ diff --git a/ecs/dev/public_sys-resources/icon-tip.gif b/ecs/dev/public_sys-resources/icon-tip.gif new file mode 100644 index 000000000..c47bae05c Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-tip.gif differ diff --git a/ecs/dev/public_sys-resources/icon-warning.gif b/ecs/dev/public_sys-resources/icon-warning.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/dev/public_sys-resources/icon-warning.gif differ diff --git a/ecs/dev/public_sys-resources/imageResize.js b/ecs/dev/public_sys-resources/imageResize.js new file mode 100644 index 000000000..e4c520739 --- /dev/null +++ b/ecs/dev/public_sys-resources/imageResize.js @@ -0,0 +1,4 @@ +/** IDP renames $ to $$$,jQueryHW2 */ +var $$$,jQueryHW2; +jQueryHW2 = $$$ = $; +function image_size(a){$$$(window).on('load',function(){$$$(a).each(function(){var e=$$$(this);var f=e.width();var d=e.height();var b=f;var c=d;e.click(function(){tb_show("",this.src,false)})})})}; \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/imageclose.gif b/ecs/dev/public_sys-resources/imageclose.gif new file mode 100644 index 000000000..56818c26b Binary files /dev/null and b/ecs/dev/public_sys-resources/imageclose.gif differ diff --git a/ecs/dev/public_sys-resources/imageclosehover.gif b/ecs/dev/public_sys-resources/imageclosehover.gif new file mode 100644 index 000000000..3bcf231f1 Binary files /dev/null and b/ecs/dev/public_sys-resources/imageclosehover.gif differ diff --git a/ecs/dev/public_sys-resources/imagemax.gif b/ecs/dev/public_sys-resources/imagemax.gif new file mode 100644 index 000000000..49fe390b1 Binary files /dev/null and b/ecs/dev/public_sys-resources/imagemax.gif differ diff --git a/ecs/dev/public_sys-resources/imagemaxhover.gif b/ecs/dev/public_sys-resources/imagemaxhover.gif new file mode 100644 index 000000000..387b0a981 Binary files /dev/null and b/ecs/dev/public_sys-resources/imagemaxhover.gif differ diff --git a/ecs/dev/public_sys-resources/jquery-migrate-1.2.1.min.js b/ecs/dev/public_sys-resources/jquery-migrate-1.2.1.min.js new file mode 100644 index 000000000..fc18734e9 --- /dev/null +++ b/ecs/dev/public_sys-resources/jquery-migrate-1.2.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */ +jQueryHW2.migrateMute===void 0&&(jQueryHW2.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQueryHW2 is not compatible with Quirks Mode");var o=e("",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQueryHW2.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQueryHW2.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQueryHW2.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQueryHW2.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQueryHW2.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQueryHW2.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQueryHW2.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQueryHW2.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQueryHW2.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQueryHW2.fn.andSelf() replaced by jQueryHW2.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQueryHW2.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQueryHW2.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQueryHW2.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQueryHW2.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQueryHW2.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQueryHW2.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQueryHW2,window); \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/jquery-ui.min.js b/ecs/dev/public_sys-resources/jquery-ui.min.js new file mode 100644 index 000000000..316054d2c --- /dev/null +++ b/ecs/dev/public_sys-resources/jquery-ui.min.js @@ -0,0 +1,13 @@ +/*! jQuery UI - v1.12.1 - 2016-10-02 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js +* Copyright jQueryHW2 Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQueryHW2)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("
"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(p.inline?p.dpDiv.parent()[0]:p.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var c=!1;t(document).on("mouseup",function(){c=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!c){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),c=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,c=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0) +},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&u(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var u=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&u(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=u(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0}; +t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("
"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQueryHW2(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQueryHW2(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQueryHW2:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons")) +},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
    ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
    ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
    ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var d=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(d,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon) +},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),p===n&&(p=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))}},_updateDatepicker:function(e){this.maxRows=4,p=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$$$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$$$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$$$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
    "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
    ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="
    "}for(T+="
    "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"
    "+"",P=u?"":"",w=0;7>w;w++)M=(w+c)%7,P+="";for(T+=P+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="",W=u?"":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}Z++,Z>11&&(Z=0,te++),T+="
    "+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[M]+"
    "+this._get(t,"calculateWeek")(A)+""+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"
    "+(X?"
    "+(U[0]>0&&C===U[1]-1?"
    ":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
    ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
    ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
    ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
    ").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
    ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQueryHW2 UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
    ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("
    ").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e] +}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
    ").attr("role","tooltip"),s=t("
    ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip;var f="ui-effects-",g="ui-effects-style",m="ui-effects-animated",_=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

    ")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(_),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(_.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(m)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(f+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(f+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(g,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(g)||"",t.removeData(g)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(f+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=f+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(m),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(m,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
    ").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var v=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
    ").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var v;t.uiBackCompat!==!1&&(v=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)}))}); \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/jquery.min.js b/ecs/dev/public_sys-resources/jquery.min.js new file mode 100644 index 000000000..b0614034a --- /dev/null +++ b/ecs/dev/public_sys-resources/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="
    ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/macFFBgHack.png b/ecs/dev/public_sys-resources/macFFBgHack.png new file mode 100644 index 000000000..c6473b324 Binary files /dev/null and b/ecs/dev/public_sys-resources/macFFBgHack.png differ diff --git a/ecs/dev/public_sys-resources/note_3.0-en-us.png b/ecs/dev/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 000000000..57a0e1f53 Binary files /dev/null and b/ecs/dev/public_sys-resources/note_3.0-en-us.png differ diff --git a/ecs/dev/public_sys-resources/notice_3.0-en-us.png b/ecs/dev/public_sys-resources/notice_3.0-en-us.png new file mode 100644 index 000000000..fa4b64990 Binary files /dev/null and b/ecs/dev/public_sys-resources/notice_3.0-en-us.png differ diff --git a/ecs/dev/public_sys-resources/popup.js b/ecs/dev/public_sys-resources/popup.js new file mode 100644 index 000000000..5305962bc --- /dev/null +++ b/ecs/dev/public_sys-resources/popup.js @@ -0,0 +1 @@ +var i=0;var dhtmlgoodies_tooltipFlag=false;var dhtmlgoodies_tooltip="";var dhtmlgoodies_tooltipShadow="";var dhtmlgoodies_shadowSize=3;var dhtmlgoodies_tooltipMaxWidth=500;var dhtmlgoodies_tooltipMinWidth=100;var dhtmlgoodies_iframe=false;var timeId;var clickFlag=false;var tooltip_is_msie=(navigator.userAgent.indexOf("MSIE")>=0&&navigator.userAgent.indexOf("opera")==-1&&document.all)?true:false;var xPos;var yPos;window.document.onmousemove=function(a){a=a||window.event;if(a.pageX){xPos=a.pageX;yPos=a.pageY}else{if(document.body!=null){xPos=a.clientX+document.body.scrollLeft-document.body.clientLeft;yPos=a.clientY+document.body.scrollTop-document.body.clientTop}}};function showTooltip(tooltipTxt){if(document.body==null){return}if(i==0){return}clickFlag=true;var text=eval("jsonData."+tooltipTxt);var bodyWidth=Math.max(document.body.clientWidth,document.documentElement.clientWidth)-20;if(!dhtmlgoodies_tooltipFlag){dhtmlgoodies_tooltip=document.createElement("DIV");dhtmlgoodies_tooltip.id="dhtmlgoodies_tooltip";dhtmlgoodies_tooltipShadow=document.createElement("DIV");dhtmlgoodies_tooltipShadow.id="dhtmlgoodies_tooltipShadow";document.body.appendChild(dhtmlgoodies_tooltip);document.body.appendChild(dhtmlgoodies_tooltipShadow);if(tooltip_is_msie){dhtmlgoodies_iframe=document.createElement("IFRAME");dhtmlgoodies_iframe.frameborder="5";dhtmlgoodies_iframe.style.backgroundColor="#FFFFFF";dhtmlgoodies_iframe.src="#";dhtmlgoodies_iframe.style.zIndex=100;dhtmlgoodies_iframe.style.position="absolute";document.body.appendChild(dhtmlgoodies_iframe)}}dhtmlgoodies_tooltip.style.display="block";dhtmlgoodies_tooltipShadow.style.display="block";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="block"}var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(navigator.userAgent.toLowerCase().indexOf("safari")>=0){st=0}var leftPos=xPos+10;dhtmlgoodies_tooltip.style.width=null;dhtmlgoodies_tooltip.innerHTML=text;dhtmlgoodies_tooltip.style.left=leftPos+"px";if(tooltip_is_msie){dhtmlgoodies_tooltip.style.top=yPos+20+st+"px"}else{dhtmlgoodies_tooltip.style.top=yPos+20+"px"}dhtmlgoodies_tooltipShadow.style.left=leftPos+dhtmlgoodies_shadowSize+"px";if(tooltip_is_msie){dhtmlgoodies_tooltipShadow.style.top=yPos+20+st+dhtmlgoodies_shadowSize+"px"}else{dhtmlgoodies_tooltipShadow.style.top=yPos+20+dhtmlgoodies_shadowSize+"px"}if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){dhtmlgoodies_tooltip.style.width=dhtmlgoodies_tooltipMaxWidth+"px"}var tooltipWidth=dhtmlgoodies_tooltip.offsetWidth;if(tooltipWidthbodyWidth){dhtmlgoodies_tooltip.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((leftPos+tooltipWidth)-bodyWidth))+"px";dhtmlgoodies_tooltipShadow.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((leftPos+tooltipWidth)-bodyWidth)+dhtmlgoodies_shadowSize)+"px"}if(tooltip_is_msie){dhtmlgoodies_iframe.style.left=dhtmlgoodies_tooltip.style.left;dhtmlgoodies_iframe.style.top=dhtmlgoodies_tooltip.style.top;dhtmlgoodies_iframe.style.width=dhtmlgoodies_tooltip.offsetWidth+"px";dhtmlgoodies_iframe.style.height=dhtmlgoodies_tooltip.offsetHeight+"px"}}function hideTooltip(){i=0;clickFlag=false;if(dhtmlgoodies_tooltip!=null&&dhtmlgoodies_tooltip.style!=null){dhtmlgoodies_tooltip.style.display="none";dhtmlgoodies_tooltipShadow.style.display="none";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="none"}}if(timeId!=null&&timeId!=""){clearTimeout(timeId)}}function showText(a){i=1;timeId=setTimeout(function(){showTooltip(a)},500)}function showText2(a){if(!clickFlag){i=1;showTooltip(a);i=0;if(timeId!=null&&timeId!=""){clearTimeout(timeId)}}}function anchorScroll(b){var d=document.getElementsByName(b);if(d!=null&&d.length>0){var c=d[0];var a=c.getBoundingClientRect().left+(document.body.scrollLeft||(document.documentElement&&document.documentElement.scrollLeft));var e=c.getBoundingClientRect().top+(document.body.scrollTop||(document.documentElement&&document.documentElement.scrollTop));window.scrollTo(a,e-30)}}; \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/thickbox.css b/ecs/dev/public_sys-resources/thickbox.css new file mode 100644 index 000000000..aa0cf3743 --- /dev/null +++ b/ecs/dev/public_sys-resources/thickbox.css @@ -0,0 +1 @@ +#TB_window{font:12px Arial,Helvetica,sans-serif;color:#333333;}#TB_secondLine{font:10px Arial,Helvetica,sans-serif;color:#666666;}#TB_window a:link{color:#666666;}#TB_window a:visited{color:#666666;}#TB_window a:hover{color:#000;}#TB_window a:active{color:#666666;}#TB_window a:focus{color:#666666;}#TB_overlay{position:fixed;z-index:100;top:0;left:0;height:100%;width:100%;}.TB_overlayMacFFBGHack{background:url(macFFBgHack.png) repeat;}.TB_overlayBG{background-color:#000;filter:alpha(opacity=30);-moz-opacity:.75;opacity:.75;}* html #TB_overlay{position:absolute;height:expression(document.body.scrollHeight>document.body.offsetHeight ? document.body.scrollHeight:document.body.offsetHeight+'px');}#TB_window{position:fixed;background:#ffffff;z-index:102;color:#000000;display:none;border:2px solid #525252;text-align:left;top:50%;left:50%;}* html #TB_window{position:absolute;margin-top:expression(0 - parseInt(this.offsetHeight / 2)+(TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop)+'px');}#TB_window img#TB_Image{display:block;margin:0 auto;border-right:1px solid #ccc;border-bottom:1px solid #ccc;border-top:1px solid #666;border-left:1px solid #666;cursor:pointer;}#TB_caption{padding:7px 30px 10px 25px;float:left;}#TB_closeWindow{color:#999999;padding:8px 0 25px;font-size:12px;}#TB_closeWindow a{float:left;height:17px;line-height:100px;margin-left:10px;overflow:hidden;width:17px;}#TB_closeWindow a:hover{float:left;height:17px;line-height:100px;margin-left:10px;overflow:hidden;width:17px;}#TB_closeWindow a.imgadjust{background:url(imagemax.gif) no-repeat 0 top;}#TB_closeWindow a.imgclose{background:url(imageclose.gif) no-repeat 0 top;}#TB_closeWindow a.imgadjust:hover{background:url(imagemaxhover.gif) no-repeat 0 top;}#TB_closeWindow a.imgclose:hover{background:url(imageclosehover.gif) no-repeat 0 top;}.TB_padding{padding:5px 10px 10px;}#TB_closeAjaxWindow{padding:7px 10px 5px 0;margin-bottom:1px;text-align:right;float:right;}#TB_ajaxWindowTitle{float:left;padding:7px 0 5px 10px;margin-bottom:1px;}#TB_title{background-color:#e8e8e8;height:27px;}#TB_ajaxContent{clear:both;padding:2px 15px 15px 15px;overflow:auto;text-align:left;line-height:1.4em;}#TB_ajaxContent.TB_modal{padding:15px;}#TB_ajaxContent p{padding:5px 0 5px 0;}#TB_load{position:fixed;display:none;height:13px;width:208px;z-index:103;top:50%;left:50%;margin:-6px 0 0 -104px;}* html #TB_load{position:absolute;margin-top:expression(0 - parseInt(this.offsetHeight / 2)+(TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop)+'px');}#TB_HideSelect{z-index:99;position:fixed;top:0;left:0;background-color:#fff;border:none;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;height:100%;width:100%;}* html #TB_HideSelect{position:absolute;height:expression(document.body.scrollHeight>document.body.offsetHeight ? document.body.scrollHeight:document.body.offsetHeight+'px');}#TB_iframeContent{clear:both;border:none;margin-bottom:-1px;margin-top:1px;_margin-bottom:1px;} \ No newline at end of file diff --git a/ecs/dev/public_sys-resources/thickbox.js b/ecs/dev/public_sys-resources/thickbox.js new file mode 100644 index 000000000..2b294b4a5 --- /dev/null +++ b/ecs/dev/public_sys-resources/thickbox.js @@ -0,0 +1,8 @@ +/* + * Thickbox 3.1 - One Box To Rule Them All. + * By Cody Lindley (http://www.codylindley.com) + * Copyright (c) 2007 cody lindley + * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php +*/ +$$$(document).ready(function(){tb_init("a.thickbox, area.thickbox, input.thickbox");imgLoader=new Image();});function tb_init(a){$$$(a).click(function(){var c=this.title||this.name||null;var b=this.href||this.alt;var d=this.rel||false;tb_show(c,b,d);this.blur();return false})}function tb_show(j,b,h){try{if(typeof document.body.style.maxHeight==="undefined"){$$$("body","html").css({height:"100%",width:"100%"});$$$("html").css("overflow","hidden");if(document.getElementById("TB_HideSelect")===null){$$$("body").append("
    ");$$$("#TB_overlay").click(tb_remove)}}else{if(document.getElementById("TB_overlay")===null){$$$("body").append("
    ");$$$("#TB_overlay").click(tb_remove)}}if(tb_detectMacXFF()){$$$("#TB_overlay").addClass("TB_overlayMacFFBGHack")}else{$$$("#TB_overlay").addClass("TB_overlayBG")}if(j===null){j=""}$$$("body").append("
    ");$$$("#TB_load").show();var c;if(b.indexOf("?")!==-1){c=b.substr(0,b.indexOf("?"))}else{c=b}var f=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var k=c.toLowerCase().match(f);if(k==".jpg"||k==".jpeg"||k==".png"||k==".gif"||k==".bmp"){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(h){TB_TempArray=$$$("a[@rel="+h+"]").get();for(TB_Counter=0;((TB_Counter  Next >"}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="  < Prev"}}else{TB_FoundURL=true;TB_imageCount="Image "+(TB_Counter+1)+" of "+(TB_TempArray.length)}}}imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var e=tb_getPageSize();var v=e[0]-150;var s=e[1]-150;var r=imgPreloader.width;var o=imgPreloader.height;var t=r;var l=o;if(r>v){o=o*(v/r);r=v;if(o>s){r=r*(s/o);o=s}}else{if(o>s){r=r*(s/o);o=s;if(r>v){o=o*(v/r);r=v}}}var m=r;var n=o;$$$("#TB_window").bind("mousewheel",function(y,A){var x=Math.abs(A);var w=m;var z=n;if(A>0){m*=(x/10+1);n*=(x/10+1)}else{m*=(1-x/10);n*=(1-x/10);if(t<=v){}else{if(m<=r){n=l*(m/t)}}}if(m<210){m=w;n=z}$$$("#TB_Image").attr("width",m).attr("height",n);TB_WIDTH=m+30;TB_HEIGHT=o+60;tb_position();return false});TB_WIDTH=r+30;TB_HEIGHT=o+60;var q="
    ";$$$("#TB_window").append(q+""+j+"
    "+j+"
    "+TB_imageCount+TB_PrevHTML+TB_NextHTML+"
    ");$$$("#TB_window").addClass("ui-draggable");$$$("#TB_closeWindowButton").click(tb_remove);$$$(".imgadjust").click(function(){$$$("#TB_Image").attr("width",t).attr("height",l);TB_WIDTH=t+30;m=t;n=l;tb_position();return false});$$$("#TB_window").draggable();if(!(TB_PrevHTML==="")){function p(){if($$$(document).unbind("click",p)){$$$(document).unbind("click",p)}$$$("#TB_window").remove();$$$("body").append("
    ");tb_show(TB_PrevCaption,TB_PrevURL,h);return false}$$$("#TB_prev").click(p)}if(!(TB_NextHTML==="")){function u(){$$$("#TB_window").remove();$$$("body").append("
    ");tb_show(TB_NextCaption,TB_NextURL,h);return false}$$$("#TB_next").click(u)}document.onkeydown=function(w){if(w==null){keycode=event.keyCode}else{keycode=w.which}if(keycode==27){tb_remove()}else{if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";u()}}else{if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";p()}}}}};tb_position();$$$("#TB_load").remove();$$$("#TB_ImageOff").click(tb_remove);$$$("#TB_window").css({display:"block"})};imgPreloader.src=b}else{var a=b.replace(/^[^\?]+\??/,"");var d=tb_parseQuery(a);TB_WIDTH=(d.width*1)+30||630;TB_HEIGHT=(d.height*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(b.indexOf("TB_iframe")!=-1){urlNoQuery=b.split("TB_");$$$("#TB_iframeContent").remove();if(d.modal!="true"){$$$("#TB_window").append("
    "+j+"
    close or Esc Key
    ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("")}}else{if($$$("#TB_window").css("display")!="block"){if(d.modal!="true"){$$$("#TB_window").append("
    "+j+"
    close or Esc Key
    ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("
    ")}}else{$$$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$$$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$$$("#TB_ajaxContent")[0].scrollTop=0;$$$("#TB_ajaxWindowTitle").html(j)}}$$$("#TB_closeWindowButton").click(tb_remove);if(b.indexOf("TB_inline")!=-1){$$$("#TB_ajaxContent").append($$$("#"+d.inlineId).children());$$$("#TB_window").unload(function(){$$$("#"+d.inlineId).append($$$("#TB_ajaxContent").children())});tb_position();$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}else{if(b.indexOf("TB_iframe")!=-1){tb_position();if($$$.browser.safari){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}}else{$$$("#TB_ajaxContent").load(b+="&random="+(new Date().getTime()),function(){tb_position();$$$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$$$("#TB_window").css({display:"block"})})}}}if(!d.modal){document.onkeyup=function(l){if(l==null){keycode=event.keyCode}else{keycode=l.which}if(keycode==27){tb_remove()}}}}catch(i){}}function tb_showIframe(){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}function tb_remove(){$$$("#TB_imageOff").unbind("click");$$$("#TB_closeWindowButton").unbind("click");$$$("#TB_window").fadeOut("fast",function(){$$$("#TB_window,#TB_overlay,#TB_HideSelect").trigger("unload").unbind().remove()});$$$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$$$("body","html").css({height:"auto",width:"auto"});$$$("html").css("overflow","")}document.onkeydown="";document.onkeyup="";return false}function tb_position(){if(TB_WIDTH<210){TB_WIDTH=210}$$$("#TB_window").css({marginLeft:"-"+parseInt((TB_WIDTH/2),10)+"px",width:TB_WIDTH+"px"});if(!(jQueryHW2.browser.msie&&jQueryHW2.browser.version<7)){$$$("#TB_window").css({marginTop:"-"+parseInt((TB_HEIGHT/2),10)+"px"})}}function tb_parseQuery(d){var e={};if(!d){return e}var a=d.split(/[;&]/);for(var c=0;c
    ");$$$("#TB_overlay").click(tb_remove)}}else{if(document.getElementById("TB_overlay")===null){$$$("body").append("
    ");$$$("#TB_overlay").click(tb_remove)}}if(tb_detectMacXFF()){$$$("#TB_overlay").addClass("TB_overlayMacFFBGHack")}else{$$$("#TB_overlay").addClass("TB_overlayBG")}if(j===null){j=""}$$$("body").append("
    ");$$$("#TB_load").show();var c;if(b.indexOf("?")!==-1){c=b.substr(0,b.indexOf("?"))}else{c=b}var f=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var k=c.toLowerCase().match(f);if(k==".jpg"||k==".jpeg"||k==".png"||k==".gif"||k==".bmp"){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(h){TB_TempArray=$$$("a[@rel="+h+"]").get();for(TB_Counter=0;((TB_Counter  Next >"}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="  < Prev"}}else{TB_FoundURL=true;TB_imageCount="Image "+(TB_Counter+1)+" of "+(TB_TempArray.length)}}}imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var e=tb_getPageSize();var v=e[0]-150;var s=e[1]-150;var r=imgPreloader.width;var o=imgPreloader.height;var t=r;var l=o;if(r>v){o=o*(v/r);r=v;if(o>s){r=r*(s/o);o=s}}else{if(o>s){r=r*(s/o);o=s;if(r>v){o=o*(v/r);r=v}}}var m=r;var n=o;$$$("#TB_window").bind("mousewheel",function(y,A){var x=Math.abs(A);var w=m;var z=n;if(A>0){m*=(x/10+1);n*=(x/10+1)}else{m*=(1-x/10);n*=(1-x/10);if(t<=v){}else{if(m<=r){n=l*(m/t)}}}if(m<210){m=w;n=z}$$$("#TB_Image").attr("width",m).attr("height",n);TB_WIDTH=m+30;TB_HEIGHT=o+60;tb_position();return false});TB_WIDTH=r+30;TB_HEIGHT=o+60;var q="
    ";$$$("#TB_window").append(q+""+j+"
    "+j+"
    "+TB_imageCount+TB_PrevHTML+TB_NextHTML+"
    ");$$$("#TB_window").addClass("ui-draggable");$$$("#TB_closeWindowButton").click(tb_remove);$$$(".imgadjust").click(function(){$$$("#TB_Image").attr("width",t).attr("height",l);TB_WIDTH=t+30;m=t;n=l;tb_position();return false});$$$("#TB_window").draggable();if(!(TB_PrevHTML==="")){function p(){if($$$(document).unbind("click",p)){$$$(document).unbind("click",p)}$$$("#TB_window").remove();$$$("body").append("
    ");tb_show(TB_PrevCaption,TB_PrevURL,h);return false}$$$("#TB_prev").click(p)}if(!(TB_NextHTML==="")){function u(){$$$("#TB_window").remove();$$$("body").append("
    ");tb_show(TB_NextCaption,TB_NextURL,h);return false}$$$("#TB_next").click(u)}document.onkeydown=function(w){if(w==null){keycode=event.keyCode}else{keycode=w.which}if(keycode==27){tb_remove()}else{if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";u()}}else{if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";p()}}}}};tb_position();$$$("#TB_load").remove();$$$("#TB_ImageOff").click(tb_remove);$$$("#TB_window").css({display:"block"})};imgPreloader.src=b}else{var a=b.replace(/^[^\?]+\??/,"");var d=tb_parseQuery(a);TB_WIDTH=(d.width*1)+30||630;TB_HEIGHT=(d.height*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(b.indexOf("TB_iframe")!=-1){urlNoQuery=b.split("TB_");$$$("#TB_iframeContent").remove();if(d.modal!="true"){$$$("#TB_window").append("
    "+j+"
    close or Esc Key
    ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("")}}else{if($$$("#TB_window").css("display")!="block"){if(d.modal!="true"){$$$("#TB_window").append("
    "+j+"
    close or Esc Key
    ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("
    ")}}else{$$$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$$$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$$$("#TB_ajaxContent")[0].scrollTop=0;$$$("#TB_ajaxWindowTitle").html(j)}}$$$("#TB_closeWindowButton").click(tb_remove);if(b.indexOf("TB_inline")!=-1){$$$("#TB_ajaxContent").append($$$("#"+d.inlineId).children());$$$("#TB_window").unload(function(){$$$("#"+d.inlineId).append($$$("#TB_ajaxContent").children())});tb_position();$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}else{if(b.indexOf("TB_iframe")!=-1){tb_position();if($$$.browser.safari){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}}else{$$$("#TB_ajaxContent").load(b+="&random="+(new Date().getTime()),function(){tb_position();$$$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$$$("#TB_window").css({display:"block"})})}}}if(!d.modal){document.onkeyup=function(l){if(l==null){keycode=event.keyCode}else{keycode=l.which}if(keycode==27){tb_remove()}}}}catch(i){}}function tb_showIframe(){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}function tb_remove(){$$$("#TB_imageOff").unbind("click");$$$("#TB_closeWindowButton").unbind("click");$$$("#TB_window").fadeOut("fast",function(){$$$("#TB_window,#TB_overlay,#TB_HideSelect").trigger("unload").unbind().remove()});$$$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$$$("body","html").css({height:"auto",width:"auto"});$$$("html").css("overflow","")}document.onkeydown="";document.onkeyup="";return false}function tb_position(){if(TB_WIDTH<210){TB_WIDTH=210}$$$("#TB_window").css({marginLeft:"-"+parseInt((TB_WIDTH/2),10)+"px",width:TB_WIDTH+"px"});if(!(jQueryHW2.browser.msie&&jQueryHW2.browser.version<7)){$$$("#TB_window").css({marginTop:"-"+parseInt((TB_HEIGHT/2),10)+"px"})}}function tb_parseQuery(d){var e={};if(!d){return e}var a=d.split(/[;&]/);for(var c=0;c Administrative", + "doc_type":"usermanual", + "kw":"Why Does My Remote Desktop Session End Because Another User Logs In When I Log In to a Windows ECS?,", + "title":"Why Does My Remote Desktop Session End Because Another User Logs In When I Log In to a Windows ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018124779.html", + "product_code":"ecs", + "code":"171", + "des":"An internal error is displayed when you log in to a Windows ECS and you fail to connect to the ECS remotely. Generally, this problem occurs because the Remote Desktop Ser", + "doc_type":"usermanual", + "kw":"Why Does an ECS Fail to Be Remotely Connected Using RDP and Internal Error Code 4 Is Displayed?,Logi", + "title":"Why Does an ECS Fail to Be Remotely Connected Using RDP and Internal Error Code 4 Is Displayed?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0240708482.html", + "product_code":"ecs", + "code":"172", + "des":"When you attempt to remotely log in to a Linux ECS, the system displays the error message \"Module is unknown\".To resolve this issue, restart the ECS and enter the rescue ", + "doc_type":"usermanual", + "kw":"Why Am I Seeing the Error Message \"Module is unknown\" When I Remotely Log In to a Linux ECS?,Login a", + "title":"Why Am I Seeing the Error Message \"Module is unknown\" When I Remotely Log In to a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0240708483.html", + "product_code":"ecs", + "code":"173", + "des":"When I attempted to remotely log in to a Linux ECS, the system displayed error Message \"Permission denied\".To resolve this issue, you are required to restart the ECS and ", + "doc_type":"usermanual", + "kw":"What Should I Do If Error Message \"Permission denied\" Is Displayed When I Remotely Log In to a Linux", + "title":"What Should I Do If Error Message \"Permission denied\" Is Displayed When I Remotely Log In to a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0240714337.html", + "product_code":"ecs", + "code":"174", + "des":"When I attempted to remotely log in to a Linux ECS, the system displayed error message \"read: Connection reset by peer\".The remote login port is not permitted in the secu", + "doc_type":"usermanual", + "kw":"What Should I Do If Error Message \"read: Connection reset by peer\" Is Displayed When I Remotely Log ", + "title":"What Should I Do If Error Message \"read: Connection reset by peer\" Is Displayed When I Remotely Log In to a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0277097520.html", + "product_code":"ecs", + "code":"175", + "des":"When you attempt to remotely log in to a Linux ECS, the system displays the error message \"Access denied\".Incorrect username or password.A policy that denies logins from ", + "doc_type":"usermanual", + "kw":"Why Am I Seeing the Error Message \"Access denied\" When I Remotely Log In to a Linux ECS?,Login and C", + "title":"Why Am I Seeing the Error Message \"Access denied\" When I Remotely Log In to a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0277132844.html", + "product_code":"ecs", + "code":"176", + "des":"When I attempted to remotely log in to a Linux ECS, the system displayed error message \"Disconnected: No supported authentication methods available\".A policy that denies ", + "doc_type":"usermanual", + "kw":"What Should I Do If Error Message \"Disconnected: No supported authentication methods available\" Is D", + "title":"What Should I Do If Error Message \"Disconnected: No supported authentication methods available\" Is Displayed When I Remotely Log In to a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0208808104.html", + "product_code":"ecs", + "code":"177", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"ECS Management", + "title":"ECS Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0050735736.html", + "product_code":"ecs", + "code":"178", + "des":"The static hostname of a Linux ECS is user defined and injected using Cloud-Init during the ECS creation. Although the hostname can be changed by running the hostname com", + "doc_type":"usermanual", + "kw":"How Can a Changed Static Hostname Take Effect Permanently?,ECS Management,User Guide", + "title":"How Can a Changed Static Hostname Take Effect Permanently?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0094874138.html", + "product_code":"ecs", + "code":"179", + "des":"Hostnames of ECSs created based on some types of images have the suffix .novalocal, whereas others do not.For example, the hostname is set to abc during ECS creation. Tab", + "doc_type":"usermanual", + "kw":"Is an ECS Hostname with Suffix .novalocal Normal?,ECS Management,User Guide", + "title":"Is an ECS Hostname with Suffix .novalocal Normal?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0214940105.html", + "product_code":"ecs", + "code":"180", + "des":"After you modify specifications of a Windows ECS, the disks may go offline. Therefore, you need to check the number of disks after you modify the specifications.Check whe", + "doc_type":"usermanual", + "kw":"Why Do the Disks of a Windows ECS Go Offline After I Modify the ECS Specifications?,ECS Management,U", + "title":"Why Do the Disks of a Windows ECS Go Offline After I Modify the ECS Specifications?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0214940106.html", + "product_code":"ecs", + "code":"181", + "des":"After you modify specifications of a Linux ECS, disk attachment may fail. Therefore, you need to check the disk attachment after you modify the specifications.Log in to t", + "doc_type":"usermanual", + "kw":"Why Does the Disk Attachment of a Linux ECS Fail After I Modify the ECS Specifications?,ECS Manageme", + "title":"Why Does the Disk Attachment of a Linux ECS Fail After I Modify the ECS Specifications?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0032398121.html", + "product_code":"ecs", + "code":"182", + "des":"This section helps you resolve the following issues:An error message was displayed on the management console after you performed ECS-related operations.An error code was ", + "doc_type":"usermanual", + "kw":"How Do I Handle Error Messages Displayed on the Management Console?,ECS Management,User Guide", + "title":"How Do I Handle Error Messages Displayed on the Management Console?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0088241338.html", + "product_code":"ecs", + "code":"183", + "des":"The system displays a question mark (?) when I attempt to obtain the console logs of an ECS.The image based on which the ECS was created supports viewing console logs. Ho", + "doc_type":"usermanual", + "kw":"Why Does the System Display a Question Mark When I Attempt to Obtain Console Logs?,ECS Management,Us", + "title":"Why Does the System Display a Question Mark When I Attempt to Obtain Console Logs?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018124788.html", + "product_code":"ecs", + "code":"184", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"OS Management", + "title":"OS Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078520.html", + "product_code":"ecs", + "code":"185", + "des":"You can install or upgrade ECS OSs provided on the cloud platform.When you create an ECS, you can select a public image or a private image created from a public image to ", + "doc_type":"usermanual", + "kw":"Can I Install or Upgrade the OS of an ECS?,OS Management,User Guide", + "title":"Can I Install or Upgrade the OS of an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078522.html", + "product_code":"ecs", + "code":"186", + "des":"Yes. You can change the OS of an ECS.For instructions about how to change an ECS OS, see Changing the OS.", + "doc_type":"usermanual", + "kw":"Can I Change the OS of an ECS?,OS Management,User Guide", + "title":"Can I Change the OS of an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101604511.html", + "product_code":"ecs", + "code":"187", + "des":"Typically, the process of changing the OS of an ECS takes about 1 to 2 minutes. Stop the ECS, click More in the Operation column, and select Change OS from the drop-down ", + "doc_type":"usermanual", + "kw":"How Long Does It Take to Change an ECS OS?,OS Management,User Guide", + "title":"How Long Does It Take to Change an ECS OS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0024912311.html", + "product_code":"ecs", + "code":"188", + "des":"No. You can use only the original image of the ECS to reinstall the OS. You need to use a new image if you want to change the OS. For details, see Changing the OS.", + "doc_type":"usermanual", + "kw":"Can I Select Another OS During ECS OS Reinstallation?,OS Management,User Guide", + "title":"Can I Select Another OS During ECS OS Reinstallation?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101604512.html", + "product_code":"ecs", + "code":"189", + "des":"Typically, the process of reinstalling the OS of an ECS takes about 1 to 2 minutes. Stop the ECS, click More in the Operation column, and select Reinstall OS in the drop-", + "doc_type":"usermanual", + "kw":"How Long Does It Take to Reinstall an ECS OS?,OS Management,User Guide", + "title":"How Long Does It Take to Reinstall an ECS OS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078523.html", + "product_code":"ecs", + "code":"190", + "des":"Windows ECSs are managed through a GUI but Linux ECSs are managed through the CLI. You can configure a GUI if required.Before installing a GUI on an ECS, ensure that the ", + "doc_type":"usermanual", + "kw":"Do ECSs Support GUI?,OS Management,User Guide", + "title":"Do ECSs Support GUI?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0170135967.html", + "product_code":"ecs", + "code":"191", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"File Upload/Data Transfer", + "title":"File Upload/Data Transfer", + "githuburl":"" + }, + { + "uri":"en-us_topic_0236302789.html", + "product_code":"ecs", + "code":"192", + "des":"File transfer toolInstall a file transfer tool, such as FileZilla on both the local computer and the Windows ECS and use it to transfer files.Install a file transfer tool", + "doc_type":"usermanual", + "kw":"How Do I Upload Files to My ECS?,File Upload/Data Transfer,User Guide", + "title":"How Do I Upload Files to My ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0166284970.html", + "product_code":"ecs", + "code":"193", + "des":"You want to transfer files from a local Windows computer to a Windows ECS through an MSTSC-based remote desktop connection.The target ECS is running.The ECS has an EIP bo", + "doc_type":"usermanual", + "kw":"How Can I Transfer Files from a Local Windows Computer to a Windows ECS?,File Upload/Data Transfer,U", + "title":"How Can I Transfer Files from a Local Windows Computer to a Windows ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0166284971.html", + "product_code":"ecs", + "code":"194", + "des":"WinSCP can be used to securely copy-paste files across local and remote computers. Compared with FTP, WinSCP allows you to use a username and password to access the desti", + "doc_type":"usermanual", + "kw":"How Can I Use WinSCP to Transfer Files from a Local Windows Computer to a Linux ECS?,File Upload/Dat", + "title":"How Can I Use WinSCP to Transfer Files from a Local Windows Computer to a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0295091738.html", + "product_code":"ecs", + "code":"195", + "des":"This section describes how to use Microsoft Remote Desktop for Mac to transfer files from a local Mac to a Windows ECS.The remote access tool supported by Mac has been in", + "doc_type":"usermanual", + "kw":"How Can I Transfer Files from a Local Mac to a Windows ECS?,File Upload/Data Transfer,User Guide", + "title":"How Can I Transfer Files from a Local Mac to a Windows ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0263796591.html", + "product_code":"ecs", + "code":"196", + "des":"You want to use SCP to transfer files between a local Linux computer and a Linux ECS.Log in to the management console. On the Elastic Cloud Server page, obtain the EIP bo", + "doc_type":"usermanual", + "kw":"How Can I Use SCP to Transfer Files Between a Local Linux Computer and a Linux ECS?,File Upload/Data", + "title":"How Can I Use SCP to Transfer Files Between a Local Linux Computer and a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0170139796.html", + "product_code":"ecs", + "code":"197", + "des":"You want to use SFTP to transfer files between a local Linux computer and a Linux ECS. The following uses CentOS as an example.Log in to the ECS as user root.Run the foll", + "doc_type":"usermanual", + "kw":"How Can I Use SFTP to Transfer Files Between a Local Linux Computer and a Linux ECS?,File Upload/Dat", + "title":"How Can I Use SFTP to Transfer Files Between a Local Linux Computer and a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0263806053.html", + "product_code":"ecs", + "code":"198", + "des":"You want to use FTP to transfer files from a local Windows computer to an ECS.You have enabled FTP on the target ECS. If you have not enabled FTP, check the following lin", + "doc_type":"usermanual", + "kw":"How Can I Use FTP to Transfer Files from a Local Windows Computer to a Windows or Linux ECS?,File Up", + "title":"How Can I Use FTP to Transfer Files from a Local Windows Computer to a Windows or Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0263806054.html", + "product_code":"ecs", + "code":"199", + "des":"You want to use FTP on a local Linux computer to transfer files between the computer and a Linux ECS.You have enabled FTP on the target ECS. If you have not enabled FTP, ", + "doc_type":"usermanual", + "kw":"How Can I Use FTP to Transfer Files Between a Local Linux Computer and a Linux ECS?,File Upload/Data", + "title":"How Can I Use FTP to Transfer Files Between a Local Linux Computer and a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0170139797.html", + "product_code":"ecs", + "code":"200", + "des":"When I attempted to access the server from the client to upload a file using FTP, the connection timed out.The operations described in this section apply to FTP on local ", + "doc_type":"usermanual", + "kw":"What Should I Do If the Connection Between the Client and the Server Times Out When I Upload a File ", + "title":"What Should I Do If the Connection Between the Client and the Server Times Out When I Upload a File Using FTP?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0170139798.html", + "product_code":"ecs", + "code":"201", + "des":"When I attempted to upload a file using FTP, writing data failed. As a result, the file transfer failed.The operations described in this section apply to FTP on Windows E", + "doc_type":"usermanual", + "kw":"What Should I Do If Writing Data Failed When I Upload a File Using FTP?,File Upload/Data Transfer,Us", + "title":"What Should I Do If Writing Data Failed When I Upload a File Using FTP?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0247282819.html", + "product_code":"ecs", + "code":"202", + "des":"An error occurs when you open a folder on an FTP server. The system displays a message asking you to check permissions.The FTP firewall configured for the browser does no", + "doc_type":"usermanual", + "kw":"Why Am I Seeing an FTP Folder Error When I Open a Folder on an FTP Server?,File Upload/Data Transfer", + "title":"Why Am I Seeing an FTP Folder Error When I Open a Folder on an FTP Server?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001189572473.html", + "product_code":"ecs", + "code":"203", + "des":"Connecting to a Linux ECS using WinSCP fails, while using SSH tools like Xshell succeeds.If you can connect to a Linux ECS using SSH tools, the SSH tools run properly. Ch", + "doc_type":"usermanual", + "kw":"Why Do I Fail to Connect to a Linux ECS Using WinSCP?,File Upload/Data Transfer,User Guide", + "title":"Why Do I Fail to Connect to a Linux ECS Using WinSCP?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0208809314.html", + "product_code":"ecs", + "code":"204", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"ECS Migration", + "title":"ECS Migration", + "githuburl":"" + }, + { + "uri":"en-us_topic_0236308363.html", + "product_code":"ecs", + "code":"205", + "des":"Yes.", + "doc_type":"usermanual", + "kw":"Can I Migrate an ECS to Another Region or Account?,ECS Migration,User Guide", + "title":"Can I Migrate an ECS to Another Region or Account?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018124786.html", + "product_code":"ecs", + "code":"206", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Disk Management", + "title":"Disk Management", + "githuburl":"" + }, + { + "uri":"en-us_topic_0251012483.html", + "product_code":"ecs", + "code":"207", + "des":"After logging in to my Windows ECS, I cannot find the attached data disk.Formatting a disk will cause data loss. Therefore, before formatting a disk, create a backup for ", + "doc_type":"usermanual", + "kw":"What Should I Do If the Data Disk Attached a Windows ECS Is Unavailable?,Disk Management,User Guide", + "title":"What Should I Do If the Data Disk Attached a Windows ECS Is Unavailable?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0076210995.html", + "product_code":"ecs", + "code":"208", + "des":"If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can manually adjust the partitions to expand t", + "doc_type":"usermanual", + "kw":"How Can I Adjust System Disk Partitions?,Disk Management,User Guide", + "title":"How Can I Adjust System Disk Partitions?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0087680813.html", + "product_code":"ecs", + "code":"209", + "des":"This section uses an ECS running Windows Server 2008 R2 64bit as an example to describe how to obtain the mapping between disk partitions and disk devices.Log in to the W", + "doc_type":"usermanual", + "kw":"How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Windows ECS?,Disk Managem", + "title":"How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Windows ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0087901488.html", + "product_code":"ecs", + "code":"210", + "des":"For a Linux ECS, its disk partitions correspond to disk devices. This section uses a Linux ECS running Red Hat Enterprise Linux 7 as an example to describe how to obtain ", + "doc_type":"usermanual", + "kw":"How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Linux ECS?,Disk Managemen", + "title":"How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0120795802.html", + "product_code":"ecs", + "code":"211", + "des":"Enabling ECS virtual memory will deteriorate disk I/O performance. Therefore, the Windows ECSs provided by the platform do not have virtual memory enabled by default. If ", + "doc_type":"usermanual", + "kw":"How Can I Enable Virtual Memory on a Windows ECS?,Disk Management,User Guide", + "title":"How Can I Enable Virtual Memory on a Windows ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0093153741.html", + "product_code":"ecs", + "code":"212", + "des":"After you create an ECS, you run the free -m command to view the ECS memory. The ECS memory is less than the memory configured during ECS creation.An example is provided ", + "doc_type":"usermanual", + "kw":"Why Is the Memory of an ECS Obtained by Running the free Command Inconsistent with the Actual Memory", + "title":"Why Is the Memory of an ECS Obtained by Running the free Command Inconsistent with the Actual Memory?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0078300749.html", + "product_code":"ecs", + "code":"213", + "des":"If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can add the empty partition to the root partit", + "doc_type":"usermanual", + "kw":"How Can I Add the Empty Partition of an Expanded System Disk to the End Root Partition Online?,Disk ", + "title":"How Can I Add the Empty Partition of an Expanded System Disk to the End Root Partition Online?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0078300750.html", + "product_code":"ecs", + "code":"214", + "des":"If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can add the empty partition to the root partit", + "doc_type":"usermanual", + "kw":"How Can I Add the Empty Partition of an Expanded System Disk to the Non-end Root Partition Online?,D", + "title":"How Can I Add the Empty Partition of an Expanded System Disk to the Non-end Root Partition Online?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018073215.html", + "product_code":"ecs", + "code":"215", + "des":"Yes. The ECSs created after the disk function upgrade can have up to 60 attached disks.When you create an ECS, you can attach 24 disks to it.After you create an ECS, you ", + "doc_type":"usermanual", + "kw":"Can I Attach Multiple Disks to an ECS?,Disk Management,User Guide", + "title":"Can I Attach Multiple Disks to an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0040863659.html", + "product_code":"ecs", + "code":"216", + "des":"The EVS disk and the target ECS must be located in the same AZ.For a non-shared disk, the EVS disk must be in Available state.For a shared disk, the target EVS disk must ", + "doc_type":"usermanual", + "kw":"What Are the Requirements for Attaching an EVS Disk to an ECS?,Disk Management,User Guide", + "title":"What Are the Requirements for Attaching an EVS Disk to an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0077938284.html", + "product_code":"ecs", + "code":"217", + "des":"All types of ECSs can be attached with SCSI EVS disks.", + "doc_type":"usermanual", + "kw":"Which ECSs Can Be Attached with SCSI EVS Disks?,Disk Management,User Guide", + "title":"Which ECSs Can Be Attached with SCSI EVS Disks?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0103285575.html", + "product_code":"ecs", + "code":"218", + "des":"You find that the disk name displayed on the ECS OS is different from that displayed on the management console and you cannot determine which disk name is correct. This s", + "doc_type":"usermanual", + "kw":"How Do I Obtain My Disk Name in the ECS OS Using the Device Identifier Provided on the Console?,Disk", + "title":"How Do I Obtain My Disk Name in the ECS OS Using the Device Identifier Provided on the Console?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0152643976.html", + "product_code":"ecs", + "code":"219", + "des":"To restore data, a system disk snapshot of ECS A is used to create disk A. Then, disk A is attached to ECS B as a data disk. However, after ECS B is restarted, data disk ", + "doc_type":"usermanual", + "kw":"How Can I Attach a Snapshot-based System Disk to an ECS as Its Data Disk?,Disk Management,User Guide", + "title":"How Can I Attach a Snapshot-based System Disk to an ECS as Its Data Disk?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0087382187.html", + "product_code":"ecs", + "code":"220", + "des":"For a Linux ECS with a SCSI disk attached, if you have enabled automatic SCSI disk attachment upon ECS startup in /etc/fstab and the disk drive letter (for example, /dev/", + "doc_type":"usermanual", + "kw":"Why Does a Linux ECS with a SCSI Disk Attached Fails to Restart?,Disk Management,User Guide", + "title":"Why Does a Linux ECS with a SCSI Disk Attached Fails to Restart?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0047272493.html", + "product_code":"ecs", + "code":"221", + "des":"The rights of users in a user group to use the encryption feature are as follows:The user who has security administrator rights can grant KMS access rights to EVS for usi", + "doc_type":"usermanual", + "kw":"Can All Users Use the Encryption Feature?,Disk Management,User Guide", + "title":"Can All Users Use the Encryption Feature?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0114225937.html", + "product_code":"ecs", + "code":"222", + "des":"A disk attached to a Windows ECS goes offline, and the system displays the message \"The disk is offline because of policy set by an administrator.\"Windows has three types", + "doc_type":"usermanual", + "kw":"Why Does a Disk Attached to a Windows ECS Go Offline?,Disk Management,User Guide", + "title":"Why Does a Disk Attached to a Windows ECS Go Offline?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0240831198.html", + "product_code":"ecs", + "code":"223", + "des":"For a Linux ECS, the drive letter may change after an EVS disk is detached and then attached again, or after an EVS disk is detached and then the ECS is restarted. This i", + "doc_type":"usermanual", + "kw":"Why Does the Disk Drive Letter Change After the ECS Is Restarted?,Disk Management,User Guide", + "title":"Why Does the Disk Drive Letter Change After the ECS Is Restarted?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0029806525.html", + "product_code":"ecs", + "code":"224", + "des":"If you uninstall Tools from a Linux ECS in a non-PVOPS system, data disks cannot be identified. In such a case, you can create a new ECS and attach the data disks of the ", + "doc_type":"usermanual", + "kw":"How Can I Obtain Data Disk Information If Tools Are Uninstalled?,Disk Management,User Guide", + "title":"How Can I Obtain Data Disk Information If Tools Are Uninstalled?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0087622835.html", + "product_code":"ecs", + "code":"225", + "des":"When a Linux ECS with an NVMe SSD disk attached, such as a P1 ECS, becomes faulty, you must contact the administrator to remotely create the ECS again for reconstruction.", + "doc_type":"usermanual", + "kw":"How Can I Rectify the Fault That May Occur on a Linux ECS with an NVMe SSD Disk Attached?,Disk Manag", + "title":"How Can I Rectify the Fault That May Occur on a Linux ECS with an NVMe SSD Disk Attached?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0105215483.html", + "product_code":"ecs", + "code":"226", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Passwords and Key Pairs", + "title":"Passwords and Key Pairs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0079176727.html", + "product_code":"ecs", + "code":"227", + "des":"If an ECS cannot be logged in because of expired image password, you can contact the administrator for handling.If the ECS can still be logged in, you can perform the fol", + "doc_type":"usermanual", + "kw":"How Can I Set the Validity Period of the Image Password?,Passwords and Key Pairs,User Guide", + "title":"How Can I Set the Validity Period of the Image Password?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0081525053.html", + "product_code":"ecs", + "code":"228", + "des":"You have created multiple key pairs, and you are trying to find the key pair to log in to the target ECS.Log in to the management console.Click in the upper left corner ", + "doc_type":"usermanual", + "kw":"How Can I Obtain the Key Pair Used by an ECS?,Passwords and Key Pairs,User Guide", + "title":"How Can I Obtain the Key Pair Used by an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0019883415.html", + "product_code":"ecs", + "code":"229", + "des":"If you use Internet Explorer 9 to access the management console, the key pair may fail to import. In this case, perform the following steps to modify browser settings and", + "doc_type":"usermanual", + "kw":"What Should I Do If a Key Pair Cannot Be Imported?,Passwords and Key Pairs,User Guide", + "title":"What Should I Do If a Key Pair Cannot Be Imported?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0031734664.html", + "product_code":"ecs", + "code":"230", + "des":"When you use the key file created during your Linux ECS creation to log in to the ECS, the login fails.Possible causes vary depending on the image used to create the Linu", + "doc_type":"usermanual", + "kw":"Why Does the Login to My Linux ECS Using a Key File Fail?,Passwords and Key Pairs,User Guide", + "title":"Why Does the Login to My Linux ECS Using a Key File Fail?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0047654687.html", + "product_code":"ecs", + "code":"231", + "des":"When you try to import a key pair that you created using puttygen.exe on the management console, the system displays a message indicating that the import failed.The forma", + "doc_type":"usermanual", + "kw":"Why Does a Key Pair Created Using puttygen.exe Fail to Be Imported on the Management Console?,Passwo", + "title":"Why Does a Key Pair Created Using puttygen.exe Fail to Be Imported on the Management Console?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0037633087.html", + "product_code":"ecs", + "code":"232", + "des":"In Windows ECSs, cloudbase-init is the default account of the Cloudbase-Init agent program. It is used to obtain the metadata and execute configurations when the ECS star", + "doc_type":"usermanual", + "kw":"What Is the cloudbase-init Account in Windows ECSs Used for?,Passwords and Key Pairs,User Guide", + "title":"What Is the cloudbase-init Account in Windows ECSs Used for?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0118224527.html", + "product_code":"ecs", + "code":"233", + "des":"Take an ECS running CentOS 6.8 as an example. After Python was upgraded from 2.6 to 2.7, Cloud-Init did not work. Data, such as the login password, key, and hostname coul", + "doc_type":"usermanual", + "kw":"What Should I Do If Cloud-Init Does Not Work After Python Is Upgraded?,Passwords and Key Pairs,User ", + "title":"What Should I Do If Cloud-Init Does Not Work After Python Is Upgraded?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018124785.html", + "product_code":"ecs", + "code":"234", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Network Configurations", + "title":"Network Configurations", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018073216.html", + "product_code":"ecs", + "code":"235", + "des":"You can bind multiple EIPs to an ECS. However, this configuration is not recommended.To bind multiple EIPs to an ECS, you must manually configure routes.Table 1 lists ECS", + "doc_type":"usermanual", + "kw":"Can I Bind Multiple EIPs to an ECS?,Network Configurations,User Guide", + "title":"Can I Bind Multiple EIPs to an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0030013188.html", + "product_code":"ecs", + "code":"236", + "des":"Yes.Method 1: Configure a SNAT server.You can configure the SNAT server so that the ECS without an EIP bound can access the Internet.For details, see \"Configuring an SNAT", + "doc_type":"usermanual", + "kw":"Can an ECS Without an EIP Access the Internet?,Network Configurations,User Guide", + "title":"Can an ECS Without an EIP Access the Internet?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0105130172.html", + "product_code":"ecs", + "code":"237", + "des":"After you purchase an EIP and bind it to an ECS, the ping operation to the EIP fails, or the ECS fails to access the Internet.The following fault causes are sequenced bas", + "doc_type":"usermanual", + "kw":"Why Can't an EIP Be Pinged?,Network Configurations,User Guide", + "title":"Why Can't an EIP Be Pinged?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078505.html", + "product_code":"ecs", + "code":"238", + "des":"You can remotely access an ECS but when you ping the EIP bound to the ECS, the ping operation fails.A desired inbound rule is not added for the security group, and ICMP i", + "doc_type":"usermanual", + "kw":"Why Can I Remotely Access an ECS But Cannot Ping It?,Network Configurations,User Guide", + "title":"Why Can I Remotely Access an ECS But Cannot Ping It?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0025445670.html", + "product_code":"ecs", + "code":"239", + "des":"Based on test results, if the ECS runs CentOS 7.0, NICs added to the ECS cannot start automatically. You must start the NICs manually.", + "doc_type":"usermanual", + "kw":"Will NICs Added to an ECS Start Automatically?,Network Configurations,User Guide", + "title":"Will NICs Added to an ECS Start Automatically?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0058747426.html", + "product_code":"ecs", + "code":"240", + "des":"For high-performance H2 ECSs equipped with an InfiniBand NIC driver (InfiniBand ECSs for short), perform the following operations to check whether the driver installation", + "doc_type":"usermanual", + "kw":"How Can I Check Whether the Network Communication Is Normal Between Two ECSs Equipped with an Infini", + "title":"How Can I Check Whether the Network Communication Is Normal Between Two ECSs Equipped with an InfiniBand NIC Driver?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0083225171.html", + "product_code":"ecs", + "code":"241", + "des":"IP over InfiniBand (IPoIB) allows IP data transmission over InfiniBand. For SUSE high-performance H2 and HL1 ECSs, if IPoIB is required, you must manually configure an IP", + "doc_type":"usermanual", + "kw":"How Can I Manually Configure an IP Address for an InfiniBand NIC?,Network Configurations,User Guide", + "title":"How Can I Manually Configure an IP Address for an InfiniBand NIC?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0036068717.html", + "product_code":"ecs", + "code":"242", + "des":"The NIC equipped on a disk-intensive or large-memory ECS does not work.The NIC driver has not been correctly installed.Disk-intensive and large-memory ECSs use passthroug", + "doc_type":"usermanual", + "kw":"Why Is the NIC Not Working?,Network Configurations,User Guide", + "title":"Why Is the NIC Not Working?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0053287548.html", + "product_code":"ecs", + "code":"243", + "des":"When the 20.4.1 driver package downloaded at Intel website https://downloadcenter.intel.com/search?keyword=Intel++Ethernet+Connections+CD was installed in a Windows 7 64b", + "doc_type":"usermanual", + "kw":"How Can I Handle the Issue that a Windows 7 ECS Equipped with an Intel 82599 NIC Reports an Error in", + "title":"How Can I Handle the Issue that a Windows 7 ECS Equipped with an Intel 82599 NIC Reports an Error in SR-IOV Scenarios?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001138811177.html", + "product_code":"ecs", + "code":"244", + "des":"The security group of the Linux ECS has been configured based on the prerequisites in Obtaining Metadata in the outbound direction, but the ECS still cannot obtain the me", + "doc_type":"usermanual", + "kw":"Why Can't My Linux ECS Obtain Metadata?,Network Configurations,User Guide", + "title":"Why Can't My Linux ECS Obtain Metadata?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101604506.html", + "product_code":"ecs", + "code":"245", + "des":"This section describes how to obtain the MAC address of an ECS.The MAC address of an ECS cannot be changed.Log in to the Linux ECS.Run the following command to view the M", + "doc_type":"usermanual", + "kw":"How Can I Obtain the MAC Address of My ECS?,Network Configurations,User Guide", + "title":"How Can I Obtain the MAC Address of My ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0115820205.html", + "product_code":"ecs", + "code":"246", + "des":"Use netperf and iperf3 to test network performance between ECSs. The test operations include preparations, TCP bandwidth test, UDP PPS test, and latency test.Tested ECS: ", + "doc_type":"usermanual", + "kw":"How Can I Test Network Performance?,Network Configurations,User Guide", + "title":"How Can I Test Network Performance?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0105130173.html", + "product_code":"ecs", + "code":"247", + "des":"You attempt to use DHCP to obtain a private IP address, but you cannot obtain the IP address.For Linux, a private IP address cannot be assigned.For Windows, a private IP ", + "doc_type":"usermanual", + "kw":"Why Can't I Use DHCP to Obtain a Private IP Address?,Network Configurations,User Guide", + "title":"Why Can't I Use DHCP to Obtain a Private IP Address?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0107659745.html", + "product_code":"ecs", + "code":"248", + "des":"Modify the kernel parameters only if the parameter settings affect your services. Kernel parameters vary depending on OS versions. If the parameter settings must be modif", + "doc_type":"usermanual", + "kw":"How Can I View and Modify Kernel Parameters of a Linux ECS?,Network Configurations,User Guide", + "title":"How Can I View and Modify Kernel Parameters of a Linux ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101604507.html", + "product_code":"ecs", + "code":"249", + "des":"It is expected that the EIP and port on ECS 1 accessed from the Internet can be automatically redirected to the EIP and port on ECS 2.For example, to redirect port 8080 o", + "doc_type":"usermanual", + "kw":"How Can I Configure Port Redirection?,Network Configurations,User Guide", + "title":"How Can I Configure Port Redirection?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078501.html", + "product_code":"ecs", + "code":"250", + "des":"No. The ECSs of different accounts cannot communicate with each other over an intranet.", + "doc_type":"usermanual", + "kw":"Can the ECSs of Different Accounts Communicate over an Intranet?,Network Configurations,User Guide", + "title":"Can the ECSs of Different Accounts Communicate over an Intranet?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078503.html", + "product_code":"ecs", + "code":"251", + "des":"You can customize your network to deploy the ECSs. Therefore, whether they are in the same subnet is totally up to you.", + "doc_type":"usermanual", + "kw":"Will ECSs That I Purchased Deployed in the Same Subnet?,Network Configurations,User Guide", + "title":"Will ECSs That I Purchased Deployed in the Same Subnet?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0208809315.html", + "product_code":"ecs", + "code":"252", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Resource Management and Tags", + "title":"Resource Management and Tags", + "githuburl":"" + }, + { + "uri":"en-us_topic_0101604501.html", + "product_code":"ecs", + "code":"253", + "des":"Log in to the management console.Select the region where the ECS is located.Under Computing, click Elastic Cloud Server.Click the name of the target ECS.The page providin", + "doc_type":"usermanual", + "kw":"How Can I Create and Delete Tags and Search for ECSs by Tag?,Resource Management and Tags,User Guide", + "title":"How Can I Create and Delete Tags and Search for ECSs by Tag?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0208809316.html", + "product_code":"ecs", + "code":"254", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Resource Monitoring", + "title":"Resource Monitoring", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167429328.html", + "product_code":"ecs", + "code":"255", + "des":"If your Windows ECS runs slowly or is inaccessible unexpectedly, the bandwidth or vCPU usage of the ECS may be excessively high. If you have created an alarm rule using C", + "doc_type":"usermanual", + "kw":"Why Is My Windows ECS Running Slowly?,Resource Monitoring,User Guide", + "title":"Why Is My Windows ECS Running Slowly?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0167429329.html", + "product_code":"ecs", + "code":"256", + "des":"If your Linux ECS runs slowly or is inaccessible unexpectedly, the bandwidth or vCPU usage of the ECS may be excessively high. If you have created an alarm rule using Clo", + "doc_type":"usermanual", + "kw":"Why Is My Linux ECS Running Slowly?,Resource Monitoring,User Guide", + "title":"Why Is My Linux ECS Running Slowly?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018124789.html", + "product_code":"ecs", + "code":"257", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Database Applications", + "title":"Database Applications", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078507.html", + "product_code":"ecs", + "code":"258", + "des":"Yes. There is no limitation on this operation. You can deploy a database of any type on an ECS.", + "doc_type":"usermanual", + "kw":"Can a Database Be Deployed on an ECS?,Database Applications,User Guide", + "title":"Can a Database Be Deployed on an ECS?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018078509.html", + "product_code":"ecs", + "code":"259", + "des":"Yes. You are advised to perform a performance test beforehand to ensure that the Oracle database can meet your requirements.", + "doc_type":"usermanual", + "kw":"Does an ECS Support Oracle Databases?,Database Applications,User Guide", + "title":"Does an ECS Support Oracle Databases?", + "githuburl":"" + }, + { + "uri":"en-us_topic_0041169567.html", + "product_code":"ecs", + "code":"260", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Change History,User Guide", + "title":"Change History", + "githuburl":"" + }, + { + "uri":"en-us_topic_0047898078.html", + "product_code":"ecs", + "code":"261", + "des":"For details about the terms involved in this document, see Glossary.", + "doc_type":"usermanual", + "kw":"Glossary,User Guide", + "title":"Glossary", + "githuburl":"" + } +] \ No newline at end of file diff --git a/ecs/umn/CLASS.TXT.json b/ecs/umn/CLASS.TXT.json new file mode 100644 index 000000000..396ea92c8 --- /dev/null +++ b/ecs/umn/CLASS.TXT.json @@ -0,0 +1,2351 @@ +[ + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Service Overview", + "uri":"en-us_topic_0092494580.html", + "doc_type":"usermanual", + "p_code":"", + "code":"1" + }, + { + "desc":"An Elastic Cloud Server (ECS) is a basic computing unit that consists of vCPUs, memory, OS, and Elastic Volume Service (EVS) disks. After an ECS is created, you can use i", + "product_code":"ecs", + "title":"What Is ECS?", + "uri":"en-us_topic_0013771112.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"2" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Instances", + "uri":"en-us_topic_0271001300.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"3" + }, + { + "desc":"An ECS is a basic computing unit that consists of vCPUs, memory, OS, and EVS disks.After creating an ECS, you can use it like using your local computer or physical server", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0092435779.html", + "doc_type":"usermanual", + "p_code":"3", + "code":"4" + }, + { + "desc":"The ECS lifecycle refers to the entire journey an ECS goes through, from creation to deletion (or release).", + "product_code":"ecs", + "title":"ECS Lifecycle", + "uri":"en-us_topic_0140323150.html", + "doc_type":"usermanual", + "p_code":"3", + "code":"5" + }, + { + "desc":"The public cloud provides the following ECS types for different application scenarios:General-purposeDedicated general-purposeMemory-optimizedLarge-memoryDisk-intensiveHi", + "product_code":"ecs", + "title":"ECS Types", + "uri":"en-us_topic_0035470096.html", + "doc_type":"usermanual", + "p_code":"3", + "code":"6" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Specifications and Types", + "uri":"en-us_topic_0132345719.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"7" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Specifications", + "uri":"en-us_topic_0177512565.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"8" + }, + { + "desc":"General-purpose ECSs provide a balance of computing, memory, and network resources and a baseline level of vCPU performance with the ability to burst above the baseline. ", + "product_code":"ecs", + "title":"General-Purpose ECSs", + "uri":"en-us_topic_0035470101.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"9" + }, + { + "desc":"C4 ECSs use second-generation Intel® Xeon® Scalable processors with technologies optimized and high-speed intelligent NICs to offer powerful and stable computing performa", + "product_code":"ecs", + "title":"Dedicated General-Purpose ECSs", + "uri":"en-us_topic_0091224748.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"10" + }, + { + "desc":"M4 ECSs use second-generation Intel® Xeon® Scalable processors with technologies optimized to offer powerful and stable computing performance. Using 25GE high-speed intel", + "product_code":"ecs", + "title":"Memory-optimized ECSs", + "uri":"en-us_topic_0035550301.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"11" + }, + { + "desc":"Large-memory ECSs provide an even larger amount of memory than memory-optimized ECSs. They are used for applications that require a large amount of memory, rapid data swi", + "product_code":"ecs", + "title":"Large-Memory ECSs", + "uri":"en-us_topic_0038024694.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"12" + }, + { + "desc":"D2 ECSs are developed based on KVM virtualization. They use local storage and provide high storage performance and intranet bandwidth for distributed Hadoop computing, la", + "product_code":"ecs", + "title":"Disk-intensive ECSs", + "uri":"en-us_topic_0035470099.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"13" + }, + { + "desc":"H2 ECSs are designed to meet high-end computational needs, such as molecular modeling and computational fluid dynamics. In addition to the substantial CPU power, the H2 E", + "product_code":"ecs", + "title":"High-Performance Computing ECSs", + "uri":"en-us_topic_0035470100.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"14" + }, + { + "desc":"GPU-accelerated ECSs provide outstanding floating-point computing capabilities. They are suitable for applications that require real-time, highly concurrent massive compu", + "product_code":"ecs", + "title":"GPU-accelerated ECSs", + "uri":"en-us_topic_0097289624.html", + "doc_type":"usermanual", + "p_code":"7", + "code":"15" + }, + { + "desc":"An image is an ECS template that contains an OS and may also contain proprietary software and application software, such as database software. You can use images to creat", + "product_code":"ecs", + "title":"Images", + "uri":"en-us_topic_0030828254.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"16" + }, + { + "desc":"Elastic Volume Service (EVS) offers scalable block storage for ECSs. With high reliability, high performance, and rich specifications, EVS disks can be used for distribut", + "product_code":"ecs", + "title":"EVS Disks", + "uri":"en-us_topic_0030828256.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"17" + }, + { + "desc":"Cloud Backup and Recovery (CBR) enables you to back up cloud servers and disks with ease. In case of a virus attack, accidental deletion, or software or hardware fault, y", + "product_code":"ecs", + "title":"CBR", + "uri":"en-us_topic_0000001174675379.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"18" + }, + { + "desc":"Virtual Private Cloud (VPC) allows you to create customized virtual networks in your logically isolated AZ. Such networks are dedicated zones that are logically isolated,", + "product_code":"ecs", + "title":"Network", + "uri":"en-us_topic_0030828257.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"19" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Security", + "uri":"en-us_topic_0092435778.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"20" + }, + { + "desc":"User encryption allows you to use the encryption feature provided on the public cloud platform to encrypt ECS resources, improving data security. User encryption includes", + "product_code":"ecs", + "title":"User Encryption", + "uri":"en-us_topic_0046912051.html", + "doc_type":"usermanual", + "p_code":"20", + "code":"21" + }, + { + "desc":"Cloud-Init is an open-source cloud initialization program, which initializes some of the customized configurations of a newly created ECS, such as the hostname, key pair,", + "product_code":"ecs", + "title":"Cloud-Init", + "uri":"en-us_topic_0048642616.html", + "doc_type":"usermanual", + "p_code":"20", + "code":"22" + }, + { + "desc":"You can use the license provided by the public cloud platform. After creating an ECS with a license authorized, you can use the authorized OS. The platform manages licens", + "product_code":"ecs", + "title":"License Type", + "uri":"en-us_topic_0046566932.html", + "doc_type":"usermanual", + "p_code":"20", + "code":"23" + }, + { + "desc":"A project groups and isolates OpenStack computing, storage, and network resources. A project can be a department or a team.Multiple projects can be created for one accoun", + "product_code":"ecs", + "title":"Project", + "uri":"en-us_topic_0070518971.html", + "doc_type":"usermanual", + "p_code":"20", + "code":"24" + }, + { + "desc":"Two types of permissions are provided by default: user management and resource management.User management refers to the management of users, user groups, and user group r", + "product_code":"ecs", + "title":"User Permissions", + "uri":"en-us_topic_0054121392.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"25" + }, + { + "desc":"A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.A region is a physical data center, which", + "product_code":"ecs", + "title":"Region and AZ", + "uri":"en-us_topic_0186645877.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"26" + }, + { + "desc":"Figure 1 shows the relationships between ECS and other services.Relationships between ECS and other servicesAuto Scaling (AS)Automatically adjusts ECS resources based on ", + "product_code":"ecs", + "title":"ECS and Other Services", + "uri":"en-us_topic_0013771111.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"27" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Getting Started", + "uri":"en-us_topic_0013771105.html", + "doc_type":"usermanual", + "p_code":"", + "code":"28" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Creating an ECS", + "uri":"en-us_topic_0021831611.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"29" + }, + { + "desc":"ECSs are more cost-effective than physical servers. Within minutes, you can obtain ECS resources from the public cloud. ECS resources are flexible and on-demand. This sec", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0163572588.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"30" + }, + { + "desc":"Log in to the management console.Click in the upper left corner and select your region and project.Under Computing, click Elastic Cloud Server.Click Create ECS.The page ", + "product_code":"ecs", + "title":"Step 1: Configure Basic Settings", + "uri":"en-us_topic_0163572589.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"31" + }, + { + "desc":"Set Network by selecting an available VPC and subnet from the drop-down list and specifying a private IP address assignment mode.VPC provides a dedicated network for your", + "product_code":"ecs", + "title":"Step 2: Configure Network", + "uri":"en-us_topic_0163572590.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"32" + }, + { + "desc":"Set ECS Name.The name can be customized but can contain only letters, digits, underscores (_), hyphens (-), and periods (.).If you want to create multiple ECSs at a time,", + "product_code":"ecs", + "title":"Step 3: Configure Advanced Settings", + "uri":"en-us_topic_0163572591.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"33" + }, + { + "desc":"On the Confirm page, view details about the ECS configuration.To learn more about the price, click Pricing details.To learn more about the price, click Pricing details.Se", + "product_code":"ecs", + "title":"Step 4: Confirm", + "uri":"en-us_topic_0163572592.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"34" + }, + { + "desc":"You can log in to a Windows ECS using either VNC or MSTSC provided on the management console.Obtain the password.Use the password obtaining function provided by the manag", + "product_code":"ecs", + "title":"Logging In to an ECS", + "uri":"en-us_topic_0092494193.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"35" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Initializing EVS Data Disks", + "uri":"en-us_topic_0030831989.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"36" + }, + { + "desc":"If you have added a data disk during ECS creation, you must initialize the data disk after logging in to the ECS.After a disk is attached to a server, you need to log in ", + "product_code":"ecs", + "title":"Scenarios and Disk Partitions", + "uri":"en-us_topic_0030831623.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"37" + }, + { + "desc":"This section uses Windows Server 2008 R2 Enterprise 64bit to describe how to initialize a data disk attached to a server running Windows.The maximum disk capacity support", + "product_code":"ecs", + "title":"Initializing a Windows Data Disk (Windows Server 2008)", + "uri":"en-us_topic_0085634796.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"38" + }, + { + "desc":"This section uses Windows Server 2016 Standard 64bit to describe how to initialize a data disk attached to a server running Windows.The maximum disk capacity supported by", + "product_code":"ecs", + "title":"Initializing a Windows Data Disk (Windows Server 2016)", + "uri":"en-us_topic_0117490178.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"39" + }, + { + "desc":"This section uses CentOS 7.4 64bit to describe how to initialize a data disk attached to a server running Linux and use fdisk to partition the data disk.The maximum disk ", + "product_code":"ecs", + "title":"Initializing a Linux Data Disk (fdisk)", + "uri":"en-us_topic_0085634797.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"40" + }, + { + "desc":"This section uses CentOS 7.4 64bit to describe how to initialize a data disk attached to a server running Linux and use parted to partition the data disk.The maximum disk", + "product_code":"ecs", + "title":"Initializing a Linux Data Disk (parted)", + "uri":"en-us_topic_0085634798.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"41" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Instances", + "uri":"en-us_topic_0013771097.html", + "doc_type":"usermanual", + "p_code":"", + "code":"42" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Viewing ECS Information", + "uri":"en-us_topic_0030893661.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"43" + }, + { + "desc":"After submitting the request for creating an ECS, you can view the creation status. This section describes how to view the creation status of an ECS.Log in to the managem", + "product_code":"ecs", + "title":"Viewing ECS Creation Statuses", + "uri":"en-us_topic_0039588795.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"44" + }, + { + "desc":"The Failures area shows the tasks that failed to process due to an error, including the task name and status. Failures is displayed on the management console if a task fa", + "product_code":"ecs", + "title":"Viewing Failures", + "uri":"en-us_topic_0108255889.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"45" + }, + { + "desc":"After obtaining ECSs, you can view and manage them on the management console. This section describes how to view detailed ECS configurations, including its name, image, s", + "product_code":"ecs", + "title":"Viewing Details About an ECS", + "uri":"en-us_topic_0017130261.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"46" + }, + { + "desc":"The information of all ECSs under your account can be exported in CSV format to a local directory. The file records the IDs, private IP addresses, and EIPs of your ECSs.L", + "product_code":"ecs", + "title":"Exporting ECS Information", + "uri":"en-us_topic_0060610074.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"47" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Logging In to a Windows ECS", + "uri":"en-us_topic_0030888079.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"48" + }, + { + "desc":"Only a running ECS can be logged in.Login usernames, passwords, and constraints vary depending on OSs running on the ECSs created using a public image. For details, see P", + "product_code":"ecs", + "title":"Login Overview", + "uri":"en-us_topic_0092494943.html", + "doc_type":"usermanual", + "p_code":"48", + "code":"49" + }, + { + "desc":"This section describes how to use VNC provided on the management console to log in to an ECS. This function applies to emergency O&M. In other scenarios, you are advised ", + "product_code":"ecs", + "title":"Login Using VNC", + "uri":"en-us_topic_0027268511.html", + "doc_type":"usermanual", + "p_code":"48", + "code":"50" + }, + { + "desc":"This section describes how to use the remote login tool MSTSC to log in to a Windows ECS from a local computer.The target ECS is running.You have obtained the password fo", + "product_code":"ecs", + "title":"Login Using MSTSC", + "uri":"en-us_topic_0017955381.html", + "doc_type":"usermanual", + "p_code":"48", + "code":"51" + }, + { + "desc":"This section describes how to log in to a Windows ECS from a Linux computer.The target ECS is running.You have bound an EIP to the ECS.Access to port 3389 is allowed in t", + "product_code":"ecs", + "title":"Logging In to a Windows ECS from a Linux Computer", + "uri":"en-us_topic_0275383051.html", + "doc_type":"usermanual", + "p_code":"48", + "code":"52" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Logging In to a Linux ECS", + "uri":"en-us_topic_0030831990.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"53" + }, + { + "desc":"Only a running ECS can be logged in.For ECSs created using public images, login usernames, passwords, and constraints vary depending on OSs running on the ECSs. For detai", + "product_code":"ecs", + "title":"Login Overview", + "uri":"en-us_topic_0013771089.html", + "doc_type":"usermanual", + "p_code":"53", + "code":"54" + }, + { + "desc":"This section describes how to use VNC provided on the management console to log in to an ECS. This function applies to emergency O&M. In other scenarios, you are advised ", + "product_code":"ecs", + "title":"Login Using VNC", + "uri":"en-us_topic_0093263550.html", + "doc_type":"usermanual", + "p_code":"53", + "code":"55" + }, + { + "desc":"This section describes how to remotely log in to a Linux ECS using an SSH key pair from Windows and Linux, respectively.You have obtained the private key file used during", + "product_code":"ecs", + "title":"Login Using an SSH Key", + "uri":"en-us_topic_0017955380.html", + "doc_type":"usermanual", + "p_code":"53", + "code":"56" + }, + { + "desc":"This section describes how to remotely log in to a Linux ECS using an SSH password from Windows and Linux, respectively.Logging in to a Linux ECS using SSH password authe", + "product_code":"ecs", + "title":"Login Using an SSH Password", + "uri":"en-us_topic_0017955633.html", + "doc_type":"usermanual", + "p_code":"53", + "code":"57" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Managing ECSs", + "uri":"en-us_topic_0176502615.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"58" + }, + { + "desc":"The name of a created ECS can be changed to meet your service requirements.Multiple ECS names can be changed in a batch. After the change, the ECS names are the same.Log ", + "product_code":"ecs", + "title":"Changing an ECS Name", + "uri":"en-us_topic_0142266317.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"59" + }, + { + "desc":"If the OS of an ECS fails to start or requires optimization, reinstall the OS.After the OS is reinstalled, the IP and MAC addresses of the ECS remain unchanged.Reinstalli", + "product_code":"ecs", + "title":"Reinstalling the OS", + "uri":"en-us_topic_0024911405.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"60" + }, + { + "desc":"Changing an ECS OS will change the system disk attached to the ECS. After the changing, the system disk ID of the ECS will be changed, and the original system disk will b", + "product_code":"ecs", + "title":"Changing the OS", + "uri":"en-us_topic_0031523135.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"61" + }, + { + "desc":"An ECS group allows you to create ECSs on different physical servers, thereby improving service reliability. This function does not apply to existing ECSs. You cannot add", + "product_code":"ecs", + "title":"Managing ECS Groups", + "uri":"en-us_topic_0032980085.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"62" + }, + { + "desc":"The default time zone for an ECS is the one you selected when creating the image that was used to create the ECS. This section describes how to change the time zone for a", + "product_code":"ecs", + "title":"Changing the Time Zone for an ECS", + "uri":"en-us_topic_0040630518.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"63" + }, + { + "desc":"When an ECS cannot start or run properly, you can download and view ECS console logs for troubleshooting, for example, checking whether the kernel and service configurati", + "product_code":"ecs", + "title":"Obtaining ECS Console Logs", + "uri":"en-us_topic_0057711189.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"64" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Modifying ECS vCPU and Memory Specifications", + "uri":"en-us_topic_0030828258.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"65" + }, + { + "desc":"If ECS specifications do not meet service requirements, you can modify the ECS specifications, including vCPUs and memory. Certain ECSs allow you to change their types wh", + "product_code":"ecs", + "title":"General Operations for Modifying Specifications", + "uri":"en-us_topic_0013771092.html", + "doc_type":"usermanual", + "p_code":"65", + "code":"66" + }, + { + "desc":"ECSs can be migrated between DeHs and public resource pools.An ECS created on a DeH can be migrated to another DeH.An ECS created on a DeH can be migrated to a public res", + "product_code":"ecs", + "title":"Migrating an ECS", + "uri":"en-us_topic_0133365988.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"67" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Obtaining Metadata and Passing User Data", + "uri":"en-us_topic_0140313879.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"68" + }, + { + "desc":"ECS metadata includes basic information of an ECS on the cloud platform, such as the ECS ID, hostname, and network information. ECS metadata can be obtained using either ", + "product_code":"ecs", + "title":"Obtaining Metadata", + "uri":"en-us_topic_0042400609.html", + "doc_type":"usermanual", + "p_code":"68", + "code":"69" + }, + { + "desc":"Use the User Data function to pass user data to ECSs to:Simplify ECS configuration.Initialize the ECS OS configuration.Upload your scripts to ECSs during ECS creation.Per", + "product_code":"ecs", + "title":"Passing User Data to ECSs", + "uri":"en-us_topic_0032380449.html", + "doc_type":"usermanual", + "p_code":"68", + "code":"70" + }, + { + "desc":"ECSs in the same VPC can communicate with each other using hostnames. In such a case, you are required to configure the mapping between hostnames and IP addresses. The co", + "product_code":"ecs", + "title":"(Optional) Configuring Mapping Between Hostnames and IP Addresses", + "uri":"en-us_topic_0074752335.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"71" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"(Optional) Installing a Driver and Toolkit", + "uri":"en-us_topic_0133513874.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"72" + }, + { + "desc":"Before using a GPU-accelerated ECS, make sure that a GPU driver has been installed on the ECS for GPU acceleration.GPU-accelerated ECSs support GRID and Tesla drivers.To ", + "product_code":"ecs", + "title":"GPU Driver", + "uri":"en-us_topic_0234802636.html", + "doc_type":"usermanual", + "p_code":"72", + "code":"73" + }, + { + "desc":"To use graphics acceleration, such as OpenGL, DirectX, or Vulkan, install a GRID driver and separately purchase and configure a GRID license. The GRID driver with a vDWS ", + "product_code":"ecs", + "title":"Installing a GRID Driver on a GPU-accelerated ECS", + "uri":"en-us_topic_0149610914.html", + "doc_type":"usermanual", + "p_code":"72", + "code":"74" + }, + { + "desc":"Before using a GPU-accelerated ECS, make sure that the desired Tesla driver and CUDA toolkit have been installed on the EIP. Otherwise, computing acceleration will not ta", + "product_code":"ecs", + "title":"Obtaining a Tesla Driver and CUDA Toolkit", + "uri":"en-us_topic_0213874991.html", + "doc_type":"usermanual", + "p_code":"72", + "code":"75" + }, + { + "desc":"Before using a GPU-accelerated ECS, make sure that the desired Tesla driver and CUDA toolkit have been installed on the ECS for computing acceleration.A computing-acceler", + "product_code":"ecs", + "title":"Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS", + "uri":"en-us_topic_0149470468.html", + "doc_type":"usermanual", + "p_code":"72", + "code":"76" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Images", + "uri":"en-us_topic_0177457774.html", + "doc_type":"usermanual", + "p_code":"", + "code":"77" + }, + { + "desc":"An image is an ECS or BMS template that contains an OS or service data and may also contain proprietary software and application software, such as database software. Imag", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0177457773.html", + "doc_type":"usermanual", + "p_code":"77", + "code":"78" + }, + { + "desc":"You can use an existing ECS to create a system disk image, data disk image, and full-ECS image.System disk image: contains an OS and application software for running serv", + "product_code":"ecs", + "title":"Creating an Image", + "uri":"en-us_topic_0101604508.html", + "doc_type":"usermanual", + "p_code":"77", + "code":"79" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"EVS Disks", + "uri":"en-us_topic_0092499770.html", + "doc_type":"usermanual", + "p_code":"", + "code":"80" + }, + { + "desc":"If the existing disks of an ECS fail to meet service requirements, for example, due to insufficient disk space or poor disk performance, you can attach more available EVS", + "product_code":"ecs", + "title":"Attaching an EVS Disk to an ECS", + "uri":"en-us_topic_0096293655.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"81" + }, + { + "desc":"An EVS disk attached to an ECS can function as a system disk or data disk.EVS disks mounted to /dev/sda or /dev/vda function as system disks. You can only detach system d", + "product_code":"ecs", + "title":"Detaching an EVS Disk from a Running ECS", + "uri":"en-us_topic_0036046828.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"82" + }, + { + "desc":"When your disk capacity is insufficient, you can handle the insufficiency by expanding the disk capacity.The capacity of an EVS disk can be expanded in either of the foll", + "product_code":"ecs", + "title":"Expanding the Capacity of an EVS Disk", + "uri":"en-us_topic_0093492522.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"83" + }, + { + "desc":"Disk-intensive ECSs can use both local disks and EVS disks to store data. Local disks are generally used to store service data and feature higher throughput than EVS disk", + "product_code":"ecs", + "title":"Expanding the Local Disks of a Disk-intensive ECS", + "uri":"en-us_topic_0037470901.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"84" + }, + { + "desc":"Disk functions have been upgraded on the platform. Newly created ECSs can have up to 60 attached disks. However, an existing ECS can still have a maximum of 24 attached d", + "product_code":"ecs", + "title":"Enabling Advanced Disk", + "uri":"en-us_topic_0122307169.html", + "doc_type":"usermanual", + "p_code":"80", + "code":"85" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"CBR", + "uri":"en-us_topic_0096304614.html", + "doc_type":"usermanual", + "p_code":"", + "code":"86" + }, + { + "desc":"Cloud Backup and Recovery (CBR) enables you to back up cloud servers and disks with ease. In case of a virus attack, accidental deletion, or software or hardware fault, y", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0000001128445638.html", + "doc_type":"usermanual", + "p_code":"86", + "code":"87" + }, + { + "desc":"CBR enhances data integrity and service continuity. For example, if an ECS or a EVS disk is faulty or a misoperation causes data loss, you can use data backups to quickly", + "product_code":"ecs", + "title":"Backing Up ECS Data", + "uri":"en-us_topic_0000001128604648.html", + "doc_type":"usermanual", + "p_code":"86", + "code":"88" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Passwords and Key Pairs", + "uri":"en-us_topic_0140313881.html", + "doc_type":"usermanual", + "p_code":"", + "code":"89" + }, + { + "desc":"This section describes how to change the password for logging in to an ECS when the password is about to expire, the password is forgotten, or you are logging in to the E", + "product_code":"ecs", + "title":"Changing the Login Password on an ECS", + "uri":"en-us_topic_0122627689.html", + "doc_type":"usermanual", + "p_code":"89", + "code":"90" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Resetting a Login Password", + "uri":"en-us_topic_0031073513.html", + "doc_type":"usermanual", + "p_code":"89", + "code":"91" + }, + { + "desc":"You can reset your ECS password if:The password is forgotten.The password has expired.The method described in this section can only be used to change the password of a lo", + "product_code":"ecs", + "title":"Resetting the Password for Logging In to a Windows ECS", + "uri":"en-us_topic_0021426802.html", + "doc_type":"usermanual", + "p_code":"91", + "code":"92" + }, + { + "desc":"Keep your password secure. Reset the password if:The password is forgotten.The password has expired.This section describes how to reset the password of user root. After r", + "product_code":"ecs", + "title":"Resetting the Password for Logging In to a Linux ECS", + "uri":"en-us_topic_0021427650.html", + "doc_type":"usermanual", + "p_code":"91", + "code":"93" + }, + { + "desc":"A key pair that consists of a public key and a private key is required for authentication when you log in to an ECS. Both the public and private keys are used for authent", + "product_code":"ecs", + "title":"Creating a Key Pair", + "uri":"en-us_topic_0014250631.html", + "doc_type":"usermanual", + "p_code":"89", + "code":"94" + }, + { + "desc":"Password authentication is required to log in to a Windows ECS. Therefore, you must use the key file used when you created the ECS to obtain the administrator password ge", + "product_code":"ecs", + "title":"Obtaining the Password for Logging In to a Windows ECS", + "uri":"en-us_topic_0031107266.html", + "doc_type":"usermanual", + "p_code":"89", + "code":"95" + }, + { + "desc":"After you obtain the initial password, it is a good practice to delete it to ensure system security.Deleting the initial password does not affect ECS operation or login. ", + "product_code":"ecs", + "title":"Deleting the Initial Password for Logging In to a Windows ECS", + "uri":"en-us_topic_0031107267.html", + "doc_type":"usermanual", + "p_code":"89", + "code":"96" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"NICs", + "uri":"en-us_topic_0092497777.html", + "doc_type":"usermanual", + "p_code":"", + "code":"97" + }, + { + "desc":"If multiple NICs are required by your ECS, you can add them to your ECS. To add a NIC to the ECS, perform the following operations:Log in to the management console.Click ", + "product_code":"ecs", + "title":"Adding a NIC", + "uri":"en-us_topic_0093492518.html", + "doc_type":"usermanual", + "p_code":"97", + "code":"98" + }, + { + "desc":"An ECS can have up to 12 NICs, including one primary NIC that cannot be deleted and extension NICs. This section describes how to delete an extension NIC.Log in to the ma", + "product_code":"ecs", + "title":"Deleting a NIC", + "uri":"en-us_topic_0093492519.html", + "doc_type":"usermanual", + "p_code":"97", + "code":"99" + }, + { + "desc":"You can modify the private IP address of the primary NIC. If you want to modify the private IP address of an extension NIC, delete the NIC and attach a new NIC.The ECS mu", + "product_code":"ecs", + "title":"Modifying a Private IP Address", + "uri":"en-us_topic_0133339807.html", + "doc_type":"usermanual", + "p_code":"97", + "code":"100" + }, + { + "desc":"A virtual IP address provides the second IP address for one or more ECS NICs, improving high availability between the ECSs.One NIC can be bound with up to 10 virtual IP a", + "product_code":"ecs", + "title":"Managing Virtual IP Addresses", + "uri":"en-us_topic_0093492520.html", + "doc_type":"usermanual", + "p_code":"97", + "code":"101" + }, + { + "desc":"Single-core CPU performance cannot meet the requirement of processing NIC interruptions incurred with the increase of network I/O bandwidth. NIC multi-queue enables multi", + "product_code":"ecs", + "title":"Enabling NIC Multi-Queue", + "uri":"en-us_topic_0058758453.html", + "doc_type":"usermanual", + "p_code":"97", + "code":"102" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Security", + "uri":"en-us_topic_0092499769.html", + "doc_type":"usermanual", + "p_code":"", + "code":"103" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Security Groups", + "uri":"en-us_topic_0140323151.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"104" + }, + { + "desc":"A security group is a collection of access control rules for ECSs that have the same security protection requirements and that are mutually trusted. After a security grou", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0140323157.html", + "doc_type":"usermanual", + "p_code":"104", + "code":"105" + }, + { + "desc":"Your account automatically comes with a default security group. The default security group allows all outbound traffic, denies all inbound traffic, and allows all traffic", + "product_code":"ecs", + "title":"Default Security Group and Rules", + "uri":"en-us_topic_0140323154.html", + "doc_type":"usermanual", + "p_code":"104", + "code":"106" + }, + { + "desc":"Common security group configuration examples are as follows: The following examples allow all outgoing data packets by default and only describe how to configure the inbo", + "product_code":"ecs", + "title":"Security Group Configuration Examples", + "uri":"en-us_topic_0140323152.html", + "doc_type":"usermanual", + "p_code":"104", + "code":"107" + }, + { + "desc":"Similar to firewall, a security group is a logical group used to control network access. You can define access rules for a security group to protect the ECSs that are add", + "product_code":"ecs", + "title":"Configuring Security Group Rules", + "uri":"en-us_topic_0030878383.html", + "doc_type":"usermanual", + "p_code":"104", + "code":"108" + }, + { + "desc":"To change the security group of an ECS NIC, perform the operations described in this section.Log in to the management console.Click in the upper left corner and select y", + "product_code":"ecs", + "title":"Changing a Security Group", + "uri":"en-us_topic_0093492517.html", + "doc_type":"usermanual", + "p_code":"104", + "code":"109" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"EIPs", + "uri":"en-us_topic_0140313883.html", + "doc_type":"usermanual", + "p_code":"", + "code":"110" + }, + { + "desc":"You can assign an EIP and bind it to an ECS to enable the ECS to access the Internet.Log in to the management console.Click in the upper left corner and select your regi", + "product_code":"ecs", + "title":"Binding an EIP", + "uri":"en-us_topic_0174917535.html", + "doc_type":"usermanual", + "p_code":"110", + "code":"111" + }, + { + "desc":"If an EIP has been bound to the ECS, the ECS can access the Internet using the bandwidth associated with the EIP. This section describes how to adjust the bandwidth of an", + "product_code":"ecs", + "title":"Changing an EIP Bandwidth", + "uri":"en-us_topic_0093492521.html", + "doc_type":"usermanual", + "p_code":"110", + "code":"112" + }, + { + "desc":"To ensure platform security and conserve EIPs, EIPs are assigned only to specified ECSs. ECSs without EIPs cannot access the Internet directly. If these ECSs need to acce", + "product_code":"ecs", + "title":"Enabling Internet Connectivity for an ECS Without an EIP", + "uri":"en-us_topic_0027157850.html", + "doc_type":"usermanual", + "p_code":"110", + "code":"113" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Resources and Tags", + "uri":"en-us_topic_0183016706.html", + "doc_type":"usermanual", + "p_code":"", + "code":"114" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Tag Management", + "uri":"en-us_topic_0183019668.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"115" + }, + { + "desc":"A tag identifies an ECS. Adding tags to an ECS facilitates ECS identification and management.You can add a tag to an ECS during the ECS creation or after the ECS creation", + "product_code":"ecs", + "title":"Overview", + "uri":"en-us_topic_0092499768.html", + "doc_type":"usermanual", + "p_code":"115", + "code":"116" + }, + { + "desc":"Tags are used to identify cloud resources, such as ECSs, images, and disks. If you have multiple types of cloud resources which are associated with each other, you can ad", + "product_code":"ecs", + "title":"Adding Tags", + "uri":"en-us_topic_0183019669.html", + "doc_type":"usermanual", + "p_code":"115", + "code":"117" + }, + { + "desc":"After tags are added to resources, you can search for resources by tag using either of the following methods.On the Elastic Cloud Server page, search for ECSs by tag key ", + "product_code":"ecs", + "title":"Searching for Resources by Tag", + "uri":"en-us_topic_0183019670.html", + "doc_type":"usermanual", + "p_code":"115", + "code":"118" + }, + { + "desc":"If you no longer need a tag, delete it in any of the following ways:Deleting a Tag on the Page Providing Details About an ECSDeleting a Tag on the TMS ConsoleBatch Deleti", + "product_code":"ecs", + "title":"Deleting a Tag", + "uri":"en-us_topic_0183019671.html", + "doc_type":"usermanual", + "p_code":"115", + "code":"119" + }, + { + "desc":"Quotas can limit the number or amount of resources available to users, such as the maximum number of ECSs or EVS disks that can be created.If the existing resource quota ", + "product_code":"ecs", + "title":"Quota Adjustment", + "uri":"en-us_topic_0000001210881033.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"120" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Monitoring", + "uri":"en-us_topic_0072987316.html", + "doc_type":"usermanual", + "p_code":"", + "code":"121" + }, + { + "desc":"Monitoring is key for ensuring ECS performance, reliability, and availability. Using monitored data, you can determine ECS resource utilization. The public cloud provides", + "product_code":"ecs", + "title":"Monitoring ECSs", + "uri":"en-us_topic_0027371529.html", + "doc_type":"usermanual", + "p_code":"121", + "code":"122" + }, + { + "desc":"This section describes monitoring metrics reported by ECS to Cloud Eye. You can use Cloud Eye to view these metrics and alarms generated for ECSs.SYS.ECSECS metrics vary ", + "product_code":"ecs", + "title":"Basic ECS Metrics", + "uri":"en-us_topic_0030911465.html", + "doc_type":"usermanual", + "p_code":"121", + "code":"123" + }, + { + "desc":"Setting ECS alarm rules allows you to customize the monitored objects and notification policies so that you can closely monitor your ECSs.This section describes how to se", + "product_code":"ecs", + "title":"Setting Alarm Rules", + "uri":"en-us_topic_0027371531.html", + "doc_type":"usermanual", + "p_code":"121", + "code":"124" + }, + { + "desc":"The public cloud platform provides Cloud Eye, which monitors the running statuses of your ECSs. You can obtain the monitoring metrics of each ECS on the management consol", + "product_code":"ecs", + "title":"Viewing ECS Metrics", + "uri":"en-us_topic_0027371530.html", + "doc_type":"usermanual", + "p_code":"121", + "code":"125" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"CTS", + "uri":"en-us_topic_0116266206.html", + "doc_type":"usermanual", + "p_code":"", + "code":"126" + }, + { + "desc":"CTS starts to record ECS operations after it is provisioned. You can view the operation records of the last seven days on the management console.This section describes ho", + "product_code":"ecs", + "title":"Viewing Tracing Logs", + "uri":"en-us_topic_0116266207.html", + "doc_type":"usermanual", + "p_code":"126", + "code":"127" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Troubleshooting", + "uri":"en-us_topic_0096170524.html", + "doc_type":"usermanual", + "p_code":"", + "code":"128" + }, + { + "desc":"When you run the sudo command to switch to user root on an Ubuntu or Debian ECS, the system prompts connection timeout.Log in to the ECS.Run the following command to edit", + "product_code":"ecs", + "title":"What Can I Do If Switching from a Non-root User to User root Times Out?", + "uri":"en-us_topic_0094801708.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"129" + }, + { + "desc":"When installing the Python library software, you need to configure the PIP source. Take the official image source as an example:[root@test home]# cat /root/.pip/pip.conf ", + "product_code":"ecs", + "title":"What Should I Do If Error \"command ´gcc´ failed with exit status 1\" Occurs During PIP-based Software Installation", + "uri":"en-us_topic_0107412162.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"130" + }, + { + "desc":"When a user runs the wget command to download software packages, the download rate is far less than the bandwidth.The official PIP website is accessed using HTTPS. Each t", + "product_code":"ecs", + "title":"What Should I Do If Packages Are Downloaded Using PIP or wget at a Low Rate?", + "uri":"en-us_topic_0107490388.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"131" + }, + { + "desc":"If an ECS requires a long period of time to start, you can change the default timeout to speed up the startup.Log in to the ECS.Run the following command to switch to use", + "product_code":"ecs", + "title":"How Can I Handle Slow ECS Startup?", + "uri":"en-us_topic_0117006217.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"132" + }, + { + "desc":"This section describes how you can configure atop and kdump on Linux ECSs for performance analysis.The method for configuring atop varies with the OS version.atopIntroduc", + "product_code":"ecs", + "title":"How Do I Configure atop and kdump on Linux ECSs for Performance Analysis?", + "uri":"en-us_topic_0000001143214829.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"133" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"FAQs", + "uri":"en-us_topic_0013771101.html", + "doc_type":"usermanual", + "p_code":"", + "code":"134" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Overview", + "uri":"en-us_topic_0030930805.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"135" + }, + { + "desc":"Do not upgrade ECS kernel or OS versions. If you want to upgrade the main OS version, for example, from CentOS 7.2 to Cent OS 7.3, use the provided OS changing function.D", + "product_code":"ecs", + "title":"What Are the Precautions for Using ECSs?", + "uri":"en-us_topic_0013771102.html", + "doc_type":"usermanual", + "p_code":"135", + "code":"136" + }, + { + "desc":"You can use ECSs just like traditional physical servers. On an ECS, you can deploy any service application, such as an email system, web system, and Enterprise Resource P", + "product_code":"ecs", + "title":"What Can I Do with ECSs?", + "uri":"en-us_topic_0018073214.html", + "doc_type":"usermanual", + "p_code":"135", + "code":"137" + }, + { + "desc":"Yes.ECSs run on physical hosts. Although there are multiple mechanisms to ensure system reliability, fault tolerance, and high availability, host hardware might be damage", + "product_code":"ecs", + "title":"Can ECSs Automatically Recover After the Physical Host Accommodating the ECSs Becomes Faulty?", + "uri":"en-us_topic_0095020344.html", + "doc_type":"usermanual", + "p_code":"135", + "code":"138" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Creation and Deletion", + "uri":"en-us_topic_0018073208.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"139" + }, + { + "desc":"After you created an ECS bound with an EIP on the management console, the ECS creation was successful but binding the EIP failed due to insufficient EIPs. Although the Fa", + "product_code":"ecs", + "title":"Why Does the Failures Area Show an ECS Creation Failure But the ECS List Displays the Created ECS?", + "uri":"en-us_topic_0039524582.html", + "doc_type":"usermanual", + "p_code":"139", + "code":"140" + }, + { + "desc":"When you use a full-ECS image that was created using a CSBS backup to create ECSs, the process is time-consuming or the system displays a message indicating that the imag", + "product_code":"ecs", + "title":"Why Does It Take Longer to Create ECSs When I Use a Full-ECS Image?", + "uri":"en-us_topic_0102391480.html", + "doc_type":"usermanual", + "p_code":"139", + "code":"141" + }, + { + "desc":"Obtaining an ECS can take as little as a few minutes.The time it takes to obtain an ECS depends on ECS specifications, available resources (such as EVS disks and EIPs), a", + "product_code":"ecs", + "title":"How Quickly Can I Obtain an ECS?", + "uri":"en-us_topic_0018073212.html", + "doc_type":"usermanual", + "p_code":"139", + "code":"142" + }, + { + "desc":"After you click Delete, the selected ECS is deleted. You can also choose to delete the EVS disk and EIP of the ECS. If you do not delete them, they will be retained. If n", + "product_code":"ecs", + "title":"What Happens After I Click the Delete Button?", + "uri":"en-us_topic_0018073218.html", + "doc_type":"usermanual", + "p_code":"139", + "code":"143" + }, + { + "desc":"No. ECSs in the Deleted state cannot provide services and are soon removed from the system.A deleted ECS is retained in the ECS list on the management console only for a ", + "product_code":"ecs", + "title":"Can I Provision an ECS I Deleted?", + "uri":"en-us_topic_0018073221.html", + "doc_type":"usermanual", + "p_code":"139", + "code":"144" + }, + { + "desc":"Yes. If an ECS remains in the Restarting or Stopping state for over 30 minutes after it is restarted, you can forcibly restart or stop the ECS as follows:Log in to the ma", + "product_code":"ecs", + "title":"Can I Forcibly Restart or Stop an ECS?", + "uri":"en-us_topic_0029792884.html", + "doc_type":"usermanual", + "p_code":"139", + "code":"145" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Login and Connection", + "uri":"en-us_topic_0030930807.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"146" + }, + { + "desc":"During ECS login using VNC, changing the remote login keyboard language ensures only that characters entered in the VNC window for an ECS are correctly mapped. It does no", + "product_code":"ecs", + "title":"Why Are Characters Entered Through VNC Still Incorrect After the Keyboard Language Is Switched?", + "uri":"en-us_topic_0030932500.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"147" + }, + { + "desc":"Run the following command to change the OS keyboard language:loadkeyskeymapfilekeymapfile is the name of the file for the mapping between keys and displayed characters.Fo", + "product_code":"ecs", + "title":"What Should I Do If I Cannot Use the German Keyboard to Enter Characters When I Log In to a Linux ECS Using VNC?", + "uri":"en-us_topic_0030932496.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"148" + }, + { + "desc":"If you use the MAC keyboard to enter German characters on your computer running MAC OS, uppercase characters can be entered properly after Caps Lock is enabled. However, ", + "product_code":"ecs", + "title":"Why Cannot I Use the MAC Keyboard to Enter Lowercase Characters When I Log In to an ECS Using VNC?", + "uri":"en-us_topic_0047624368.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"149" + }, + { + "desc":"If your computer is running Windows 7 and you logged in to the ECS using Internet Explorer 10 or 11, click AltGr twice on the VNC page to activate the page.", + "product_code":"ecs", + "title":"What Should I Do If the Page Does not Respond After I Log In to an ECS Using VNC and Do Not Perform Any Operation for a Long Period of Time?", + "uri":"en-us_topic_0030932497.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"150" + }, + { + "desc":"After you log in to an ECS using VNC and view data, for example, play videos or run the cat command to view large files, VNC may become unavailable due to the high memory", + "product_code":"ecs", + "title":"What Should I Do If I Cannot View Data After Logging In to an ECS Using VNC?", + "uri":"en-us_topic_0030932499.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"151" + }, + { + "desc":"Another user has logged in to this ECS using VNC.Only one user can log in to an ECS using VNC at a time. If multiple users attempt to log in to an ECS at the same time, o", + "product_code":"ecs", + "title":"Why Does a Blank Screen Appear While the System Displays a Message Indicating Successful Authentication After I Attempted to Log In to an ECS Using VNC?", + "uri":"en-us_topic_0032850906.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"152" + }, + { + "desc":"This section describes how to change a port for remote logins.The following procedure uses an ECS running Windows Server 2012 as an example. The default login port of a W", + "product_code":"ecs", + "title":"How Can I Change a Remote Login Port?", + "uri":"en-us_topic_0244854543.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"153" + }, + { + "desc":"A private key cannot be used to obtain the password for logging in to a Windows ECS that is authenticated using a key pair.The password fails to inject using Cloudbase-In", + "product_code":"ecs", + "title":"Why Can't I Obtain the Password for Logging In to My Windows ECS Authenticated Using a Key Pair?", + "uri":"en-us_topic_0081525054.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"154" + }, + { + "desc":"When you use a browser to remotely log in to an ECS, ensure that the browser version meets the requirements listed in Table 1.", + "product_code":"ecs", + "title":"What Browser Version Is Required to Remotely Log In to an ECS?", + "uri":"en-us_topic_0035233718.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"155" + }, + { + "desc":"Two ECSs run the same OS, for example, both run Windows or Linux. The system disks attached to the two ECSs are exchanged offline. After the exchanging, the login keys of", + "product_code":"ecs", + "title":"How Can I Log In to an ECS After Its System Disk Is Exchanged with That Attached to Another ECS Running the Same OS?", + "uri":"en-us_topic_0100005619.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"156" + }, + { + "desc":"Password authentication is required to log in to a Windows ECS. Therefore, you require a key file to obtain the initial password for logging in to the ECS. However, after", + "product_code":"ecs", + "title":"Why Does the System Display a Message Indicating that the Password for Logging In to a Windows ECS Cannot Be Viewed?", + "uri":"en-us_topic_0031736846.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"157" + }, + { + "desc":"When a local computer running Windows attempts to access a Windows ECS using RDP (for example, MSTSC), an identity authentication failure occurs and the desired function ", + "product_code":"ecs", + "title":"Why Does an Authentication Failure Occurs After I Attempt to Remotely Log In to a Windows ECS?", + "uri":"en-us_topic_0018339851.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"158" + }, + { + "desc":"An error message is displayed indicating that your local computer cannot connect to the remote computer.Port 3389 of the security group on the ECS is disabled. For detail", + "product_code":"ecs", + "title":"Why Can't I Use the Local Computer to Connect to My Windows ECS?", + "uri":"en-us_topic_0264235939.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"159" + }, + { + "desc":"When you connect a remote desktop to a Windows ECS, the system prompts that you need to be granted the right to sign in through Remote Desktop Services.Open the cmd windo", + "product_code":"ecs", + "title":"How Can I Obtain the Permission to Remotely Log In to a Windows ECS?", + "uri":"en-us_topic_0264235940.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"160" + }, + { + "desc":"An error message is displayed indicating that there are no Remote Desktop License Servers available to provide a license and asks you to contact the administrator.You hav", + "product_code":"ecs", + "title":"Why Does the System Display No Remote Desktop License Servers Available to Provide a License When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235941.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"161" + }, + { + "desc":"When you log in to a Windows ECS, the system displays error code 0x112f.The ECS memory is insufficient.Method 1 (recommended)Modify the ECS specifications to increase the", + "product_code":"ecs", + "title":"Why Does the System Display Error Code 0x112f When I Log In to a Windows ECS?", + "uri":"en-us_topic_0120795668.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"162" + }, + { + "desc":"The system displays an error message indicating that a protocol error (code: 0x1104) is detected when you use MSTSC to access an ECS running Windows Server 2008.Port 3389", + "product_code":"ecs", + "title":"Why Does the System Display Error Code 0x1104 When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235942.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"163" + }, + { + "desc":"The system displays error 122.112... when you use RDC to locally access an ECS running Windows Server 2012. The ECS is frequently disconnected and the Windows login proce", + "product_code":"ecs", + "title":"Why Does the System Display Error Code 122.112.. When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235943.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"164" + }, + { + "desc":"When you use Microsoft Remote Desktop for Mac to remotely access a Windows ECS, the system displays invalid certificate or associated chain.Due to the particularity of th", + "product_code":"ecs", + "title":"Why Does the System Display Invalid Certificate or Associated Chain When I Log In to a Windows ECS from a Mac?", + "uri":"en-us_topic_0264235944.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"165" + }, + { + "desc":"An error message is displayed indicating that the remote session will be disconnected because of a protocol error.The registry subkey Certificate is damaged.In the Run di", + "product_code":"ecs", + "title":"Why Is My Remote Session Interrupted by a Protocol Error?", + "uri":"en-us_topic_0264235945.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"166" + }, + { + "desc":"An error message is displayed indicating that the identity of the remote computer cannot be verified. You are required to enter the password and log in again.Security sof", + "product_code":"ecs", + "title":"Why Am I Seeing an Error Message That Says Identity of Remote Computer Cannot be Verified When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235946.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"167" + }, + { + "desc":"An error message is displayed indicating that the computer cannot connect to the remote computer in the amount of time allotted.On the local computer, click on the Start ", + "product_code":"ecs", + "title":"Why Am I Seeing An Error Message That Says The Two Computers Couldn't Be Connected in the Amount of Time Allotted When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235947.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"168" + }, + { + "desc":"An error message is displayed indicating that the connection is denied because the user account is not authorized for remote login.The remote desktop connection permissio", + "product_code":"ecs", + "title":"Why Am I Seeing an Error Message That Says User Account is not Authorized for Remote Login When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235948.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"169" + }, + { + "desc":"An error message is displayed indicating that your remote desktop session has ended because another user has connected to the remote computer.Choose Start> Administrative", + "product_code":"ecs", + "title":"Why Does My Remote Desktop Session End Because Another User Logs In When I Log In to a Windows ECS?", + "uri":"en-us_topic_0264235950.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"170" + }, + { + "desc":"An internal error is displayed when you log in to a Windows ECS and you fail to connect to the ECS remotely. Generally, this problem occurs because the Remote Desktop Ser", + "product_code":"ecs", + "title":"Why Does an ECS Fail to Be Remotely Connected Using RDP and Internal Error Code 4 Is Displayed?", + "uri":"en-us_topic_0018124779.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"171" + }, + { + "desc":"When you attempt to remotely log in to a Linux ECS, the system displays the error message \"Module is unknown\".To resolve this issue, restart the ECS and enter the rescue ", + "product_code":"ecs", + "title":"Why Am I Seeing the Error Message \"Module is unknown\" When I Remotely Log In to a Linux ECS?", + "uri":"en-us_topic_0240708482.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"172" + }, + { + "desc":"When I attempted to remotely log in to a Linux ECS, the system displayed error Message \"Permission denied\".To resolve this issue, you are required to restart the ECS and ", + "product_code":"ecs", + "title":"What Should I Do If Error Message \"Permission denied\" Is Displayed When I Remotely Log In to a Linux ECS?", + "uri":"en-us_topic_0240708483.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"173" + }, + { + "desc":"When I attempted to remotely log in to a Linux ECS, the system displayed error message \"read: Connection reset by peer\".The remote login port is not permitted in the secu", + "product_code":"ecs", + "title":"What Should I Do If Error Message \"read: Connection reset by peer\" Is Displayed When I Remotely Log In to a Linux ECS?", + "uri":"en-us_topic_0240714337.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"174" + }, + { + "desc":"When you attempt to remotely log in to a Linux ECS, the system displays the error message \"Access denied\".Incorrect username or password.A policy that denies logins from ", + "product_code":"ecs", + "title":"Why Am I Seeing the Error Message \"Access denied\" When I Remotely Log In to a Linux ECS?", + "uri":"en-us_topic_0277097520.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"175" + }, + { + "desc":"When I attempted to remotely log in to a Linux ECS, the system displayed error message \"Disconnected: No supported authentication methods available\".A policy that denies ", + "product_code":"ecs", + "title":"What Should I Do If Error Message \"Disconnected: No supported authentication methods available\" Is Displayed When I Remotely Log In to a Linux ECS?", + "uri":"en-us_topic_0277132844.html", + "doc_type":"usermanual", + "p_code":"146", + "code":"176" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Management", + "uri":"en-us_topic_0208808104.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"177" + }, + { + "desc":"The static hostname of a Linux ECS is user defined and injected using Cloud-Init during the ECS creation. Although the hostname can be changed by running the hostname com", + "product_code":"ecs", + "title":"How Can a Changed Static Hostname Take Effect Permanently?", + "uri":"en-us_topic_0050735736.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"178" + }, + { + "desc":"Hostnames of ECSs created based on some types of images have the suffix .novalocal, whereas others do not.For example, the hostname is set to abc during ECS creation. Tab", + "product_code":"ecs", + "title":"Is an ECS Hostname with Suffix .novalocal Normal?", + "uri":"en-us_topic_0094874138.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"179" + }, + { + "desc":"After you modify specifications of a Windows ECS, the disks may go offline. Therefore, you need to check the number of disks after you modify the specifications.Check whe", + "product_code":"ecs", + "title":"Why Do the Disks of a Windows ECS Go Offline After I Modify the ECS Specifications?", + "uri":"en-us_topic_0214940105.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"180" + }, + { + "desc":"After you modify specifications of a Linux ECS, disk attachment may fail. Therefore, you need to check the disk attachment after you modify the specifications.Log in to t", + "product_code":"ecs", + "title":"Why Does the Disk Attachment of a Linux ECS Fail After I Modify the ECS Specifications?", + "uri":"en-us_topic_0214940106.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"181" + }, + { + "desc":"This section helps you resolve the following issues:An error message was displayed on the management console after you performed ECS-related operations.An error code was ", + "product_code":"ecs", + "title":"How Do I Handle Error Messages Displayed on the Management Console?", + "uri":"en-us_topic_0032398121.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"182" + }, + { + "desc":"The system displays a question mark (?) when I attempt to obtain the console logs of an ECS.The image based on which the ECS was created supports viewing console logs. Ho", + "product_code":"ecs", + "title":"Why Does the System Display a Question Mark When I Attempt to Obtain Console Logs?", + "uri":"en-us_topic_0088241338.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"183" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"OS Management", + "uri":"en-us_topic_0018124788.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"184" + }, + { + "desc":"You can install or upgrade ECS OSs provided on the cloud platform.When you create an ECS, you can select a public image or a private image created from a public image to ", + "product_code":"ecs", + "title":"Can I Install or Upgrade the OS of an ECS?", + "uri":"en-us_topic_0018078520.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"185" + }, + { + "desc":"Yes. You can change the OS of an ECS.For instructions about how to change an ECS OS, see Changing the OS.", + "product_code":"ecs", + "title":"Can I Change the OS of an ECS?", + "uri":"en-us_topic_0018078522.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"186" + }, + { + "desc":"Typically, the process of changing the OS of an ECS takes about 1 to 2 minutes. Stop the ECS, click More in the Operation column, and select Change OS from the drop-down ", + "product_code":"ecs", + "title":"How Long Does It Take to Change an ECS OS?", + "uri":"en-us_topic_0101604511.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"187" + }, + { + "desc":"No. You can use only the original image of the ECS to reinstall the OS. You need to use a new image if you want to change the OS. For details, see Changing the OS.", + "product_code":"ecs", + "title":"Can I Select Another OS During ECS OS Reinstallation?", + "uri":"en-us_topic_0024912311.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"188" + }, + { + "desc":"Typically, the process of reinstalling the OS of an ECS takes about 1 to 2 minutes. Stop the ECS, click More in the Operation column, and select Reinstall OS in the drop-", + "product_code":"ecs", + "title":"How Long Does It Take to Reinstall an ECS OS?", + "uri":"en-us_topic_0101604512.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"189" + }, + { + "desc":"Windows ECSs are managed through a GUI but Linux ECSs are managed through the CLI. You can configure a GUI if required.Before installing a GUI on an ECS, ensure that the ", + "product_code":"ecs", + "title":"Do ECSs Support GUI?", + "uri":"en-us_topic_0018078523.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"190" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"File Upload/Data Transfer", + "uri":"en-us_topic_0170135967.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"191" + }, + { + "desc":"File transfer toolInstall a file transfer tool, such as FileZilla on both the local computer and the Windows ECS and use it to transfer files.Install a file transfer tool", + "product_code":"ecs", + "title":"How Do I Upload Files to My ECS?", + "uri":"en-us_topic_0236302789.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"192" + }, + { + "desc":"You want to transfer files from a local Windows computer to a Windows ECS through an MSTSC-based remote desktop connection.The target ECS is running.The ECS has an EIP bo", + "product_code":"ecs", + "title":"How Can I Transfer Files from a Local Windows Computer to a Windows ECS?", + "uri":"en-us_topic_0166284970.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"193" + }, + { + "desc":"WinSCP can be used to securely copy-paste files across local and remote computers. Compared with FTP, WinSCP allows you to use a username and password to access the desti", + "product_code":"ecs", + "title":"How Can I Use WinSCP to Transfer Files from a Local Windows Computer to a Linux ECS?", + "uri":"en-us_topic_0166284971.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"194" + }, + { + "desc":"This section describes how to use Microsoft Remote Desktop for Mac to transfer files from a local Mac to a Windows ECS.The remote access tool supported by Mac has been in", + "product_code":"ecs", + "title":"How Can I Transfer Files from a Local Mac to a Windows ECS?", + "uri":"en-us_topic_0295091738.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"195" + }, + { + "desc":"You want to use SCP to transfer files between a local Linux computer and a Linux ECS.Log in to the management console. On the Elastic Cloud Server page, obtain the EIP bo", + "product_code":"ecs", + "title":"How Can I Use SCP to Transfer Files Between a Local Linux Computer and a Linux ECS?", + "uri":"en-us_topic_0263796591.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"196" + }, + { + "desc":"You want to use SFTP to transfer files between a local Linux computer and a Linux ECS. The following uses CentOS as an example.Log in to the ECS as user root.Run the foll", + "product_code":"ecs", + "title":"How Can I Use SFTP to Transfer Files Between a Local Linux Computer and a Linux ECS?", + "uri":"en-us_topic_0170139796.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"197" + }, + { + "desc":"You want to use FTP to transfer files from a local Windows computer to an ECS.You have enabled FTP on the target ECS. If you have not enabled FTP, check the following lin", + "product_code":"ecs", + "title":"How Can I Use FTP to Transfer Files from a Local Windows Computer to a Windows or Linux ECS?", + "uri":"en-us_topic_0263806053.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"198" + }, + { + "desc":"You want to use FTP on a local Linux computer to transfer files between the computer and a Linux ECS.You have enabled FTP on the target ECS. If you have not enabled FTP, ", + "product_code":"ecs", + "title":"How Can I Use FTP to Transfer Files Between a Local Linux Computer and a Linux ECS?", + "uri":"en-us_topic_0263806054.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"199" + }, + { + "desc":"When I attempted to access the server from the client to upload a file using FTP, the connection timed out.The operations described in this section apply to FTP on local ", + "product_code":"ecs", + "title":"What Should I Do If the Connection Between the Client and the Server Times Out When I Upload a File Using FTP?", + "uri":"en-us_topic_0170139797.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"200" + }, + { + "desc":"When I attempted to upload a file using FTP, writing data failed. As a result, the file transfer failed.The operations described in this section apply to FTP on Windows E", + "product_code":"ecs", + "title":"What Should I Do If Writing Data Failed When I Upload a File Using FTP?", + "uri":"en-us_topic_0170139798.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"201" + }, + { + "desc":"An error occurs when you open a folder on an FTP server. The system displays a message asking you to check permissions.The FTP firewall configured for the browser does no", + "product_code":"ecs", + "title":"Why Am I Seeing an FTP Folder Error When I Open a Folder on an FTP Server?", + "uri":"en-us_topic_0247282819.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"202" + }, + { + "desc":"Connecting to a Linux ECS using WinSCP fails, while using SSH tools like Xshell succeeds.If you can connect to a Linux ECS using SSH tools, the SSH tools run properly. Ch", + "product_code":"ecs", + "title":"Why Do I Fail to Connect to a Linux ECS Using WinSCP?", + "uri":"en-us_topic_0000001189572473.html", + "doc_type":"usermanual", + "p_code":"191", + "code":"203" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"ECS Migration", + "uri":"en-us_topic_0208809314.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"204" + }, + { + "desc":"Yes.", + "product_code":"ecs", + "title":"Can I Migrate an ECS to Another Region or Account?", + "uri":"en-us_topic_0236308363.html", + "doc_type":"usermanual", + "p_code":"204", + "code":"205" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Disk Management", + "uri":"en-us_topic_0018124786.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"206" + }, + { + "desc":"After logging in to my Windows ECS, I cannot find the attached data disk.Formatting a disk will cause data loss. Therefore, before formatting a disk, create a backup for ", + "product_code":"ecs", + "title":"What Should I Do If the Data Disk Attached a Windows ECS Is Unavailable?", + "uri":"en-us_topic_0251012483.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"207" + }, + { + "desc":"If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can manually adjust the partitions to expand t", + "product_code":"ecs", + "title":"How Can I Adjust System Disk Partitions?", + "uri":"en-us_topic_0076210995.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"208" + }, + { + "desc":"This section uses an ECS running Windows Server 2008 R2 64bit as an example to describe how to obtain the mapping between disk partitions and disk devices.Log in to the W", + "product_code":"ecs", + "title":"How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Windows ECS?", + "uri":"en-us_topic_0087680813.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"209" + }, + { + "desc":"For a Linux ECS, its disk partitions correspond to disk devices. This section uses a Linux ECS running Red Hat Enterprise Linux 7 as an example to describe how to obtain ", + "product_code":"ecs", + "title":"How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Linux ECS?", + "uri":"en-us_topic_0087901488.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"210" + }, + { + "desc":"Enabling ECS virtual memory will deteriorate disk I/O performance. Therefore, the Windows ECSs provided by the platform do not have virtual memory enabled by default. If ", + "product_code":"ecs", + "title":"How Can I Enable Virtual Memory on a Windows ECS?", + "uri":"en-us_topic_0120795802.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"211" + }, + { + "desc":"After you create an ECS, you run the free -m command to view the ECS memory. The ECS memory is less than the memory configured during ECS creation.An example is provided ", + "product_code":"ecs", + "title":"Why Is the Memory of an ECS Obtained by Running the free Command Inconsistent with the Actual Memory?", + "uri":"en-us_topic_0093153741.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"212" + }, + { + "desc":"If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can add the empty partition to the root partit", + "product_code":"ecs", + "title":"How Can I Add the Empty Partition of an Expanded System Disk to the End Root Partition Online?", + "uri":"en-us_topic_0078300749.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"213" + }, + { + "desc":"If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can add the empty partition to the root partit", + "product_code":"ecs", + "title":"How Can I Add the Empty Partition of an Expanded System Disk to the Non-end Root Partition Online?", + "uri":"en-us_topic_0078300750.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"214" + }, + { + "desc":"Yes. The ECSs created after the disk function upgrade can have up to 60 attached disks.When you create an ECS, you can attach 24 disks to it.After you create an ECS, you ", + "product_code":"ecs", + "title":"Can I Attach Multiple Disks to an ECS?", + "uri":"en-us_topic_0018073215.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"215" + }, + { + "desc":"The EVS disk and the target ECS must be located in the same AZ.For a non-shared disk, the EVS disk must be in Available state.For a shared disk, the target EVS disk must ", + "product_code":"ecs", + "title":"What Are the Requirements for Attaching an EVS Disk to an ECS?", + "uri":"en-us_topic_0040863659.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"216" + }, + { + "desc":"All types of ECSs can be attached with SCSI EVS disks.", + "product_code":"ecs", + "title":"Which ECSs Can Be Attached with SCSI EVS Disks?", + "uri":"en-us_topic_0077938284.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"217" + }, + { + "desc":"You find that the disk name displayed on the ECS OS is different from that displayed on the management console and you cannot determine which disk name is correct. This s", + "product_code":"ecs", + "title":"How Do I Obtain My Disk Name in the ECS OS Using the Device Identifier Provided on the Console?", + "uri":"en-us_topic_0103285575.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"218" + }, + { + "desc":"To restore data, a system disk snapshot of ECS A is used to create disk A. Then, disk A is attached to ECS B as a data disk. However, after ECS B is restarted, data disk ", + "product_code":"ecs", + "title":"How Can I Attach a Snapshot-based System Disk to an ECS as Its Data Disk?", + "uri":"en-us_topic_0152643976.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"219" + }, + { + "desc":"For a Linux ECS with a SCSI disk attached, if you have enabled automatic SCSI disk attachment upon ECS startup in /etc/fstab and the disk drive letter (for example, /dev/", + "product_code":"ecs", + "title":"Why Does a Linux ECS with a SCSI Disk Attached Fails to Restart?", + "uri":"en-us_topic_0087382187.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"220" + }, + { + "desc":"The rights of users in a user group to use the encryption feature are as follows:The user who has security administrator rights can grant KMS access rights to EVS for usi", + "product_code":"ecs", + "title":"Can All Users Use the Encryption Feature?", + "uri":"en-us_topic_0047272493.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"221" + }, + { + "desc":"A disk attached to a Windows ECS goes offline, and the system displays the message \"The disk is offline because of policy set by an administrator.\"Windows has three types", + "product_code":"ecs", + "title":"Why Does a Disk Attached to a Windows ECS Go Offline?", + "uri":"en-us_topic_0114225937.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"222" + }, + { + "desc":"For a Linux ECS, the drive letter may change after an EVS disk is detached and then attached again, or after an EVS disk is detached and then the ECS is restarted. This i", + "product_code":"ecs", + "title":"Why Does the Disk Drive Letter Change After the ECS Is Restarted?", + "uri":"en-us_topic_0240831198.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"223" + }, + { + "desc":"If you uninstall Tools from a Linux ECS in a non-PVOPS system, data disks cannot be identified. In such a case, you can create a new ECS and attach the data disks of the ", + "product_code":"ecs", + "title":"How Can I Obtain Data Disk Information If Tools Are Uninstalled?", + "uri":"en-us_topic_0029806525.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"224" + }, + { + "desc":"When a Linux ECS with an NVMe SSD disk attached, such as a P1 ECS, becomes faulty, you must contact the administrator to remotely create the ECS again for reconstruction.", + "product_code":"ecs", + "title":"How Can I Rectify the Fault That May Occur on a Linux ECS with an NVMe SSD Disk Attached?", + "uri":"en-us_topic_0087622835.html", + "doc_type":"usermanual", + "p_code":"206", + "code":"225" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Passwords and Key Pairs", + "uri":"en-us_topic_0105215483.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"226" + }, + { + "desc":"If an ECS cannot be logged in because of expired image password, you can contact the administrator for handling.If the ECS can still be logged in, you can perform the fol", + "product_code":"ecs", + "title":"How Can I Set the Validity Period of the Image Password?", + "uri":"en-us_topic_0079176727.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"227" + }, + { + "desc":"You have created multiple key pairs, and you are trying to find the key pair to log in to the target ECS.Log in to the management console.Click in the upper left corner ", + "product_code":"ecs", + "title":"How Can I Obtain the Key Pair Used by an ECS?", + "uri":"en-us_topic_0081525053.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"228" + }, + { + "desc":"If you use Internet Explorer 9 to access the management console, the key pair may fail to import. In this case, perform the following steps to modify browser settings and", + "product_code":"ecs", + "title":"What Should I Do If a Key Pair Cannot Be Imported?", + "uri":"en-us_topic_0019883415.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"229" + }, + { + "desc":"When you use the key file created during your Linux ECS creation to log in to the ECS, the login fails.Possible causes vary depending on the image used to create the Linu", + "product_code":"ecs", + "title":"Why Does the Login to My Linux ECS Using a Key File Fail?", + "uri":"en-us_topic_0031734664.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"230" + }, + { + "desc":"When you try to import a key pair that you created using puttygen.exe on the management console, the system displays a message indicating that the import failed.The forma", + "product_code":"ecs", + "title":"Why Does a Key Pair Created Using puttygen.exe Fail to Be Imported on the Management Console?", + "uri":"en-us_topic_0047654687.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"231" + }, + { + "desc":"In Windows ECSs, cloudbase-init is the default account of the Cloudbase-Init agent program. It is used to obtain the metadata and execute configurations when the ECS star", + "product_code":"ecs", + "title":"What Is the cloudbase-init Account in Windows ECSs Used for?", + "uri":"en-us_topic_0037633087.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"232" + }, + { + "desc":"Take an ECS running CentOS 6.8 as an example. After Python was upgraded from 2.6 to 2.7, Cloud-Init did not work. Data, such as the login password, key, and hostname coul", + "product_code":"ecs", + "title":"What Should I Do If Cloud-Init Does Not Work After Python Is Upgraded?", + "uri":"en-us_topic_0118224527.html", + "doc_type":"usermanual", + "p_code":"226", + "code":"233" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Network Configurations", + "uri":"en-us_topic_0018124785.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"234" + }, + { + "desc":"You can bind multiple EIPs to an ECS. However, this configuration is not recommended.To bind multiple EIPs to an ECS, you must manually configure routes.Table 1 lists ECS", + "product_code":"ecs", + "title":"Can I Bind Multiple EIPs to an ECS?", + "uri":"en-us_topic_0018073216.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"235" + }, + { + "desc":"Yes.Method 1: Configure a SNAT server.You can configure the SNAT server so that the ECS without an EIP bound can access the Internet.For details, see \"Configuring an SNAT", + "product_code":"ecs", + "title":"Can an ECS Without an EIP Access the Internet?", + "uri":"en-us_topic_0030013188.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"236" + }, + { + "desc":"After you purchase an EIP and bind it to an ECS, the ping operation to the EIP fails, or the ECS fails to access the Internet.The following fault causes are sequenced bas", + "product_code":"ecs", + "title":"Why Can't an EIP Be Pinged?", + "uri":"en-us_topic_0105130172.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"237" + }, + { + "desc":"You can remotely access an ECS but when you ping the EIP bound to the ECS, the ping operation fails.A desired inbound rule is not added for the security group, and ICMP i", + "product_code":"ecs", + "title":"Why Can I Remotely Access an ECS But Cannot Ping It?", + "uri":"en-us_topic_0018078505.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"238" + }, + { + "desc":"Based on test results, if the ECS runs CentOS 7.0, NICs added to the ECS cannot start automatically. You must start the NICs manually.", + "product_code":"ecs", + "title":"Will NICs Added to an ECS Start Automatically?", + "uri":"en-us_topic_0025445670.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"239" + }, + { + "desc":"For high-performance H2 ECSs equipped with an InfiniBand NIC driver (InfiniBand ECSs for short), perform the following operations to check whether the driver installation", + "product_code":"ecs", + "title":"How Can I Check Whether the Network Communication Is Normal Between Two ECSs Equipped with an InfiniBand NIC Driver?", + "uri":"en-us_topic_0058747426.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"240" + }, + { + "desc":"IP over InfiniBand (IPoIB) allows IP data transmission over InfiniBand. For SUSE high-performance H2 and HL1 ECSs, if IPoIB is required, you must manually configure an IP", + "product_code":"ecs", + "title":"How Can I Manually Configure an IP Address for an InfiniBand NIC?", + "uri":"en-us_topic_0083225171.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"241" + }, + { + "desc":"The NIC equipped on a disk-intensive or large-memory ECS does not work.The NIC driver has not been correctly installed.Disk-intensive and large-memory ECSs use passthroug", + "product_code":"ecs", + "title":"Why Is the NIC Not Working?", + "uri":"en-us_topic_0036068717.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"242" + }, + { + "desc":"When the 20.4.1 driver package downloaded at Intel website https://downloadcenter.intel.com/search?keyword=Intel++Ethernet+Connections+CD was installed in a Windows 7 64b", + "product_code":"ecs", + "title":"How Can I Handle the Issue that a Windows 7 ECS Equipped with an Intel 82599 NIC Reports an Error in SR-IOV Scenarios?", + "uri":"en-us_topic_0053287548.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"243" + }, + { + "desc":"The security group of the Linux ECS has been configured based on the prerequisites in Obtaining Metadata in the outbound direction, but the ECS still cannot obtain the me", + "product_code":"ecs", + "title":"Why Can't My Linux ECS Obtain Metadata?", + "uri":"en-us_topic_0000001138811177.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"244" + }, + { + "desc":"This section describes how to obtain the MAC address of an ECS.The MAC address of an ECS cannot be changed.Log in to the Linux ECS.Run the following command to view the M", + "product_code":"ecs", + "title":"How Can I Obtain the MAC Address of My ECS?", + "uri":"en-us_topic_0101604506.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"245" + }, + { + "desc":"Use netperf and iperf3 to test network performance between ECSs. The test operations include preparations, TCP bandwidth test, UDP PPS test, and latency test.Tested ECS: ", + "product_code":"ecs", + "title":"How Can I Test Network Performance?", + "uri":"en-us_topic_0115820205.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"246" + }, + { + "desc":"You attempt to use DHCP to obtain a private IP address, but you cannot obtain the IP address.For Linux, a private IP address cannot be assigned.For Windows, a private IP ", + "product_code":"ecs", + "title":"Why Can't I Use DHCP to Obtain a Private IP Address?", + "uri":"en-us_topic_0105130173.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"247" + }, + { + "desc":"Modify the kernel parameters only if the parameter settings affect your services. Kernel parameters vary depending on OS versions. If the parameter settings must be modif", + "product_code":"ecs", + "title":"How Can I View and Modify Kernel Parameters of a Linux ECS?", + "uri":"en-us_topic_0107659745.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"248" + }, + { + "desc":"It is expected that the EIP and port on ECS 1 accessed from the Internet can be automatically redirected to the EIP and port on ECS 2.For example, to redirect port 8080 o", + "product_code":"ecs", + "title":"How Can I Configure Port Redirection?", + "uri":"en-us_topic_0101604507.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"249" + }, + { + "desc":"No. The ECSs of different accounts cannot communicate with each other over an intranet.", + "product_code":"ecs", + "title":"Can the ECSs of Different Accounts Communicate over an Intranet?", + "uri":"en-us_topic_0018078501.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"250" + }, + { + "desc":"You can customize your network to deploy the ECSs. Therefore, whether they are in the same subnet is totally up to you.", + "product_code":"ecs", + "title":"Will ECSs That I Purchased Deployed in the Same Subnet?", + "uri":"en-us_topic_0018078503.html", + "doc_type":"usermanual", + "p_code":"234", + "code":"251" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Resource Management and Tags", + "uri":"en-us_topic_0208809315.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"252" + }, + { + "desc":"Log in to the management console.Select the region where the ECS is located.Under Computing, click Elastic Cloud Server.Click the name of the target ECS.The page providin", + "product_code":"ecs", + "title":"How Can I Create and Delete Tags and Search for ECSs by Tag?", + "uri":"en-us_topic_0101604501.html", + "doc_type":"usermanual", + "p_code":"252", + "code":"253" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Resource Monitoring", + "uri":"en-us_topic_0208809316.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"254" + }, + { + "desc":"If your Windows ECS runs slowly or is inaccessible unexpectedly, the bandwidth or vCPU usage of the ECS may be excessively high. If you have created an alarm rule using C", + "product_code":"ecs", + "title":"Why Is My Windows ECS Running Slowly?", + "uri":"en-us_topic_0167429328.html", + "doc_type":"usermanual", + "p_code":"254", + "code":"255" + }, + { + "desc":"If your Linux ECS runs slowly or is inaccessible unexpectedly, the bandwidth or vCPU usage of the ECS may be excessively high. If you have created an alarm rule using Clo", + "product_code":"ecs", + "title":"Why Is My Linux ECS Running Slowly?", + "uri":"en-us_topic_0167429329.html", + "doc_type":"usermanual", + "p_code":"254", + "code":"256" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Database Applications", + "uri":"en-us_topic_0018124789.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"257" + }, + { + "desc":"Yes. There is no limitation on this operation. You can deploy a database of any type on an ECS.", + "product_code":"ecs", + "title":"Can a Database Be Deployed on an ECS?", + "uri":"en-us_topic_0018078507.html", + "doc_type":"usermanual", + "p_code":"257", + "code":"258" + }, + { + "desc":"Yes. You are advised to perform a performance test beforehand to ensure that the Oracle database can meet your requirements.", + "product_code":"ecs", + "title":"Does an ECS Support Oracle Databases?", + "uri":"en-us_topic_0018078509.html", + "doc_type":"usermanual", + "p_code":"257", + "code":"259" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ecs", + "title":"Change History", + "uri":"en-us_topic_0041169567.html", + "doc_type":"usermanual", + "p_code":"", + "code":"260" + }, + { + "desc":"For details about the terms involved in this document, see Glossary.", + "product_code":"ecs", + "title":"Glossary", + "uri":"en-us_topic_0047898078.html", + "doc_type":"usermanual", + "p_code":"", + "code":"261" + } +] \ No newline at end of file diff --git a/ecs/umn/PARAMETERS.txt b/ecs/umn/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/ecs/umn/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/ecs/umn/en-us_image_0000001071727803.png b/ecs/umn/en-us_image_0000001071727803.png new file mode 100644 index 000000000..ad7f9cab6 Binary files /dev/null and b/ecs/umn/en-us_image_0000001071727803.png differ diff --git a/ecs/umn/en-us_image_0000001081131958.png b/ecs/umn/en-us_image_0000001081131958.png new file mode 100644 index 000000000..fcbd5cd9c Binary files /dev/null and b/ecs/umn/en-us_image_0000001081131958.png differ diff --git a/ecs/umn/en-us_image_0000001082643605.jpg b/ecs/umn/en-us_image_0000001082643605.jpg new file mode 100644 index 000000000..9873ee844 Binary files /dev/null and b/ecs/umn/en-us_image_0000001082643605.jpg differ diff --git a/ecs/umn/en-us_image_0000001092045958.png b/ecs/umn/en-us_image_0000001092045958.png new file mode 100644 index 000000000..1fcdb600d Binary files /dev/null and b/ecs/umn/en-us_image_0000001092045958.png differ diff --git a/ecs/umn/en-us_image_0000001092174258.png b/ecs/umn/en-us_image_0000001092174258.png new file mode 100644 index 000000000..0d943cfbd Binary files /dev/null and b/ecs/umn/en-us_image_0000001092174258.png differ diff --git a/ecs/umn/en-us_image_0000001093310123.png b/ecs/umn/en-us_image_0000001093310123.png new file mode 100644 index 000000000..3d228a0c9 Binary files /dev/null and b/ecs/umn/en-us_image_0000001093310123.png differ diff --git a/ecs/umn/en-us_image_0000001093447741.png b/ecs/umn/en-us_image_0000001093447741.png new file mode 100644 index 000000000..c2eda97b5 Binary files /dev/null and b/ecs/umn/en-us_image_0000001093447741.png differ diff --git a/ecs/umn/en-us_image_0000001093449637.png b/ecs/umn/en-us_image_0000001093449637.png new file mode 100644 index 000000000..2d5cc8933 Binary files /dev/null and b/ecs/umn/en-us_image_0000001093449637.png differ diff --git a/ecs/umn/en-us_image_0000001093450009.png b/ecs/umn/en-us_image_0000001093450009.png new file mode 100644 index 000000000..7cba8015c Binary files /dev/null and b/ecs/umn/en-us_image_0000001093450009.png differ diff --git a/ecs/umn/en-us_image_0000001093667097.png b/ecs/umn/en-us_image_0000001093667097.png new file mode 100644 index 000000000..13ec1ab3a Binary files /dev/null and b/ecs/umn/en-us_image_0000001093667097.png differ diff --git a/ecs/umn/en-us_image_0000001100835050.png b/ecs/umn/en-us_image_0000001100835050.png new file mode 100644 index 000000000..17b46f958 Binary files /dev/null and b/ecs/umn/en-us_image_0000001100835050.png differ diff --git a/ecs/umn/en-us_image_0000001121886141.png b/ecs/umn/en-us_image_0000001121886141.png new file mode 100644 index 000000000..d4aa50fc1 Binary files /dev/null and b/ecs/umn/en-us_image_0000001121886141.png differ diff --git a/ecs/umn/en-us_image_0000001121886253.png b/ecs/umn/en-us_image_0000001121886253.png new file mode 100644 index 000000000..1f822b4d2 Binary files /dev/null and b/ecs/umn/en-us_image_0000001121886253.png differ diff --git a/ecs/umn/en-us_image_0000001122000869.png b/ecs/umn/en-us_image_0000001122000869.png new file mode 100644 index 000000000..7c5c5e6be Binary files /dev/null and b/ecs/umn/en-us_image_0000001122000869.png differ diff --git a/ecs/umn/en-us_image_0000001122000977.png b/ecs/umn/en-us_image_0000001122000977.png new file mode 100644 index 000000000..d2499dfbc Binary files /dev/null and b/ecs/umn/en-us_image_0000001122000977.png differ diff --git a/ecs/umn/en-us_image_0000001122000979.png b/ecs/umn/en-us_image_0000001122000979.png new file mode 100644 index 000000000..ba1a17602 Binary files /dev/null and b/ecs/umn/en-us_image_0000001122000979.png differ diff --git a/ecs/umn/en-us_image_0000001122141457.png b/ecs/umn/en-us_image_0000001122141457.png new file mode 100644 index 000000000..64b96d10c Binary files /dev/null and b/ecs/umn/en-us_image_0000001122141457.png differ diff --git a/ecs/umn/en-us_image_0000001122204571.png b/ecs/umn/en-us_image_0000001122204571.png new file mode 100644 index 000000000..746dad956 Binary files /dev/null and b/ecs/umn/en-us_image_0000001122204571.png differ diff --git a/ecs/umn/en-us_image_0000001122204673.png b/ecs/umn/en-us_image_0000001122204673.png new file mode 100644 index 000000000..3136dc011 Binary files /dev/null and b/ecs/umn/en-us_image_0000001122204673.png differ diff --git a/ecs/umn/en-us_image_0000001122204675.png b/ecs/umn/en-us_image_0000001122204675.png new file mode 100644 index 000000000..834e609b6 Binary files /dev/null and b/ecs/umn/en-us_image_0000001122204675.png differ diff --git a/ecs/umn/en-us_image_0000001122204677.png b/ecs/umn/en-us_image_0000001122204677.png new file mode 100644 index 000000000..405d1ce74 Binary files /dev/null and b/ecs/umn/en-us_image_0000001122204677.png differ diff --git a/ecs/umn/en-us_image_0000001127902463.png b/ecs/umn/en-us_image_0000001127902463.png new file mode 100644 index 000000000..4e49c632e Binary files /dev/null and b/ecs/umn/en-us_image_0000001127902463.png differ diff --git a/ecs/umn/en-us_image_0000001127906793.png b/ecs/umn/en-us_image_0000001127906793.png new file mode 100644 index 000000000..c283762b0 Binary files /dev/null and b/ecs/umn/en-us_image_0000001127906793.png differ diff --git a/ecs/umn/en-us_image_0000001128111323.png b/ecs/umn/en-us_image_0000001128111323.png new file mode 100644 index 000000000..d1646ed2d Binary files /dev/null and b/ecs/umn/en-us_image_0000001128111323.png differ diff --git a/ecs/umn/en-us_image_0000001128656892.png b/ecs/umn/en-us_image_0000001128656892.png new file mode 100644 index 000000000..1e9b6573a Binary files /dev/null and b/ecs/umn/en-us_image_0000001128656892.png differ diff --git a/ecs/umn/en-us_image_0000001150707636.png b/ecs/umn/en-us_image_0000001150707636.png new file mode 100644 index 000000000..20d8f9581 Binary files /dev/null and b/ecs/umn/en-us_image_0000001150707636.png differ diff --git a/ecs/umn/en-us_image_0000001189705789.png b/ecs/umn/en-us_image_0000001189705789.png new file mode 100644 index 000000000..69df18308 Binary files /dev/null and b/ecs/umn/en-us_image_0000001189705789.png differ diff --git a/ecs/umn/en-us_image_0000001208978003.png b/ecs/umn/en-us_image_0000001208978003.png new file mode 100644 index 000000000..6cf029cae Binary files /dev/null and b/ecs/umn/en-us_image_0000001208978003.png differ diff --git a/ecs/umn/en-us_image_0000001230120807.png b/ecs/umn/en-us_image_0000001230120807.png new file mode 100644 index 000000000..e78ee8327 Binary files /dev/null and b/ecs/umn/en-us_image_0000001230120807.png differ diff --git a/ecs/umn/en-us_image_0022382203.png b/ecs/umn/en-us_image_0022382203.png new file mode 100644 index 000000000..ef6b3b1a5 Binary files /dev/null and b/ecs/umn/en-us_image_0022382203.png differ diff --git a/ecs/umn/en-us_image_0027174005.png b/ecs/umn/en-us_image_0027174005.png new file mode 100644 index 000000000..a7d974339 Binary files /dev/null and b/ecs/umn/en-us_image_0027174005.png differ diff --git a/ecs/umn/en-us_image_0030874266.png b/ecs/umn/en-us_image_0030874266.png new file mode 100644 index 000000000..f6f58730f Binary files /dev/null and b/ecs/umn/en-us_image_0030874266.png differ diff --git a/ecs/umn/en-us_image_0030874270.png b/ecs/umn/en-us_image_0030874270.png new file mode 100644 index 000000000..0c40d13bc Binary files /dev/null and b/ecs/umn/en-us_image_0030874270.png differ diff --git a/ecs/umn/en-us_image_0030874271.png b/ecs/umn/en-us_image_0030874271.png new file mode 100644 index 000000000..5be3a1816 Binary files /dev/null and b/ecs/umn/en-us_image_0030874271.png differ diff --git a/ecs/umn/en-us_image_0030874275.png b/ecs/umn/en-us_image_0030874275.png new file mode 100644 index 000000000..f6f58730f Binary files /dev/null and b/ecs/umn/en-us_image_0030874275.png differ diff --git a/ecs/umn/en-us_image_0036068239.png b/ecs/umn/en-us_image_0036068239.png new file mode 100644 index 000000000..713068913 Binary files /dev/null and b/ecs/umn/en-us_image_0036068239.png differ diff --git a/ecs/umn/en-us_image_0037980515.png b/ecs/umn/en-us_image_0037980515.png new file mode 100644 index 000000000..349a258ff Binary files /dev/null and b/ecs/umn/en-us_image_0037980515.png differ diff --git a/ecs/umn/en-us_image_0037982934.png b/ecs/umn/en-us_image_0037982934.png new file mode 100644 index 000000000..7f6c2bfd8 Binary files /dev/null and b/ecs/umn/en-us_image_0037982934.png differ diff --git a/ecs/umn/en-us_image_0042322120.png b/ecs/umn/en-us_image_0042322120.png new file mode 100644 index 000000000..2a3256bce Binary files /dev/null and b/ecs/umn/en-us_image_0042322120.png differ diff --git a/ecs/umn/en-us_image_0047273062.png b/ecs/umn/en-us_image_0047273062.png new file mode 100644 index 000000000..fdca6eb38 Binary files /dev/null and b/ecs/umn/en-us_image_0047273062.png differ diff --git a/ecs/umn/en-us_image_0049287308.png b/ecs/umn/en-us_image_0049287308.png new file mode 100644 index 000000000..f4df7a969 Binary files /dev/null and b/ecs/umn/en-us_image_0049287308.png differ diff --git a/ecs/umn/en-us_image_0058747512.jpg b/ecs/umn/en-us_image_0058747512.jpg new file mode 100644 index 000000000..95516a026 Binary files /dev/null and b/ecs/umn/en-us_image_0058747512.jpg differ diff --git a/ecs/umn/en-us_image_0071898891.png b/ecs/umn/en-us_image_0071898891.png new file mode 100644 index 000000000..db927fc52 Binary files /dev/null and b/ecs/umn/en-us_image_0071898891.png differ diff --git a/ecs/umn/en-us_image_0076540987.png b/ecs/umn/en-us_image_0076540987.png new file mode 100644 index 000000000..bb7463093 Binary files /dev/null and b/ecs/umn/en-us_image_0076540987.png differ diff --git a/ecs/umn/en-us_image_0076540988.png b/ecs/umn/en-us_image_0076540988.png new file mode 100644 index 000000000..0de7fef75 Binary files /dev/null and b/ecs/umn/en-us_image_0076540988.png differ diff --git a/ecs/umn/en-us_image_0076541187.png b/ecs/umn/en-us_image_0076541187.png new file mode 100644 index 000000000..6b87b0b5b Binary files /dev/null and b/ecs/umn/en-us_image_0076541187.png differ diff --git a/ecs/umn/en-us_image_0076543500.jpg b/ecs/umn/en-us_image_0076543500.jpg new file mode 100644 index 000000000..58c6733ee Binary files /dev/null and b/ecs/umn/en-us_image_0076543500.jpg differ diff --git a/ecs/umn/en-us_image_0076543501.jpg b/ecs/umn/en-us_image_0076543501.jpg new file mode 100644 index 000000000..6bedfc3c9 Binary files /dev/null and b/ecs/umn/en-us_image_0076543501.jpg differ diff --git a/ecs/umn/en-us_image_0076595619.jpg b/ecs/umn/en-us_image_0076595619.jpg new file mode 100644 index 000000000..1a51dfb83 Binary files /dev/null and b/ecs/umn/en-us_image_0076595619.jpg differ diff --git a/ecs/umn/en-us_image_0076595620.jpg b/ecs/umn/en-us_image_0076595620.jpg new file mode 100644 index 000000000..8264dc69c Binary files /dev/null and b/ecs/umn/en-us_image_0076595620.jpg differ diff --git a/ecs/umn/en-us_image_0076596029.jpg b/ecs/umn/en-us_image_0076596029.jpg new file mode 100644 index 000000000..b21831c0e Binary files /dev/null and b/ecs/umn/en-us_image_0076596029.jpg differ diff --git a/ecs/umn/en-us_image_0076596326.jpg b/ecs/umn/en-us_image_0076596326.jpg new file mode 100644 index 000000000..a7de6ac68 Binary files /dev/null and b/ecs/umn/en-us_image_0076596326.jpg differ diff --git a/ecs/umn/en-us_image_0076598858.jpg b/ecs/umn/en-us_image_0076598858.jpg new file mode 100644 index 000000000..5ec9e381e Binary files /dev/null and b/ecs/umn/en-us_image_0076598858.jpg differ diff --git a/ecs/umn/en-us_image_0076600080.jpg b/ecs/umn/en-us_image_0076600080.jpg new file mode 100644 index 000000000..66efb6aeb Binary files /dev/null and b/ecs/umn/en-us_image_0076600080.jpg differ diff --git a/ecs/umn/en-us_image_0079177144.png b/ecs/umn/en-us_image_0079177144.png new file mode 100644 index 000000000..7a0615de7 Binary files /dev/null and b/ecs/umn/en-us_image_0079177144.png differ diff --git a/ecs/umn/en-us_image_0087630201.jpg b/ecs/umn/en-us_image_0087630201.jpg new file mode 100644 index 000000000..7c2296972 Binary files /dev/null and b/ecs/umn/en-us_image_0087630201.jpg differ diff --git a/ecs/umn/en-us_image_0087631679.jpg b/ecs/umn/en-us_image_0087631679.jpg new file mode 100644 index 000000000..85210cc35 Binary files /dev/null and b/ecs/umn/en-us_image_0087631679.jpg differ diff --git a/ecs/umn/en-us_image_0087632786.jpg b/ecs/umn/en-us_image_0087632786.jpg new file mode 100644 index 000000000..056d3d0a6 Binary files /dev/null and b/ecs/umn/en-us_image_0087632786.jpg differ diff --git a/ecs/umn/en-us_image_0087632787.jpg b/ecs/umn/en-us_image_0087632787.jpg new file mode 100644 index 000000000..6984dc995 Binary files /dev/null and b/ecs/umn/en-us_image_0087632787.jpg differ diff --git a/ecs/umn/en-us_image_0087903699.png b/ecs/umn/en-us_image_0087903699.png new file mode 100644 index 000000000..3f632526e Binary files /dev/null and b/ecs/umn/en-us_image_0087903699.png differ diff --git a/ecs/umn/en-us_image_0087903704.png b/ecs/umn/en-us_image_0087903704.png new file mode 100644 index 000000000..487fde6d5 Binary files /dev/null and b/ecs/umn/en-us_image_0087903704.png differ diff --git a/ecs/umn/en-us_image_0087906013.png b/ecs/umn/en-us_image_0087906013.png new file mode 100644 index 000000000..15964405b Binary files /dev/null and b/ecs/umn/en-us_image_0087906013.png differ diff --git a/ecs/umn/en-us_image_0087906055.png b/ecs/umn/en-us_image_0087906055.png new file mode 100644 index 000000000..a4e1b69df Binary files /dev/null and b/ecs/umn/en-us_image_0087906055.png differ diff --git a/ecs/umn/en-us_image_0087906067.png b/ecs/umn/en-us_image_0087906067.png new file mode 100644 index 000000000..505cd0f77 Binary files /dev/null and b/ecs/umn/en-us_image_0087906067.png differ diff --git a/ecs/umn/en-us_image_0088242234.jpg b/ecs/umn/en-us_image_0088242234.jpg new file mode 100644 index 000000000..1879e8c37 Binary files /dev/null and b/ecs/umn/en-us_image_0088242234.jpg differ diff --git a/ecs/umn/en-us_image_0093469181.png b/ecs/umn/en-us_image_0093469181.png new file mode 100644 index 000000000..713068913 Binary files /dev/null and b/ecs/umn/en-us_image_0093469181.png differ diff --git a/ecs/umn/en-us_image_0093507575.png b/ecs/umn/en-us_image_0093507575.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/ecs/umn/en-us_image_0093507575.png differ diff --git a/ecs/umn/en-us_image_0093507592.png b/ecs/umn/en-us_image_0093507592.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/ecs/umn/en-us_image_0093507592.png differ diff --git a/ecs/umn/en-us_image_0093507600.png b/ecs/umn/en-us_image_0093507600.png new file mode 100644 index 000000000..7e948a87f Binary files /dev/null and b/ecs/umn/en-us_image_0093507600.png differ diff --git a/ecs/umn/en-us_image_0093518909.png b/ecs/umn/en-us_image_0093518909.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/ecs/umn/en-us_image_0093518909.png differ diff --git a/ecs/umn/en-us_image_0094801740.png b/ecs/umn/en-us_image_0094801740.png new file mode 100644 index 000000000..6e6c1f1db Binary files /dev/null and b/ecs/umn/en-us_image_0094801740.png differ diff --git a/ecs/umn/en-us_image_0095024494.png b/ecs/umn/en-us_image_0095024494.png new file mode 100644 index 000000000..48cdcc7bd Binary files /dev/null and b/ecs/umn/en-us_image_0095024494.png differ diff --git a/ecs/umn/en-us_image_0096298046.png b/ecs/umn/en-us_image_0096298046.png new file mode 100644 index 000000000..63baa8b0a Binary files /dev/null and b/ecs/umn/en-us_image_0096298046.png differ diff --git a/ecs/umn/en-us_image_0096298123.png b/ecs/umn/en-us_image_0096298123.png new file mode 100644 index 000000000..253c7c2ba Binary files /dev/null and b/ecs/umn/en-us_image_0096298123.png differ diff --git a/ecs/umn/en-us_image_0097597141.png b/ecs/umn/en-us_image_0097597141.png new file mode 100644 index 000000000..95c8e1e1c Binary files /dev/null and b/ecs/umn/en-us_image_0097597141.png differ diff --git a/ecs/umn/en-us_image_0097597143.png b/ecs/umn/en-us_image_0097597143.png new file mode 100644 index 000000000..39b706b91 Binary files /dev/null and b/ecs/umn/en-us_image_0097597143.png differ diff --git a/ecs/umn/en-us_image_0097597145.png b/ecs/umn/en-us_image_0097597145.png new file mode 100644 index 000000000..85eee0cce Binary files /dev/null and b/ecs/umn/en-us_image_0097597145.png differ diff --git a/ecs/umn/en-us_image_0097597147.png b/ecs/umn/en-us_image_0097597147.png new file mode 100644 index 000000000..1cc4d8129 Binary files /dev/null and b/ecs/umn/en-us_image_0097597147.png differ diff --git a/ecs/umn/en-us_image_0097597149.png b/ecs/umn/en-us_image_0097597149.png new file mode 100644 index 000000000..5663a2fb6 Binary files /dev/null and b/ecs/umn/en-us_image_0097597149.png differ diff --git a/ecs/umn/en-us_image_0097597151.png b/ecs/umn/en-us_image_0097597151.png new file mode 100644 index 000000000..c6fb1fa87 Binary files /dev/null and b/ecs/umn/en-us_image_0097597151.png differ diff --git a/ecs/umn/en-us_image_0097597153.png b/ecs/umn/en-us_image_0097597153.png new file mode 100644 index 000000000..2036a6b5b Binary files /dev/null and b/ecs/umn/en-us_image_0097597153.png differ diff --git a/ecs/umn/en-us_image_0097597155.png b/ecs/umn/en-us_image_0097597155.png new file mode 100644 index 000000000..23cc5221f Binary files /dev/null and b/ecs/umn/en-us_image_0097597155.png differ diff --git a/ecs/umn/en-us_image_0107414257.png b/ecs/umn/en-us_image_0107414257.png new file mode 100644 index 000000000..b2c919177 Binary files /dev/null and b/ecs/umn/en-us_image_0107414257.png differ diff --git a/ecs/umn/en-us_image_0107415055.png b/ecs/umn/en-us_image_0107415055.png new file mode 100644 index 000000000..434a13f18 Binary files /dev/null and b/ecs/umn/en-us_image_0107415055.png differ diff --git a/ecs/umn/en-us_image_0107505891.png b/ecs/umn/en-us_image_0107505891.png new file mode 100644 index 000000000..8bfaff761 Binary files /dev/null and b/ecs/umn/en-us_image_0107505891.png differ diff --git a/ecs/umn/en-us_image_0109039483.png b/ecs/umn/en-us_image_0109039483.png new file mode 100644 index 000000000..a7247a6cf Binary files /dev/null and b/ecs/umn/en-us_image_0109039483.png differ diff --git a/ecs/umn/en-us_image_0114229858.png b/ecs/umn/en-us_image_0114229858.png new file mode 100644 index 000000000..459996df8 Binary files /dev/null and b/ecs/umn/en-us_image_0114229858.png differ diff --git a/ecs/umn/en-us_image_0115873247.png b/ecs/umn/en-us_image_0115873247.png new file mode 100644 index 000000000..a9feb62d8 Binary files /dev/null and b/ecs/umn/en-us_image_0115873247.png differ diff --git a/ecs/umn/en-us_image_0115874559.png b/ecs/umn/en-us_image_0115874559.png new file mode 100644 index 000000000..19c0c796f Binary files /dev/null and b/ecs/umn/en-us_image_0115874559.png differ diff --git a/ecs/umn/en-us_image_0115931570.png b/ecs/umn/en-us_image_0115931570.png new file mode 100644 index 000000000..310c1c9a8 Binary files /dev/null and b/ecs/umn/en-us_image_0115931570.png differ diff --git a/ecs/umn/en-us_image_0115932123.png b/ecs/umn/en-us_image_0115932123.png new file mode 100644 index 000000000..3a2df66a2 Binary files /dev/null and b/ecs/umn/en-us_image_0115932123.png differ diff --git a/ecs/umn/en-us_image_0115932873.png b/ecs/umn/en-us_image_0115932873.png new file mode 100644 index 000000000..5549ae940 Binary files /dev/null and b/ecs/umn/en-us_image_0115932873.png differ diff --git a/ecs/umn/en-us_image_0115933029.png b/ecs/umn/en-us_image_0115933029.png new file mode 100644 index 000000000..0fd6750e6 Binary files /dev/null and b/ecs/umn/en-us_image_0115933029.png differ diff --git a/ecs/umn/en-us_image_0115934291.jpg b/ecs/umn/en-us_image_0115934291.jpg new file mode 100644 index 000000000..6da7aa652 Binary files /dev/null and b/ecs/umn/en-us_image_0115934291.jpg differ diff --git a/ecs/umn/en-us_image_0116270059.jpg b/ecs/umn/en-us_image_0116270059.jpg new file mode 100644 index 000000000..7622762ed Binary files /dev/null and b/ecs/umn/en-us_image_0116270059.jpg differ diff --git a/ecs/umn/en-us_image_0117031082.png b/ecs/umn/en-us_image_0117031082.png new file mode 100644 index 000000000..3f623c125 Binary files /dev/null and b/ecs/umn/en-us_image_0117031082.png differ diff --git a/ecs/umn/en-us_image_0117031548.gif b/ecs/umn/en-us_image_0117031548.gif new file mode 100644 index 000000000..cbe3d57f0 Binary files /dev/null and b/ecs/umn/en-us_image_0117031548.gif differ diff --git a/ecs/umn/en-us_image_0117334497.png b/ecs/umn/en-us_image_0117334497.png new file mode 100644 index 000000000..0341d47a5 Binary files /dev/null and b/ecs/umn/en-us_image_0117334497.png differ diff --git a/ecs/umn/en-us_image_0120795776.jpg b/ecs/umn/en-us_image_0120795776.jpg new file mode 100644 index 000000000..38923b44b Binary files /dev/null and b/ecs/umn/en-us_image_0120795776.jpg differ diff --git a/ecs/umn/en-us_image_0120795935.png b/ecs/umn/en-us_image_0120795935.png new file mode 100644 index 000000000..bea1eef3a Binary files /dev/null and b/ecs/umn/en-us_image_0120795935.png differ diff --git a/ecs/umn/en-us_image_0120795956.png b/ecs/umn/en-us_image_0120795956.png new file mode 100644 index 000000000..50a6fad08 Binary files /dev/null and b/ecs/umn/en-us_image_0120795956.png differ diff --git a/ecs/umn/en-us_image_0121090576.png b/ecs/umn/en-us_image_0121090576.png new file mode 100644 index 000000000..39c87307f Binary files /dev/null and b/ecs/umn/en-us_image_0121090576.png differ diff --git a/ecs/umn/en-us_image_0121682272.png b/ecs/umn/en-us_image_0121682272.png new file mode 100644 index 000000000..e063f6658 Binary files /dev/null and b/ecs/umn/en-us_image_0121682272.png differ diff --git a/ecs/umn/en-us_image_0121682390.png b/ecs/umn/en-us_image_0121682390.png new file mode 100644 index 000000000..9b152582d Binary files /dev/null and b/ecs/umn/en-us_image_0121682390.png differ diff --git a/ecs/umn/en-us_image_0121682392.png b/ecs/umn/en-us_image_0121682392.png new file mode 100644 index 000000000..4ae74dbd7 Binary files /dev/null and b/ecs/umn/en-us_image_0121682392.png differ diff --git a/ecs/umn/en-us_image_0121682580.png b/ecs/umn/en-us_image_0121682580.png new file mode 100644 index 000000000..176bb422b Binary files /dev/null and b/ecs/umn/en-us_image_0121682580.png differ diff --git a/ecs/umn/en-us_image_0121682602.png b/ecs/umn/en-us_image_0121682602.png new file mode 100644 index 000000000..9cbb5ac20 Binary files /dev/null and b/ecs/umn/en-us_image_0121682602.png differ diff --git a/ecs/umn/en-us_image_0122999741.png b/ecs/umn/en-us_image_0122999741.png new file mode 100644 index 000000000..faf01e796 Binary files /dev/null and b/ecs/umn/en-us_image_0122999741.png differ diff --git a/ecs/umn/en-us_image_0123386277.jpg b/ecs/umn/en-us_image_0123386277.jpg new file mode 100644 index 000000000..9946745ad Binary files /dev/null and b/ecs/umn/en-us_image_0123386277.jpg differ diff --git a/ecs/umn/en-us_image_0123417484.jpg b/ecs/umn/en-us_image_0123417484.jpg new file mode 100644 index 000000000..c1065b0ac Binary files /dev/null and b/ecs/umn/en-us_image_0123417484.jpg differ diff --git a/ecs/umn/en-us_image_0126402833.png b/ecs/umn/en-us_image_0126402833.png new file mode 100644 index 000000000..cced0a1ea Binary files /dev/null and b/ecs/umn/en-us_image_0126402833.png differ diff --git a/ecs/umn/en-us_image_0128851405.png b/ecs/umn/en-us_image_0128851405.png new file mode 100644 index 000000000..484b76701 Binary files /dev/null and b/ecs/umn/en-us_image_0128851405.png differ diff --git a/ecs/umn/en-us_image_0128851444.png b/ecs/umn/en-us_image_0128851444.png new file mode 100644 index 000000000..484b76701 Binary files /dev/null and b/ecs/umn/en-us_image_0128851444.png differ diff --git a/ecs/umn/en-us_image_0128851621.png b/ecs/umn/en-us_image_0128851621.png new file mode 100644 index 000000000..484b76701 Binary files /dev/null and b/ecs/umn/en-us_image_0128851621.png differ diff --git a/ecs/umn/en-us_image_0128851717.png b/ecs/umn/en-us_image_0128851717.png new file mode 100644 index 000000000..14d158890 Binary files /dev/null and b/ecs/umn/en-us_image_0128851717.png differ diff --git a/ecs/umn/en-us_image_0132359404.png b/ecs/umn/en-us_image_0132359404.png new file mode 100644 index 000000000..3e864f5b5 Binary files /dev/null and b/ecs/umn/en-us_image_0132359404.png differ diff --git a/ecs/umn/en-us_image_0132360430.png b/ecs/umn/en-us_image_0132360430.png new file mode 100644 index 000000000..caf35a81a Binary files /dev/null and b/ecs/umn/en-us_image_0132360430.png differ diff --git a/ecs/umn/en-us_image_0132368216.png b/ecs/umn/en-us_image_0132368216.png new file mode 100644 index 000000000..11698423b Binary files /dev/null and b/ecs/umn/en-us_image_0132368216.png differ diff --git a/ecs/umn/en-us_image_0142359884.png b/ecs/umn/en-us_image_0142359884.png new file mode 100644 index 000000000..32461aa13 Binary files /dev/null and b/ecs/umn/en-us_image_0142359884.png differ diff --git a/ecs/umn/en-us_image_0142360062.png b/ecs/umn/en-us_image_0142360062.png new file mode 100644 index 000000000..f5a39cdd6 Binary files /dev/null and b/ecs/umn/en-us_image_0142360062.png differ diff --git a/ecs/umn/en-us_image_0146087803.png b/ecs/umn/en-us_image_0146087803.png new file mode 100644 index 000000000..7dda69bc5 Binary files /dev/null and b/ecs/umn/en-us_image_0146087803.png differ diff --git a/ecs/umn/en-us_image_0152727234.png b/ecs/umn/en-us_image_0152727234.png new file mode 100644 index 000000000..35e283157 Binary files /dev/null and b/ecs/umn/en-us_image_0152727234.png differ diff --git a/ecs/umn/en-us_image_0152768827.png b/ecs/umn/en-us_image_0152768827.png new file mode 100644 index 000000000..db3f3d483 Binary files /dev/null and b/ecs/umn/en-us_image_0152768827.png differ diff --git a/ecs/umn/en-us_image_0157904965.png b/ecs/umn/en-us_image_0157904965.png new file mode 100644 index 000000000..3ccea99ea Binary files /dev/null and b/ecs/umn/en-us_image_0157904965.png differ diff --git a/ecs/umn/en-us_image_0159943784.png b/ecs/umn/en-us_image_0159943784.png new file mode 100644 index 000000000..0da583296 Binary files /dev/null and b/ecs/umn/en-us_image_0159943784.png differ diff --git a/ecs/umn/en-us_image_0166287336.png b/ecs/umn/en-us_image_0166287336.png new file mode 100644 index 000000000..137a02de8 Binary files /dev/null and b/ecs/umn/en-us_image_0166287336.png differ diff --git a/ecs/umn/en-us_image_0166287347.png b/ecs/umn/en-us_image_0166287347.png new file mode 100644 index 000000000..ef839dd70 Binary files /dev/null and b/ecs/umn/en-us_image_0166287347.png differ diff --git a/ecs/umn/en-us_image_0166287348.png b/ecs/umn/en-us_image_0166287348.png new file mode 100644 index 000000000..aef3ea924 Binary files /dev/null and b/ecs/umn/en-us_image_0166287348.png differ diff --git a/ecs/umn/en-us_image_0166287349.png b/ecs/umn/en-us_image_0166287349.png new file mode 100644 index 000000000..310c58625 Binary files /dev/null and b/ecs/umn/en-us_image_0166287349.png differ diff --git a/ecs/umn/en-us_image_0166287351.png b/ecs/umn/en-us_image_0166287351.png new file mode 100644 index 000000000..b69362859 Binary files /dev/null and b/ecs/umn/en-us_image_0166287351.png differ diff --git a/ecs/umn/en-us_image_0166736726.png b/ecs/umn/en-us_image_0166736726.png new file mode 100644 index 000000000..4e11ae0bf Binary files /dev/null and b/ecs/umn/en-us_image_0166736726.png differ diff --git a/ecs/umn/en-us_image_0166755236.png b/ecs/umn/en-us_image_0166755236.png new file mode 100644 index 000000000..270e4532a Binary files /dev/null and b/ecs/umn/en-us_image_0166755236.png differ diff --git a/ecs/umn/en-us_image_0166945975.png b/ecs/umn/en-us_image_0166945975.png new file mode 100644 index 000000000..a5312bb34 Binary files /dev/null and b/ecs/umn/en-us_image_0166945975.png differ diff --git a/ecs/umn/en-us_image_0166947771.png b/ecs/umn/en-us_image_0166947771.png new file mode 100644 index 000000000..9481e00c8 Binary files /dev/null and b/ecs/umn/en-us_image_0166947771.png differ diff --git a/ecs/umn/en-us_image_0166947775.png b/ecs/umn/en-us_image_0166947775.png new file mode 100644 index 000000000..97e1da1d9 Binary files /dev/null and b/ecs/umn/en-us_image_0166947775.png differ diff --git a/ecs/umn/en-us_image_0167110971.png b/ecs/umn/en-us_image_0167110971.png new file mode 100644 index 000000000..71acfabbc Binary files /dev/null and b/ecs/umn/en-us_image_0167110971.png differ diff --git a/ecs/umn/en-us_image_0167295759.png b/ecs/umn/en-us_image_0167295759.png new file mode 100644 index 000000000..d0da80610 Binary files /dev/null and b/ecs/umn/en-us_image_0167295759.png differ diff --git a/ecs/umn/en-us_image_0171575801.png b/ecs/umn/en-us_image_0171575801.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/ecs/umn/en-us_image_0171575801.png differ diff --git a/ecs/umn/en-us_image_0171674763.png b/ecs/umn/en-us_image_0171674763.png new file mode 100644 index 000000000..310f30919 Binary files /dev/null and b/ecs/umn/en-us_image_0171674763.png differ diff --git a/ecs/umn/en-us_image_0172453607.png b/ecs/umn/en-us_image_0172453607.png new file mode 100644 index 000000000..9afc2ca0d Binary files /dev/null and b/ecs/umn/en-us_image_0172453607.png differ diff --git a/ecs/umn/en-us_image_0174076025.png b/ecs/umn/en-us_image_0174076025.png new file mode 100644 index 000000000..86a72fb6e Binary files /dev/null and b/ecs/umn/en-us_image_0174076025.png differ diff --git a/ecs/umn/en-us_image_0175083503.png b/ecs/umn/en-us_image_0175083503.png new file mode 100644 index 000000000..7f80d998d Binary files /dev/null and b/ecs/umn/en-us_image_0175083503.png differ diff --git a/ecs/umn/en-us_image_0175083504.png b/ecs/umn/en-us_image_0175083504.png new file mode 100644 index 000000000..1e591003d Binary files /dev/null and b/ecs/umn/en-us_image_0175083504.png differ diff --git a/ecs/umn/en-us_image_0175083507.png b/ecs/umn/en-us_image_0175083507.png new file mode 100644 index 000000000..b2f4f1f82 Binary files /dev/null and b/ecs/umn/en-us_image_0175083507.png differ diff --git a/ecs/umn/en-us_image_0175083508.png b/ecs/umn/en-us_image_0175083508.png new file mode 100644 index 000000000..a248f9a38 Binary files /dev/null and b/ecs/umn/en-us_image_0175083508.png differ diff --git a/ecs/umn/en-us_image_0175083509.png b/ecs/umn/en-us_image_0175083509.png new file mode 100644 index 000000000..0e734750c Binary files /dev/null and b/ecs/umn/en-us_image_0175083509.png differ diff --git a/ecs/umn/en-us_image_0175083510.png b/ecs/umn/en-us_image_0175083510.png new file mode 100644 index 000000000..f7465ad17 Binary files /dev/null and b/ecs/umn/en-us_image_0175083510.png differ diff --git a/ecs/umn/en-us_image_0175083511.png b/ecs/umn/en-us_image_0175083511.png new file mode 100644 index 000000000..e0db172fc Binary files /dev/null and b/ecs/umn/en-us_image_0175083511.png differ diff --git a/ecs/umn/en-us_image_0175083512.png b/ecs/umn/en-us_image_0175083512.png new file mode 100644 index 000000000..cf9abaa9f Binary files /dev/null and b/ecs/umn/en-us_image_0175083512.png differ diff --git a/ecs/umn/en-us_image_0175083513.png b/ecs/umn/en-us_image_0175083513.png new file mode 100644 index 000000000..55cd3fb1c Binary files /dev/null and b/ecs/umn/en-us_image_0175083513.png differ diff --git a/ecs/umn/en-us_image_0175083515.png b/ecs/umn/en-us_image_0175083515.png new file mode 100644 index 000000000..e93f9d9f3 Binary files /dev/null and b/ecs/umn/en-us_image_0175083515.png differ diff --git a/ecs/umn/en-us_image_0178069404.png b/ecs/umn/en-us_image_0178069404.png new file mode 100644 index 000000000..de96fb6ea Binary files /dev/null and b/ecs/umn/en-us_image_0178069404.png differ diff --git a/ecs/umn/en-us_image_0178325096.png b/ecs/umn/en-us_image_0178325096.png new file mode 100644 index 000000000..87d5c0cc3 Binary files /dev/null and b/ecs/umn/en-us_image_0178325096.png differ diff --git a/ecs/umn/en-us_image_0178334448.png b/ecs/umn/en-us_image_0178334448.png new file mode 100644 index 000000000..866180f4e Binary files /dev/null and b/ecs/umn/en-us_image_0178334448.png differ diff --git a/ecs/umn/en-us_image_0178334449.png b/ecs/umn/en-us_image_0178334449.png new file mode 100644 index 000000000..8aef91bf2 Binary files /dev/null and b/ecs/umn/en-us_image_0178334449.png differ diff --git a/ecs/umn/en-us_image_0178334450.png b/ecs/umn/en-us_image_0178334450.png new file mode 100644 index 000000000..1cf3ddabb Binary files /dev/null and b/ecs/umn/en-us_image_0178334450.png differ diff --git a/ecs/umn/en-us_image_0178370293.png b/ecs/umn/en-us_image_0178370293.png new file mode 100644 index 000000000..dca03ed17 Binary files /dev/null and b/ecs/umn/en-us_image_0178370293.png differ diff --git a/ecs/umn/en-us_image_0178475901.png b/ecs/umn/en-us_image_0178475901.png new file mode 100644 index 000000000..1a68ec1f2 Binary files /dev/null and b/ecs/umn/en-us_image_0178475901.png differ diff --git a/ecs/umn/en-us_image_0178890066.png b/ecs/umn/en-us_image_0178890066.png new file mode 100644 index 000000000..30f3e696f Binary files /dev/null and b/ecs/umn/en-us_image_0178890066.png differ diff --git a/ecs/umn/en-us_image_0182087025.png b/ecs/umn/en-us_image_0182087025.png new file mode 100644 index 000000000..6e549298f Binary files /dev/null and b/ecs/umn/en-us_image_0182087025.png differ diff --git a/ecs/umn/en-us_image_0183030460.png b/ecs/umn/en-us_image_0183030460.png new file mode 100644 index 000000000..348ad49f5 Binary files /dev/null and b/ecs/umn/en-us_image_0183030460.png differ diff --git a/ecs/umn/en-us_image_0184026531.png b/ecs/umn/en-us_image_0184026531.png new file mode 100644 index 000000000..1303a51c2 Binary files /dev/null and b/ecs/umn/en-us_image_0184026531.png differ diff --git a/ecs/umn/en-us_image_0188029785.png b/ecs/umn/en-us_image_0188029785.png new file mode 100644 index 000000000..847d0a774 Binary files /dev/null and b/ecs/umn/en-us_image_0188029785.png differ diff --git a/ecs/umn/en-us_image_0193026956.png b/ecs/umn/en-us_image_0193026956.png new file mode 100644 index 000000000..8a64c3072 Binary files /dev/null and b/ecs/umn/en-us_image_0193026956.png differ diff --git a/ecs/umn/en-us_image_0201100229.png b/ecs/umn/en-us_image_0201100229.png new file mode 100644 index 000000000..2a3256bce Binary files /dev/null and b/ecs/umn/en-us_image_0201100229.png differ diff --git a/ecs/umn/en-us_image_0201103161.png b/ecs/umn/en-us_image_0201103161.png new file mode 100644 index 000000000..2a3256bce Binary files /dev/null and b/ecs/umn/en-us_image_0201103161.png differ diff --git a/ecs/umn/en-us_image_0201719710.png b/ecs/umn/en-us_image_0201719710.png new file mode 100644 index 000000000..ab5f1d257 Binary files /dev/null and b/ecs/umn/en-us_image_0201719710.png differ diff --git a/ecs/umn/en-us_image_0201719715.png b/ecs/umn/en-us_image_0201719715.png new file mode 100644 index 000000000..92271cc5b Binary files /dev/null and b/ecs/umn/en-us_image_0201719715.png differ diff --git a/ecs/umn/en-us_image_0202311481.gif b/ecs/umn/en-us_image_0202311481.gif new file mode 100644 index 000000000..b9ecb1be1 Binary files /dev/null and b/ecs/umn/en-us_image_0202311481.gif differ diff --git a/ecs/umn/en-us_image_0202311491.gif b/ecs/umn/en-us_image_0202311491.gif new file mode 100644 index 000000000..a27068140 Binary files /dev/null and b/ecs/umn/en-us_image_0202311491.gif differ diff --git a/ecs/umn/en-us_image_0210779229.png b/ecs/umn/en-us_image_0210779229.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/ecs/umn/en-us_image_0210779229.png differ diff --git a/ecs/umn/en-us_image_0210875480.png b/ecs/umn/en-us_image_0210875480.png new file mode 100644 index 000000000..dda6c0550 Binary files /dev/null and b/ecs/umn/en-us_image_0210875480.png differ diff --git a/ecs/umn/en-us_image_0210875481.png b/ecs/umn/en-us_image_0210875481.png new file mode 100644 index 000000000..960de0f20 Binary files /dev/null and b/ecs/umn/en-us_image_0210875481.png differ diff --git a/ecs/umn/en-us_image_0210875482.png b/ecs/umn/en-us_image_0210875482.png new file mode 100644 index 000000000..fc7e643eb Binary files /dev/null and b/ecs/umn/en-us_image_0210875482.png differ diff --git a/ecs/umn/en-us_image_0210875483.png b/ecs/umn/en-us_image_0210875483.png new file mode 100644 index 000000000..c4c001848 Binary files /dev/null and b/ecs/umn/en-us_image_0210875483.png differ diff --git a/ecs/umn/en-us_image_0214947577.png b/ecs/umn/en-us_image_0214947577.png new file mode 100644 index 000000000..01adef13e Binary files /dev/null and b/ecs/umn/en-us_image_0214947577.png differ diff --git a/ecs/umn/en-us_image_0214947578.png b/ecs/umn/en-us_image_0214947578.png new file mode 100644 index 000000000..04658979f Binary files /dev/null and b/ecs/umn/en-us_image_0214947578.png differ diff --git a/ecs/umn/en-us_image_0214947579.png b/ecs/umn/en-us_image_0214947579.png new file mode 100644 index 000000000..be9eba8eb Binary files /dev/null and b/ecs/umn/en-us_image_0214947579.png differ diff --git a/ecs/umn/en-us_image_0214947580.png b/ecs/umn/en-us_image_0214947580.png new file mode 100644 index 000000000..01adef13e Binary files /dev/null and b/ecs/umn/en-us_image_0214947580.png differ diff --git a/ecs/umn/en-us_image_0214947581.png b/ecs/umn/en-us_image_0214947581.png new file mode 100644 index 000000000..06d021140 Binary files /dev/null and b/ecs/umn/en-us_image_0214947581.png differ diff --git a/ecs/umn/en-us_image_0214947582.png b/ecs/umn/en-us_image_0214947582.png new file mode 100644 index 000000000..6de22b005 Binary files /dev/null and b/ecs/umn/en-us_image_0214947582.png differ diff --git a/ecs/umn/en-us_image_0214947583.png b/ecs/umn/en-us_image_0214947583.png new file mode 100644 index 000000000..422409077 Binary files /dev/null and b/ecs/umn/en-us_image_0214947583.png differ diff --git a/ecs/umn/en-us_image_0216898618.png b/ecs/umn/en-us_image_0216898618.png new file mode 100644 index 000000000..5470dea07 Binary files /dev/null and b/ecs/umn/en-us_image_0216898618.png differ diff --git a/ecs/umn/en-us_image_0224317546.png b/ecs/umn/en-us_image_0224317546.png new file mode 100644 index 000000000..2fbd228f9 Binary files /dev/null and b/ecs/umn/en-us_image_0224317546.png differ diff --git a/ecs/umn/en-us_image_0225439857.png b/ecs/umn/en-us_image_0225439857.png new file mode 100644 index 000000000..873040959 Binary files /dev/null and b/ecs/umn/en-us_image_0225439857.png differ diff --git a/ecs/umn/en-us_image_0234354896.png b/ecs/umn/en-us_image_0234354896.png new file mode 100644 index 000000000..ce57b9d9e Binary files /dev/null and b/ecs/umn/en-us_image_0234354896.png differ diff --git a/ecs/umn/en-us_image_0234354931.png b/ecs/umn/en-us_image_0234354931.png new file mode 100644 index 000000000..8cfc6acc9 Binary files /dev/null and b/ecs/umn/en-us_image_0234354931.png differ diff --git a/ecs/umn/en-us_image_0234355284.png b/ecs/umn/en-us_image_0234355284.png new file mode 100644 index 000000000..1c0b8459b Binary files /dev/null and b/ecs/umn/en-us_image_0234355284.png differ diff --git a/ecs/umn/en-us_image_0234355299.png b/ecs/umn/en-us_image_0234355299.png new file mode 100644 index 000000000..95c24534b Binary files /dev/null and b/ecs/umn/en-us_image_0234355299.png differ diff --git a/ecs/umn/en-us_image_0234355305.png b/ecs/umn/en-us_image_0234355305.png new file mode 100644 index 000000000..68b2271bc Binary files /dev/null and b/ecs/umn/en-us_image_0234355305.png differ diff --git a/ecs/umn/en-us_image_0234356929.png b/ecs/umn/en-us_image_0234356929.png new file mode 100644 index 000000000..1b482dd1f Binary files /dev/null and b/ecs/umn/en-us_image_0234356929.png differ diff --git a/ecs/umn/en-us_image_0234356990.png b/ecs/umn/en-us_image_0234356990.png new file mode 100644 index 000000000..33e9cdfaa Binary files /dev/null and b/ecs/umn/en-us_image_0234356990.png differ diff --git a/ecs/umn/en-us_image_0234357031.png b/ecs/umn/en-us_image_0234357031.png new file mode 100644 index 000000000..29453d10c Binary files /dev/null and b/ecs/umn/en-us_image_0234357031.png differ diff --git a/ecs/umn/en-us_image_0234357053.png b/ecs/umn/en-us_image_0234357053.png new file mode 100644 index 000000000..e409d0ecb Binary files /dev/null and b/ecs/umn/en-us_image_0234357053.png differ diff --git a/ecs/umn/en-us_image_0234357336.png b/ecs/umn/en-us_image_0234357336.png new file mode 100644 index 000000000..d280de13a Binary files /dev/null and b/ecs/umn/en-us_image_0234357336.png differ diff --git a/ecs/umn/en-us_image_0234357355.png b/ecs/umn/en-us_image_0234357355.png new file mode 100644 index 000000000..ce05b6cf1 Binary files /dev/null and b/ecs/umn/en-us_image_0234357355.png differ diff --git a/ecs/umn/en-us_image_0234357365.png b/ecs/umn/en-us_image_0234357365.png new file mode 100644 index 000000000..36dc20f60 Binary files /dev/null and b/ecs/umn/en-us_image_0234357365.png differ diff --git a/ecs/umn/en-us_image_0234357385.png b/ecs/umn/en-us_image_0234357385.png new file mode 100644 index 000000000..2d149aed8 Binary files /dev/null and b/ecs/umn/en-us_image_0234357385.png differ diff --git a/ecs/umn/en-us_image_0234358619.png b/ecs/umn/en-us_image_0234358619.png new file mode 100644 index 000000000..bf3fdc05b Binary files /dev/null and b/ecs/umn/en-us_image_0234358619.png differ diff --git a/ecs/umn/en-us_image_0234358634.png b/ecs/umn/en-us_image_0234358634.png new file mode 100644 index 000000000..10f8daa96 Binary files /dev/null and b/ecs/umn/en-us_image_0234358634.png differ diff --git a/ecs/umn/en-us_image_0234358642.png b/ecs/umn/en-us_image_0234358642.png new file mode 100644 index 000000000..8e1494e8b Binary files /dev/null and b/ecs/umn/en-us_image_0234358642.png differ diff --git a/ecs/umn/en-us_image_0234358704.png b/ecs/umn/en-us_image_0234358704.png new file mode 100644 index 000000000..cd460964e Binary files /dev/null and b/ecs/umn/en-us_image_0234358704.png differ diff --git a/ecs/umn/en-us_image_0234358719.png b/ecs/umn/en-us_image_0234358719.png new file mode 100644 index 000000000..d8afec445 Binary files /dev/null and b/ecs/umn/en-us_image_0234358719.png differ diff --git a/ecs/umn/en-us_image_0234358804.png b/ecs/umn/en-us_image_0234358804.png new file mode 100644 index 000000000..d4ea373fb Binary files /dev/null and b/ecs/umn/en-us_image_0234358804.png differ diff --git a/ecs/umn/en-us_image_0234360248.png b/ecs/umn/en-us_image_0234360248.png new file mode 100644 index 000000000..52acab4f9 Binary files /dev/null and b/ecs/umn/en-us_image_0234360248.png differ diff --git a/ecs/umn/en-us_image_0234360255.png b/ecs/umn/en-us_image_0234360255.png new file mode 100644 index 000000000..9a08f06ce Binary files /dev/null and b/ecs/umn/en-us_image_0234360255.png differ diff --git a/ecs/umn/en-us_image_0234360274.png b/ecs/umn/en-us_image_0234360274.png new file mode 100644 index 000000000..7afa8709c Binary files /dev/null and b/ecs/umn/en-us_image_0234360274.png differ diff --git a/ecs/umn/en-us_image_0234360293.png b/ecs/umn/en-us_image_0234360293.png new file mode 100644 index 000000000..72a2991c9 Binary files /dev/null and b/ecs/umn/en-us_image_0234360293.png differ diff --git a/ecs/umn/en-us_image_0237026761.png b/ecs/umn/en-us_image_0237026761.png new file mode 100644 index 000000000..65e0133df Binary files /dev/null and b/ecs/umn/en-us_image_0237026761.png differ diff --git a/ecs/umn/en-us_image_0238263336.png b/ecs/umn/en-us_image_0238263336.png new file mode 100644 index 000000000..a503fad87 Binary files /dev/null and b/ecs/umn/en-us_image_0238263336.png differ diff --git a/ecs/umn/en-us_image_0240710552.png b/ecs/umn/en-us_image_0240710552.png new file mode 100644 index 000000000..9b54e98c5 Binary files /dev/null and b/ecs/umn/en-us_image_0240710552.png differ diff --git a/ecs/umn/en-us_image_0240710554.png b/ecs/umn/en-us_image_0240710554.png new file mode 100644 index 000000000..da9ee3cf4 Binary files /dev/null and b/ecs/umn/en-us_image_0240710554.png differ diff --git a/ecs/umn/en-us_image_0240710555.png b/ecs/umn/en-us_image_0240710555.png new file mode 100644 index 000000000..cfc39b443 Binary files /dev/null and b/ecs/umn/en-us_image_0240710555.png differ diff --git a/ecs/umn/en-us_image_0240710556.png b/ecs/umn/en-us_image_0240710556.png new file mode 100644 index 000000000..9cbd8bc9d Binary files /dev/null and b/ecs/umn/en-us_image_0240710556.png differ diff --git a/ecs/umn/en-us_image_0240711431.png b/ecs/umn/en-us_image_0240711431.png new file mode 100644 index 000000000..6d22d5fd8 Binary files /dev/null and b/ecs/umn/en-us_image_0240711431.png differ diff --git a/ecs/umn/en-us_image_0240714761.png b/ecs/umn/en-us_image_0240714761.png new file mode 100644 index 000000000..948fde288 Binary files /dev/null and b/ecs/umn/en-us_image_0240714761.png differ diff --git a/ecs/umn/en-us_image_0244856480.png b/ecs/umn/en-us_image_0244856480.png new file mode 100644 index 000000000..41a58d4fb Binary files /dev/null and b/ecs/umn/en-us_image_0244856480.png differ diff --git a/ecs/umn/en-us_image_0244859999.png b/ecs/umn/en-us_image_0244859999.png new file mode 100644 index 000000000..8147f9bd1 Binary files /dev/null and b/ecs/umn/en-us_image_0244859999.png differ diff --git a/ecs/umn/en-us_image_0244860550.png b/ecs/umn/en-us_image_0244860550.png new file mode 100644 index 000000000..dfbc1355e Binary files /dev/null and b/ecs/umn/en-us_image_0244860550.png differ diff --git a/ecs/umn/en-us_image_0247293312.png b/ecs/umn/en-us_image_0247293312.png new file mode 100644 index 000000000..6c00677ad Binary files /dev/null and b/ecs/umn/en-us_image_0247293312.png differ diff --git a/ecs/umn/en-us_image_0247338934.png b/ecs/umn/en-us_image_0247338934.png new file mode 100644 index 000000000..b6b55ea21 Binary files /dev/null and b/ecs/umn/en-us_image_0247338934.png differ diff --git a/ecs/umn/en-us_image_0250105611.png b/ecs/umn/en-us_image_0250105611.png new file mode 100644 index 000000000..64dc28e84 Binary files /dev/null and b/ecs/umn/en-us_image_0250105611.png differ diff --git a/ecs/umn/en-us_image_0250117342.png b/ecs/umn/en-us_image_0250117342.png new file mode 100644 index 000000000..f075e8f15 Binary files /dev/null and b/ecs/umn/en-us_image_0250117342.png differ diff --git a/ecs/umn/en-us_image_0250182352.png b/ecs/umn/en-us_image_0250182352.png new file mode 100644 index 000000000..41f5da3fc Binary files /dev/null and b/ecs/umn/en-us_image_0250182352.png differ diff --git a/ecs/umn/en-us_image_0250182717.png b/ecs/umn/en-us_image_0250182717.png new file mode 100644 index 000000000..40a9d0d16 Binary files /dev/null and b/ecs/umn/en-us_image_0250182717.png differ diff --git a/ecs/umn/en-us_image_0250287387.png b/ecs/umn/en-us_image_0250287387.png new file mode 100644 index 000000000..5fe3793e5 Binary files /dev/null and b/ecs/umn/en-us_image_0250287387.png differ diff --git a/ecs/umn/en-us_image_0250287611.png b/ecs/umn/en-us_image_0250287611.png new file mode 100644 index 000000000..bcc6ddbed Binary files /dev/null and b/ecs/umn/en-us_image_0250287611.png differ diff --git a/ecs/umn/en-us_image_0250288087.png b/ecs/umn/en-us_image_0250288087.png new file mode 100644 index 000000000..4086d751c Binary files /dev/null and b/ecs/umn/en-us_image_0250288087.png differ diff --git a/ecs/umn/en-us_image_0250288371.png b/ecs/umn/en-us_image_0250288371.png new file mode 100644 index 000000000..a4badf495 Binary files /dev/null and b/ecs/umn/en-us_image_0250288371.png differ diff --git a/ecs/umn/en-us_image_0250288474.png b/ecs/umn/en-us_image_0250288474.png new file mode 100644 index 000000000..d57cbc154 Binary files /dev/null and b/ecs/umn/en-us_image_0250288474.png differ diff --git a/ecs/umn/en-us_image_0250288895.png b/ecs/umn/en-us_image_0250288895.png new file mode 100644 index 000000000..aece4f376 Binary files /dev/null and b/ecs/umn/en-us_image_0250288895.png differ diff --git a/ecs/umn/en-us_image_0250289123.png b/ecs/umn/en-us_image_0250289123.png new file mode 100644 index 000000000..2475d9640 Binary files /dev/null and b/ecs/umn/en-us_image_0250289123.png differ diff --git a/ecs/umn/en-us_image_0251063932.png b/ecs/umn/en-us_image_0251063932.png new file mode 100644 index 000000000..22364d30b Binary files /dev/null and b/ecs/umn/en-us_image_0251063932.png differ diff --git a/ecs/umn/en-us_image_0253037157.png b/ecs/umn/en-us_image_0253037157.png new file mode 100644 index 000000000..93e1c60b8 Binary files /dev/null and b/ecs/umn/en-us_image_0253037157.png differ diff --git a/ecs/umn/en-us_image_0260575520.png b/ecs/umn/en-us_image_0260575520.png new file mode 100644 index 000000000..18160fe48 Binary files /dev/null and b/ecs/umn/en-us_image_0260575520.png differ diff --git a/ecs/umn/en-us_image_0260575521.png b/ecs/umn/en-us_image_0260575521.png new file mode 100644 index 000000000..e8bffa237 Binary files /dev/null and b/ecs/umn/en-us_image_0260575521.png differ diff --git a/ecs/umn/en-us_image_0263796649.png b/ecs/umn/en-us_image_0263796649.png new file mode 100644 index 000000000..0ca1db14a Binary files /dev/null and b/ecs/umn/en-us_image_0263796649.png differ diff --git a/ecs/umn/en-us_image_0263796651.png b/ecs/umn/en-us_image_0263796651.png new file mode 100644 index 000000000..56820efc4 Binary files /dev/null and b/ecs/umn/en-us_image_0263796651.png differ diff --git a/ecs/umn/en-us_image_0263798009.png b/ecs/umn/en-us_image_0263798009.png new file mode 100644 index 000000000..4c49c9f3d Binary files /dev/null and b/ecs/umn/en-us_image_0263798009.png differ diff --git a/ecs/umn/en-us_image_0263798010.png b/ecs/umn/en-us_image_0263798010.png new file mode 100644 index 000000000..1b26815a8 Binary files /dev/null and b/ecs/umn/en-us_image_0263798010.png differ diff --git a/ecs/umn/en-us_image_0263798011.png b/ecs/umn/en-us_image_0263798011.png new file mode 100644 index 000000000..a0bc6f498 Binary files /dev/null and b/ecs/umn/en-us_image_0263798011.png differ diff --git a/ecs/umn/en-us_image_0263798012.png b/ecs/umn/en-us_image_0263798012.png new file mode 100644 index 000000000..13005a081 Binary files /dev/null and b/ecs/umn/en-us_image_0263798012.png differ diff --git a/ecs/umn/en-us_image_0263806339.png b/ecs/umn/en-us_image_0263806339.png new file mode 100644 index 000000000..927c00aeb Binary files /dev/null and b/ecs/umn/en-us_image_0263806339.png differ diff --git a/ecs/umn/en-us_image_0267133745.png b/ecs/umn/en-us_image_0267133745.png new file mode 100644 index 000000000..281e98f7a Binary files /dev/null and b/ecs/umn/en-us_image_0267133745.png differ diff --git a/ecs/umn/en-us_image_0268824628.png b/ecs/umn/en-us_image_0268824628.png new file mode 100644 index 000000000..b86de449c Binary files /dev/null and b/ecs/umn/en-us_image_0268824628.png differ diff --git a/ecs/umn/en-us_image_0268825353.png b/ecs/umn/en-us_image_0268825353.png new file mode 100644 index 000000000..858e3d28b Binary files /dev/null and b/ecs/umn/en-us_image_0268825353.png differ diff --git a/ecs/umn/en-us_image_0268826092.png b/ecs/umn/en-us_image_0268826092.png new file mode 100644 index 000000000..c5374b813 Binary files /dev/null and b/ecs/umn/en-us_image_0268826092.png differ diff --git a/ecs/umn/en-us_image_0272917695.png b/ecs/umn/en-us_image_0272917695.png new file mode 100644 index 000000000..6aaa5e7cc Binary files /dev/null and b/ecs/umn/en-us_image_0272917695.png differ diff --git a/ecs/umn/en-us_image_0272919399.png b/ecs/umn/en-us_image_0272919399.png new file mode 100644 index 000000000..d37b337eb Binary files /dev/null and b/ecs/umn/en-us_image_0272919399.png differ diff --git a/ecs/umn/en-us_image_0272919409.png b/ecs/umn/en-us_image_0272919409.png new file mode 100644 index 000000000..6a0079044 Binary files /dev/null and b/ecs/umn/en-us_image_0272919409.png differ diff --git a/ecs/umn/en-us_image_0275513364.png b/ecs/umn/en-us_image_0275513364.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/ecs/umn/en-us_image_0275513364.png differ diff --git a/ecs/umn/en-us_image_0275724694.png b/ecs/umn/en-us_image_0275724694.png new file mode 100644 index 000000000..6aa77b8ae Binary files /dev/null and b/ecs/umn/en-us_image_0275724694.png differ diff --git a/ecs/umn/en-us_image_0275726221.png b/ecs/umn/en-us_image_0275726221.png new file mode 100644 index 000000000..f98b37cc6 Binary files /dev/null and b/ecs/umn/en-us_image_0275726221.png differ diff --git a/ecs/umn/en-us_image_0276033982.png b/ecs/umn/en-us_image_0276033982.png new file mode 100644 index 000000000..c0f28118e Binary files /dev/null and b/ecs/umn/en-us_image_0276033982.png differ diff --git a/ecs/umn/en-us_image_0277132897.png b/ecs/umn/en-us_image_0277132897.png new file mode 100644 index 000000000..9b227b8f5 Binary files /dev/null and b/ecs/umn/en-us_image_0277132897.png differ diff --git a/ecs/umn/en-us_image_0281771106.png b/ecs/umn/en-us_image_0281771106.png new file mode 100644 index 000000000..1fff3ec5a Binary files /dev/null and b/ecs/umn/en-us_image_0281771106.png differ diff --git a/ecs/umn/en-us_image_0281773972.png b/ecs/umn/en-us_image_0281773972.png new file mode 100644 index 000000000..93a7cac81 Binary files /dev/null and b/ecs/umn/en-us_image_0281773972.png differ diff --git a/ecs/umn/en-us_image_0281775402.png b/ecs/umn/en-us_image_0281775402.png new file mode 100644 index 000000000..2a77b966e Binary files /dev/null and b/ecs/umn/en-us_image_0281775402.png differ diff --git a/ecs/umn/en-us_image_0284920908.png b/ecs/umn/en-us_image_0284920908.png new file mode 100644 index 000000000..6ada97c40 Binary files /dev/null and b/ecs/umn/en-us_image_0284920908.png differ diff --git a/ecs/umn/en-us_image_0284993717.png b/ecs/umn/en-us_image_0284993717.png new file mode 100644 index 000000000..f4b88a287 Binary files /dev/null and b/ecs/umn/en-us_image_0284993717.png differ diff --git a/ecs/umn/en-us_image_0288997242.png b/ecs/umn/en-us_image_0288997242.png new file mode 100644 index 000000000..b38b54151 Binary files /dev/null and b/ecs/umn/en-us_image_0288997242.png differ diff --git a/ecs/umn/en-us_image_0288997243.png b/ecs/umn/en-us_image_0288997243.png new file mode 100644 index 000000000..744c66b74 Binary files /dev/null and b/ecs/umn/en-us_image_0288997243.png differ diff --git a/ecs/umn/en-us_image_0288997244.png b/ecs/umn/en-us_image_0288997244.png new file mode 100644 index 000000000..cd9fc6763 Binary files /dev/null and b/ecs/umn/en-us_image_0288997244.png differ diff --git a/ecs/umn/en-us_image_0288997245.png b/ecs/umn/en-us_image_0288997245.png new file mode 100644 index 000000000..09fb00fb0 Binary files /dev/null and b/ecs/umn/en-us_image_0288997245.png differ diff --git a/ecs/umn/en-us_image_0288997246.png b/ecs/umn/en-us_image_0288997246.png new file mode 100644 index 000000000..2872edad9 Binary files /dev/null and b/ecs/umn/en-us_image_0288997246.png differ diff --git a/ecs/umn/en-us_image_0288997248.png b/ecs/umn/en-us_image_0288997248.png new file mode 100644 index 000000000..17b46f958 Binary files /dev/null and b/ecs/umn/en-us_image_0288997248.png differ diff --git a/ecs/umn/en-us_image_0288997249.png b/ecs/umn/en-us_image_0288997249.png new file mode 100644 index 000000000..5863230fb Binary files /dev/null and b/ecs/umn/en-us_image_0288997249.png differ diff --git a/ecs/umn/en-us_image_0288997250.png b/ecs/umn/en-us_image_0288997250.png new file mode 100644 index 000000000..837c0c079 Binary files /dev/null and b/ecs/umn/en-us_image_0288997250.png differ diff --git a/ecs/umn/en-us_image_0288997257.png b/ecs/umn/en-us_image_0288997257.png new file mode 100644 index 000000000..fc19e3310 Binary files /dev/null and b/ecs/umn/en-us_image_0288997257.png differ diff --git a/ecs/umn/en-us_image_0288997258.png b/ecs/umn/en-us_image_0288997258.png new file mode 100644 index 000000000..94adafb7e Binary files /dev/null and b/ecs/umn/en-us_image_0288997258.png differ diff --git a/ecs/umn/en-us_image_0288997259.png b/ecs/umn/en-us_image_0288997259.png new file mode 100644 index 000000000..982deed7a Binary files /dev/null and b/ecs/umn/en-us_image_0288997259.png differ diff --git a/ecs/umn/en-us_image_0288997286.png b/ecs/umn/en-us_image_0288997286.png new file mode 100644 index 000000000..b56d45251 Binary files /dev/null and b/ecs/umn/en-us_image_0288997286.png differ diff --git a/ecs/umn/en-us_image_0288997287.png b/ecs/umn/en-us_image_0288997287.png new file mode 100644 index 000000000..d65744484 Binary files /dev/null and b/ecs/umn/en-us_image_0288997287.png differ diff --git a/ecs/umn/en-us_image_0288997288.png b/ecs/umn/en-us_image_0288997288.png new file mode 100644 index 000000000..574450da8 Binary files /dev/null and b/ecs/umn/en-us_image_0288997288.png differ diff --git a/ecs/umn/en-us_image_0288997289.png b/ecs/umn/en-us_image_0288997289.png new file mode 100644 index 000000000..641f7441d Binary files /dev/null and b/ecs/umn/en-us_image_0288997289.png differ diff --git a/ecs/umn/en-us_image_0288997290.png b/ecs/umn/en-us_image_0288997290.png new file mode 100644 index 000000000..5f73eb030 Binary files /dev/null and b/ecs/umn/en-us_image_0288997290.png differ diff --git a/ecs/umn/en-us_image_0288997346.png b/ecs/umn/en-us_image_0288997346.png new file mode 100644 index 000000000..ebcd02a11 Binary files /dev/null and b/ecs/umn/en-us_image_0288997346.png differ diff --git a/ecs/umn/en-us_image_0288997347.png b/ecs/umn/en-us_image_0288997347.png new file mode 100644 index 000000000..71aa3d883 Binary files /dev/null and b/ecs/umn/en-us_image_0288997347.png differ diff --git a/ecs/umn/en-us_image_0288997348.png b/ecs/umn/en-us_image_0288997348.png new file mode 100644 index 000000000..d0d513cad Binary files /dev/null and b/ecs/umn/en-us_image_0288997348.png differ diff --git a/ecs/umn/en-us_image_0288997349.png b/ecs/umn/en-us_image_0288997349.png new file mode 100644 index 000000000..c945c3cd6 Binary files /dev/null and b/ecs/umn/en-us_image_0288997349.png differ diff --git a/ecs/umn/en-us_image_0288997350.png b/ecs/umn/en-us_image_0288997350.png new file mode 100644 index 000000000..66991a18f Binary files /dev/null and b/ecs/umn/en-us_image_0288997350.png differ diff --git a/ecs/umn/en-us_image_0288997357.png b/ecs/umn/en-us_image_0288997357.png new file mode 100644 index 000000000..38fa0904b Binary files /dev/null and b/ecs/umn/en-us_image_0288997357.png differ diff --git a/ecs/umn/en-us_image_0288997370.png b/ecs/umn/en-us_image_0288997370.png new file mode 100644 index 000000000..b034d3f35 Binary files /dev/null and b/ecs/umn/en-us_image_0288997370.png differ diff --git a/ecs/umn/en-us_image_0288997371.png b/ecs/umn/en-us_image_0288997371.png new file mode 100644 index 000000000..1b8987d4d Binary files /dev/null and b/ecs/umn/en-us_image_0288997371.png differ diff --git a/ecs/umn/en-us_image_0288997372.png b/ecs/umn/en-us_image_0288997372.png new file mode 100644 index 000000000..cf4cd2ba1 Binary files /dev/null and b/ecs/umn/en-us_image_0288997372.png differ diff --git a/ecs/umn/en-us_image_0288997374.png b/ecs/umn/en-us_image_0288997374.png new file mode 100644 index 000000000..b4bba4eed Binary files /dev/null and b/ecs/umn/en-us_image_0288997374.png differ diff --git a/ecs/umn/en-us_image_0288997375.png b/ecs/umn/en-us_image_0288997375.png new file mode 100644 index 000000000..555aed802 Binary files /dev/null and b/ecs/umn/en-us_image_0288997375.png differ diff --git a/ecs/umn/en-us_image_0288997421.png b/ecs/umn/en-us_image_0288997421.png new file mode 100644 index 000000000..781df7cd1 Binary files /dev/null and b/ecs/umn/en-us_image_0288997421.png differ diff --git a/ecs/umn/en-us_image_0288997423.png b/ecs/umn/en-us_image_0288997423.png new file mode 100644 index 000000000..b9af49335 Binary files /dev/null and b/ecs/umn/en-us_image_0288997423.png differ diff --git a/ecs/umn/en-us_image_0288997424.png b/ecs/umn/en-us_image_0288997424.png new file mode 100644 index 000000000..13c5574dc Binary files /dev/null and b/ecs/umn/en-us_image_0288997424.png differ diff --git a/ecs/umn/en-us_image_0288997425.png b/ecs/umn/en-us_image_0288997425.png new file mode 100644 index 000000000..065f6dfe4 Binary files /dev/null and b/ecs/umn/en-us_image_0288997425.png differ diff --git a/ecs/umn/en-us_image_0288997426.png b/ecs/umn/en-us_image_0288997426.png new file mode 100644 index 000000000..92dd0fa23 Binary files /dev/null and b/ecs/umn/en-us_image_0288997426.png differ diff --git a/ecs/umn/en-us_image_0288997427.png b/ecs/umn/en-us_image_0288997427.png new file mode 100644 index 000000000..c83344b91 Binary files /dev/null and b/ecs/umn/en-us_image_0288997427.png differ diff --git a/ecs/umn/en-us_image_0288997598.png b/ecs/umn/en-us_image_0288997598.png new file mode 100644 index 000000000..f3791e200 Binary files /dev/null and b/ecs/umn/en-us_image_0288997598.png differ diff --git a/ecs/umn/en-us_image_0288997600.png b/ecs/umn/en-us_image_0288997600.png new file mode 100644 index 000000000..1d836c459 Binary files /dev/null and b/ecs/umn/en-us_image_0288997600.png differ diff --git a/ecs/umn/en-us_image_0288997602.png b/ecs/umn/en-us_image_0288997602.png new file mode 100644 index 000000000..c7fb593ef Binary files /dev/null and b/ecs/umn/en-us_image_0288997602.png differ diff --git a/ecs/umn/en-us_image_0288997604.png b/ecs/umn/en-us_image_0288997604.png new file mode 100644 index 000000000..fb41de385 Binary files /dev/null and b/ecs/umn/en-us_image_0288997604.png differ diff --git a/ecs/umn/en-us_image_0288997606.png b/ecs/umn/en-us_image_0288997606.png new file mode 100644 index 000000000..e1d6bc53b Binary files /dev/null and b/ecs/umn/en-us_image_0288997606.png differ diff --git a/ecs/umn/en-us_image_0288997608.png b/ecs/umn/en-us_image_0288997608.png new file mode 100644 index 000000000..76ad6ebb0 Binary files /dev/null and b/ecs/umn/en-us_image_0288997608.png differ diff --git a/ecs/umn/en-us_image_0288997610.png b/ecs/umn/en-us_image_0288997610.png new file mode 100644 index 000000000..1d2817e10 Binary files /dev/null and b/ecs/umn/en-us_image_0288997610.png differ diff --git a/ecs/umn/en-us_image_0288997612.png b/ecs/umn/en-us_image_0288997612.png new file mode 100644 index 000000000..d01e9470f Binary files /dev/null and b/ecs/umn/en-us_image_0288997612.png differ diff --git a/ecs/umn/en-us_image_0288997614.png b/ecs/umn/en-us_image_0288997614.png new file mode 100644 index 000000000..4e9b25ec4 Binary files /dev/null and b/ecs/umn/en-us_image_0288997614.png differ diff --git a/ecs/umn/en-us_image_0293553366.png b/ecs/umn/en-us_image_0293553366.png new file mode 100644 index 000000000..1b04407ea Binary files /dev/null and b/ecs/umn/en-us_image_0293553366.png differ diff --git a/ecs/umn/en-us_image_0295095212.png b/ecs/umn/en-us_image_0295095212.png new file mode 100644 index 000000000..ac3ab7d32 Binary files /dev/null and b/ecs/umn/en-us_image_0295095212.png differ diff --git a/ecs/umn/en-us_image_0295099198.png b/ecs/umn/en-us_image_0295099198.png new file mode 100644 index 000000000..27cfc8687 Binary files /dev/null and b/ecs/umn/en-us_image_0295099198.png differ diff --git a/ecs/umn/en-us_image_0295099237.png b/ecs/umn/en-us_image_0295099237.png new file mode 100644 index 000000000..59f81f38b Binary files /dev/null and b/ecs/umn/en-us_image_0295099237.png differ diff --git a/ecs/umn/en-us_image_0295099238.png b/ecs/umn/en-us_image_0295099238.png new file mode 100644 index 000000000..cfbd5c4ff Binary files /dev/null and b/ecs/umn/en-us_image_0295099238.png differ diff --git a/ecs/umn/en-us_image_0295099239.png b/ecs/umn/en-us_image_0295099239.png new file mode 100644 index 000000000..e8ab5f264 Binary files /dev/null and b/ecs/umn/en-us_image_0295099239.png differ diff --git a/ecs/umn/en-us_image_0295940977.png b/ecs/umn/en-us_image_0295940977.png new file mode 100644 index 000000000..848d8dcab Binary files /dev/null and b/ecs/umn/en-us_image_0295940977.png differ diff --git a/ecs/umn/en-us_image_0295940978.png b/ecs/umn/en-us_image_0295940978.png new file mode 100644 index 000000000..8e69ac172 Binary files /dev/null and b/ecs/umn/en-us_image_0295940978.png differ diff --git a/ecs/umn/en-us_image_0295941039.png b/ecs/umn/en-us_image_0295941039.png new file mode 100644 index 000000000..a41097d67 Binary files /dev/null and b/ecs/umn/en-us_image_0295941039.png differ diff --git a/ecs/umn/en-us_image_0295941040.png b/ecs/umn/en-us_image_0295941040.png new file mode 100644 index 000000000..1905ccaf2 Binary files /dev/null and b/ecs/umn/en-us_image_0295941040.png differ diff --git a/ecs/umn/en-us_image_0295941041.png b/ecs/umn/en-us_image_0295941041.png new file mode 100644 index 000000000..f11f792ac Binary files /dev/null and b/ecs/umn/en-us_image_0295941041.png differ diff --git a/ecs/umn/en-us_topic_0000001128445638.html b/ecs/umn/en-us_topic_0000001128445638.html new file mode 100644 index 000000000..6b500d61d --- /dev/null +++ b/ecs/umn/en-us_topic_0000001128445638.html @@ -0,0 +1,170 @@ + + +

    Overview

    +

    What Is CBR?

    Cloud Backup and Recovery (CBR) enables you to back up cloud servers and disks with ease. In case of a virus attack, accidental deletion, or software or hardware fault, you can restore data to any point in the past when the data was backed up.

    +

    CBR protects your services by ensuring the security and consistency of your data.

    +
    +

    What Are the Differences Between Backup, Snapshot, and Image?

    You can use the cloud server backup function to create ECSs and the cloud disk backup function to create EVS disks.

    +

    An image can be a system disk image, data disk image, or full-ECS image.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Backup Type

    +

    Backup Object

    +

    Application Scenario

    +

    Differences and Advantages

    +

    Cloud server backup

    +

    All disks (system and data disks) on an ECS

    +
    • Hacker attacks and viruses

      You can use cloud server backup to restore data to the latest backup point at which the ECS has not been affected by hacker attacks and viruses.

      +
    • Accidental data deletion

      You can use cloud server backup to restore data to the backup point prior to the accidental deletion.

      +
    • Application update errors

      You can use cloud server backup to restore data to the backup point prior to the application update.

      +
    • System breakdown

      You can use cloud server backup to restore an ECS to the backup point in time prior to system breakdown.

      +
    +

    All disks on an ECS are backed up at the same time, ensuring data consistency.

    +

    In addition, you can configure backup policies for automatic backup.

    +

    Cloud disk backup

    +

    One or more specified disks (system or data disks)

    +
    • Only data disks need to be backed up, because the system disk does not contain users' application data.

      You can use cloud disk backup to back up and restore data if an EVS disk is faulty or encounters a logical error, for example, accidental deletion, hacker attacks, and virus infection.

      +
    • Use backups as baseline data.

      After a backup policy has been set, the EVS disk data can be automatically backed up based on the policy. You can use the backups created on a timely basis as the baseline data to create new EVS disks or to restore the backup data to EVS disks.

      +
    +

    Backup data is stored in OBS, instead of disks. This ensures data restoration upon disk data loss or corruption.

    +

    Backup cost is reduced without compromising data security.

    +

    Snapshot

    +

    One or more specified disks (system or data disks)

    +
    • Routine data backup

      You can create snapshots for disks on a timely basis and use snapshots to recover your data in case that data loss or data inconsistency occurred due to misoperations, viruses, or attacks.

      +
    • Rapid data restoration

      You can create a snapshot or multiple snapshots before an application software upgrade or a service data migration. If an exception occurs during the upgrade or migration, service data can be rapidly restored to the time point when the snapshot was created.

      +

      For example, if ECS A cannot be started due to a fault occurred in system disk A, you can create disk B using an existing snapshot of system disk A and attach disk B to a properly running ECS, for example ECS B. In this case, ECS B can read the data of system disk A from the disk B.

      +
    • Rapid deployment of multiple services

      You can use a snapshot to create multiple EVS disks containing the same initial data, and these disks can be used as data resources for various services,

      +

      for example data mining, report query, and development and testing. This method protects the initial data and creates disks rapidly, meeting the diversified service data requirements.

      +
    +
    NOTE:
    • A snapshot can be rolled back only to its source disk. Rollback to another disk is not possible.
    • If you have reinstalled or changed the ECS OS, snapshots of the system disk are automatically deleted. Snapshots of the data disks can be used as usual.
    +
    +
    • The snapshot data is stored with the disk data to facilitate rapid data back up and restoration.
    • You can create snapshots to rapidly save disk data as it was at specified points in time. You can also use snapshots to create new disks so that the created disks will contain the snapshot data in the beginning.
    +

    System disk image

    +

    System disk

    +
    • Rapid system recovery

      You can create a system disk image for the system disk of an ECS before OS change, application software upgrade, or service data migration. If an exception occurs during the migration, you can use the system disk image to change ECS OS or create a new ECS.

      +
    • Rapid deployment of multiple services

      You can use a system disk image to quickly create multiple ECSs with the same OS, thereby quickly deploying services these ECSs.

      +
    +

    A system disk image can help an ECS with OS damaged to quickly change its OS.

    +

    Data disk image

    +

    Specific data disk

    +

    Rapid data replication

    +

    You can use a data disk image to create multiple EVS disks containing the same initial data, and then attach these disks to ECSs to provide data resources for multiple services.

    +

    A data disk image can replicate all data on a disk and create new EVS disks. The EVS disks can be attached to other ECSs for data replication and sharing.

    +

    Full-ECS image

    +

    All disks (system and data disks) on an ECS

    +
    • Rapid system recovery

      You can create a full-ECS image for the system disk and data disks of an ECS before OS change, application software upgrade, or service data migration. If an exception occurs during the migration, you can use the full-ECS image to change ECS OS or create a new ECS.

      +
    • Rapid deployment of multiple services

      You can use a full-ECS image to quickly create multiple ECSs with the same OS and data, thereby quickly deploying services these ECSs.

      +
    +

    A full-ECS image facilitates service migration.

    +
    +
    +
    +

    CBR Architecture

    CBR consists of backups, vaults, and policies.

    +
    • Backup

      A backup is a copy of a particular chunk of data and is usually stored elsewhere so that it may be used to restore the original data in the event of data loss. CBR supports the following backup types:

      +
      • Cloud server backup: This type of backup uses the consistency snapshot technology for disks to protect data of ECSs and BMSs. The backups of servers without deployed databases are common server backups, and those of servers with deployed databases are application-consistent backups.
      • Cloud disk backup: This type of backup provides snapshot-based data protection for EVS disks.
      +
    • Vault

      CBR uses vaults to store backups. Before creating a backup, you need to create at least one vault and associate the resource you want to back up with the vault. Then the backup of the resource is stored in the associated vault.

      +

      Vaults can be classified into two types: backup vaults and replication vaults. Backup vaults store backups, whereas replication vaults store replicas of backups.

      +

      The backups of different types of resources must be stored in different types of vaults.

      +
    • Policy

      Policies are divided into backup policies and replication policies.

      +
      • Backup policies: To perform automatic backups, configure a backup policy by setting the execution times of backup tasks, the backup cycle, and retention rules, and then apply the policy to a vault.
      • Replication policies: To automatically replicate backups or vaults, configure a replication policy by setting the execution times of replication tasks, the replication cycle, and retention rules, and then apply the policy to a vault. Replicas of backups must be stored in replication vaults.
      +
    +
    +

    Backup Mechanism

    A full backup is performed only for the first backup and backs up all used data blocks.

    +

    For example, if the size of a disk is 100 GB and the used space is 40 GB, the 40 GB of data is backed up.

    +

    An incremental backup backs up only the data changed since the last backup, which is storage- and time-efficient.

    +

    When a backup is deleted, only the data blocks that are not depended on by other backups are deleted, so that other backups can still be used for restoration. Both a full backup and an incremental backup can restore data to the state at a given backup point in time.

    +

    When creating a backup of a disk, CBR also creates a snapshot for it. Every time a new disk backup is created, CBR deletes the old snapshot and keeps only the latest snapshot.

    +

    CBR stores backup data in OBS, enhancing backup data security.

    +
    +

    Backup Options

    CBR supports one-off backup and periodic backup. A one-off backup task is manually created by users and is executed only once. Periodic backup tasks are automatically executed based on a user-defined backup policy.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 One-off backup and periodic backup

    Item

    +

    One-Off Backup

    +

    Periodic Backup

    +

    Backup policy

    +

    Not required

    +

    Required

    +

    Number of backup tasks

    +

    One manual backup task

    +

    Periodic tasks driven by a backup policy

    +

    Backup name

    +

    User-defined backup name, which is manualbk_xxxx by default

    +

    System-assigned backup name, which is autobk_xxxx by default

    +

    Backup mode

    +

    Full backup for the first time and incremental backup subsequently, by default

    +

    Full backup for the first time and incremental backup subsequently, by default

    +

    Application scenario

    +

    Executed before patching or upgrading the OS or upgrading an application on a resource. A one-off backup can be used to restore the resource to the original state if the patching or upgrading fails.

    +

    Executed for routine maintenance of a resource. The latest backup can be used for restoration if an unexpected failure or data loss occurs.

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0000001128604648.html b/ecs/umn/en-us_topic_0000001128604648.html new file mode 100644 index 000000000..7c5b391e5 --- /dev/null +++ b/ecs/umn/en-us_topic_0000001128604648.html @@ -0,0 +1,36 @@ + + +

    Backing Up ECS Data

    +

    Scenarios

    CBR enhances data integrity and service continuity. For example, if an ECS or a EVS disk is faulty or a misoperation causes data loss, you can use data backups to quickly restore data. This section describes how to back up ECSs and EVS disks.

    +

    For more information, CBR Architecture, Backup Mechanism, and Backup Options.

    +
    You can back up ECS data using the Cloud Server Backup or Cloud Disk Backup function.
    • Cloud Server Backup (recommended): Use this backup function if you want to back up the data of all EVS disks (system and data disks) on an ECS. This prevents data inconsistency caused by time difference in creating a backup.
    • Cloud Disk Backup: Use this backup function if you want to back up the data of one or more EVS disks (system or data disk) on an ECS. This minimizes backup costs on the basis of data security.
    +
    +
    +

    ECS Backup Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Locate the row that contains the target ECS. Click More in the Operation column and select Manage Image/Disk > Create Backup.
      • If the ECS has been associated with a vault, configure the backup information as prompted.
        • Server List: The ECS to be backed up is selected by default.
        • Name: Customize your backup name.
        • Description: Supplementary information about the backup.
        • Full Backup: If this option is selected, the system will perform full backup for the ECS to be associated. The storage capacity used by the backup increases accordingly.
        +
      • If the ECS is not associated with a vault, buy a vault first and then configure the backup information as prompted.

        For details, see Cloud Backup and Recovery User Guide.

        +
      +
    5. Click OK. The system automatically creates a backup for the ECS.

      On the Backups tab page, if the status of the backup is Available, the backup task is successful.

      +

      The ECS can be restarted if the backup progress of an ECS exceeds 10%. However, to ensure data integrity, restart it after the backup is complete.

      +
    +
    +

    EVS Disk Backup Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Locate the row that contains the target ECS. Click More in the Operation column and select Create Backup.
      • If the ECS has been associated with a vault, configure the backup information as prompted.
        • Server List: The ECS to be backed up is selected by default. Click to view the disks attached to the ECSs. Select the disks to be backed up.
        • Name: Customize your backup name.
        • Description: Supplementary information about the backup.
        • Full Backup: If this option is selected, the system will perform full backup for the disks to be associated. The storage capacity used by the backup increases accordingly.
        +
      • If the ECS is not associated with a vault, buy a vault first and then configure the backup information as prompted.

        For details, see Cloud Backup and Recovery User Guide.

        +
      +
    5. Click OK. The system automatically creates a backup for the disk.

      On the Backups tab page, if the status of the backup is Available, the backup task is successful.

      +

      If some files are deleted from the disk during the backup, the deleted files may fail to be backed up. Therefore, to ensure data integrity, delete the target data after the backup is complete.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0000001138811177.html b/ecs/umn/en-us_topic_0000001138811177.html new file mode 100644 index 000000000..6f08dcb77 --- /dev/null +++ b/ecs/umn/en-us_topic_0000001138811177.html @@ -0,0 +1,35 @@ + + +

    Why Can't My Linux ECS Obtain Metadata?

    +

    Symptom

    The security group of the Linux ECS has been configured based on the prerequisites in Obtaining Metadata in the outbound direction, but the ECS still cannot obtain the metadata through the route with the destination of 169.254.169.254.

    +
    +

    Root Cause

    Run the following command on the Linux ECS configured with a static IP address:

    +

    # ip route| grep 169.254

    +

    The route with the destination of 169.254.169.254 does not exist, but the route with the destination of 169.254.0.0/16 exists.

    +
    Figure 1 Route information
    +

    After the network is restarted, the original route with the destination of 169.254.169.254 is changed to the route with the destination of 169.254.0.0/16 without a next hop. As a result, the Linux ECS cannot obtain metadata.

    +
    +

    Solution

    1. Add the route with the destination of 169.254.169.254, and specify the next hop (gateway) and the output device (primary NIC of the Linux ECS). The following is an example:

      # ip route add 169.254.169.254 via 192.168.1.1 dev eth0

      +

      192.168.1.1 is the gateway address of the subnet that the primary NIC resides, and eth0 is the primary NIC.

      +
    2. Run the following command to verify that the metadata can be obtained:

      # curl http://169.254.169.254

      +
      Figure 2 Obtaining metadata
      +
    1. Run the following command to create or modify the /etc/sysconfig/network-scripts/route-eth0 file to prevent the static route from being changed after network restart:

      # vi /etc/sysconfig/network-scripts/route-eth0

      +

      Add the following content to the file:

      +

      In this example, the primary NIC is eth0 and gateway address is 192.168.1.1. Replace them based on site requirements.

      +

      # 169.254.169.254 via 192.168.1.1

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0000001143214829.html b/ecs/umn/en-us_topic_0000001143214829.html new file mode 100644 index 000000000..cd585f02e --- /dev/null +++ b/ecs/umn/en-us_topic_0000001143214829.html @@ -0,0 +1,227 @@ + + +

    How Do I Configure atop and kdump on Linux ECSs for Performance Analysis?

    +
    +

    Introduction to atop

    atop is a monitor for Linux that can report the activity of all processes and resource consumption by all processes at regular intervals. It shows system-level activity related to the CPU, memory, disks, and network layers for every process. It also logs system and process activities daily and saves the logs in disks for long-term analysis.

    +
    +

    Configuring atop for CentOS 8 or RHEL 8

    1. Run the following command to download the atop package:

      # wget https://www.atoptool.nl/download/atop-2.6.0-1.el8.x86_64.rpm

      +
    2. Run the following command to install the package:

      # rpm -ivh atop-2.6.0-1.el8.x86_64.rpm

      +
    3. Run the following command to modify the configuration file of atop:

      # vi /etc/default/atop

      +

      Modify the following parameters, save the modification, and exit:

      +
      • Change the value of LOGINTERVAL to, for example, 15. The default value of LOGINTERVAL is 600, in seconds.
      • Change the value of LOGGENERATIONS if needed. The default retention period of atop logs is 28 days.
        LOGINTERVAL=15
        +LOGGENERATIONS=28 
        +
      +
    1. Run the following command to restart atop:

      # systemctl restart atop

      +
    2. Run the following command to check the status of atop. If active (running) is displayed in the output, atop is running properly.

      # systemctl status atop

      +
      atop.service - Atop advanced performance monitor
      +Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled)
      +Active: active (running) since Sat 2021-06-19 14:46:10 CST; 8s ago
      +Docs: man:atop(1)
      +Process: 6391 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
      +Process: 6388 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
      +Process: 6387 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
      +Main PID: 6390 (atop)
      +Tasks: 1 (limit: 23716)
      +Memory: 4.1M
      +CGroup: /system.slice/atop.service
      +         └─6390 /usr/bin/atop -w /var/log/atop/atop_20210619 15
      + 
      +Jun 19 14:46:10 ecs-centos8 systemd[1]: atop.service: Succeeded.
      +Jun 19 14:46:10 ecs-centos8 systemd[1]: Stopped Atop advanced performance monitor.
      +Jun 19 14:46:10 ecs-centos8 systemd[1]: Starting Atop advanced performance monitor...
      +Jun 19 14:46:10 ecs-centos8 systemd[1]: Started Atop advanced performance monitor.
      +

      +
    +
    +

    Configuring atop for CentOS 7, RHEL 7, or EulerOS

    1. Run the following command to download the atop package:

      # wget https://www.atoptool.nl/download/atop-2.6.0-1.el7.x86_64.rpm

      +

      Upload the atop-2.6.0-1.el7.x86_64.rpm package to the target ECS.

      +
    2. Run the following command to install atop:

      # rpm -ivh atop-2.6.0-1.el7.x86_64.rpm --nodeps

      +
    3. Run the following command to modify the configuration file of atop:

      # vi /etc/default/atop

      +

      Modify the following parameters, save the modification, and exit:

      +
      • Change the value of INTERVAL to, for example, 15. The default value of INTERVAL is 600, in seconds.
      • Change the value following -mtime if needed. The default retention period of atop logs is 28 days.
      +
      LOGINTERVAL=15
      +LOGGENERATIONS=28 
      +
    4. Run the following command to start atop:

      # systemctl start atop

      +
    5. Run the following command to check the status of atop. If active (running) is displayed in the output, atop is running properly.

      # systemctl status atop

      +

      atop will sample system performance data based on the specified interval and save the data to the /var/log/atop/ directory.

      +
      atop.service - Atop advanced performance monitor
      +Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled)
      +Active: active (running) since Sat 2021-06-19 11:49:47 CST; 2h 27min ago
      +Docs: man:atop(1)
      +Process: 8231 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
      +Process: 8225 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
      +Process: 8223 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
      +Main PID: 8229 (atop)
      +CGroup: /system.slice/atop.service
      +         └─8229 /usr/bin/atop -w /var/log/atop/atop_20210619 15
      + 
      +Jun 19 11:49:47 ecs-centos7 systemd[1]: Stopped Atop advanced performance monitor.
      +Jun 19 11:49:47 ecs-centos7 systemd[1]: Starting Atop advanced performance monitor...
      +Jun 19 11:49:47 ecs-centos7 systemd[1]: Started Atop advanced performance monitor.
      +
    +
    +

    Configuring atop for SUSE 12 or SUSE 15

    1. Run the following command to download the atop source package:

      # wget https://www.atoptool.nl/download/atop-2.6.0-1.src.rpm

      +
    2. Run the following command to install the package:

      # rpm -ivh atop-2.6.0-1.src.rpm

      +
    3. Run the following command to install atop dependencies.

      # zypper -n install rpm-build ncurses-devel zlib-devel

      +
    4. Run the following command to compile atop:

      # cd /usr/src/packages/SPECS

      +

      # rpmbuild -bb atop-2.6.0.spec

      +
    5. Run the following command to install atop:

      # cd /usr/src/packages/RPMS/x86_64

      +

      # rpm -ivh atop-2.6.0-1.x86_64.rpm

      +
    6. Run the following command to modify the configuration file of atop:

      # vi /etc/default/atop

      +

      Modify the following parameters, save the modification, and exit:

      +
      • Change the value of LOGINTERVAL to, for example, 15. The default value of LOGINTERVAL is 600, in seconds.
      • Change the value of LOGGENERATIONS if needed. The default retention period of atop logs is 28 days.
      +
      LOGINTERVAL=15
      +LOGGENERATIONS=28 
      +
    1. Run the following command to restart atop:

      # systemctl restart atop

      +
    2. Run the following command to check the status of atop. If active (running) is displayed in the output, atop is running properly.

      # systemctl status atop

      +
      atop.service - Atop advanced performance monitor
      +Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled)
      +Active: active (running) since Sat 2021-06-19 16:50:01 CST; 6s ago
      +Docs: man:atop(1)
      +Process: 2242 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
      +Process: 2240 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
      +Process: 2239 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
      +Main PID: 2241 (atop)
      +Tasks: 1 (limit: 4915)
      +CGroup: /system.slice/atop.service
      +         └─2241 /usr/bin/atop -w /var/log/atop/atop_20210619 15
      + 
      +Jun 19 16:50:01 ecs-suse15 systemd[1]: Starting Atop advanced performance monitor...
      +Jun 19 16:50:01 ecs-suse15 systemd[1]: Started Atop advanced performance monitor. 
      +
    +
    +

    Configuring atop Using Its Source Package for SUSE, Fedora, Debian or Ubuntu

    1. Download the atop source package.

      # wget https://www.atoptool.nl/download/atop-2.6.0.tar.gz

      +
    1. Decompress the source package.

      # tar -zxvf atop-2.6.0.tar.gz

      +
    2. Query the systemctl version.

      # systemctl --version

      +

      If the version is 220 or later, go to the next step.

      +

      Otherwise, delete parameter --now from the Makefile of atop.

      +

      # vi atop-2.6.0/Makefile

      +

      Delete parameter --now following the systemctl command.

      +
                      then   /bin/systemctl disable  atop     2> /dev/null; \
      +                        /bin/systemctl disable  atopacct 2> /dev/null; \
      +                        /bin/systemctl daemon-reload;                   \
      +                        /bin/systemctl enable   atopacct;          \
      +                        /bin/systemctl enable   atop;              \
      +                        /bin/systemctl enable   atop-rotate.timer; \
      +
    3. Install atop dependencies.
      • SUSE 12 or SUSE 15

        # zypper -n install make gcc zlib-devel ncurses-devel

        +
      • Fedora

        # yum install make gcc zlib-devel ncurses-devel -y

        +
      • Debian 9, Debian 10, or Ubuntu

        # apt install make gcc zlib1g-dev libncurses5-dev libncursesw5-dev -y

        +
      +
    4. Compile and install atop.

      # cd atop-2.6.0

      +

      # make systemdinstall

      +
    5. Modify the configuration file of atop.

      # vi /etc/default/atop

      +

      Make the following modifications, save the file, and exit.

      +
      • Change the value of LOGINTERVAL to, for example, 15. The default value of LOGINTERVAL is 600, in seconds.
      • Change the value of LOGGENERATIONS if needed. The default retention period of atop logs is 28 days.
        LOGOPTS=""
        +LOGINTERVAL=15
        +LOGGENERATIONS=28
        +LOGPATH=/var/log/atop 
        +
      +
    1. Restart atop.

      # systemctl restart atop

      +
    2. Run the following command to check the status of atop. If active (running) is displayed in the output, atop is running properly.

      # systemctl status atop

      +
      atop.service - Atop advanced performance monitor
      +   Loaded: loaded (/lib/systemd/system/atop.service; enabled)
      +   Active: active (running) since Sun 2021-07-25 19:29:40 CST; 4s ago
      +     Docs: man:atop(1)
      +  Process: 5192 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
      +  Process: 5189 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
      +  Process: 5188 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
      + Main PID: 5191 (atop)
      +   CGroup: /system.slice/atop.service
      +           └─5191 /usr/bin/atop -w /var/log/atop/atop_20210725 15
      + 
      +Jul 25 19:29:40 atop systemd[1]: Starting Atop advanced performance monitor...
      +Jul 25 19:29:40 atop systemd[1]: Started Atop advanced performance monitor.
      +
    +
    +

    Precautions for Configuring kdump

    The method for configuring kdump described in this section applies to KVM ECSs running EulerOS or CentOS 7.x. For details, see Documentation for kdump.

    +
    +

    Introduction to kdump

    kdump is a feature of the Linux kernel that creates crash dumps in the event of a kernel crash. In the event of a kernel crash, kdump boots another Linux kernel and uses it to export an image of RAM, which is known as vmcore and can be used to debug and determine the cause of the crash.

    +
    +

    Configuring kdump

    1. Run the following command to check whether kexec-tools is installed:

      # rpm -q kexec-tools

      +

      If it is not installed, run the following command to install it:

      +

      # yum install -y kexec-tools

      +
    2. Run the following command to enable kdump to run at system startup:

      # systemctl enable kdump

      +
    3. Configure the parameters for the crash kernel to reserve the memory for the capture kernel.

      Check whether the parameters are configured.

      +

      # grep crashkernel /proc/cmdline

      +

      If the command output is displayed, this parameter has been configured.

      +
      Edit the /etc/default/grub file to configure the following parameters:
      GRUB_TIMEOUT=5
      +GRUB_DEFAULT=saved
      +GRUB_DISABLE_SUBMENU=true
      +GRUB_TERMINAL_OUTPUT="console"
      +GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel00/root rd.lvm.lv=rhel00/swap
      +rhgb quiet"
      +GRUB_DISABLE_RECOVERY="true"
      +
      +

      Locate parameter GRUB_CMDLINE_LINUX and add crashkernel=auto after it.

      +
    4. Run the following command for the configuration to take effect:

      # grub2-mkconfig -o /boot/grub2/grub.cfg

      +
    5. Open the /etc/kdump.conf file, locate parameter path, and add /var/crash after it.
      path  /var/crash
      +

      By default, the file is saved in the /var/crash directory.

      +
      You can save the file to another directory, for example, /home/kdump. Then add /home/kdump after parameter path:
      path  /home/kdump
      +
      +

      There must be enough space in the specified path for storing the vmcore file. It is recommended that the available space be greater than or equal to the RAM size. You can also store the vmcore file on a shared device such as SAN or NFS.

      +
      +
    6. Set the vmcore dump level.

      Add the following content to file /etc/kdump.conf. If the content already exists, skip this step.

      +
      core_collector makedumpfile -d 31 -c
      +

      where

      +

      -c indicates compressing the vmcore file.

      +

      -d indicates leaving out irrelevant data. Generally, the value following -d is 31, which is calculated based on the following values. You can adjust the value if needed.

      +
      zero pages   = 1
      +cache pages   = 2
      +cache private = 4
      +user  pages   = 8
      +free  pages   = 16
      +
    7. Set kernel parameters.

      Some kernel parameters control when kdump will be triggered. It is recommended that you set all the parameters as follows:

      +
      kernel.hardlockup_panic=1
      +kernel.panic=5
      +kernel.panic_on_oops=1
      +kernel.softlockup_panic=1
      +kernel.unknown_nmi_panic=1
      +kernel.nmi_watchdog=1
      +
    8. Modify the preceding parameters in file /etc/sysctl.conf file and save the file. You can also add the following parameters to the /etc/sysctl.conf file:
      kernel.panic_on_io_nmi=1
      +kernel.panic_on_warn=1
      +
    9. Run the following command to restart the system for the configurations to take effect:

      # reboot

      +
    +
    +

    Checking Whether kdump Configurations Have Taken Effect

    1. Run the following command and check whether crashkernel=auto is displayed:

      # cat /proc/cmdline |grep crashkernel

      +
      BOOT_IMAGE=/boot/vmlinuz-3.10.0-514.44.5.10.h142.x86_64 root=UUID=6407d6ac-c761-43cc-a9dd-1383de3fc995 ro crash_kexec_post_notifiers softlockup_panic=1 panic=3 reserve_kbox_mem=16M nmi_watchdog=1 rd.shell=0 fsck.mode=auto fsck.repair=yes net.ifnames=0 spectre_v2=off nopti noibrs noibpb crashkernel=auto LANG=en_US.UTF-8
      +
    2. Run the following command and check whether the values of the parameters in bold are the same as the following:

      # sysctl -a |grep panic

      +
      kernel.hardlockup_panic = 1
      +kernel.hung_task_panic = 0
      +kernel.panic = 5
      +kernel.panic_on_io_nmi = 0
      +kernel.panic_on_oops = 1
      +kernel.panic_on_stackoverflow = 0
      +kernel.panic_on_unrecovered_nmi = 0
      +kernel.panic_on_warn = 0
      +kernel.softlockup_panic = 1
      +kernel.unknown_nmi_panic = 1
      +vm.panic_on_oom = 0
      +
    3. Run the following command and check whether the configuration in the output is correct:

      # grep core_collector /etc/kdump.conf |grep -v ^"#"

      +
      core_collector makedumpfile -l --message-level 1 -d 31
      +
    4. Run the following command and check whether the path configuration in the output is correct:

      # grep path /etc/kdump.conf |grep -v ^"#"

      +
      path /var/crash
      +
    5. Run the following command and check whether the value of Active in the output is active (exited):

      # systemctl status kdump

      +
      ● kdump.service - Crash recovery kernel arming
      +Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
      +Active: active (exited) since Tue 2019-04-09 19:30:24 CST; 8min ago
      +Process: 495 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
      +Main PID: 495 (code=exited, status=0/SUCCESS)
      +CGroup: /system.slice/system-hostos.slice/kdump.service
      +
    6. Run the following test command:

      # echo c > /proc/sysrq-trigger

      +

      After the command is executed, kdump will be triggered, the system will be restarted, and the generated vmcore file will be saved to the path specified by path.

      +
    7. Run the following command to check whether the vmcore file has been generated in the specified path, for example, /var/crash/:

      # ll /var/crash/

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0000001174675379.html b/ecs/umn/en-us_topic_0000001174675379.html new file mode 100644 index 000000000..f3095b353 --- /dev/null +++ b/ecs/umn/en-us_topic_0000001174675379.html @@ -0,0 +1,49 @@ + + +

    CBR

    +

    What Is CBR?

    Cloud Backup and Recovery (CBR) enables you to back up cloud servers and disks with ease. In case of a virus attack, accidental deletion, or software or hardware fault, you can restore data to any point in the past when the data was backed up.

    +

    CBR protects your services by ensuring the security and consistency of your data.

    +
    +

    Differences Between Cloud Server Backup and Cloud Disk Backup

    You can back up ECS data using the Cloud Server Backup or Cloud Disk Backup function.
    • Cloud Server Backup (recommended): Use this backup function if you want to back up the data of all EVS disks (system and data disks) on an ECS. This prevents data inconsistency caused by time difference in creating a backup.
    • Cloud Disk Backup: Use this backup function if you want to back up the data of one or more EVS disks (system or data disk) on an ECS. This minimizes backup costs on the basis of data security.
    + +
    + + + + + + + + + + + + + + + + + +
    Table 1 Differences between cloud server backup and cloud disk backup

    Item

    +

    Cloud Server Backup

    +

    Cloud Disk Backup

    +

    Resources to be backed up or restored

    +

    All disks (system and data disks) on a server

    +

    One or more specified disks (system or data disks)

    +

    Recommended scenario

    +

    An entire cloud server needs to be protected.

    +

    Only data disks need to be backed up, because the system disk does not contain users' application data.

    +

    Advantages

    +

    All disks on a server are backed up at the same time, ensuring data consistency.

    +

    Backup cost is reduced without compromising data security.

    +
    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0000001189572473.html b/ecs/umn/en-us_topic_0000001189572473.html new file mode 100644 index 000000000..130782601 --- /dev/null +++ b/ecs/umn/en-us_topic_0000001189572473.html @@ -0,0 +1,30 @@ + + +

    Why Do I Fail to Connect to a Linux ECS Using WinSCP?

    +

    Symptom

    Connecting to a Linux ECS using WinSCP fails, while using SSH tools like Xshell succeeds.

    +
    Figure 1 Connection error using WinSCP
    +
    +

    Root Cause

    If you can connect to a Linux ECS using SSH tools, the SSH tools run properly. Check the SFTP configuration file because WinSCP allows you to connect your Linux ECS via SFTP protocol.

    +

    Run the following command to view the /etc/ssh/sshd_config file:

    +

    vi /etc/ssh/sshd_config

    +

    Check the SFTP configuration and the configuration file is /usr/libexec/openssh/sftp-server.

    +
    Figure 2 SFTP configuration file
    +

    If the SFTP configuration file does not exist or the file permission is not 755, connecting to a Linux ECS using WinSCP will fail.

    +
    +

    Solution

    • If the SFTP configuration file does not exist, you can transfer the file from an ECS that runs properly to your Linux ECS using SCP or other file transfer tools.
    • If the file permission is not 755, you can run the following command to change the file permission to 755:

      chmod 755 -R /usr/libexec/openssh/sftp-server

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0000001210881033.html b/ecs/umn/en-us_topic_0000001210881033.html new file mode 100644 index 000000000..ae018dd0e --- /dev/null +++ b/ecs/umn/en-us_topic_0000001210881033.html @@ -0,0 +1,24 @@ + + +

    Quota Adjustment

    +

    What Is Quota?

    Quotas can limit the number or amount of resources available to users, such as the maximum number of ECSs or EVS disks that can be created.

    +

    If the existing resource quota cannot meet your service requirements, you can apply for a higher quota.

    +
    +

    How Do I View My Quotas?

    1. Log in to the management console.
    2. Click in the upper left corner and select the desired region and project.
    3. In the upper right corner of the page, click .

      The Service Quota page is displayed.

      +
    4. View the used and total quota of each type of resources on the displayed page.

      If a quota cannot meet service requirements, apply for a higher quota.

      +
    +
    +

    How Do I Apply for a Higher Quota?

    The system does not support online quota adjustment. If you need to adjust a quota, call the hotline or send an email to the customer service mailbox. Customer service personnel will timely process your request for quota adjustment and inform you of the real-time progress by making a call or sending an email.

    +

    Before dialing the hotline number or sending an email, make sure that the following information has been obtained:

    +
    • Domain name, project name, and project ID, which can be obtained by performing the following operations:

      Log in to the management console using the cloud account, click the username in the upper right corner, select My Credentials from the drop-down list, and obtain the domain name, project name, and project ID on the My Credentials page.

      +
    • Quota information, which includes:
      • Service name
      • Quota type
      • Required quota
      +
    +

    Learn how to obtain the service hotline and email address.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0013771089.html b/ecs/umn/en-us_topic_0013771089.html new file mode 100644 index 000000000..6f876ec2b --- /dev/null +++ b/ecs/umn/en-us_topic_0013771089.html @@ -0,0 +1,53 @@ + + +

    Login Overview

    +

    Constraints

    • Only a running ECS can be logged in.
    • For ECSs created using public images, login usernames, passwords, and constraints vary depending on OSs running on the ECSs. For details, see Public Images Introduction.
    +
    +

    Login Modes

    Select a login mode as required and log in to the target ECS.

    + +
    + + + + + + + + + + + + + + + + + + +
    Table 1 Linux ECS login modes

    ECS OS

    +

    Local OS

    +

    Connection Method

    +

    Requirement

    +

    Linux

    +

    Windows

    +

    Use a remote login tool, such as PuTTY or Xshell.

    + +

    The target ECS has an EIP bound.

    +

    +

    Linux

    +

    Run commands.

    + +

    Windows

    +

    Use the remote login function available on the management console.

    +

    Login Using VNC

    +

    No EIP is required.

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0013771092.html b/ecs/umn/en-us_topic_0013771092.html new file mode 100644 index 000000000..bd4e73e16 --- /dev/null +++ b/ecs/umn/en-us_topic_0013771092.html @@ -0,0 +1,46 @@ + + +

    General Operations for Modifying Specifications

    +

    Scenarios

    If ECS specifications do not meet service requirements, you can modify the ECS specifications, including vCPUs and memory. Certain ECSs allow you to change their types when you modify their specifications.

    +
    +
    • For instructions about how to modify the specifications of other ECSs, for example, between KVM ECSs, see this section.
    +

    Background

    To obtain the virtualization type of an ECS, perform the following operations:

    +
    1. On the page providing details about the ECS, view the ECS specifications.
      Figure 1 Viewing ECS specifications
      +
    2. Check the specifications tables in ECS Types for the virtualization type.
    +
    +

    Notes

    • If ECS specifications are downgraded, the ECS performance will deteriorate.
    • Certain ECSs do not support specifications modification currently. For details about available ECS types as well as their functions and usage, see "Notes" in ECS Types.
    • When the disk status is Expanding, you are not allowed to modify the specifications of the ECS where the disk is attached.
    • Before modifying the specifications of a Windows ECS, modify the SAN policy by following the instructions provided in Why Does a Disk Attached to a Windows ECS Go Offline? to prevent disks from going offline after the specifications are modified.
    • Before modifying specifications, make sure that the ECS has been stopped.
    +
    +

    Step 1: Modify Specifications

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, view the status of the target ECS.

      If the ECS is not in Stopped state, click More in the Operation column and select Stop.

      +
    5. Click More in the Operation column and select Modify Specifications.

      The Modify ECS Specifications page is displayed.

      +
    6. Select the new ECS type, vCPUs, and memory as prompted.
    7. (Optional) Set DeH.

      If the ECS is created on a DeH, the system allows you to change the DeH.

      +

      To do so, select the target DeH from the drop-down list. If no DeH is available in the drop-down list, remaining DeH resources are insufficient and cannot be used to create the ECS with specifications modified.

      +
    8. Click Next.
    9. On the Modify ECS Specifications page, confirm the modified vCPU and memory specifications and click Submit.
    10. Check whether the specifications have been modified.

      After modifying the specifications, you can check whether the specifications have been modified in Failures.

      +
      1. Check whether Failures is displayed on the management console. For details, see Viewing Failures.
        • If yes, go to step 10.b.
        • If no, the specifications have been modified.
        +
      2. Click Failures. Then, in the Failures dialog box, click Operation Failures and check whether the task is contained in the list by Name/ID, Operated At, or Task.
        • If yes, the specifications modification failed. See Follow-up Procedure for failure causes.
        • If no, the specifications have been modified.
        +
      +
    +
    +

    Step 2: Check Disk Attachment

    After specifications are modified, disk attachment may fail. Therefore, check disk attachment after specifications modification. If disks are properly attached, the specifications modification is successful.

    + +
    +

    Follow-up Procedure

    Perform the following operations in the event of a specifications modification failure:

    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Trace Service.
    3. In the navigation pane on the left, choose Trace List.
    4. In the Trace Name column, locate the resizeServer event by resource ID.

      The resource ID is the ID of the ECS on which the specifications modification failed.

      +
    5. Click View Trace in the Operation column to view the failure cause.

      If the fault cannot be rectified based on logs, contact customer service.

      +
    +
    +
    + + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0013771097.html b/ecs/umn/en-us_topic_0013771097.html new file mode 100644 index 000000000..ce1594bc6 --- /dev/null +++ b/ecs/umn/en-us_topic_0013771097.html @@ -0,0 +1,27 @@ + + +

    Instances

    +
    + + diff --git a/ecs/umn/en-us_topic_0013771101.html b/ecs/umn/en-us_topic_0013771101.html new file mode 100644 index 000000000..82a02002b --- /dev/null +++ b/ecs/umn/en-us_topic_0013771101.html @@ -0,0 +1,35 @@ + + +

    FAQs

    +
    + + diff --git a/ecs/umn/en-us_topic_0013771102.html b/ecs/umn/en-us_topic_0013771102.html new file mode 100644 index 000000000..177719458 --- /dev/null +++ b/ecs/umn/en-us_topic_0013771102.html @@ -0,0 +1,11 @@ + + +

    What Are the Precautions for Using ECSs?

    +
    • Do not upgrade ECS kernel or OS versions. If you want to upgrade the main OS version, for example, from CentOS 7.2 to Cent OS 7.3, use the provided OS changing function.
    • Do not uninstall the performance optimization software pre-installed on your ECSs.
    • Do not change NIC MAC addresses. Otherwise, the network connection will fail.
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0013771105.html b/ecs/umn/en-us_topic_0013771105.html new file mode 100644 index 000000000..76b981292 --- /dev/null +++ b/ecs/umn/en-us_topic_0013771105.html @@ -0,0 +1,15 @@ + + +

    Getting Started

    +
    + + diff --git a/ecs/umn/en-us_topic_0013771111.html b/ecs/umn/en-us_topic_0013771111.html new file mode 100644 index 000000000..8ae9d9e13 --- /dev/null +++ b/ecs/umn/en-us_topic_0013771111.html @@ -0,0 +1,31 @@ + + +

    ECS and Other Services

    +
    Figure 1 shows the relationships between ECS and other services.
    Figure 1 Relationships between ECS and other services
    +
    +

    ECS-related Services

    • Auto Scaling (AS)

      Automatically adjusts ECS resources based on the configured AS policies. This improves resource usage and reduces resource costs.

      +
    • Elastic Load Balancing (ELB)

      Automatically distributes traffic to multiple ECSs. This enhances system service and fault tolerance capabilities.

      +
    • Elastic Volume Service (EVS)

      Enables you to attach EVS disks to an ECS and expand their capacity.

      +
    • Virtual Private Cloud (VPC)

      Enables you to configure internal networks and change network configurations by customizing security groups, VPNs, IP address ranges, and bandwidth. This simplifies network management. You can also customize the ECS access rules within a security group and between security groups to improve ECS security.

      +
    • Image Management Service (IMS)

      Enables you to create ECSs using images. This improves the efficiency of ECS creation.

      +
    • Cloud Eye

      Allows you to check the status of monitored service objects after you have obtained an ECS. This can be done without requiring additional plug-ins be installed. For details about ECS metrics supported by Cloud Eye, see Basic ECS Metrics.

      +
    • Key Management Service (KMS)

      The encryption feature relies on KMS. You can use an encrypted image or EVS disks when creating an ECS. In such a case, you are required to use the key provided by KMS to improve data security.

      +
    • Cloud Trace Service (CTS)

      Records ECS-related operations for later query, audit, and backtrack.

      +
    • Cloud Backup and Recovery (CBR)

      Backs up EVS disks and ECSs for restoration. You can back up all EVS disks (including the system disk and data disks) attached to an ECS and use the backup to restore the ECS data.

      +
    • Tag Management Service (TMS)

      A tag identifies an ECS. Adding tags to an ECS facilitates ECS identification and management.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0013771112.html b/ecs/umn/en-us_topic_0013771112.html new file mode 100644 index 000000000..e978ac716 --- /dev/null +++ b/ecs/umn/en-us_topic_0013771112.html @@ -0,0 +1,29 @@ + + +

    What Is ECS?

    +

    An Elastic Cloud Server (ECS) is a basic computing unit that consists of vCPUs, memory, OS, and Elastic Volume Service (EVS) disks. After an ECS is created, you can use it on the cloud similarly to how you would use your local PC or physical server.

    +

    ECSs support self-service creation, modification, and operation. You can create an ECS by specifying its vCPUs, memory, OS, and login mode. After an ECS is created, you can modify its specifications if necessary. ECS works with other services to provide a reliable, secure, efficient computing environment.

    +

    System Architecture

    ECS works with other products and services to provide computing, storage, and network resources. You can quickly migrate and replicate existing ECSs using images.

    +
    • ECSs can be deployed in multiple availability zones (AZs) connected with each other through an internal network. If one AZ becomes faulty, other AZs in the same region will not be affected.
    • With the Virtual Private Cloud (VPC) service, you can build your own dedicated network on the cloud. You can also set subnets and security groups within your VPC for further isolation. You can allow your VPC to communicate with the external network through an EIP (bandwidth support required).
    • With the Image Management Service (IMS), you can use an image to create ECSs. Alternatively, you can use an existing ECS to create a private image and use the private image to create the same ECSs for rapid service deployment.
    • Elastic Volume Service (EVS) provides storage space and Volume Backup Service (VBS) provides data backup and restoration functions.
    • Cloud Eye lets you keep a close eye on the performance and resource utilization of ECSs, ensuring ECS reliability and availability.
    • Volume Backup Service (VBS) allows you to create data backups for EVS disks and use the backups to restore the EVS disks. This maximizes user data correctness and security.
    • Cloud Server Backup Service (CSBS) backs up all EVS disks of an ECS, including the system disk and data disks, and uses the backup to restore the ECS.
    +
    Figure 1 System architecture
    +
    +

    Access Methods

    The public cloud provides a web-based service management platform. You can access ECSs through HTTPS-compliant application programming interfaces (APIs) or the management console.
    • Accessing ECSs through APIs

      Use this method if you are required to integrate the ECSs on the public cloud platform into a third-party system for secondary development. For detailed operations, see Elastic Cloud Server API Reference.

      +
    • Accessing ECSs through the management console

      Use this method if you are not required to integrate ECSs with a third-party system.

      +

      After registering on the public cloud platform, log in to the management console and click Elastic Cloud Server under Compute on the homepage.

      +
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0014250631.html b/ecs/umn/en-us_topic_0014250631.html new file mode 100644 index 000000000..28eedf7a9 --- /dev/null +++ b/ecs/umn/en-us_topic_0014250631.html @@ -0,0 +1,67 @@ + + +

    Creating a Key Pair

    +

    Overview

    A key pair that consists of a public key and a private key is required for authentication when you log in to an ECS. Both the public and private keys are used for authentication. Therefore, you must use an existing key pair or create a new one for remote login authentication.

    +
    • Creating a key pair
      If no key pair is available, create one, in which the private key is used for login authentication. You can use either of the following methods to create a key pair:
      • (Recommended) Create a key pair on the management console. After the creation, the public key is automatically stored in the system, and the private key is manually stored in a local directory. For details, see Creating a Key Pair on the Management Console.
      • Create a key pair using puttygen.exe. After the creation, both the public key and private key are stored locally. For details, see Creating a Key Pair Using puttygen.exe. After the creation, import the key pair by following the instructions provided in Importing a Key Pair. Then, the key pair can be used.
      +
      +
    • Using an existing key pair

      If a key pair is available locally, for example, generated using PuTTYgen, you can import the public key on the management console so that the system maintains the public key file. For details, see Importing a Key Pair.

      +

      If the public key of the existing key pair is stored by clicking Save public key of puttygen.exe, the public key cannot be imported to the management console.

      +

      If this key pair must be used for remote authentication, see Why Does a Key Pair Created Using puttygen.exe Fail to Be Imported on the Management Console?

      +
      +
    +
    +

    Constraints

    • ECSs support the following encryption algorithms:
      • SSH-2 (RSA, 1024)
      • SSH-2 (RSA, 2048)
      • SSH-2 (RSA, 4096)
      +
    • The private key is one of the most important functions for protecting your ECS during remote login. Save the private key to your local directory and keep it secure. The private key can be downloaded only once.
    +
    +

    Creating a Key Pair on the Management Console

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the navigation pane on the left, choose Key Pair.
    5. On the right side of the page, click Create Key Pair.
    6. Enter the key name and click OK.

      An automatically allocated key name consists of KeyPair- and a 4-digit random number. Change it to an easy-to-remember one, for example, KeyPair-xxxx_ecs.

      +
    7. Manually or automatically download the private key file. The file name is the specified key pair name with a suffix of .pem. Securely store the private key file. In the displayed dialog box, click OK.

      This is the only opportunity for you to save the private key file. Keep it secure. When creating an ECS, provide the name of your desired key pair. Each time you log in to the ECS using SSH, provide the private key.

      +
      +
    +
    +

    Creating a Key Pair Using puttygen.exe

    1. Download and install PuTTY and PuTTYgen.

      https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

      +

      PuTTYgen is a key generator, which is used to create a key pair that consists of a public key and a private key for PuTTY.

      +
      +

    2. Obtain the public and private keys.

      1. Double-click puttygen.exe to switch to the PuTTY Key Generator page.
        Figure 1 PuTTY Key Generator
        +
      2. Click Generate.

        The key generator automatically generates a key pair that consists of a public key and a private key. The public key is shown in the red box in Figure 2.

        +
        Figure 2 Obtaining the public and private keys
        +
      +

    3. Copy the public key content to a .txt file and save the file in a local directory.

      Do not save the public key by clicking Save public key. Storing a public key by clicking Save public key of puttygen.exe will change the format of the public key content. Such a key cannot be imported to the management console.

      +
      +

    4. Save the private key and keep it secure. The private key can be downloaded only once.

      The format in which to save your private key varies depending on application scenarios:

      +
      • Saving the private key in .ppk format
        When you are required to log in to a Linux ECS using PuTTY, you must use the .ppk private key. To save the private key in .ppk format, perform the following operations:
        1. On the PuTTY Key Generator page, choose File > Save private key.
          Figure 3 Save private key
          +
        2. Save the converted private key, for example, kp-123.ppk, in a local directory.
        +
        +
      • Saving the private key in .pem format
        When you are required to log in to a Linux ECS using Xshell or attempt to obtain the password for logging in to a Windows ECS, you must use the .pem private key for authentication. To save the private key in .pem format, perform the following operations:
        1. Choose Conversions > Export OpenSSH key.

          If you use this private file to obtain the password for logging in to a Windows ECS, when you choose Export OpenSSH key, do not configure Key passphrase. Otherwise, obtaining the password will fail.

          +
          +
          Figure 4 Export OpenSSH key
          +
        2. Save the private key, for example, kp-123.pem, in a local directory.
        +
        +
      +

    5. Import the public key to the system. For details, see "Copying the public key content" in Importing a Key Pair.
    +
    +

    Importing a Key Pair

    If you store a public key by clicking Save public key of puttygen.exe, the format of the public key content will change. Such a key cannot be imported to the management console. To resolve this issue, obtain the public key content in correct format and import the content to the management console. For details, see Why Does a Key Pair Created Using puttygen.exe Fail to Be Imported on the Management Console?

    +
    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the navigation pane on the left, choose Key Pair.
    5. On the right side of the page, click Import Key Pair.
      Figure 5 Import Key Pair
      +
    6. Use either of the following methods to import the key pair:
      • Selecting a file
        1. On the Import Key Pair page of the management console, click Select File and select the local public key file, for example, the .txt file saved in 3.

          When importing a key pair, ensure that the public key is imported. Otherwise, the importing will fail.

          +
          +
        2. Click OK.

          After the public key is imported, you can change its name.

          +
        +
      • Copying the public key content
        1. Copy the content of the public key in .txt file into the Public Key Content text box.
        2. Click OK.
        +
      +
    +
    + +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0017130261.html b/ecs/umn/en-us_topic_0017130261.html new file mode 100644 index 000000000..32731680c --- /dev/null +++ b/ecs/umn/en-us_topic_0017130261.html @@ -0,0 +1,18 @@ + + +

    Viewing Details About an ECS

    +

    Scenarios

    After obtaining ECSs, you can view and manage them on the management console. This section describes how to view detailed ECS configurations, including its name, image, system disk, data disks, VPC, NIC, security group, and EIP.

    +

    To view the private IP address of an ECS, view it on the Elastic Cloud Server page.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.

      The Elastic Cloud Server page is displayed. On this page, you can view your ECSs and the basic information about the ECSs, such as their private IP addresses.

      +
    4. In the search box above the ECS list, enter the ECS name, IP address, or ID, and click for search. Alternatively, click Search by Tag above the upper right corner of the ECS list and search for an ECS by tag key and value.
    5. Click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    6. View the ECS details.

      You can modify ECS configurations, for example, change its security group, add a NIC or tag to it, or bind an EIP to it, by clicking corresponding links or buttons.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0017955380.html b/ecs/umn/en-us_topic_0017955380.html new file mode 100644 index 000000000..1b2693348 --- /dev/null +++ b/ecs/umn/en-us_topic_0017955380.html @@ -0,0 +1,54 @@ + + +

    Login Using an SSH Key

    +

    Scenarios

    This section describes how to remotely log in to a Linux ECS using an SSH key pair from Windows and Linux, respectively.

    +
    +

    Prerequisites

    • You have obtained the private key file used during ECS creation.
    • You have bound an EIP to the ECS. For details, see Viewing Details About an ECS.
    +
    +
    • You have configured the inbound rules of the security group. For details, see Configuring Security Group Rules.
    • The network connection between the login tool (PuTTY) and the target ECS is normal. For example, the default port 22 is not blocked by the firewall.
    +

    Logging In to the Linux ECS from Local Windows

    To log in to the Linux ECS from local Windows, perform the operations described in this section.

    +

    Method 1: Use PuTTY to log in to the ECS.

    +
    The following operations use PuTTY as an example. Before logging in to the ECS using PuTTY, make sure that the private key file has been converted to .ppk format.
    1. Check whether the private key file has been converted to .ppk format.
      • If yes, go to step 7.
      • If no, go to step 2.
      +
    2. Visit the following website and download PuTTY and PuTTYgen:

      https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

      +

      PuTTYgen is a key generator, which is used to create a key pair that consists of a public key and a private key for PuTTY.

      +
      +
    3. Run PuTTYgen.
    4. In the Actions pane, click Load and import the private key file that you stored during ECS creation.

      Ensure that the format of All files (*.*) is selected.

      +
    5. Click Save private key.
    6. Save the converted private key, for example, kp-123.ppk, to the local computer.
    7. Double-click PUTTY.EXE. The PuTTY Configuration page is displayed.
    8. Choose Session and enter the EIP of the ECS under Host Name (or IP address).
      Figure 1 Configuring the EIP
      +
    9. Choose Connection > Data. Enter the image username in Auto-login username.
      • If a public image is used, see Public Images Introduction for the image username.
      • If a private image is used, use the username of the private image.
      +
      +
    10. Choose Connection > SSH > Auth. In the last configuration item Private key file for authentication, click Browse and select the private key converted in step 6.
    11. Click Open.

      Log in to the ECS.

      +
    +
    +

    Method 2: Use Xshell to log in to the ECS.

    +
    1. Start the Xshell tool.
    2. Run the following command using the EIP to remotely log in to the ECS through SSH:

      ssh Username@EIP

      +
      • If a public image is used, see Public Images Introduction for the image username.
      • If a private image is used, use the username of the private image.
      +
      +
    3. (Optional) If the system displays the SSH Security Warning dialog box, click Accept & Save.
      Figure 2 SSH Security Warning
      +
    4. Select Public Key and click Browse beside the user key text box.
    5. In the user key dialog box, click Import.
    6. Select the locally stored key file and click Open.
    7. Click OK to log in to the ECS.
    +
    +

    Logging In to the Linux ECS from Local Linux

    To log in to the Linux ECS from local Linux, perform the operations described in this section. The following operations use private key file kp-123.pem as an example to log in to the ECS. The name of your private key file may differ.
    1. On the Linux CLI, run the following command to change operation permissions:

      chmod 400 /path/kp-123.pem

      +

      In the preceding command, path refers to the path where the key file is saved.

      +
      +
    2. Run the following command to log in to the ECS:

      ssh -i /path/kp-123.pem Default username@EIP

      +

      For example, if the default username is root and the EIP is 123.123.123.123, run the following command:

      +

      ssh -i /path/kp-123.pem root@123.123.123.123

      +

      In the preceding command:

      +
      • path refers to the path under which the key file is stored.
      • EIP is the EIP bound to the ECS.
      +
      +
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0017955381.html b/ecs/umn/en-us_topic_0017955381.html new file mode 100644 index 000000000..d7dbfb2ba --- /dev/null +++ b/ecs/umn/en-us_topic_0017955381.html @@ -0,0 +1,44 @@ + + +

    Login Using MSTSC

    +

    Scenarios

    This section describes how to use the remote login tool MSTSC to log in to a Windows ECS from a local computer.

    +
    +

    Prerequisites

    +
    • Access to port 3389 is allowed in the inbound direction of the security group to which the ECS belongs. For details, see Configuring Security Group Rules.
    • The network connection between the login tool and the target ECS is normal. For example, the default port 3389 is not blocked by the firewall.
    • RDP has been enabled on the target ECS. By default, RDP has been enabled on the ECSs created using a public image. For instructions about how to enable RDP, see Enabling RDP.
    +
    +

    Logging In to a Windows ECS Using MSTSC

    If your local server runs Windows, you can use the remote desktop connection tool MSTSC delivered with the Windows OS to log in to a Windows ECS.

    +
    1. Click the start menu on the local server.
    2. In the Search programs and files text box, enter mstsc.
    3. In the Remote Desktop Connection dialog box, click Show Options.
      Figure 1 Show Options
      +
    4. Enter the EIP and username (Administrator by default) of the target ECS.

      If you do not want to enter the username and password in follow-up logins, select Allow me to save credentials.

      +
      +
      Figure 2 Remote Desktop Connection
      +
    5. (Optional) To use local server resources in a remote session, configure parameters on the Local Resources tab.
      To copy data from the local server to your ECS, select Clipboard.
      Figure 3 Clipboard
      +
      +
      To copy files from the local server to your ECS, click More and select your desired disks.
      Figure 4 Drives
      +
      +
    6. (Optional) Click the Display tab and then adjust the size of the remote desktop.
      Figure 5 Adjusting the size of the desktop
      +
    7. Click OK and enter the login password as prompted to log in to the ECS.

      To ensure system security, change the login password after you log in to the ECS for the first time.

      +
    8. (Optional) After logging in to the ECS using RDP, handle the issue that local files larger than 2 GB cannot be copied to a remote Windows ECS.

      For details, see troubleshooting cases.

      +
    +
    +

    Enabling RDP

    When you log in to an ECS for the first time, log in to it using VNC, enable RDP, and access the ECS using MSTSC.

    By default, RDP has been enabled on the ECSs created using a public image.

    +
    +
    1. Log in to the Windows ECS using VNC.

      For details, see Login Using VNC.

      +
    2. Click Start in the task bar and choose Control Panel > System and Security > System > Remote settings.

      The System Properties dialog box is displayed.

      +
      Figure 6 System Properties
      +
    3. Click the Remote tab and select Allow remote connections to this computer.
    4. Click OK.
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0017955633.html b/ecs/umn/en-us_topic_0017955633.html new file mode 100644 index 000000000..1c31fcc4e --- /dev/null +++ b/ecs/umn/en-us_topic_0017955633.html @@ -0,0 +1,53 @@ + + +

    Login Using an SSH Password

    +

    Scenarios

    This section describes how to remotely log in to a Linux ECS using an SSH password from Windows and Linux, respectively.

    +

    Logging in to a Linux ECS using SSH password authentication is disabled by default. If you require password authentication, configure it after logging in to the ECS. To ensure system security, reset the common user password for logging in to the Linux ECS after configuring SSH password authentication.

    +
    +
    +

    Prerequisites

    • The target ECS is running.
    • You have bound an EIP to the ECS. For details, see Binding an EIP.
    +
    • Access to port 22 is allowed in the inbound direction of the security group to which the ECS belongs. For details, see Configuring Security Group Rules.
    • The network connection between the login tool (PuTTY) and the target ECS is normal. For example, the default port 22 is not blocked by the firewall.
    • You have obtained the SSH login permission and reset the common user password for logging in to the Linux ECS. For details, see Configuring the Login Permission Using SSH Password Authentication.
    +
    +

    Configuring the Login Permission Using SSH Password Authentication

    Assigning the remote login permission using SSH key authentication

    +
    1. Use the SSH key to log in to the Linux ECS. For details, see Login Using an SSH Key.
    2. Run the following command to change the value of PasswordAuthentication in /etc/ssh/sshd_config to yes:

      sudo vi /etc/ssh/sshd_config

      +

      For the ECSs running the SUSE or OpenSUSE OSs, ensure that the values of PasswordAuthentication, ChallengeResponseAuthentication, and UsePAM in /etc/ssh/sshd_config are all yes.

      +
      +
    3. Run the following command to change the ssh_pwauth value to 1 or true in /etc/cloud/cloud.cfg:

      sudo vi /etc/cloud/cloud.cfg

      +
    4. Run the following command to reload the sshd service:

      sudo service sshd reload

      +
    +

    To ensure system security, reset the common user password for logging in to the Linux ECS.

    +
    1. Run the following command to reset the ECS password:

      If the ECS username is linux, run the following command:

      +

      sudo passwd linux

      +

      To remotely log in to an ECS as user root, perform the following operations:

      +
      1. Run the following command to change the disable_root value to 0 or false and the ssh_pwauth value to 1 or true in /etc/cloud/cloud.cfg:

        sudo vi /etc/cloud/cloud.cfg

        +
      2. Run the following command to set the user root password:

        sudo passwd root

        +
      +
      +
    2. Enter the new password as prompted and press Enter.
    3. Confirm the password and press Enter.
    4. Verify that the information displayed is similar to the following, indicating that the password has been reset:
      passwd: all authentication tokens updated successfully.
      +
    +
    +

    Logging In to the Linux ECS from a Local Windows Server

    To log in to the Linux ECS from a local Windows server, perform the operations described in this section.

    +

    The following operations use PuTTY as an example to log in to the ECS.

    +
    1. Visit the following website and download PuTTY and PuTTYgen:

      https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

      +
    2. Run PuTTY.
    3. Click Session.
      1. Host Name (or IP address): EIP bound to the ECS
      2. Port: 22
      3. Connection type: SSH
      4. Saved Sessions: Task name, which can be clicked for remote connection when you use PuTTY next time
        Figure 1 Session
        +
      +
    4. Click Window. Then, select UTF-8 for Received data assumed to be in which character set: in Translation.
    5. Click Open.

      If you log in to the ECS for the first time, PuTTY displays a security warning dialog box, asking you whether to accept the ECS security certificate. Click Yes to save the certificate to your local registry.

      +
    6. After the SSH connection to the ECS is set up, enter the username and password as prompted to log in to the ECS.
    +
    +

    Logging In to the Linux ECS from a Local Linux Server

    To log in to the Linux ECS from a local Linux server, run the following command:

    +

    ssh EIP bound to the ECS

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0018073208.html b/ecs/umn/en-us_topic_0018073208.html new file mode 100644 index 000000000..8f66377b0 --- /dev/null +++ b/ecs/umn/en-us_topic_0018073208.html @@ -0,0 +1,26 @@ + + +

    Creation and Deletion

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0018073212.html b/ecs/umn/en-us_topic_0018073212.html new file mode 100644 index 000000000..16eec03d4 --- /dev/null +++ b/ecs/umn/en-us_topic_0018073212.html @@ -0,0 +1,14 @@ + + +

    How Quickly Can I Obtain an ECS?

    +

    Obtaining an ECS can take as little as a few minutes.

    +

    The time it takes to obtain an ECS depends on ECS specifications, available resources (such as EVS disks and EIPs), and system load.

    +

    If it takes a long time to obtain your ECS, contact customer service.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018073214.html b/ecs/umn/en-us_topic_0018073214.html new file mode 100644 index 000000000..0e084ef7f --- /dev/null +++ b/ecs/umn/en-us_topic_0018073214.html @@ -0,0 +1,11 @@ + + +

    What Can I Do with ECSs?

    +

    You can use ECSs just like traditional physical servers. On an ECS, you can deploy any service application, such as an email system, web system, and Enterprise Resource Planning (ERP) system. After creating an ECS, you can use it like using your local computer or physical server.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018073215.html b/ecs/umn/en-us_topic_0018073215.html new file mode 100644 index 000000000..4ebdc96ce --- /dev/null +++ b/ecs/umn/en-us_topic_0018073215.html @@ -0,0 +1,79 @@ + + +

    Can I Attach Multiple Disks to an ECS?

    +
    Yes. The ECSs created after the disk function upgrade can have up to 60 attached disks.
    • When you create an ECS, you can attach 24 disks to it.
    • After you create an ECS, you can attach up to 60 disks to it.

      + +
      + + + + + + + + + + + + + + + + +
      Table 1 Numbers of disks that can be attached to a newly created ECS

      ECS Type

      +

      Maximum VBD Disks

      +

      Maximum SCSI Disks

      +

      Constraint

      +

      KVM

      +

      (excluding D2 ECSs)

      +

      24

      +

      59

      +

      VBD disks + SCSI disks ≤ 60 (This constraint does not apply to local disks.)

      +

      The number of local disks is determined based on the ECS flavor.

      +

      D2

      +

      24

      +

      30

      +

      VBD disks + SCSI disks ≤ 54 (This constraint does not apply to local disks.)

      +

      The number of local disks is determined based on the ECS flavor.

      +
      +
      +
      • The system disk of an ECS is of VBD type. Therefore, the maximum number of SCSI disks is 59.
      • For a D-series KVM ECS, its local disks use two SCSI controllers, indicating that 30 SCSI drive letters are used. Therefore, a maximum of 30 SCSI disks can be attached to such an ECS.
      +
      +
    +
    +
    The maximum number of disks that you can attach to an ECS that was created before the disk function upgrade remains unchanged, as shown in Table 2. +
    + + + + + + + + + + + +
    Table 2 Numbers of disks that can be attached to an existing ECS

    Maximum VBD Disks

    +

    Maximum SCSI Disks

    +

    Maximum Local Disks

    +

    Constraint

    +

    24

    +

    23

    +

    59

    +

    VBD disks + SCSI disks ≤ 24

    +
    +
    +
    +

    +

    To attach 60 disks, enable advanced disk. For details, see Enabling Advanced Disk.

    +

    How Can I Check Whether an ECS Is Created Before or After the Disk Function Upgrade?

    1. Log in to management console.
    2. Under Computing, click Elastic Cloud Server.
    3. Click the name of the target ECS. The page providing details about the ECS is displayed.
    4. Click the Disks tab.
    5. Check the number of disks that can be attached to the ECS to determine the total number of disks.
      • If the total number of disks that can be attached is 24 (including the system disk), the ECS is created before the disk function upgrade. In such a case, you can enable advanced disk as prompted so that up to 60 disks can be attached to the ECS. For details, see Enabling Advanced Disk.
      • If the total number of disks that can be attached is 60 (including the system disk), the ECS is created after the disk function upgrade.
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018073216.html b/ecs/umn/en-us_topic_0018073216.html new file mode 100644 index 000000000..cdcee5f39 --- /dev/null +++ b/ecs/umn/en-us_topic_0018073216.html @@ -0,0 +1,61 @@ + + +

    Can I Bind Multiple EIPs to an ECS?

    +

    Scenarios

    You can bind multiple EIPs to an ECS. However, this configuration is not recommended.

    +

    To bind multiple EIPs to an ECS, you must manually configure routes.

    +
    +

    Configuration Example

    Table 1 lists ECS configurations.

    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 1 ECS configurations

    Parameter

    +

    Configuration

    +

    Name

    +

    ecs_test

    +

    Image

    +

    CentOS 6.5 64bit

    +

    EIP

    +

    2

    +

    Primary NIC

    +

    eth0

    +

    Secondary NIC

    +

    eth1

    +
    +
    +

    Example 1:

    +
    If you are required to access public network 11.11.11.0/24 through standby NIC eth1, perform the following operations to configure a route:
    1. Log in to the ECS.
    2. Run the following command to configure a route:

      ip route add 11.11.11.0/24 dev eth1 via 192.168.2.1

      +

      In the preceding command, 192.168.2.1 is the gateway IP address of standby NIC eth1.

      +
    +
    +

    Example 2:

    +

    Based on example 1, if you are required to enable routing for default public network traffic through standby NIC eth1, perform the following operations to configure a route:

    +
    1. Log in to the ECS.
    2. Run the following command to delete the default route:

      ip route delete default

      +
    3. Run the following command to configure a new default route:

      ip route add 0.0.0.0/0 dev eth1 via 192.168.2.1

      +

      In the preceding command, 192.168.2.1 is the gateway IP address of standby NIC eth1.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018073218.html b/ecs/umn/en-us_topic_0018073218.html new file mode 100644 index 000000000..5c0d463d4 --- /dev/null +++ b/ecs/umn/en-us_topic_0018073218.html @@ -0,0 +1,13 @@ + + +

    What Happens After I Click the Delete Button?

    +

    After you click Delete, the selected ECS is deleted. You can also choose to delete the EVS disk and EIP of the ECS. If you do not delete them, they will be retained. If necessary, you can manually delete them later.

    +

    To delete an ECS, perform the following operations:

    +
    1. Log in to the management console.
    2. Under Computing, click Elastic Cloud Server.
    3. Select the ECS to be deleted.
    4. In the upper part of the ECS list, click Delete.
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018073221.html b/ecs/umn/en-us_topic_0018073221.html new file mode 100644 index 000000000..687b2af98 --- /dev/null +++ b/ecs/umn/en-us_topic_0018073221.html @@ -0,0 +1,12 @@ + + +

    Can I Provision an ECS I Deleted?

    +

    No. ECSs in the Deleted state cannot provide services and are soon removed from the system.

    +

    A deleted ECS is retained in the ECS list on the management console only for a short period of time before it is permanently removed from the system. You can create a new ECS with the same specifications again.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078501.html b/ecs/umn/en-us_topic_0018078501.html new file mode 100644 index 000000000..f3d3fddaf --- /dev/null +++ b/ecs/umn/en-us_topic_0018078501.html @@ -0,0 +1,11 @@ + + +

    Can the ECSs of Different Accounts Communicate over an Intranet?

    +

    No. The ECSs of different accounts cannot communicate with each other over an intranet.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078503.html b/ecs/umn/en-us_topic_0018078503.html new file mode 100644 index 000000000..4e162e183 --- /dev/null +++ b/ecs/umn/en-us_topic_0018078503.html @@ -0,0 +1,11 @@ + + +

    Will ECSs That I Purchased Deployed in the Same Subnet?

    +

    You can customize your network to deploy the ECSs. Therefore, whether they are in the same subnet is totally up to you.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078505.html b/ecs/umn/en-us_topic_0018078505.html new file mode 100644 index 000000000..3a4ab6dfa --- /dev/null +++ b/ecs/umn/en-us_topic_0018078505.html @@ -0,0 +1,18 @@ + + +

    Why Can I Remotely Access an ECS But Cannot Ping It?

    +

    Symptom

    You can remotely access an ECS but when you ping the EIP bound to the ECS, the ping operation fails.

    +
    +

    Possible Causes

    A desired inbound rule is not added for the security group, and ICMP is not enabled.

    +
    +

    Solution

    1. Log in to the management console.
    2. Under Computing, click Elastic Cloud Server.
    3. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    4. Click the Security Groups tab, expand the information of the security group, and click the security group ID.
    5. On the Inbound Rules tab of the Security Group page, click Add Rule.
    6. Add an inbound rule for the security group and enable ICMP.
      • Protocol: ICMP
      • Source: IP address 0.0.0.0/0
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078507.html b/ecs/umn/en-us_topic_0018078507.html new file mode 100644 index 000000000..021c3956a --- /dev/null +++ b/ecs/umn/en-us_topic_0018078507.html @@ -0,0 +1,11 @@ + + +

    Can a Database Be Deployed on an ECS?

    +

    Yes. There is no limitation on this operation. You can deploy a database of any type on an ECS.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078509.html b/ecs/umn/en-us_topic_0018078509.html new file mode 100644 index 000000000..e6c5c43c7 --- /dev/null +++ b/ecs/umn/en-us_topic_0018078509.html @@ -0,0 +1,11 @@ + + +

    Does an ECS Support Oracle Databases?

    +

    Yes. You are advised to perform a performance test beforehand to ensure that the Oracle database can meet your requirements.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078520.html b/ecs/umn/en-us_topic_0018078520.html new file mode 100644 index 000000000..55e6e9d5c --- /dev/null +++ b/ecs/umn/en-us_topic_0018078520.html @@ -0,0 +1,12 @@ + + +

    Can I Install or Upgrade the OS of an ECS?

    +

    You can install or upgrade ECS OSs provided on the cloud platform.

    +
    • When you create an ECS, you can select a public image or a private image created from a public image to install the ECS OS. Select an OS image based on the programming language in the actual application scenario.
    • You can change your ECS OS through the management console, for example, you can upgrade CentOS 7.2 to CentOS 7.3.
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078522.html b/ecs/umn/en-us_topic_0018078522.html new file mode 100644 index 000000000..104756e2e --- /dev/null +++ b/ecs/umn/en-us_topic_0018078522.html @@ -0,0 +1,12 @@ + + +

    Can I Change the OS of an ECS?

    +

    Yes. You can change the OS of an ECS.

    +

    For instructions about how to change an ECS OS, see Changing the OS.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018078523.html b/ecs/umn/en-us_topic_0018078523.html new file mode 100644 index 000000000..365de3799 --- /dev/null +++ b/ecs/umn/en-us_topic_0018078523.html @@ -0,0 +1,12 @@ + + +

    Do ECSs Support GUI?

    +

    Windows ECSs are managed through a GUI but Linux ECSs are managed through the CLI. You can configure a GUI if required.

    +

    Before installing a GUI on an ECS, ensure that the idle memory is greater than or equal to 2 GB. Otherwise, the GUI installation may fail or the ECS cannot be started after the installation.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0018124779.html b/ecs/umn/en-us_topic_0018124779.html new file mode 100644 index 000000000..0cc1b557e --- /dev/null +++ b/ecs/umn/en-us_topic_0018124779.html @@ -0,0 +1,26 @@ + + +

    Why Does an ECS Fail to Be Remotely Connected Using RDP and Internal Error Code 4 Is Displayed?

    +

    Symptom

    An internal error is displayed when you log in to a Windows ECS and you fail to connect to the ECS remotely. Generally, this problem occurs because the Remote Desktop Services is busy.

    +
    +

    Possible Causes

    The Remote Desktop Services is busy.

    +

    The remote desktop is disconnected after login but is not logged out. To prevent this problem, log out of the ECS if you do not need to remotely connect to it.

    +
    +

    Solution

    1. Use VNC provided by the management console to remotely log in to the ECS.
    2. Open the Windows search box, enter services, and select Services.
    3. In the Services window, restart Remote Desktop Services. Ensure that Remote Desktop Services is in the Running status.
      Figure 1 Remote Desktop Services
      +
    4. Remotely connect to the ECS again.

      If the connection still fails, run the cmd command on the local server as the administrator, run the netsh winsock reset command to restore the default network connection configurations, and then retry the remote connection.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0018124785.html b/ecs/umn/en-us_topic_0018124785.html new file mode 100644 index 000000000..314cb6826 --- /dev/null +++ b/ecs/umn/en-us_topic_0018124785.html @@ -0,0 +1,47 @@ + + +

    Network Configurations

    +
    +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0018124786.html b/ecs/umn/en-us_topic_0018124786.html new file mode 100644 index 000000000..bbb2f8651 --- /dev/null +++ b/ecs/umn/en-us_topic_0018124786.html @@ -0,0 +1,51 @@ + + +

    Disk Management

    +
    +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0018124788.html b/ecs/umn/en-us_topic_0018124788.html new file mode 100644 index 000000000..9997d5faa --- /dev/null +++ b/ecs/umn/en-us_topic_0018124788.html @@ -0,0 +1,25 @@ + + +

    OS Management

    +
    + + diff --git a/ecs/umn/en-us_topic_0018124789.html b/ecs/umn/en-us_topic_0018124789.html new file mode 100644 index 000000000..cbcf848c5 --- /dev/null +++ b/ecs/umn/en-us_topic_0018124789.html @@ -0,0 +1,17 @@ + + +

    Database Applications

    +
    + + diff --git a/ecs/umn/en-us_topic_0018339851.html b/ecs/umn/en-us_topic_0018339851.html new file mode 100644 index 000000000..cea46337e --- /dev/null +++ b/ecs/umn/en-us_topic_0018339851.html @@ -0,0 +1,25 @@ + + +

    Why Does an Authentication Failure Occurs After I Attempt to Remotely Log In to a Windows ECS?

    +

    Symptom

    When a local computer running Windows attempts to access a Windows ECS using RDP (for example, MSTSC), an identity authentication failure occurs and the desired function is not supported.

    +
    • If the error message contains only the information that an identity authentication failure occurs and that the desired function is not supported, rectify the fault by following the instructions provided in Solution.
    • If the error message shows that the fault was caused by "CredSSP Encryption Oracle Remediation", as shown in Figure 1, the fault may be caused by a security patch released by Microsoft in March 2018. This patch may affect RDP-based CredSSP connections. As a result, setting up RDP-based connections to ECSs failed. For details, see Unable to RDP to Virtual Machine: CredSSP Encryption Oracle Remediation. Rectify the fault by following the instructions provided in official Microsoft document.
      Figure 1 Failed to set up a remote desktop connection
      +
    +
    +

    Solution

    Modify the remote desktop connection settings on the Windows ECS:

    +
    1. Log in to the ECS.
    2. Click Start in the lower left corner, right-click Computer, and choose Properties from the shortcut menu.
    3. In the navigation pane on the left, choose Remote settings.
    4. Click the Remote tab. In the Remote Desktop pane, select Allow connections from computers running any version of Remote Desktop (less secure).
      Figure 2 Remote settings
      +
    5. Click OK.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0019883415.html b/ecs/umn/en-us_topic_0019883415.html new file mode 100644 index 000000000..152f460aa --- /dev/null +++ b/ecs/umn/en-us_topic_0019883415.html @@ -0,0 +1,12 @@ + + +

    What Should I Do If a Key Pair Cannot Be Imported?

    +

    If you use Internet Explorer 9 to access the management console, the key pair may fail to import. In this case, perform the following steps to modify browser settings and then try again:

    +
    1. Click in the upper right corner of the browser.
    2. Select Internet Options.
    3. Click the Security tab in the displayed dialog box.
    4. Click Internet.
    5. If the security level indicates Custom, click Default Level to restore to the default settings.
    6. Move the scroll bar to set the security level to Medium and click Apply.
    7. Click Custom Level.
    8. Set Initialize and script ActiveX controls not marked as safe for scripting to Prompt.
    9. Click Yes.
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0021426802.html b/ecs/umn/en-us_topic_0021426802.html new file mode 100644 index 000000000..5ab57a5d4 --- /dev/null +++ b/ecs/umn/en-us_topic_0021426802.html @@ -0,0 +1,81 @@ + + +

    Resetting the Password for Logging In to a Windows ECS

    +

    Scenarios

    You can reset your ECS password if:

    +
    • The password is forgotten.
    • The password has expired.
    +

    The method described in this section can only be used to change the password of a local Windows account, but not the password of a domain account.

    +
    +

    Prerequisites

    • A temporary Linux ECS which runs Ubuntu 14.04 or later and locates in the same AZ as the target ECS is available.
    • You have bound an EIP to the temporary ECS and configured the apt-get source.
    • You have used either of the following methods to install ntfs-3g and chntpw software packages on the temporary ECS:

      Method 1:

      +

      Run the following command to install the ntfs-3g and chntpw software packages:

      +

      sudo apt-get install ntfs-3g chntpw

      +

      Method 2:

      +

      Download the ntfs-3g and chntpw software packages of the version required by the temporary ECS OS.

      +

      To obtain the ntfs-3g software package, log in at www.tuxera.com/community/open-source-ntfs-3g/.

      +

      To obtain the chntpw software package, log in at https://www.chntpw.com/download/.

      +
    +
    +

    Procedure

    1. Stop the original ECS, detach the system disk from it, and attach the system disk to the temporary ECS.
      1. Log in to the management console.
      2. Click in the upper left corner and select your region and project.
      3. Under Computing, click Elastic Cloud Server.
      4. Stop the original Windows ECS, switch to the page providing details about the ECS, and click the Disks tab.

        Do not forcibly stop the Windows ECS. Otherwise, password reset may fail.

        +
        +
      5. Locate the row containing the system disk to be detached and click Detach to detach the system disk from the ECS.
      6. On the page providing details about the temporary ECS, click the Disks tab.
      7. Click Attach Disk. In the displayed dialog box, select the system disk detached in step 1.e and attach it to the temporary ECS.
      +
    2. Log in to the temporary ECS remotely and attach the system disk.
      1. Run the following command to view the directory of the system disk detached from the original Windows ECS now attached to the temporary ECS:

        fdisk -l

        +
      2. Run the following command to mount the file system of the detached system disk to the temporary ECS:

        mount -t ntfs-3g /dev/Result obtained in step 2.a /mnt/

        +

        For example, if the result obtained in step 2.a is xvde2, run the following command:

        +

        mount -t ntfs-3g /dev/xvde2 /mnt/

        +

        If the following error information is displayed after the preceding command is executed, the NTFS file systems may be inconsistent. In such a case, rectify the file system inconsistency.

        +
        The disk contains an unclean file system (0, 0).
        +Metadata kept in Windows cache, refused to mount.
        +Failed to mount '/dev/xvde2': Operation not permitted
        +The NTFS partition is in an unsafe state. Please resume and shutdown
        +Windows fully (no hibernation or fast restarting), or mount the volume
        +read-only with the 'ro' mount option.
        +

        Back up the disk data, run the following command to rectify the NTFS file system inconsistency, and attach the system disk:

        +

        ntfsfix /dev/Result obtained in step 2.a

        +

        For example, if the result obtained in step 2.a is xvde2, run the following command:

        +

        ntfsfix /dev/xvde2

        +
      +
    3. Change the password and clear the original password.
      1. Run the following command to back up the SAM file:

        cp /mnt/Windows/System32/config/SAM /mnt/Windows/System32/config/SAM.bak

        +
      2. Run the following command to change the password of a specified user:

        chntpw -u Administrator /mnt/Windows/System32/config/SAM

        +
      3. Enter 1, q, and y as prompted, and press Enter.

        The password has been reset if the following information is displayed:

        +
        Select: [q] > 1
        +Password cleared!
        +Select: [q] > q
        +Hives that have changed:
        +#Name
        +0<SAM>
        +Write hive files? (y/n) [n] : y
        +0<SAM> - OK
        +
      +
    4. Stop the temporary ECS, detach the system disk, and attach the system disk to the original Windows ECS.
      1. Stop the temporary ECS, switch to the page providing details about the ECS, and click the Disks tab.
      2. Click Detach to detach the data disk temporarily attached in step 1.g.
      3. On the page providing details about the original Windows ECS, click the Disks tab.
      4. Click Attach Disk. In the displayed dialog box, select the data disk detached in step 4.b and device name /dev/sda.
      +
    5. Start the original Windows ECS and set a new login password.
      1. Click Start to start the original Windows ECS. After the status becomes Running, click Remote Login in the Operation column.
      2. Click Start. Enter CMD in the search box and press Enter.
      3. Run the following command to change the password (the new password must meet the requirements described in Table 1):

        net user Administrator New password

        + +
        + + + + + + + + + +
        Table 1 Password complexity requirements

        Parameter

        +

        Requirement

        +

        Example Value

        +

        Password

        +
        • Consists of 8 to 26 characters.
        • Contains at least three of the following character types:
          • Uppercase letters
          • Lowercase letters
          • Digits
          • Special characters: $!@%-_=+[]:./^,{}?
          +
        • Cannot contain the username or the username spelled backwards.
        • Cannot contain more than two consecutive characters in the same sequence as they appear in the username. (This requirement applies only to Windows ECSs.)
        +

        YNbUwp!dUc9MClnv

        +
        NOTE:

        The example password is generated randomly. Do not use it.

        +
        +
        +
        +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0021427650.html b/ecs/umn/en-us_topic_0021427650.html new file mode 100644 index 000000000..e3319233e --- /dev/null +++ b/ecs/umn/en-us_topic_0021427650.html @@ -0,0 +1,39 @@ + + +

    Resetting the Password for Logging In to a Linux ECS

    +

    Scenarios

    Keep your password secure. Reset the password if:

    +
    • The password is forgotten.
    • The password has expired.
    +

    This section describes how to reset the password of user root. After resetting the password, you can log in to the ECS, and change the private key or reset the password of a non-root user.

    +
    +

    Prerequisites

    • A temporary Linux ECS which locates in the same AZ as the target ECS is available.
    • You have bound an EIP to the temporary ECS.
    +
    +

    Procedure

    1. Download the script for resetting the password and upload the script to the temporary ECS.

      Contact customer service to obtain the password reset script. Use a connection tool, such as WinSCP, to upload the obtained changepasswd.sh script to the temporary ECS.

      +

      To download WinSCP, log in at https://winscp.net/.

      +
    2. Stop the original Linux ECS, detach the system disk from it, and attach the system disk to the temporary ECS.
      1. Stop the original ECS, switch to the page providing details about the ECS, and click the Disks tab.

        Do not forcibly stop the original ECS. Otherwise, password reset may fail.

        +
        +
      2. Locate the row containing the system disk to be detached and click Detach to detach the system disk from the ECS.
      3. On the page providing details about the temporary ECS, click the Disks tab.
      4. Click Attach Disk. In the displayed dialog box, select the system disk detached in step 2.b and attach it to the temporary ECS.
      +
    3. Log in to the temporary ECS remotely and reset the password.
      1. Locate the row containing the temporary ECS and click Remote Login in the Operation column.
      2. Run the following command to view the directory of the system disk detached from the original Linux ECS now attached to the temporary ECS:

        fdisk -l

        +
      3. Run the following commands in the directory where the script is stored to run the script for resetting the password:

        chmod +x changepasswd.sh

        +

        ./changepasswd.sh

        +

        When you run the password reset script, if the system displays a message indicating that there is no command related to logical volume manager (LVM), such as the message "no lvs command", install an LVM tool on the temporary ECS. The LVM2 tool is recommended, which can be installed by running the yum install lvm2 command.

        +

        If the original ECS and the temporary ECS both run CentOS 7, a mount failure may occur during script execution. To resolve this issue, replace mount $dev $mountPath with mount -o nouuid $dev $mountPath in the script.

        +
        +
      4. Enter the new password and the directory obtained in step 3.b as prompted.
        If the following information is displayed, the password has been changed:
        set password success.
        +
        +
      +
    4. For a non-root user, perform the following operations to enable the login permission of user root:

      vi /etc/ssh/sshd_config

      +

      Modify the following parameters:

      +
      • Change PasswordAuthentication no to PasswordAuthentication yes.

        Alternatively, delete the comment tag (#) before PasswordAuthentication yes.

        +
      • Change PermitRootLogin no to PermitRootLogin yes.

        Alternatively, delete the comment tag (#) before PermitRootLogin yes.

        +
      • Change the value of AllowUsers to root.

        Search for AllowUsers in the file. If AllowUsers is unavailable, add it at the end of the file.

        +
      +
    5. Stop the temporary ECS, detach the system disk, attach the system disk to the original Linux ECS, and restart the original Linux ECS.
      1. Stop the temporary ECS, switch to the page providing details about the ECS, and click the Disks tab.
      2. Click Detach to detach the data disk attached in step 2.
      3. On the page providing details about the original Linux ECS, click the Disks tab.
      4. Click Attach Disk. In the displayed dialog box, select the data disk detached in step 5.b and device name /dev/sda.
      5. Restart the original Linux ECS.
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0021831611.html b/ecs/umn/en-us_topic_0021831611.html new file mode 100644 index 000000000..8e828aa08 --- /dev/null +++ b/ecs/umn/en-us_topic_0021831611.html @@ -0,0 +1,23 @@ + + +

    Creating an ECS

    +
    + + diff --git a/ecs/umn/en-us_topic_0024911405.html b/ecs/umn/en-us_topic_0024911405.html new file mode 100644 index 000000000..2cb8b0363 --- /dev/null +++ b/ecs/umn/en-us_topic_0024911405.html @@ -0,0 +1,34 @@ + + +

    Reinstalling the OS

    +

    Scenarios

    If the OS of an ECS fails to start or requires optimization, reinstall the OS.

    +
    +

    Notes

    • After the OS is reinstalled, the IP and MAC addresses of the ECS remain unchanged.
    • Reinstalling the OS clears the data in all partitions of the EVS system disk, including the system partition. Therefore, back up data before reinstalling the OS.
    • Reinstalling the OS does not affect data disks.
    • Do not perform any operations on the ECS immediately after its OS is reinstalled. Wait for several minutes until the system successfully injects the password or key. Otherwise, the injection may fail, and the ECS cannot be logged in to.
    • After the OS is reinstalled, the password for logging in to the ECS will be reset. To retrieve the password, perform the following operations: +
    • You can choose to encrypt the system disk of an ECS during OS reinstallation.
    +
    +

    Constraints

    • The EVS disk quota must be greater than 0.
    • If the target ECS is created using a private image, ensure that the private image is available.
    • H2 ECSs do not support OS reinstallation.
    • If an ECS OS is to be reinstalled using a full-ECS image, the ECS system disk can be encrypted.
    +
    +

    Prerequisites

    • The target ECS is stopped.
    • The target ECS has a system disk attached.
    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Locate the row containing the target ECS. Click More in the Operation column and select Manage Image/Disk > Reinstall OS.

      Only stopped ECSs support OS reinstallation. If the ECS is not stopped, stop it before proceeding with reinstallation.

      +
    5. (Optional) Select the Encryption option to encrypt the system disk during OS reinstallation.

      To enable encryption, click Create Xrole to assign KMS access permissions to EVS. If you have rights granting permission, assign the KMS access permissions to EVS. If you do not have the permission, contact the user having the security administrator rights to assign the KMS access permissions. For more details, see Can All Users Use the Encryption Feature?

      +

      Encryption parameters are as follows:

      +
      • Encryption: indicates that the EVS disk has been encrypted.
      • Create Xrole: assigns KMS access permissions to EVS to obtain KMS keys. After the permissions are assigned, follow-up operations do not require assigning permissions again.
      • KMS Key Name: specifies the name of the key used by the encrypted EVS disk. You can select an existing key, or click Create KMS Key and create a new one on the KMS console. The default value is evs/default.
      • Xrole Name: EVSAccessKMS: specifies that permissions have been assigned to EVS to obtain KMS keys for encrypting or decrypting EVS disks.
      • KMS Key ID: specifies the ID of the key used by the encrypted data disk.
      +
    6. (Optional) Select a License Type (Use license from the system or Bring your own license (BYOL)) if the reinstalled OS running on your ECS is billed. For more details, see License Type.

      The following OSs are billed:

      +
      • SUSE Linux Enterprise Server
      • Oracle Enterprise Linux
      • Red Hat Enterprise Linux
      +
    7. Configure the login mode.

      If the target ECS uses key pair authentication, you can replace the original key pair.

      +
    8. Click OK.
    9. On the ECS OS Reinstallation page, confirm the OS specifications, and click Submit Application.
      After the request is submitted, the ECS status changes to Reinstalling. The reinstallation has been completed when the ECS status changes to Running.

      A temporary ECS is created during the reinstallation process. After reinstallation, this ECS will be automatically deleted. Do not perform any operation on the temporary ECS during the reinstallation process.

      +
      +
      +
    +
    +

    Follow-up Procedure

    If the reinstallation is unsuccessful, perform steps 3 to 9 again to retry reinstalling the OS again.

    +

    If the second reinstallation attempt is unsuccessful, contact customer service for manual recovery at the backend.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0024912311.html b/ecs/umn/en-us_topic_0024912311.html new file mode 100644 index 000000000..df8d4df70 --- /dev/null +++ b/ecs/umn/en-us_topic_0024912311.html @@ -0,0 +1,11 @@ + + +

    Can I Select Another OS During ECS OS Reinstallation?

    +

    No. You can use only the original image of the ECS to reinstall the OS. You need to use a new image if you want to change the OS. For details, see Changing the OS.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0025445670.html b/ecs/umn/en-us_topic_0025445670.html new file mode 100644 index 000000000..9c74d99f7 --- /dev/null +++ b/ecs/umn/en-us_topic_0025445670.html @@ -0,0 +1,11 @@ + + +

    Will NICs Added to an ECS Start Automatically?

    +

    Based on test results, if the ECS runs CentOS 7.0, NICs added to the ECS cannot start automatically. You must start the NICs manually.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0027157850.html b/ecs/umn/en-us_topic_0027157850.html new file mode 100644 index 000000000..189759546 --- /dev/null +++ b/ecs/umn/en-us_topic_0027157850.html @@ -0,0 +1,63 @@ + + +

    Enabling Internet Connectivity for an ECS Without an EIP

    +

    Scenarios

    To ensure platform security and conserve EIPs, EIPs are assigned only to specified ECSs. ECSs without EIPs cannot access the Internet directly. If these ECSs need to access the Internet (for example, to perform a software upgrade or install a patch), you can select an ECS with an EIP bound to function as a proxy ECS, providing an access channel for these ECS.

    +

    NAT Gateway is recommended, which provides both the SNAT and DNAT functions for your ECSs in a VPC and allows the ECSs to access or provide services accessible from the Internet.

    +
    +
    +

    Prerequisites

    • A proxy ECS with an EIP bound is available.
    • The IP address of the proxy ECS is in the same network and same security group as the ECSs that need to access the Internet.
    +
    +

    Linux Proxy ECS

    In this example, the proxy ECS runs CentOS 6.5.

    +
    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the search box above the upper right corner of the ECS list, enter the proxy ECS name for search.
    5. Click the name of the proxy ECS. The page providing details about the ECS is displayed.
    6. Click the Network Interfaces tab and then . Then, disable Source/Destination Check.

      By default, the source/destination check function is enabled. When this function is enabled, the system checks whether source IP addresses contained in the packets sent by ECSs are correct. If the IP addresses are incorrect, the system does not allow the ECSs to send the packets. This mechanism prevents packet spoofing, thereby improving system security. However, this mechanism prevents the packet sender from receiving returned packets. Therefore, disable the source/destination check.

      +
    7. Log in to the proxy ECS.

      For more details, see Login Overview.

      +
    8. Run the following command to check whether the proxy ECS can access the Internet:

      ping www.google.com

      +

      The proxy ECS can access the Internet if information similar to the following is displayed:

      +
      64 bytes from 220.181.111.148: icmp_seq=1 ttl=51 time=9.34 ms
      +64 bytes from 220.181.111.148: icmp_seq=2 ttl=51 time=9.11 ms
      +64 bytes from 220.181.111.148: icmp_seq=3 ttl=51 time=8.99 ms
      +
    9. Run the following command to check whether IP forwarding is enabled on the proxy ECS:

      cat /proc/sys/net/ipv4/ip_forward

      +
      • If 0 (disabled) is displayed, go to 10.
      • If 1 (enabled), go to 16.
      +
    10. Run the following command to open the IP forwarding configuration file in the vi editor:

      vi /etc/sysctl.conf

      +
    11. Press i to enter editing mode.
    12. Set the net.ipv4.ip_forward value to 1.

      Set the net.ipv4.ip_forward value to 1.

      +

      If the sysctl.conf file does not contain the net.ipv4.ip_forward parameter, run the following command to add it:

      +

      echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf

      +
      +
    13. Press Esc, type :wq, and press Enter.

      The system saves the configurations and exits the vi editor.

      +
    14. Run the following command to make the modification take effect:

      sysctl -p /etc/sysctl.conf

      +
    15. Run the following commands to configure default iptables rules:

      iptables -P INPUT ACCEPT

      +

      iptables -P OUTPUT ACCEPT

      +

      iptables -P FORWARD ACCEPT

      +

      Running iptables -P INPUT ACCEPT will set default INPUT policy to ACCEPT, which poses security risks. You are advised to set security group rules to restrict inbound access.

      +
      +
    16. Run the following command to configure source network address translation (SNAT) to enable ECSs in the same network segment to access the Internet through the proxy ECS:

      iptables -t nat -A POSTROUTING -o eth0 -s subnet/netmask-bits -j SNAT --to nat-instance-ip

      +

      For example, if the proxy ECS is in network 192.168.125.0, the subnet mask has 24 bits, and the private IP address is 192.168.125.4, run the following command:

      +

      iptables -t nat -A POSTROUTING -o eth0 -s 192.168.125.0/24 -j SNAT --to 192.168.125.4

      +

      To retain the preceding configuration even after the ECS is restarted, run the vi /etc/rc.local command to edit the rc.local file. Specifically, copy the rule described in step 16 into rc.local, press Esc to exit the editing mode, and enter :wq to save and exit the file.

      +
      +
    17. Run the following commands to save the iptables configuration and make it start up automatically upon ECS startup:

      service iptables save

      +

      chkconfig iptables on

      +
    18. Run the following command to check whether SNAT has been configured:

      iptables -t nat --list

      +

      SNAT has been configured if information similar to Figure 1 is displayed.

      +
      Figure 1 Successful SNAT configuration
      +
    19. Add a route.
      1. Log in to the management console.
      2. Click in the upper left corner and select your region and project.
      3. Under Network, click Virtual Private Cloud.
      4. Select a VPC to which a route is to be added and click Route Tables. On the Route Tables page, click Add Route.
      5. Set route information on the displayed page.
        • Destination: indicates the destination network segment. The default value is 0.0.0.0/0.
        • Next Hop: indicates the private IP address of the SNAT ECS.

          You can obtain the private IP address of the ECS on the Elastic Cloud Server page.

          +
        +
      +
    20. To delete the added iptables rules, run the following command:

      iptables -t nat -D POSTROUTING -o eth0 -s subnet/netmask-bits -j SNAT --to nat-instance-ip

      +

      For example, if the proxy ECS is in network segment 192.168.125.0, the subnet mask has 24 bits, and the private IP address is 192.168.125.4, run the following command:

      +

      iptables -t nat -D POSTROUTING -o eth0 -s 192.168.125.0/24 -j SNAT --to 192.168.125.4

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0027268511.html b/ecs/umn/en-us_topic_0027268511.html new file mode 100644 index 000000000..4956fd7e4 --- /dev/null +++ b/ecs/umn/en-us_topic_0027268511.html @@ -0,0 +1,281 @@ + + +

    Login Using VNC

    +

    Scenarios

    This section describes how to use VNC provided on the management console to log in to an ECS. This function applies to emergency O&M. In other scenarios, you are advised to log in to ECSs using SSH or MSTSC.

    +
    +

    Constraints

    • The remote login function is implemented using customized ports. Therefore, before attempting to log in remotely, ensure that the port to be used is not blocked by the firewall. For example, if the remote login link is xxx:8002, ensure that port 8002 is not blocked by the firewall.
    • If the client OS uses a local proxy and the firewall port cannot be configured on the local proxy, disable the proxy mode and then try logging in remotely.
    • Certain G series of ECSs do not support remote login provided by the management console. If you need to remotely log in to the ECSs, install the VNC server on them. For details, see GPU-accelerated ECSs. You are suggested to log in to the ECSs using MSTSC.
    +
    +

    Login Notes

    1. When you log in to the ECS using VNC, four types of keyboards will be used. These are described in Table 1. +
      + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Keyboard types

      Keyboard Type

      +

      Description

      +

      Keyboard Language

      +

      Physical keyboard

      +

      Used by the terminal and allows terminal data input.

      +

      Selected by users locally.

      +

      Input method keyboard on the terminal

      +

      Used for logging in to the management console from a terminal, such as a computer. The keyboard input method of the terminal must comply with the physical keyboard language type. In this way, the entered data can be correctly transferred from the physical keyboard to the VNC client.

      +

      Selected by users locally.

      +

      VNC keyboard

      +

      Used for VNC logins. The VNC keyboard input method must comply with the physical keyboard language type. In this way, the entered data can be correctly transferred from the VNC client to the ECS OS.

      +
      NOTE:

      The English keyboard is used by default. The system also supports other keyboard languages.

      +
      +

      Can be configured through the management console.

      +

      For instructions about how to select a VNC keyboard language, see Log In to a Windows ECS Using an English Keyboard and Log In to a Windows ECS Using a Non-English Keyboard.

      +

      ECS OS keyboard

      +

      Input method keyboard configured in the ECS OS. Ensure that this input method complies with the physical keyboard language type for correct response to the entered data transferred from the VNC client.

      +
      NOTE:
      • The default OS keyboard language of an ECS created using a public image is English. For additional information, see Public Images Introduction.
      • The OS keyboard language of an ECS created using a private image is customized.
      +
      +

      Configured by users locally.

      +

      For instructions about how to change an ECS OS keyboard language, see Changing the OS Keyboard Language.

      +
      +
      +
    2. When you log in to the ECS using VNC, ensure that your configured keyboard language is correct.
      The entered data is as expected only if the input method keyboard on the terminal, the VNC keyboard, and the ECS OS keyboard languages are the same as the physical keyboard language. For details about language configuration in the four types of keyboards, see Table 2. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Language configuration in the four types of keyboards

      Physical Keyboard

      +

      Input Method Keyboard on the Terminal

      +

      VNC Keyboard

      +

      ECS OS Keyboard

      +

      Permission

      +

      English

      +

      English

      +

      English

      +

      English

      +

      Yes

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      English

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      Yes

      +
      +
      +
      +
    3. If the password used when you create the ECS is entered using the English keyboard, you must use the English keyboard to enter the password when logging in to the ECS later.
    +
    +

    Log In to a Windows ECS Using an English Keyboard

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Obtain the password for logging in to the ECS.

      Before logging in to the ECS, you must have the login password.

      +

      For instructions about how to obtain the password for logging in to a Windows ECS, see Obtaining the Password for Logging In to a Windows ECS.

      +
    5. In the search box above the upper right corner of the ECS list, enter the ECS name and click for search.
    6. Locate the row containing the ECS and click Remote Login in the Operation column.
    7. In the displayed Configure Keyboard Layout for Remote Login dialog box, select the English keyboard.
      Figure 1 Keyboard layout configuration
      +
    8. Click Remote Login.
    9. (Optional) If you have changed the system language, in the dialog box that is displayed, click Remote Login.
      Figure 2 Remote Login
      +
    10. (Optional) When the system displays "Press CTRL+ALT+DELETE to log on", click Send CtrlAltDel in the upper part of the remote login page to log in to the ECS.
      Figure 3 Send CtrlAltDel
      +
    11. (Optional) If you need your cursor to be displayed on the remote login page, click Local Cursor.
      Figure 4 Local Cursor
      +
    12. Enter the ECS password as prompted.
    +
    +

    Log In to a Windows ECS Using a Non-English Keyboard

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Obtain the password for logging in to the ECS.

      Before logging in to the ECS, you must have the login password.

      +

      For instructions about how to obtain the password for logging in to a Windows ECS, see Obtaining the Password for Logging In to a Windows ECS.

      +
    5. In the search box above the upper right corner of the ECS list, enter the ECS name, IP address, or ID, and click for search.
    6. Locate the row containing the ECS and click Remote Login in the Operation column.
    7. In the displayed Configure Keyboard Layout for Remote Login dialog box, select the keyboard that suits your language.
      • When logging in to the ECS using VNC for the first time, select the default English keyboard. The ECS OS uses the English keyboard by default.
      • If you have changed the keyboard language of the ECS OS, select the keyboard language to which you have changed.
      +
      Figure 5 Keyboard layout configuration
      +
    1. Click Remote Login.
    2. (Optional) If you have changed the system language, in the dialog box that is displayed, click Remote Login.
      Figure 6 Remote Login
      +
    3. (Optional) When the system displays "Press CTRL+ALT+DELETE to log on", click Send CtrlAltDel in the upper part of the remote login page to log in to the ECS.
      Figure 7 Send CtrlAltDel
      +
    4. (Optional) If you need your cursor to be displayed on the remote login page, click Local Cursor.
      Figure 8 Local Cursor
      +
    5. Enter the ECS password as prompted.
      • When logging in to the ECS using VNC for the first time, use the English keyboard to enter the password. After you have logged in to the ECS, see Changing the OS Keyboard Language to change the keyboard language of the ECS OS. You can then select the keyboard language and enter the password the next time you log in.
      • If you have changed the keyboard language of the ECS OS, ensure that the keyboard language in use, the keyboard language selected in step 7, and the changed OS keyboard language are all the same.
      +
    +
    +

    Changing the OS Keyboard Language

    Switch the input method or open the soft keyboard before entering characters. To do so, click the function menu icon and select soft keyboard and keyboard layout.

    +
    +

    Configuration Example

    Scenarios

    +
    If you attempt to log in to an ECS created using a public image for the first time, the languages of the four types of keyboards before the configuration are as follows (Before configuration row in Table 3):
    • Physical keyboard: German
    • Input method keyboard on the terminal: English
    • VNC keyboard: English
    • ECS OS keyboard: English
    +
    +

    In this case, you must change the languages of the other three types of keyboards to the same language as the physical keyboard for expected data entering. For details, see the Solution 1 row in Table 3.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Languages in the four types of keyboards

    -

    +

    Physical Keyboard

    +

    Input Method Keyboard on the Terminal

    +

    VNC Keyboard

    +

    ECS OS Keyboard

    +

    Before configuration

    +

    German

    +

    English

    +

    English

    +

    English

    +

    Solution 1

    +

    German

    +

    German

    +

    German

    +

    German

    +

    Solution 2

    +

    English

    +

    English

    +

    English

    +

    English

    +
    +
    +

    Procedure

    +
    1. Locally configure the language, for example, German, in the input method keyboard on the terminal.
    2. Set the VNC keyboard language to English.

      When you log in to the ECS using VNC for the first time, the default ECS OS keyboard language is English. Therefore, you must set the VNC keyboard language to English.

      +
      +
    3. Log in to the ECS and change the ECS OS language to German.

      For details, see Changing the OS Keyboard Language.

      +
    4. Change the VNC keyboard language to German.

      For details, see Log In to a Windows ECS Using a Non-English Keyboard.

      +
    +

    To set the languages on the four types of keyboards to all be the same, repeat steps 1 to 4.

    +

    During the configuration, if English characters cannot be entered using the current physical keyboard, use the English soft keyboard to modify the configuration described in the Solution 2 row of Table 3. In such a case, you only need to use the English soft keyboard to enter characters.

    +
    • To enable the Windows English soft keyboard, choose Start > Run, enter osk, and press Enter.
    • The method of enabling the Linux English soft keyboard varies depending on the OS version and is not described in this document.
    +
    +
    + +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0027371529.html b/ecs/umn/en-us_topic_0027371529.html new file mode 100644 index 000000000..df9d60a74 --- /dev/null +++ b/ecs/umn/en-us_topic_0027371529.html @@ -0,0 +1,13 @@ + + +

    Monitoring ECSs

    +

    Monitoring is key for ensuring ECS performance, reliability, and availability. Using monitored data, you can determine ECS resource utilization. The public cloud provides Cloud Eye to help you obtain the running statuses of your ECSs. You can use Cloud Eye to automatically monitor ECSs in real time and manage alarms and notifications to keep track of ECS performance metrics.

    +

    This section covers the following content:

    +
    • Viewing basic ECS metrics
    • Customizing ECS alarm rules
    • Viewing ECS running statuses for routine monitoring
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0027371530.html b/ecs/umn/en-us_topic_0027371530.html new file mode 100644 index 000000000..c53749f9c --- /dev/null +++ b/ecs/umn/en-us_topic_0027371530.html @@ -0,0 +1,22 @@ + + +

    Viewing ECS Metrics

    +

    Scenarios

    The public cloud platform provides Cloud Eye, which monitors the running statuses of your ECSs. You can obtain the monitoring metrics of each ECS on the management console.

    +
    +

    Prerequisites

    • The ECS is running properly.

      Cloud Eye does not display the monitoring data for a stopped, faulty, or deleted ECS. After such an ECS restarts or recovers, the monitoring data is available in Cloud Eye.

      +

      Cloud Eye discontinues monitoring ECSs that remain in Stopped or Faulty state for 24 hours and removes them from the monitoring list. However, the alarm rules for such ECSs are not automatically deleted.

      +
      +
    • Alarm rules have been configured in Cloud Eye for the target ECS.

      The monitoring data is unavailable for the ECSs without alarm rules configured in Cloud Eye. For details, see Setting Alarm Rules.

      +
    • The target ECS has been properly running for at least 10 minutes.

      The monitoring data and graphics are available for a new ECS after the ECS runs for at least 10 minutes.

      +
    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the search box above the upper right corner of the ECS list, enter the ECS name, IP address, or ID for search.
    5. Click the name of the target ECS. The page providing details about the ECS is displayed.
    6. Click the Monitoring tab to view the monitoring data.
    7. In the ECS monitoring area, select a duration to view the monitoring data.

      You can view the monitoring data of the ECS in the last 1, 3, or 12 hours.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0027371531.html b/ecs/umn/en-us_topic_0027371531.html new file mode 100644 index 000000000..28e73b4c0 --- /dev/null +++ b/ecs/umn/en-us_topic_0027371531.html @@ -0,0 +1,28 @@ + + +

    Setting Alarm Rules

    +

    Scenarios

    Setting ECS alarm rules allows you to customize the monitored objects and notification policies so that you can closely monitor your ECSs.

    +

    This section describes how to set ECS alarm rules, including alarm rule names, monitoring objects, monitoring metrics, alarm thresholds, monitoring intervals, and notifications.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Management & Deployment, click Cloud Eye.
    4. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
    5. On the Alarm Rules page, click Create Alarm Rule to create an alarm rule, or modify an existing alarm rule.

      The following operations use modifying an existing alarm rule as an example.

      +
      1. Click the target alarm rule.
      2. Click Modify in the upper right corner of the page.
      3. In the Modify Alarm Rule dialog box shown in Figure 1, set the parameters as prompted.
        Figure 1 Modifying an alarm rule
        +
      4. Click OK.

        After an alarm rule is modified, the system automatically notifies you of an alarm when the alarm complying with the alarm rule is generated.

        +
      +

      For more information about ECS alarm rules, see Cloud Eye User Guide.

      +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0029792884.html b/ecs/umn/en-us_topic_0029792884.html new file mode 100644 index 000000000..51d343536 --- /dev/null +++ b/ecs/umn/en-us_topic_0029792884.html @@ -0,0 +1,13 @@ + + +

    Can I Forcibly Restart or Stop an ECS?

    +

    Yes. If an ECS remains in the Restarting or Stopping state for over 30 minutes after it is restarted, you can forcibly restart or stop the ECS as follows:

    +
    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Select the target ECS and click Restart or Stop.

      A dialog box is displayed to confirm whether you want to restart or stop the ECS.

      +
    5. Select Forcibly restart the preceding ECSs or Forcibly stop the preceding ECSs.
    6. Click OK.
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0029806525.html b/ecs/umn/en-us_topic_0029806525.html new file mode 100644 index 000000000..3149b73d2 --- /dev/null +++ b/ecs/umn/en-us_topic_0029806525.html @@ -0,0 +1,21 @@ + + +

    How Can I Obtain Data Disk Information If Tools Are Uninstalled?

    +

    If you uninstall Tools from a Linux ECS in a non-PVOPS system, data disks cannot be identified. In such a case, you can create a new ECS and attach the data disks of the original ECS to the new ECS and view information about the data disks. The procedure is as follows:

    +
    1. Log in to the management console and create a new ECS.

      Ensure that the new ECS is located in the same AZ and has the same parameter settings as the original ECS.

      +
      +
    2. (Optional) On the Elastic Cloud Server page, locate the row containing the original ECS, click More in the Operation column, and select Stop. On the Stop ECS page, select Forcibly stop the preceding ECSs and click Yes to forcibly stop the original ECS.

      Manually refresh the Elastic Cloud Server page. The original ECS is stopped once the Status changes to Stopped.

      +

      The ECSs running certain OSs support online data disk detaching. If your OS supports this feature, you can detach data disks from the running ECS.

      +
      +
    3. View information about the data disks attached to the original ECS.

      If the original ECS has multiple data disks attached, repeat steps 4 to 6 to attach each data disk to the new ECS.

      +
      +
    4. Click a data disk. The Elastic Volume Service page is displayed.
    5. Select the data disk to be detached and click Detach in the Operation column. On the Detach Disk page, select the original ECS and click OK to detach the data disk from the original ECS.

      Manually refresh the Elastic Volume Service page. The data disk is detached from the original ECS once the Status changes to Available.

      +
    6. Select the detached data disk and click Attach in the Operation column. On the Attach Disk page, click the new ECS, select a device name, and click OK to attach the data disk to the new ECS.

      Manually refresh the EVS list. The data disk is attached to the new ECS once the Status value changes to In-use. You can then log in to the management console and view information about the data disk of the new ECS.

      +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030013188.html b/ecs/umn/en-us_topic_0030013188.html new file mode 100644 index 000000000..bf825d36b --- /dev/null +++ b/ecs/umn/en-us_topic_0030013188.html @@ -0,0 +1,16 @@ + + +

    Can an ECS Without an EIP Access the Internet?

    +

    Yes.

    +
    • Method 1: Configure a SNAT server.

      You can configure the SNAT server so that the ECS without an EIP bound can access the Internet.

      +

      For details, see "Configuring an SNAT Server" in Virtual Private Cloud User Guide.

      +
    • Method 2: Create a NAT gateway.

      If a large number of concurrent connections are required, it is a good practice to use the NAT Gateway service provided by the cloud platform.

      +

      The NAT Gateway service offers the NAT function for ECSs in a VPC, allowing these ECSs to access the Internet using an EIP. For more information about NAT Gateway, see NAT Gateway User Guide.

      +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030828254.html b/ecs/umn/en-us_topic_0030828254.html new file mode 100644 index 000000000..9e82ab8dc --- /dev/null +++ b/ecs/umn/en-us_topic_0030828254.html @@ -0,0 +1,41 @@ + + +

    Images

    +

    What Is Image?

    An image is an ECS template that contains an OS and may also contain proprietary software and application software, such as database software. You can use images to create ECSs.

    +

    Images can be public or private. Public images are provided by the system by default, and private images are manually created. You can use any type of image to create an ECS. You can also create a private image using an existing ECS or external image. This provides you with a simple and fast way to create ECSs tailored to your needs. For example, if you use web services, your image can contain web server configurations, static configurations, and dynamic page code. After you use this image to create an ECS, the web server will run on the newly created ECS.

    +
    +

    Image Types

    +
    + + + + + + + + + + + + + +

    Image Type

    +

    Description

    +

    Public image

    +

    A public image is a standard, widely used image. It contains an OS and preinstalled public applications and is available to all users. Public images are very stable and their OS and any included software have been officially authorized for use. If a public image does not contain the application environments or software you need, you can use a public image to create an ECS and then deploy required software as needed.

    +

    Private image

    +

    A private image contains an OS or service data, preinstalled public applications, and a user's personal applications. Private images are only available to the users who created them.

    +

    A private image can be a system disk image, data disk image, or full-ECS image.

    +
    • A system disk image contains an OS and pre-installed software for various services. You can use a system disk image to create ECSs and migrate your services to the cloud.
    • A data disk image contains only service data. You can use a data disk image to create EVS disks and use them to migrate your service data to the cloud.
    • A full-ECS image contains an OS, pre-installed software, and service data. A full-ECS image is created using differential backups and the creation takes less time than creating a system or data disk image of the same size.
    +

    Shared image

    +

    A shared image is a private image another user has shared with you.

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030828256.html b/ecs/umn/en-us_topic_0030828256.html new file mode 100644 index 000000000..8b787f714 --- /dev/null +++ b/ecs/umn/en-us_topic_0030828256.html @@ -0,0 +1,24 @@ + + +

    EVS Disks

    +

    What Is Elastic Volume Service?

    Elastic Volume Service (EVS) offers scalable block storage for ECSs. With high reliability, high performance, and rich specifications, EVS disks can be used for distributed file systems, development and test environments, data warehouse applications, and high-performance computing (HPC) scenarios to meet diverse service requirements.

    +
    +

    Disk Types

    EVS disk types differ in performance. Choose the disk type based on your requirements.

    +

    For more information about EVS disk specifications and performance, see Elastic Volume Service User Guide.

    +
    +

    Device Types

    EVS disks have two device types, Virtual Block Device (VBD) and Small Computer System Interface (SCSI).
    • VBD

      When you create an EVS disk on the management console, Device Type of the EVS disk is VBD by default. VBD EVS disks support only simple SCSI read/write commands.

      +
    • SCSI

      You can create EVS disks whose Device Type is SCSI on the management console. These EVS disks support transparent SCSI command transmission, allowing ECS OS to directly access underlying storage media. SCSI EVS disks support both basic and advanced SCSI commands.

      +

      For more information about how to use SCSI EVS disks, for example, how to install the driver, see "Device Types and Usage Instructions" in Elastic Volume Service User Guide.

      +
      +
    +
    +
    + +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030828257.html b/ecs/umn/en-us_topic_0030828257.html new file mode 100644 index 000000000..b2f9422d0 --- /dev/null +++ b/ecs/umn/en-us_topic_0030828257.html @@ -0,0 +1,86 @@ + + +

    Network

    +

    VPC

    Virtual Private Cloud (VPC) allows you to create customized virtual networks in your logically isolated AZ. Such networks are dedicated zones that are logically isolated, providing secure network environments for your ECSs. You can define security groups, virtual private networks (VPNs), IP address segments, and bandwidth for a VPC. This facilitates internal network configuration and management and allows you to change your network in a secure and convenient network manner. You can also customize the ECS access rules within a security group and between security groups to improve ECS security.

    +

    For more information about VPC, see Virtual Private Cloud User Guide.

    +
    +

    Subnet

    A subnet is a range of IP addresses in your VPC and provides IP address management and DNS resolution functions for ECSs in it. The IP addresses of all ECSs in a subnet belong to the subnet.

    +

    By default, ECSs in all subnets of the same VPC can communicate with each other, while ECSs in different VPCs cannot.

    +
    +

    Security Group

    A security group is a collection of access control rules for ECSs that have the same security protection requirements and that are mutually trusted. By adding an ECS to a security group, you apply all the rules defined for this security group to this ECS.

    +

    Your account automatically comes with a default security group. The default security group allows all outbound data, denies all inbound data, and allows all data between ECSs in the group. Your ECSs in the security group can communicate with each other without the need to add rules.

    +
    Figure 1 Default security group
    +

    +

    Table 1 describes default security group rules.

    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 1 Default security group rules

    Direction

    +

    Protocol

    +

    Port/Range

    +

    Source/Destination

    +

    Description

    +

    Outbound

    +

    All

    +

    All

    +

    Destination: 0.0.0.0/0

    +

    Allows all outbound traffic.

    +

    Inbound

    +

    All

    +

    All

    +

    Source: the current security group (for example, sg-xxxxx)

    +

    Allows communications among ECSs within the security group and denies all inbound traffic (incoming data packets).

    +
    +
    +
    +

    EIP

    The Elastic IP (EIP) service enables your cloud resources to communicate with the Internet using static public IP addresses and scalable bandwidths. EIPs can be bound to or unbound from ECSs, BMSs, virtual IP addresses, NAT gateways, or load balancers.

    +

    Each EIP can be used by only one cloud resource at a time.

    +
    Figure 2 Accessing the Internet using an EIP
    +
    +

    Network QoS

    Network QoS uses basic technologies to improve the quality of network communication. A network with QoS enabled offers predictable network performance and effectively allocates network bandwidth to use network resources.

    +

    To obtain the QoS data of an ECS flavor, including the maximum bandwidth, assured bandwidth, maximum PPS, and NIC multi-queue, see ECS Specifications.

    +
    The intranet bandwidth and PPS of an ECS are determined by its flavor.
    • Assured intranet bandwidth: indicates the guaranteed bandwidth allocated to an ECS
    • Maximum intranet bandwidth: indicates the maximum bandwidth that can be allocated to an ECS
    • Maximum intranet PPS: indicates the maximum ECS capability in transmitting and receiving packets.
    • NIC multi-queue: allocates NIC interrupt requests to multiple vCPUs for higher PPS performance and bandwidth.
      +
      +
    +
    +

    Use case of network QoS:

    +

    All ECSs of the same hypervisor share the network QoS. There is a hypervisor bucket within the host between the ECS and the hypervisor. So packets from ECSs pass through the bucket to the hypervisor. The bucket size (GB) is determined by the ECS flavor.

    +

    For example, if the maximum bandwidth of a hypervisor bucket is 10 Gbit/s and will be shared by ECS 1 and ECS 2, the assured bandwidth of ECS 1 is 5 Gbit/s and that of ECS 2 is 1 Gbit/s. ECS 1 and ECS 2 share the bandwidth of 10 Gbit/s.

    +
    • If the bandwidth required by ECS 1 is 10 Gbit/s and that required by ECS 2 is 0 Gbit/s, all bandwidths are allocated to ECS 1.
    • If the bandwidth required by ECS 1 is 10 Gbit/s and that required by ECS 2 is 1 Gbit/s, the bandwidth allocated to ECS 1 is 9 Gbit/s and that allocated to ECS 2 is 1 Gbit/s.
    • If the total bandwidth required by ECS 1 and ECS 2 exceeds the bandwidth of the hypervisor bucket, the assured bandwidth will be allocated to the ECSs first, that is the bandwidth for ECS 1 is 5 Gbit/s and that for ECS 2 is 1 Gbit/s. The remaining 4 Gbit/s of bandwidth will be randomly used by the two ECSs.
    +

    Network QoS:

    +
    • The maximum/assured bandwidth is completely independent of the EIP bandwidth.
    • ECSs of the same hypervisor share the total bandwidth of the hypervisor.
    • Network QoS applies for both internal and external bandwidth.
    • Network QoS has been applied to the existing KVM-based ECSs.
    • ECSs of the same hypervisor are preferentially allocated with assured bandwidths. Only when other ECSs of the same hypervisor are not in use, an ECS in use in the hypervisor can have the maximum bandwidth.
    +
    • Network QoS applies to any program running on an ECS.
    • Network QoS applies for both internal and external bandwidth.
    • The EIP bandwidth limits the external bandwidth, and the network QoS limits the internal bandwidth.
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0030828258.html b/ecs/umn/en-us_topic_0030828258.html new file mode 100644 index 000000000..1cf465da3 --- /dev/null +++ b/ecs/umn/en-us_topic_0030828258.html @@ -0,0 +1,15 @@ + + +

    Modifying ECS vCPU and Memory Specifications

    +
    + + diff --git a/ecs/umn/en-us_topic_0030831623.html b/ecs/umn/en-us_topic_0030831623.html new file mode 100644 index 000000000..00035d2a7 --- /dev/null +++ b/ecs/umn/en-us_topic_0030831623.html @@ -0,0 +1,58 @@ + + +

    Scenarios and Disk Partitions

    +

    If you have added a data disk during ECS creation, you must initialize the data disk after logging in to the ECS.

    +

    Scenarios

    After a disk is attached to a server, you need to log in to the server to initialize the disk, that is, format the disk. You must initialize a disk before accessing it.
    • System disk

      A system disk does not require manual initialization because it is automatically created and initialized upon server creation. The default disk partition style is master boot record (MBR).

      +
    • Data disk
      • If a data disk is created along with a server, it will be automatically attached to the server.
      • If a data disk is created separately, you need to manually attach it to a server.
      +

      In both cases, you must initialize the data disk before using it. Choose a proper disk partition style based on your service plan.

      +
    +
    +
    +

    Disk Partition Styles

    Table 1 lists the common disk partition styles. In Linux, different disk partition styles require different partitioning tools.

    + +
    + + + + + + + + + + + + + + + + +
    Table 1 Disk partition styles

    Disk Partition Style

    +

    Maximum Disk Capacity Supported

    +

    Maximum Number of Partitions Supported

    +

    Linux Partitioning Tool

    +

    Master Boot Record (MBR)

    +

    2 TB

    +
    • 4 primary partitions
    • 3 primary partitions and 1 extended partition
    +
    With MBR, one may create several primary partitions and an extended partition. An extended partition must be divided into several logical partitions before use. For example, if 6 partitions need to be created, you can create the partitions in the following two ways:
    • 3 primary partitions and 1 extended partition, with the extended partition divided into 3 logical partitions
    • 1 primary partition and 1 extended partition, with the extended partition divided into 5 logical partitions
    +
    +
    • fdisk
    • parted
    +

    GUID Partition Table (GPT)

    +

    18 EB

    +

    1 EB = 1048576 TB

    +

    Unlimited

    +

    Disk partitions created using GPT are not categorized.

    +

    parted

    +
    +
    +

    The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Because a data disk currently supports up to 32 TB, use the GPT partition style if your disk capacity is larger than 2 TB.

    +

    If you change the disk partition style after the disk has been used, the data on the disk will be cleared. Therefore, select a proper disk partition style when initializing the disk.

    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030831989.html b/ecs/umn/en-us_topic_0030831989.html new file mode 100644 index 000000000..6b024dd09 --- /dev/null +++ b/ecs/umn/en-us_topic_0030831989.html @@ -0,0 +1,23 @@ + + +

    Initializing EVS Data Disks

    +
    + + diff --git a/ecs/umn/en-us_topic_0030831990.html b/ecs/umn/en-us_topic_0030831990.html new file mode 100644 index 000000000..6fca3706c --- /dev/null +++ b/ecs/umn/en-us_topic_0030831990.html @@ -0,0 +1,21 @@ + + +

    Logging In to a Linux ECS

    +
    + + diff --git a/ecs/umn/en-us_topic_0030878383.html b/ecs/umn/en-us_topic_0030878383.html new file mode 100644 index 000000000..b451da0af --- /dev/null +++ b/ecs/umn/en-us_topic_0030878383.html @@ -0,0 +1,112 @@ + + +

    Configuring Security Group Rules

    +

    Scenarios

    Similar to firewall, a security group is a logical group used to control network access. You can define access rules for a security group to protect the ECSs that are added to this security group.

    +
    • Inbound: Inbound rules allow external network traffic to be sent to the ECSs in the security group.
    • Outbound: Outbound rules allow network traffic from the ECSs in the security group to be sent out of the security group.
    +

    For details about the default security group rules, see Virtual Private Cloud User Guide. For details about configuration examples for security group rules, see Security Group Configuration Examples.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the Security Groups tab, expand the information of the security group, and view security group rules.
    6. Click the security group ID.

      The system automatically switches to the security group details page.

      +
    7. On the Inbound Rules tab, click Add Rule. In the displayed dialog box, set required parameters to add an inbound rule.

      You can click + to add more inbound rules.

      +
      Figure 1 Add Inbound Rule
      + +
      + + + + + + + + + + + + + + + + + + + + +
      Table 1 Inbound rule parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Protocol & Port

      +

      +

      Protocol: The network protocol. Currently, the value can be All, TCP, UDP, ICMP, GRE, or others.

      +

      TCP

      +

      Port: The port or port range over which the traffic can reach your ECS. The value ranges from 1 to 65535.

      +

      22, or 22-30

      +

      Source

      +
      The source of the security group rule. The value can be a single IP address or a security group to allow access from the IP address or instances in the security group. For example:
      • xxx.xxx.xxx.xxx/32 (IPv4 address)
      • xxx.xxx.xxx.0/24 (IP address range)
      • 0.0.0.0/0 (all IP addresses)
      • sg-abc (security group)
      +
      +

      If the source is a security group, this rule will apply to all instances associated with the selected security group.

      +

      0.0.0.0/0

      +

      Description

      +

      Supplementary information about the security group rule. This parameter is optional.

      +

      The security group rule description can contain a maximum of 255 characters and cannot contain angle brackets (< or >).

      +

      N/A

      +
      +
      +
    8. On the Outbound Rules tab, click Add Rule. In the displayed dialog box, set required parameters to add an outbound rule.

      You can click + to add more outbound rules.

      +
      Figure 2 Add Outbound Rule
      + +
      + + + + + + + + + + + + + + + + + + + + +
      Table 2 Outbound rule parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Protocol & Port

      +

      +

      Protocol: The network protocol. Currently, the value can be All, TCP, UDP, ICMP, GRE, or others.

      +

      TCP

      +

      Port: The port or port range over which the traffic can leave your ECS. The value ranges from 1 to 65535.

      +

      22, or 22-30

      +

      Destination

      +
      The destination of the security group rule. The value can be a single IP address or a security group to allow access to the IP address or instances in the security group. For example:
      • xxx.xxx.xxx.xxx/32 (IPv4 address)
      • xxx.xxx.xxx.0/24 (IP address range)
      • 0.0.0.0/0 (all IP addresses)
      • sg-abc (security group)
      +
      +

      0.0.0.0/0

      +

      Description

      +

      Supplementary information about the security group rule. This parameter is optional.

      +

      The security group rule description can contain a maximum of 255 characters and cannot contain angle brackets (< or >).

      +

      N/A

      +
      +
      +
    9. Click OK to complete the security rule configuration.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0030888079.html b/ecs/umn/en-us_topic_0030888079.html new file mode 100644 index 000000000..653026572 --- /dev/null +++ b/ecs/umn/en-us_topic_0030888079.html @@ -0,0 +1,21 @@ + + +

    Logging In to a Windows ECS

    +
    + + diff --git a/ecs/umn/en-us_topic_0030893661.html b/ecs/umn/en-us_topic_0030893661.html new file mode 100644 index 000000000..810a6c542 --- /dev/null +++ b/ecs/umn/en-us_topic_0030893661.html @@ -0,0 +1,21 @@ + + +

    Viewing ECS Information

    +
    + + diff --git a/ecs/umn/en-us_topic_0030911465.html b/ecs/umn/en-us_topic_0030911465.html new file mode 100644 index 000000000..f69535366 --- /dev/null +++ b/ecs/umn/en-us_topic_0030911465.html @@ -0,0 +1,341 @@ + + +

    Basic ECS Metrics

    +

    Description

    This section describes monitoring metrics reported by ECS to Cloud Eye. You can use Cloud Eye to view these metrics and alarms generated for ECSs.

    +
    +

    Namespace

    SYS.ECS

    +
    +

    ECS Metrics

    ECS metrics vary depending on ECS OSs and types. For details, see Table 1. √ indicates that the metric is supported, and x indicates that the metric is not supported.

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ECS metrics

    Metric

    +

    Windows

    +

    Linux

    +

    CPU Usage

    +

    Supported

    +

    Supported

    +

    Memory Usage

    +

    Supported

    +

    Not supported

    +

    Disk Usage

    +

    Supported

    +

    Not supported

    +

    Disk Read Bandwidth

    +

    Supported

    +

    Supported

    +

    Disk Write Bandwidth

    +

    Supported

    +

    Supported

    +

    Disk Read IOPS

    +

    Supported

    +

    Supported

    +

    Disk Write IOPS

    +

    Supported

    +

    Supported

    +

    Inband Incoming Rate

    +

    Supported

    +

    Not supported

    +

    Inband Outgoing Rate

    +

    Supported

    +

    Not supported

    +

    Outband Incoming Rate

    +

    Supported

    +

    Supported

    +

    Outband Outgoing Rate

    +

    Supported

    +

    Supported

    +

    InfiniBand NIC Status

    +

    Supported (Only for H2 ECSs)

    +

    Supported (Only for H2 ECSs)

    +
    +
    +

    The image based on which the target ECS is created must have OTC Tools installed (OTC Tools has been installed for public images by default). Otherwise, the Memory Usage and Disk Usage metrics are unavailable. For details about how to install the OTC Tools, visit https://github.com/UVP-Tools/UVP-Tools/.

    +
    +

    Table 2 describes these ECS metrics.

    +

    The monitoring intervals for the following ECSs with raw monitoring metrics are as follows:

    +
    • KVM ECS: 5 minutes
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Metric description

    Metric

    +

    Parameter

    +

    Description

    +

    Value Range

    +

    Monitored Object

    +

    Monitoring Interval (Raw Metrics and KVM Only)

    +

    cpu_util

    +

    CPU Usage

    +

    CPU usage of an ECS

    +

    Unit: Percent

    +

    Formula: CPU usage of an ECS/Number of vCPUs in the ECS

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    mem_util

    +

    Memory Usage

    +

    +

    Memory usage of an ECS

    +

    This metric is unavailable if the image has no OTC Tools installed.

    +

    Unit: Percent

    +

    Formula: Used memory of an ECS/Total memory of the ECS

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    disk_util_inband

    +

    Disk Usage

    +

    Disk usage of an ECS

    +

    This metric is unavailable if the image has no OTC Tools installed.

    +

    Unit: Percent

    +

    Formula: Used capacity of an ECS disk/Total capacity of the ECS disk

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    disk_read_bytes_rate

    +

    Disk Read Bandwidth

    +

    Number of bytes read from an ECS disk per second

    +

    Unit: byte/s

    +

    Formula: Total number of bytes read from an ECS disk/Monitoring interval

    +

    byte_out = (rd_bytes - last_rd_bytes)/Time difference

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    disk_write_bytes_rate

    +

    Disk Write Bandwidth

    +

    Number of bytes written to an ECS disk per second

    +

    Unit: byte/s

    +

    Formula: Total number of bytes written to an ECS disk/Monitoring interval

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    disk_read_requests_rate

    +

    Disk Read IOPS

    +

    Number of read requests sent to an ECS disk per second

    +

    Unit: request/s

    +

    Formula: Total number of read requests sent to an ECS disk/Monitoring interval

    +

    req_out = (rd_req - last_rd_req)/Time difference

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    disk_write_requests_rate

    +

    Disk Write IOPS

    +

    Number of write requests sent to an ECS disk per second

    +

    Unit: request/s

    +

    Formula: Total number of write requests sent to an ECS disk/Monitoring interval

    +

    req_in = (wr_req - last_wr_req)/Time difference

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    network_incoming_bytes_rate_inband

    +

    Inband Incoming Rate

    +

    Number of incoming bytes on an ECS per second

    +

    Unit: byte/s

    +

    Formula: Total number of inband incoming bytes on an ECS/Monitoring interval

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    network_outgoing_bytes_rate_inband

    +

    Inband Outgoing Rate

    +

    Number of outgoing bytes on an ECS per second

    +

    Unit: byte/s

    +

    Formula: Total number of inband outgoing bytes on an ECS/Monitoring interval

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    network_incoming_bytes_aggregate_rate

    +

    Outband Incoming Rate

    +

    Number of incoming bytes on an ECS per second on the hypervisor

    +

    Unit: byte/s

    +

    Formula: Total number of outband incoming bytes on an ECS/Monitoring interval

    +

    This metric is unavailable if SR-IOV is enabled.

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    network_outgoing_bytes_aggregate_rate

    +

    Outband Outgoing Rate

    +

    Number of outgoing bytes on an ECS per second on the hypervisor

    +

    Unit: byte/s

    +

    Formula: Total number of outband outgoing bytes on an ECS/Monitoring interval

    +

    This metric is unavailable if SR-IOV is enabled.

    +

    ≥ 0

    +

    ECS

    +

    5 minutes

    +

    ib_card_state

    +

    InfiniBand NIC status

    +

    Status of an InfiniBand NIC on an H2 ECS

    +

    The system periodically checks the status and returns check results using value 0 or 1.

    +
    • 0: The system is running properly. That is, the InfiniBand NIC is functional.
    • 1: The system is not running properly. That is, the InfiniBand NIC malfunctions. When the physical NIC corresponding to a virtual NIC becomes faulty, for example, the network cable is not securely connected to the NIC, the switch or adapter is incompatible with the InfiniBand NIC, or the NIC is disabled, the returned value is 1.
    +
    NOTE:

    Only Mellanox EDR 100 GB single-port InfiniBand NICs are supported.

    +
    +

    0 or 1

    +

    ECS

    +

    5 minutes

    +
    +
    +

    Dimensions

    +
    + + + + + + + +

    Key

    +

    Value

    +

    instance_id

    +

    Specifies the ECS ID.

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030930805.html b/ecs/umn/en-us_topic_0030930805.html new file mode 100644 index 000000000..552f11b5f --- /dev/null +++ b/ecs/umn/en-us_topic_0030930805.html @@ -0,0 +1,19 @@ + + +

    ECS Overview

    +
    + + diff --git a/ecs/umn/en-us_topic_0030930807.html b/ecs/umn/en-us_topic_0030930807.html new file mode 100644 index 000000000..5933a4ae6 --- /dev/null +++ b/ecs/umn/en-us_topic_0030930807.html @@ -0,0 +1,73 @@ + + +

    Login and Connection

    +
    +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0030932496.html b/ecs/umn/en-us_topic_0030932496.html new file mode 100644 index 000000000..a694e46e3 --- /dev/null +++ b/ecs/umn/en-us_topic_0030932496.html @@ -0,0 +1,29 @@ + + +

    What Should I Do If I Cannot Use the German Keyboard to Enter Characters When I Log In to a Linux ECS Using VNC?

    +

    Changing the OS Keyboard Language

    Run the following command to change the OS keyboard language:

    +

    loadkeys keymapfile

    +

    keymapfile is the name of the file for the mapping between keys and displayed characters.

    +

    For example, if the name of a German keyboard mapping file is de, run the loadkeys de command.

    +

    For instructions about how to configure the keyboard language for a Linux ECS, see Login Using VNC.

    +
    +

    Procedure

    • For all Linux ECSs, characters â, ê, ô, û, and î cannot be entered properly. To enter such characters, use either of the following methods:

      Method 1: Press ^+Space+Letter key.

      +

      Method 2: Click on the VNC page and then press the suitable key on the keyboard.

      +
    • For all Linux ECSs, characters ², ³, {, [, ], }, \, @, , |, and µ cannot be entered properly. To enter such characters, use the following method:

      Click AltGr on the VNC page and then press the suitable key on the physical keyboard.

      +

      An example is provided as follows:

      +

      To obtain character ², perform the following operations:

      +
      1. Click AltGr on the VNC page.

        This operation is successful if AltGr turns red.

        +
      2. On a physical keyboard, press key 2.

        The system displays special characters ².

        +
      3. Click AltGr on the VNC page again to cancel the hold-down state.
      +
    • For all Linux ECSs, character ~ cannot be entered properly. To enter such a character, use the following method:

      Click AltGr on the VNC page and then press the tilde (~) key on the keyboard twice.

      +
    • For ECSs running CentOS 7, the following characters cannot be entered normally: ^ ´ `

      To enter these characters, press the key on the keyboard twice and then press Space.

      +
    • For ECSs running CentOS 7, when Caps Lock is enabled, the following characters cannot be entered normally: Ö Ä Ü

      To enter these characters, hold Shift and press the letter key on the keyboard.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030932497.html b/ecs/umn/en-us_topic_0030932497.html new file mode 100644 index 000000000..0e57c7de4 --- /dev/null +++ b/ecs/umn/en-us_topic_0030932497.html @@ -0,0 +1,11 @@ + + +

    What Should I Do If the Page Does not Respond After I Log In to an ECS Using VNC and Do Not Perform Any Operation for a Long Period of Time?

    +

    If your computer is running Windows 7 and you logged in to the ECS using Internet Explorer 10 or 11, click AltGr twice on the VNC page to activate the page.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030932499.html b/ecs/umn/en-us_topic_0030932499.html new file mode 100644 index 000000000..747845f1b --- /dev/null +++ b/ecs/umn/en-us_topic_0030932499.html @@ -0,0 +1,11 @@ + + +

    What Should I Do If I Cannot View Data After Logging In to an ECS Using VNC?

    +

    After you log in to an ECS using VNC and view data, for example, play videos or run the cat command to view large files, VNC may become unavailable due to the high memory usage of the browser. In such a case, use another browser and log in to the ECS again.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0030932500.html b/ecs/umn/en-us_topic_0030932500.html new file mode 100644 index 000000000..47dbb2e3e --- /dev/null +++ b/ecs/umn/en-us_topic_0030932500.html @@ -0,0 +1,18 @@ + + +

    Why Are Characters Entered Through VNC Still Incorrect After the Keyboard Language Is Switched?

    +

    During ECS login using VNC, changing the remote login keyboard language ensures only that characters entered in the VNC window for an ECS are correctly mapped. It does not change the output language of the ECS OS. If characters are not entered correctly, you must log in to the ECS and configure its keyboard output language.

    +
    • For Linux ECSs, perform the following:
    +

    Run the following command to load the keyboard mapping file:

    +

    loadkeys keymapfile

    +

    The keymapfile parameter indicates the name of the file containing the mappings between the keys and displayed characters.

    +

    For example, if the name of a German keyboard mapping file is de, run the loadkeys de command.

    +
    • For Windows ECSs, switch the input method or open the soft keyboard to enter characters. To open the soft keyboard, perform the following:
    +
    1. Click the Option Menu icon.
    2. Select Soft Keyboard.
    3. Select a keyboard layout.
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0031073513.html b/ecs/umn/en-us_topic_0031073513.html new file mode 100644 index 000000000..24fc8f931 --- /dev/null +++ b/ecs/umn/en-us_topic_0031073513.html @@ -0,0 +1,17 @@ + + +

    Resetting a Login Password

    +
    + + diff --git a/ecs/umn/en-us_topic_0031107266.html b/ecs/umn/en-us_topic_0031107266.html new file mode 100644 index 000000000..9ae0f8877 --- /dev/null +++ b/ecs/umn/en-us_topic_0031107266.html @@ -0,0 +1,24 @@ + + +

    Obtaining the Password for Logging In to a Windows ECS

    +

    Scenarios

    Password authentication is required to log in to a Windows ECS. Therefore, you must use the key file used when you created the ECS to obtain the administrator password generated during ECS creation. The administrator user is Administrator or the user configured using Cloudbase-Init. This password is randomly generated, offering high security.

    +

    You can obtain the initial password for logging in to a Windows ECS through the management console or APIs. For details, see this section.

    +
    +

    Obtaining the Password Through the Management Console

    1. Obtain the private key file (.pem file) used when you created the ECS.
    2. Log in to the management console.
    3. Click in the upper left corner and select your region and project.
    4. Under Computing, click Elastic Cloud Server.
    5. On the Elastic Cloud Server page, select the target ECS.
    6. In the Operation column, click More and select Get Password.
    7. Use either of the following methods to obtain the password through the key file:
      • Click Select File and upload the key file from a local directory.
      • Copy the key file content to the text field.
      +
    8. Click Get Password to obtain a random password.
    +
    +

    Obtaining the Password Through APIs

    1. Obtain the private key file (.pem file) used when you created the ECS.
    2. Set up the API calling environment.
    3. Call APIs. For details, see API Usage Guidelines in Elastic Cloud Server API Reference.
    4. Obtain the ciphertext password.

      Call the password obtaining APIs to obtain the ciphertext password of the public key encrypted using RSA. The API URI is in the format "GET /v2/{tenant_id}/servers/{server_id}/os-server-password".

      +

      For instructions about how to call the APIs, see Retrieving the Password for Logging In to a Windows ECS (Native OpenStack API) in Elastic Cloud Server API Reference.

      +
      +
    5. Decrypt the ciphertext password.

      Use the private key file used when you created the ECS to decrypt the ciphertext password obtained in step 4.

      +
      1. Run the following command to convert the ciphertext password format to ".key -nocrypt" using OpenSSL:

        openssl pkcs8 -topk8 -inform PEM -outform DER -in rsa_pem.key -out pkcs8_der.key -nocrypt

        +
      2. Invoke the Java class library org.bouncycastle.jce.provider.BouncyCastleProvider and use the key file to edit the code decryption ciphertext.
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0031107267.html b/ecs/umn/en-us_topic_0031107267.html new file mode 100644 index 000000000..245fc5cdc --- /dev/null +++ b/ecs/umn/en-us_topic_0031107267.html @@ -0,0 +1,16 @@ + + +

    Deleting the Initial Password for Logging In to a Windows ECS

    +

    Scenarios

    After you obtain the initial password, it is a good practice to delete it to ensure system security.

    +

    Deleting the initial password does not affect ECS operation or login. Once deleted, the password cannot be retrieved. Before you delete a password, it is a good practice to record it.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, select the target ECS.
    5. In the Operation column, click More and select Delete Password.

      The system displays a message, asking you whether you want to delete the password.

      +
    6. Click OK to delete the password.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0031523135.html b/ecs/umn/en-us_topic_0031523135.html new file mode 100644 index 000000000..da637fa14 --- /dev/null +++ b/ecs/umn/en-us_topic_0031523135.html @@ -0,0 +1,48 @@ + + +

    Changing the OS

    +

    Scenarios

    Changing an ECS OS will change the system disk attached to the ECS. After the changing, the system disk ID of the ECS will be changed, and the original system disk will be deleted.

    +

    If the OS running on an ECS cannot meet service requirements, change the ECS OS.

    +

    The public cloud supports changing between image types (public images, private images, and shared images) and between OSs. You can change your OS by changing your ECS image.

    +
    +

    Constraints

    • The EVS disk quota must be greater than 0.
    • H2 ECSs do not support OS change.
    • If an ECS OS is to be changed using a full-ECS image, the ECS system disk can be encrypted.
    +
    +

    Notes

    • After the OS is changed, the original OS is not retained, and the original system disk is deleted, including the data in all partitions of the system disk.
    • Back up data before changing the OS. For details, see .
    • Changing the OS does not affect data in data disks.
    • After the OS is changed, your service running environment must be deployed in the new OS again.
    • After the OS is changed, the ECS will be automatically started.
    • After the OS is changed, the system disk type of the ECS cannot be changed.
    • After the OS is changed, the IP and MAC addresses of the ECS remain unchanged.
    • After the OS is changed, customized configurations, such as DNS and hostname of the original OS will be reset and require reconfiguration.
    • It takes about 10 to 20 minutes to change the OS. During this process, the ECS is in Changing OS state.
    • Do not perform any operations on the ECS immediately after its OS is changed. Wait for several minutes until the system successfully injects the password or key. Otherwise, the injection may fail, and the ECS cannot be logged in to.
    • After the OS is changed, the password for logging in to the ECS is reset. To retrieve the password, perform the following operations: +
    +
    • The system disk capacity of an ECS with OS changed may change because the system disk capacity specified by the image of the changed OS may be changed.
    • You can choose to encrypt the system disk of an ECS during OS change.
    +
    +

    Notes on Change Between Different OSs

    Change between different OSs indicates that the OS is changed between Windows and Linux.

    +
    • To change Windows to Linux, install an NTFS partition tool, such as NTFS-3G for data reading and writing on the Windows ECS.
    • To change Linux to Windows, install software, such as Ext2Read or Ext2Fsd to identify ext3 or ext4.

      You are not advised to change Linux to Window on the cloud platform. The reason is as follows: If there are LVM partitions on the Linux ECS, these partitions may fail after the OS is changed to Windows.

      +
      +
    +
    +

    Prerequisites

    • The target ECS is stopped.
    • The target ECS has a system disk attached.
    • Necessary data has been backed up. (Changing the OS clears the data in all partitions of the system disk, including the system partition.)
    • If the original ECS uses password authentication while the new ECS uses key pair authentication, ensure that a key pair is available.
    • If a private image is required for changing the ECS OS, create the desired private image by following the instructions provided in Image Management Service User Guide.
      • If an ECS image is required, make sure that a private image has been created using the ECS.
      • If a local image file is required, make sure that the image file has been imported to the cloud platform and registered as a private image.
      • If a private image from another region is required, make sure that the image has been copied.
      • If a private image from another user account is required, make sure that the image has been shared with you.
      +
    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Locate the row containing the target ECS. Click More in the Operation column and select Manage Image/Disk > Change OS.

      Only stopped ECSs support OS changing. If the ECS is not stopped, stop it before proceeding with changing.

      +
    5. Modify related ECS parameters, such as Image Type and Image, based on service requirements.

      For more details, see Creating an ECS.

      +
    6. (Optional) Select the Encryption option to encrypt the system disk during OS change.

      To enable encryption, click Create Xrole to assign KMS access permissions to EVS. If you have rights granting permission, assign the KMS access permissions to EVS. If you do not have the permission, contact the user having the security administrator rights to assign the KMS access permissions. For more details, see Can All Users Use the Encryption Feature?

      +

      Encryption parameters are as follows:

      +
      • Encryption: indicates that the EVS disk has been encrypted.
      • Create Xrole: assigns KMS access permissions to EVS to obtain KMS keys. After the permissions are assigned, follow-up operations do not require assigning permissions again.
      • KMS Key Name: specifies the name of the key used by the encrypted EVS disk. You can select an existing key, or click Create KMS Key and create a new one on the KMS console. The default value is evs/default.
      • Xrole Name: EVSAccessKMS: specifies that permissions have been assigned to EVS to obtain KMS keys for encrypting or decrypting EVS disks.
      • KMS Key ID: specifies the ID of the key used by the encrypted data disk.
      +
    7. (Optional) Select a License Type (Use license from the system or Bring your own license (BYOL)) if the changed OS running on your ECS is billed. For more details, see License Type.
      The following OSs are billed:
      • SUSE Linux Enterprise Server
      • Oracle Enterprise Linux
      • Red Hat Enterprise Linux
      +
      +
    8. Configure the login mode.

      If the target ECS uses key pair authentication, you can replace the original key pair.

      +
    9. Click OK.
    10. On the Change ECS OS page, confirm the specifications, and click Submit Application.

      After the application is submitted, the ECS status changes to Changing OS. The OS changing has been completed when Changing OS disappears.

      +

      A temporary ECS is created during the OS changing process. After the process is complete, this ECS will be automatically deleted.

      +
      +
    +
    +

    Follow-up Procedure

    • If the OSs before and after the OS change are both Linux, and automatic partition mounting upon system startup has been enabled for the data disk, the data disk partition mounting information will be lost after the OS is changed. In such a case, you need to update the /etc/fstab configuration.
      1. Write the new partition information into /etc/fstab.

        It is a good practice to back up the /etc/fstab file before writing data into it.

        +

        To enable automatic partition mounting upon system startup, see Initializing a Linux Data Disk (fdisk).

        +
      2. Mount the partition so that you can use the data disk.

        mount Disk partition Device name

        +
      3. Check the mount result.

        df -TH

        +
      +
    • If the OS change is unsuccessful, perform steps 3 to 10 again to retry changing the OS again.
    • If the second OS change attempt is unsuccessful, contact customer service for manual recovery at the backend.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0031734664.html b/ecs/umn/en-us_topic_0031734664.html new file mode 100644 index 000000000..f01f542ab --- /dev/null +++ b/ecs/umn/en-us_topic_0031734664.html @@ -0,0 +1,21 @@ + + +

    Why Does the Login to My Linux ECS Using a Key File Fail?

    +

    Symptom

    When you use the key file created during your Linux ECS creation to log in to the ECS, the login fails.

    +
    +

    Possible Causes

    Possible causes vary depending on the image used to create the Linux ECS.

    +
    • Cause 1: The image that you used to create the Linux ECS is a private image, on which Cloud-Init is not installed.
    • Cause 2: Cloud-Init is installed on the image, but you did not obtain the key pair when you created the ECS.
    +
    +

    Solution

    • If the issue is a result of cause 1, proceed as follows:

      If you created a private image without installing Cloud-Init, you cannot customize the ECS configuration. As a result, you can log in to the ECS only using the original image password or key pair.

      +

      The original image password or key pair is the OS password or key pair you configured when you created the private image.

      +
    • If the issue is a result of cause 2, proceed as follows:
      1. Locate the row containing the target ECS, click More in the Operation column, and select Restart.
      2. Use the key file to log in to the ECS again and check whether the login is successful.
        • If the login is successful, no further action is required.
        • If the login fails, contact customer service for technical support.
        +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0031736846.html b/ecs/umn/en-us_topic_0031736846.html new file mode 100644 index 000000000..b10547f50 --- /dev/null +++ b/ecs/umn/en-us_topic_0031736846.html @@ -0,0 +1,21 @@ + + +

    Why Does the System Display a Message Indicating that the Password for Logging In to a Windows ECS Cannot Be Viewed?

    +

    Symptom

    Password authentication is required to log in to a Windows ECS. Therefore, you require a key file to obtain the initial password for logging in to the ECS. However, after you click Get Password (see Obtaining the Password for Logging In to a Windows ECS), the system displays a message indicating that the password cannot be viewed. ECS login was therefore unsuccessful.

    +
    +

    Possible Causes

    Possible causes vary depending on the image used to create the Windows ECS.

    +
    • Cause 1: The image used to create the Windows ECS is a private image, on which Cloudbase-Init has not been installed.
    • Cause 2: Cloudbase-Init has been installed on the image, but the key pair has not been obtained when the Windows ECS was created.
    +
    +

    Solution

    • If the issue is a result of cause 1, proceed as follows:

      If a private image is created without Cloudbase-Init installed, the ECS configuration cannot be customized. As a result, you can log in to the ECS only using the original image password.

      +

      The original image password is the OS password configured when the private image was created.

      +
    • If the issue is a result of cause 2, proceed as follows:
      1. Locate the row containing the target ECS, click More in the Operation column, and select Restart.
      2. Click More in the Operation column and select Get Password to check whether the password can be obtained.
        • If you can obtain the password, no further action is required.
        • If you cannot obtain the password, contact customer service.
        +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0032380449.html b/ecs/umn/en-us_topic_0032380449.html new file mode 100644 index 000000000..d5a81741e --- /dev/null +++ b/ecs/umn/en-us_topic_0032380449.html @@ -0,0 +1,258 @@ + + +

    Passing User Data to ECSs

    +

    Scenarios

    Use the User Data function to pass user data to ECSs to:

    +
    • Simplify ECS configuration.
    • Initialize the ECS OS configuration.
    • Upload your scripts to ECSs during ECS creation.
    • Perform other tasks using scripts.
    +
    +

    Use Restrictions

    • Linux
      • The image that is used to create ECSs must have Cloud-Init installed.
      +
      • The user data to be specified must be less than or equal to 32 KB.
      • If user data is uploaded as text, the data can contain only ASCII characters. If user data is uploaded using a file, the file can contain any characters and the file size cannot exceed 32 KB.
      • The image that is used to create ECSs must be a public image, a private image created based on a public image, or a private image with Cloud-Init installed.
      • The format of the customized scripts must be supported by Linux ECSs.
      • DHCP must be enabled on the VPC network, and port 80 must be enabled for the security group in the outbound direction.
      +
    • Windows
      • The image that is used to create ECSs must have Cloudbase-Init installed.
      • The user data to be specified must be less than or equal to 32 KB.
      • If user data is uploaded as text, the data can contain only ASCII characters. If user data is uploaded using a file, the file can contain any characters and the file size cannot exceed 32 KB.
      • The image that is used to create ECSs must be a public image, a private image created based on a public image, or a private image with Cloudbase-Init installed.
      • DHCP must be enabled on the VPC network, and port 80 must be enabled for the security group in the outbound direction.
      +
    +
    +

    Passing User Data

    1. Create a user data script, the format of which complies with user data script specifications. For details, see Helpful Links.
    2. When creating an ECS, set Advanced Options to Configure now, and paste the content of the user data script to the User Data text box or upload the user data file.

      You can pass user data to an ECS as text or as a file.

      +

      Text: Copy the content of the user data script to the text box.

      +

      File: Save the user data script to a text file and then upload the file.

      +
      +
      Figure 1 User Data
      +
    3. The created ECS automatically runs Cloud-Init/Cloudbase-Init and reads the user data script upon startup.
    +
    +

    User Data Scripts of Linux ECSs

    Customized user data scripts of Linux ECSs are based on the open-source Cloud-Init architecture. This architecture uses ECS metadata as the data source for automatically configuring the ECSs. The customized script types are compatible with open-source Cloud-Init. For details about Cloud-Init, see http://cloudinit.readthedocs.io/en/latest/topics/format.html.

    +
    • Script execution time: A customized user data script is executed after the time when the status of the target ECS changes to Running and before the time when /etc/init is executed.

      By default, the scripts are executed as user root.

      +
      +
    +
    • Script type: Both user-data scripts and Cloud-Config data scripts are supported. +
      + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Linux ECS script types

      -

      +

      User-Data Script

      +

      Cloud-Config Data Script

      +

      Description

      +

      Scripts, such as Shell and Python scripts, are used for custom configurations.

      +

      Methods pre-defined in Cloud-Init, such as the Yum source and SSH key, are used for configuring certain ECS applications.

      +

      Format

      +

      A script must be started with #!, for example, #!/bin/bash and #!/usr/bin/env python.

      +

      When a script is started for the first time, it will be executed at the rc.local-like level, indicating a low priority in the boot sequence.

      +

      The first line must be #cloud-config, and no space is allowed in front of it.

      +

      Constraint

      +

      Before Base64 encoding, the size of the script, including the first line, cannot exceed 32 KB.

      +

      Before Base64 encoding, the size of the script, including the first line, cannot exceed 32 KB.

      +

      Frequency

      +

      The script is executed only once when the ECS is started for the first time.

      +

      The execution frequency varies according to the applications configured on the ECS.

      +
      +
      +
    • How can I view the customized user data passed to a Linux ECS?
      1. Log in to the ECS.
      2. Run the following command to view the customized user data as user root:

        curl http://169.254.169.254/openstack/latest/user_data

        +
      +
    • Script usage examples

      This section describes how to inject scripts in different formats into Linux ECSs and view script execution results.

      +

      Example 1: Inject a user-data script.

      +

      When creating an ECS, set User Data to As text and enter the customized user data script.

      +
      #!/bin/bash
      +echo "Hello, the time is now $(date -R)" | tee /root/output.txt
      +

      After the ECS is created, start it and run the cat [file] command to check the script execution result.

      +
      [root@XXXXXXXX ~]# cat /root/output.txt
      +Hello, the time is now Mon, 16 Jul 2016 16:03:18+0800
      +

      Example 2: Inject a Cloud-Config data script.

      +

      When creating an ECS, set User Data to As text and enter the customized user data script.

      +
      #cloud-config
      +bootcmd:
      +- echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts
      +

      After the ECS is created, start it and run the cat /etc/hosts command to check the script execution result.

      +
      Figure 2 Viewing operating results
      +
    +
    +

    User Data Scripts of Windows ECSs

    Customized user data scripts of Windows ECSs are based on the open-source Cloudbase-Init architecture. This architecture uses ECS metadata as the data source for initializing and automatically configuring the ECSs. The customized script types are compatible with open-source Cloudbase-Init. For details about Cloudbase-Init, see https://cloudbase-init.readthedocs.io/en/latest/userdata.html.

    +
    • Script type: Both batch-processing program scripts and PowerShell scripts are supported. +
      + + + + + + + + + + + + + +
      Table 2 Windows ECS script types

      -

      +

      Batch-Processing Program Script

      +

      PowerShell Script

      +

      Format

      +

      The script must be started with rem cmd, which is the first line of the script. No space is allowed at the beginning of the first line.

      +

      The script must be started with #ps1, which is the first line of the script. No space is allowed at the beginning of the first line.

      +

      Constraint

      +

      Before Base64 encoding, the size of the script, including the first line, cannot exceed 32 KB.

      +

      Before Base64 encoding, the size of the script, including the first line, cannot exceed 32 KB.

      +
      +
      +
    • How can I view the customized user data passed into a Windows ECS?
      1. Log in to the ECS.
      2. Access the following URL in the address box of the browser and view the user data:

        http://169.254.169.254/openstack/latest/user_data

        +
      +
    • Script usage examples

      This section describes how to inject scripts in different formats into Windows ECSs and view script execution results.

      +

      Example 1: Inject a batch-processing program script.

      +

      When creating an ECS, set User Data to As text and enter the customized user data script.

      +
      rem cmd
      +echo "Hello, BAT Test" > C:\1111.txt
      +

      After the ECS is created, start it and check the script execution result. In this example, a text file named 1111 is added to disk C:\.

      +
      Figure 3 Creating text file (Batch)
      +

      To view the user data passed to the Windows ECS, log in at http://169.254.169.254/openstack/latest/user_data.

      +
      Figure 4 Viewing user data (Batch)
      +

      Example 2: Inject a PowerShell script.

      +

      When creating an ECS, set User Data to As text and enter the customized user data script.

      +
      #ps1
      +echo "Hello, Powershell Test" > C:\aaaa.txt
      +

      After the ECS is created, start it and check the script execution result. In this example, a text file named aaaa is added to disk C:\.

      +
      Figure 5 Creating text file (PowerShell)
      +

      To view the user data passed to the Windows ECS, log in at http://169.254.169.254/openstack/latest/user_data.

      +
      Figure 6 Viewing user data (PowerShell)
      +
    +
    +

    Case 1

    This case illustrates how to use the user data passing function to simplify Linux ECS configuration.

    +

    In this example, vim is configured to enable syntax highlighting, display line numbers, and set the tab stop to 4. The .vimrc configuration file is created and injected into the /root/.vimrc directory during ECS creation. After the ECS is created, vim is automatically configured based on your requirements. This improves ECS configuration efficiency, especially in batch ECS creation scenarios.

    +

    User data example:

    +
    #cloud-config
    +write_files:
    +  - path: /root/.vimrc
    +    content: |
    +      syntax on
    +      set tabstop=4
    +      set number      
    +
    +

    Case 2

    This case illustrates how to use the user data passing function to set the password for logging in to a Linux ECS.

    +

    The new password must meet the password complexity requirements listed in Table 3.

    +
    + +
    + + + + + + + + + +
    Table 3 Password complexity requirements

    Parameter

    +

    Requirement

    +

    Example Value

    +

    Password

    +
    • Consists of 8 to 26 characters.
    • Contains at least three of the following character types:
      • Uppercase letters
      • Lowercase letters
      • Digits
      • Special characters: $!@%-_=+[]:./^,{}?
      +
    • Cannot contain the username or the username spelled backwards.
    • Cannot contain more than two consecutive characters in the same sequence as they appear in the username. (This requirement applies only to Windows ECSs.)
    +

    YNbUwp!dUc9MClnv

    +
    NOTE:

    The example password is generated randomly. Do not use it.

    +
    +
    +
    +

    User data example:

    +
    • Using a ciphertext password (recommended)
      #!/bin/bash 
      +echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig' | chpasswd -e;
      +

      In the preceding command output, $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig is the ciphertext password, which can be generated as follows:

      +
      1. Run the following command to generate an encrypted ciphertext value:

        python -c "import crypt, getpass, pwd;print crypt.mksalt()"

        +

        The following information is displayed:

        +
        $6$V6azyeLwcD3CHlpY
        +
      2. Run the following command to generate a ciphertext password based on the salt value:

        python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')"

        +

        The following information is displayed:

        +
        $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig
        +
      +
    +

    After the ECS is created, you can use the password to log in to it.

    +
    +

    Case 3

    This case illustrates how to use the user data passing function to reset the password for logging in to a Linux ECS.

    +

    In this example, the password of user root is reset to ******.

    +

    The new password must meet the password complexity requirements listed in Table 4.

    +
    + +
    + + + + + + + + + +
    Table 4 Password complexity requirements

    Parameter

    +

    Requirement

    +

    Example Value

    +

    Password

    +
    • Consists of 8 to 26 characters.
    • Contains at least three of the following character types:
      • Uppercase letters
      • Lowercase letters
      • Digits
      • Special characters: $!@%-_=+[]:./^,{}?
      +
    • Cannot contain the username or the username spelled backwards.
    • Cannot contain more than two consecutive characters in the same sequence as they appear in the username. (This requirement applies only to Windows ECSs.)
    +

    YNbUwp!dUc9MClnv

    +
    NOTE:

    The example password is generated randomly. Do not use it.

    +
    +
    +
    +

    User data example (Retain the indentation in the following script):

    +
    #cloud-config
    +chpasswd:
    +  list: |
    +    root:******
    +  expire: False
    +

    After the ECS is created, you can use the reset password to log in to it. To ensure system security, change the password of user root after logging in to the ECS for the first time.

    +
    +

    Case 4

    This case illustrates how to use the user data passing function to create a user on a Windows ECS and configure the password for the user.

    +

    In this example, the user's username is abc, its password is ******, and the user is added to the administrators user group.

    +

    The new password must meet the password complexity requirements listed in Table 4.

    +
    +

    User data example:

    +
    rem cmd
    +net user abc ****** /add
    +net localgroup administrators abc /add
    +

    After the ECS is created, you can use the created username and password to log in to it.

    +
    +

    Case 5

    This case illustrates how to use the user data passing function to update system software packages for a Linux ECS and enable the HTTPd service. After the user data is passed to an ECS, you can use the HTTPd service.

    +

    User data example:

    +
    #!/bin/bash
    +yum update -y
    +service httpd start
    +chkconfig httpd on
    +
    +

    Case 6

    This case illustrates how to use the user data passing function to assign user root permission for remotely logging in to a Linux ECS. After passing the file to an ECS, you can log in to the ECS as user root using SSH key pair authentication.

    +

    User data example:

    +
    #cloud-config
    +disable_root: false
    +runcmd:
    +- sed -i 's/^PermitRootLogin.*$/PermitRootLogin without-password/' /etc/ssh/sshd_config
    +- sed -i '/^KexAlgorithms.*$/d' /etc/ssh/sshd_config
    +- service sshd restart
    +
    +

    Helpful Links

    For more information about user data passing cases, visit the official Cloud-init/Cloudbase-init website:

    + +
    + +
    + + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0032398121.html b/ecs/umn/en-us_topic_0032398121.html new file mode 100644 index 000000000..0e5611fae --- /dev/null +++ b/ecs/umn/en-us_topic_0032398121.html @@ -0,0 +1,137 @@ + + +

    How Do I Handle Error Messages Displayed on the Management Console?

    +

    Symptom

    This section helps you resolve the following issues:

    +
    • An error message was displayed on the management console after you performed ECS-related operations.
    • An error code was displayed after you used an ECS API (see Elastic Cloud Server API Reference).
    +
    +

    Background

    After you perform ECS-related operations on the management console, the system displays the request status on the Elastic Cloud Server page. You can determine the request execution status based on the information displayed in the request status.

    +
    • If the operation request is executed, the system automatically clears the task prompt.
    • If an error occurs during the request execution, the system displays an error code and its description in the taskbar.
    +
    +

    Solution

    If an error occurs, check the error code and perform the corresponding operations listed in Table 1.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Error codes and solution suggestions

    Error Code

    +

    Message Displayed on the Management Console

    +

    Solution Suggestion

    +

    Ecs.0000

    +

    Request error. Try again later or contact customer service.

    +

    Adjust the request structure as directed in Elastic Cloud Server API Reference.

    +

    Ecs.0001

    +

    The maximum number of ECSs or EVS disks has been reached. Contact the customer service and request an ECS quota increase.

    +

    Contact customer service and request an ECS quota increase.

    +
    NOTE:

    Before requesting for increasing your ECS quota, consider the number of to-be-added ECSs, vCPUs, and memory capacity required.

    +
    +

    Ecs.0003

    +

    You do not have the permission or your balance is insufficient.

    +

    Contact customer service to check your account information.

    +

    Ecs.0005

    +

    System error. Try again later or contact customer service.

    +

    Adjust the request structure as directed in Elastic Cloud Server API Reference.

    +

    Ecs.0010

    +

    The private IP address is in use. Select an available IP address for ECS creation.

    +

    Use an idle IP address for ECS creation.

    +

    Ecs.0011

    +

    Invalid password. Change the password to make it meet the password complexity requirements, and perform the required operation again.

    +

    Input a password that meets password complexity requirements. Then, initial the request again.

    +

    Ecs.0012

    +

    Insufficient IP addresses in the subnet. Release IP addresses in the subnet or select another subnet for ECS creation.

    +

    Release IP addresses in the subnet or select another subnet for ECS creation.

    +

    Ecs.0013

    +

    Contact customer service and request an EIP quota increase.

    +

    Contact customer service and request an EIP quota increase.

    +

    Ecs.0015

    +

    The disk of this type is not supported by the ECS.

    +

    Select a proper disk and attach it to the ECS.

    +

    Ecs.0100

    +

    Invalid ECS status. Change the status and try again.

    +

    Change the ECS status to the desired one and try again.

    +

    Ecs.0103

    +

    The disk is unavailable.

    +

    Change the ECS status to the desired one and try again. If the EVS disk is faulty, contact customer service for troubleshooting.

    +

    Ecs.0104

    +

    The number of disks to be attached to an ECS exceeds the number allowed.

    +

    Detach EVS disks from the ECS before attaching new ones.

    +

    Ecs.0105

    +

    No system disk found.

    +

    Attach the system disk to the ECS and perform the desired operation again.

    +

    Ecs.0107

    +

    The number of shared disks to be attached to an ECS exceeds the maximum limit.

    +

    Detach EVS disks from the ECS before attaching new ones.

    +

    Other error codes

    +

    Other error messages

    +

    Initiate the request again. If the error persists, record the returned error code and contact customer service for troubleshooting.

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0032850906.html b/ecs/umn/en-us_topic_0032850906.html new file mode 100644 index 000000000..f2930b58a --- /dev/null +++ b/ecs/umn/en-us_topic_0032850906.html @@ -0,0 +1,12 @@ + + +

    Why Does a Blank Screen Appear While the System Displays a Message Indicating Successful Authentication After I Attempted to Log In to an ECS Using VNC?

    +

    Another user has logged in to this ECS using VNC.

    +

    Only one user can log in to an ECS using VNC at a time. If multiple users attempt to log in to an ECS at the same time, only the first user can log in to it. For other users, the system displays a message indicating that the user is authenticated, but the screen turns blank. If this occurs, wait until the other user logs out of the ECS.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0032980085.html b/ecs/umn/en-us_topic_0032980085.html new file mode 100644 index 000000000..d9d9d716d --- /dev/null +++ b/ecs/umn/en-us_topic_0032980085.html @@ -0,0 +1,20 @@ + + +

    Managing ECS Groups

    +

    Scenarios

    An ECS group allows you to create ECSs on different physical servers, thereby improving service reliability. This function does not apply to existing ECSs. You cannot add existing ECSs to an ECS group.

    +
    +

    Notes

    An existing ECS cannot be added to an ECS group.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the navigation pane on the left, choose ECS Group.
    5. On the ECS Group page, click Create ECS Group.
    6. Enter the name of the target ECS group.

      The Anti-affinity policy is used by default.

      +
    7. Click OK.
    +
    +

    Follow-up Procedure

    Add an ECS to an ECS group only when creating the ECS.

    +

    To do so, expand Advanced Options and select the target ECS group.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0035233718.html b/ecs/umn/en-us_topic_0035233718.html new file mode 100644 index 000000000..bbfd8f08f --- /dev/null +++ b/ecs/umn/en-us_topic_0035233718.html @@ -0,0 +1,36 @@ + + +

    What Browser Version Is Required to Remotely Log In to an ECS?

    +

    When you use a browser to remotely log in to an ECS, ensure that the browser version meets the requirements listed in Table 1.

    + +
    + + + + + + + + + + + + + +
    Table 1 Browser version requirements

    Browser

    +

    Version

    +

    Google Chrome

    +

    31.0-75.0

    +

    Mozilla Firefox

    +

    27.0-62.0

    +

    Internet Explorer

    +

    10.0-11.0

    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0035470096.html b/ecs/umn/en-us_topic_0035470096.html new file mode 100644 index 000000000..f7cf4d7cd --- /dev/null +++ b/ecs/umn/en-us_topic_0035470096.html @@ -0,0 +1,33 @@ + + +

    ECS Types

    +
    The public cloud provides the following ECS types for different application scenarios:
    • General-purpose
    • Dedicated general-purpose
    • Memory-optimized
    • Large-memory
    • Disk-intensive
    • High-performance computing
    • GPU-accelerated
    +
    +

    ECS Flavor Naming Rules

    ECS flavors are named using the format of "AB.C.D".

    +

    The format is defined as follows:

    +
    • A specifies the ECS type. For example, s indicates a general-purpose ECS, c a computing ECS, and m a memory-optimized ECS.
    • B specifies the type ID. For example, the 3 in s3 indicates a general-purpose third-generation ECS.
    • C specifies the flavor size, such as medium, large, xlarge, 2xlarge, 4xlarge, or 8xlarge.
    • D specifies the ratio of memory to vCPUs expressed in a digit. For example, value 4 indicates that the ratio of memory to vCPUs is 4.
    +
    +

    Obtaining Specifications When Creating an ECS

    Specifications for the ECS being created are located in the specifications list.

    +
    Figure 1 ECS specifications
    +
    +

    Network QoS

    Network QoS uses basic technologies to improve the quality of network communication. A network with QoS enabled offers predictable network performance and effectively allocates network bandwidth to use network resources.

    +

    To obtain the QoS data of an ECS flavor, including the maximum bandwidth, assured bandwidth, maximum PPS, and NIC multi-queue, see ECS Specifications.

    +
    The intranet bandwidth and PPS of an ECS are determined based on ECS flavors.
    • Assured intranet bandwidth: guaranteed bandwidth allocated to the ECS
    • Maximum intranet bandwidth: maximum bandwidth that can be allocated to the ECS
    • Maximum intranet PPS: maximum number of packets that the ECS can transmit and receive per second
    • NIC multi-queue: allocates NIC interrupt requests to multiple vCPUs for higher PPS performance and bandwidth.
      +
      +
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0035470099.html b/ecs/umn/en-us_topic_0035470099.html new file mode 100644 index 000000000..c366058ab --- /dev/null +++ b/ecs/umn/en-us_topic_0035470099.html @@ -0,0 +1,183 @@ + + +

    Disk-intensive ECSs

    +

    Overview

    D2 ECSs are developed based on KVM virtualization. They use local storage and provide high storage performance and intranet bandwidth for distributed Hadoop computing, large data warehouse, distributed file system, and log/data processing.

    +
    +

    Specifications

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 D2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Local Disks (GiB)

    +

    Hardware

    +

    d2.xlarge.8

    +

    4

    +

    32

    +

    4/1.4

    +

    40

    +

    2

    +

    KVM

    +

    2×1675

    +

    CPU: Intel® Xeon® Gold 6151

    +

    d2.2xlarge.8

    +

    8

    +

    64

    +

    6/2.8

    +

    80

    +

    4

    +

    KVM

    +

    4×1675

    +

    d2.4xlarge.8

    +

    16

    +

    128

    +

    10/5.6

    +

    160

    +

    6

    +

    KVM

    +

    8×1675

    +

    d2.6xlarge.8

    +

    24

    +

    192

    +

    15/8.5

    +

    250

    +

    8

    +

    KVM

    +

    12×1675

    +

    d2.8xlarge.8

    +

    32

    +

    256

    +

    17/11

    +

    320

    +

    8

    +

    KVM

    +

    16×1675

    +

    d2.15xlarge.9

    +

    60

    +

    540

    +

    17/17

    +

    500

    +

    16

    +

    KVM

    +

    24×1675

    +
    +
    +
    +

    Scenarios

    • Applications

      Disk-intensive ECSs are suitable for applications that require large volumes of data to process, high I/O performance, and rapid data switching and processing.

      +
    • Application scenarios

      Big data computing, network file systems, data processing, MapReduce, Hadoop, and data-intensive computing

      +
    +
    +

    Features of D2 ECSs

    • D2 ECSs use local disks to provide high sequential read/write performance and low latency, improving file read/write performance.
    • D2 ECSs provide powerful and stable computing capabilities, ensuring efficient data processing.
    • D2 ECSs with a vCPU/memory ratio of 1:8 process large volumes of data.
    • D2 ECSs provide high intranet performance, including high intranet bandwidth and PPS, meeting requirements for data exchange between ECSs during peak hours.
    • Each D2 ECS supports a maximum configuration of 24 local disks, 60 vCPUs, and 540 GiB memory.
    + +
    + + + + + + + + + + + + + +
    Table 2 Specifications of a single SAS HDD disk attached to a D2 ECS

    Metric

    +

    Performance

    +

    Disk capacity

    +

    1800 GiB

    +

    Maximum throughput

    +

    230 MB/s

    +

    Access latency

    +

    Millisecond-level

    +
    +
    +
    +

    Notes on Using D2 ECSs

    • Currently, the following operating systems are supported (subject to the information displayed on the console):
      • CentOS 6.7/6.8/7.2/7.3/7.4 64bit
      • SUSE Enterprise Linux Server 11 SP3/SP4 64bit
      • SUSE Enterprise Linux Server 12 SP1/SP2 64bit
      • Red Hat Enterprise Linux 6.8/7.3 64bit
      • Windows Server 2008 R2 Enterprise 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Debian 8.7/9/9.0.0 64bit
      • EulerOS 2.2 64bit
      • Fedora 25/26 64bit
      • OpenSUSE 42.2/42.3 64bit
      +
    • When the physical host where a D2 ECS is deployed becomes faulty, the ECS cannot be migrated.
    • To improve network performance, you can set the NIC MTU of a D2 ECS to 8888.
    • D2 ECSs do not support modifying specifications.
    • D2 ECSs do not support local disk snapshots or backups.
    • D2 ECSs do not support OS reinstallation or change.
    • D2 ECSs can use both local disks and EVS disks to store data. In addition, they can have EVS disks attached to provide a larger storage size. Use restrictions on the two types of storage media are as follows:
      • Only an EVS disk, not a local disk, can be used as the system disk of a D2 ECS.
      • Both EVS disks and local disks can be used as data disks of a D2 ECS.
      • A maximum of 60 disks (including VBD, SCSI, and local disks) can be attached to a D2 ECS. Among the 60 disks, the maximum number of SCSI disks is 30, and the VBD disks (including the system disk) is 24. For details, see Can I Attach Multiple Disks to an ECS?

        The maximum number of disks attached to an existing D2 ECS remains unchanged. To attach 60 disks, enable advanced disk. For details, see Enabling Advanced Disk.

        +
        +
      • You are advised to use World Wide Names (WWNs), but not drive letters, in applications to perform operations on local disks to prevent drive letter drift (low probability) on Linux. Take local disk attachment as an example:

        If the local disk WWN is wwn-0x50014ee2b14249f6, run the mount /dev/disk/by-id/wwn-0x50014ee2b14249f6 command.

        +

        How can I view the local disk WWN?

        +
        1. Log in to the ECS.
        2. Run the following command:

          ll /dev/disk/by-id

          +
        +
        +
      +
    • The local disk data of a D2 ECS may be lost due to some reasons, such as physical server breakdown or local disk damage. If the data reliability of your application cannot be ensured, you are strongly advised to use EVS disks to build your ECS.
    • When a D2 ECS is deleted, its local disk data is automatically deleted. Back up the data before deleting such an ECS. Deleting local disk data is time-consuming. Therefore, a D2 ECS requires a longer period of time than other ECSs for releasing resources.
    • Do not store long-term service data in local disks. Instead, back up data in a timely manner and use a high availability data architecture. Store long-term service data in EVS disks.
    • You are not allowed to buy additional local disks. The quantity and capacity of your local disks are determined according to your ECS flavor. For D2 ECSs, if additional local disks are required, buy them when creating the ECSs.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0035470100.html b/ecs/umn/en-us_topic_0035470100.html new file mode 100644 index 000000000..9522f74d8 --- /dev/null +++ b/ecs/umn/en-us_topic_0035470100.html @@ -0,0 +1,157 @@ + + +

    High-Performance Computing ECSs

    +

    Overview

    H2 ECSs are designed to meet high-end computational needs, such as molecular modeling and computational fluid dynamics. In addition to the substantial CPU power, the H2 ECSs offer diverse options for low-latency RDMA networking using EDR InfiniBand NICs to support memory-intensive computational requirements.

    +

    HL1 ECSs are the second generation of high-computing ECSs, featuring large memory capacity. They are interconnected with each other using 100 Gbit/s RDMA InfiniBand NICs and support 56 Gbit/s shared high I/O storage.

    +
    +

    Specifications

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 H2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Local Disks

    +

    Capacity of One Local Disk (TB)

    +

    Network Type

    +

    Hardware

    +

    h2.3xlarge.10

    +

    16

    +

    128

    +

    13/13

    +

    90

    +

    8

    +

    KVM

    +

    1

    +

    3.2

    +

    100 Gbit/s EDR InfiniBand

    +

    CPU: Intel® Xeon® E5-2667 v4

    +

    h2.3xlarge.20

    +

    16

    +

    256

    +

    13/13

    +

    90

    +

    8

    +

    KVM

    +

    1

    +

    3.2

    +

    100 Gbit/s EDR InfiniBand

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 2 HL1 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Network Type

    +

    Hardware

    +

    hl1.8xlarge.8

    +

    32

    +

    256

    +

    9/9

    +

    90

    +

    8

    +

    KVM

    +

    100 Gbit/s EDR InfiniBand

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +
    +
    +
    +

    Scenarios

    • Applications

      H2 and HL1: High-performance computing (HPC), big data, and Artificial Intelligence (AI)

      +
    • Application scenarios

      H2 and HL1

      +
      • High-performance hardware: The ratio of memory to vCPU is 8:1, and a large number of multi-thread physical CPUs are available to provide high-performance storage I/O and high-throughput network connections.
      • Designed for HPC clusters: Multiple HL1 ECSs can be clustered to install scalable, clustered file system, such as Lustre. HPC applications running on H2 ECSs can read and modify the data stored in the ECSs.
      • RDMA network connection: Same as H2 ECSs, HL1 ECSs also offer RDMA network using EDR 100 Gbit/s InfiniBand NICs. HL1 ECSs can communicate with H2 ECSs with RDMA protocol. In addition, HL1 ECSs can access EVS disks over the RDMA protocol, which allows up to 56 Gbit/s storage bandwidth.
      +
    • Application scenarios

      H2 and HL1 ECSs provide computing capabilities for clusters with a large memory, good connectivity between nodes, and high storage I/O. The typical application scenarios include HPC, big data, and AI. In HPC solution, HL1 ECSs are perfectly suited for the Lustre parallel distributed file system, generally used for large-scale cluster computing.

      +

      For example, in HPC scenario, H2 ECSs can be used as compute nodes, and HL1 ECSs can be used as storage nodes.

      +
    +
    +

    Features

    High-performance computing ECSs have the following features:

    +
    • Large memory capacity and more processor cores than other types of ECSs
    • Up to 32 vCPUs
    • H2 and HL1 ECSs use InfiniBand NICs that provide a bandwidth of 100 Gbit/s.
    • HL1 ECSs can use the following types of EVS disks as system disk and data disk:

      High I/O (performance-optimized I)

      +

      Ultra-high I/O (latency-optimized)

      +
    • HL1 ECSs support 56 Gbit/s shared high I/O storage.

      To support 56 Gbit/s shared high I/O storage, you only need to attach high I/O (performance-optimized I) or ultra-high I/O (latency-optimized) EVS disks to target HL1 ECSs.

      +
    +
    +

    Notes on Using H2 ECSs

    • H2 ECSs do not support OS reinstallation or change.
    • H2 ECSs do not support specifications modification.
    • H2 ECSs do not support cold migration, live migration, or HA.
    • H2 ECSs support the following OSs:
      • For public images:
        • CentOS 7.3 64bit
        • SUSE Linux Enterprise Server 11 SP4 64bit
        • SUSE Linux Enterprise Server 12 SP2 64bit
        +
      • For private images:
        • CentOS 6.5 64bit
        • CentOS 7.2 64bit
        • CentOS 7.3 64bit
        • SUSE Linux Enterprise Server 11 SP4 64bit
        • SUSE Linux Enterprise Server 12 SP2 64bit
        • Red Hat Enterprise Linux 7.2 64bit
        • Red Hat Enterprise Linux 7.3 64bit
        +
      +
    • H2 ECSs use InfiniBand NICs that provide a bandwidth of 100 Gbit/s.
    • Each H2 ECS uses one PCIe 3.2 TB SSD card for temporary local storage.
    • If an H2 ECS is created using a private image, install an InfiniBand NIC driver on the ECS after the ECS creation following the instructions provided by Mellanox. Download the required version (4.2-1.0.0.0) of InfiniBand NIC driver from the official Mellanox website and install the driver by following the instructions provided by Mellanox. +
    • For SUSE H2 ECSs, if IP over InfiniBand (IPoIB) is required, you must manually configure an IP address for the InfiniBand NIC after installing the InfiniBand driver. For details, see How Can I Manually Configure an IP Address for an InfiniBand NIC?
    • After you delete an H2 ECS, the data stored in SSDs is automatically cleared. Therefore, do not store persistence data into SSDs during ECS running.
    +
    +

    Notes on Using HL1 ECSs

    • HL1 ECSs only support the attachment of high I/O (performance-optimized I) and ultra-high I/O (latency-optimized) EVS disks.

      To support 56 Gbit/s shared high I/O storage, you only need to attach high I/O (performance-optimized I) or ultra-high I/O (latency-optimized) EVS disks to target HL1 ECSs.

      +
    • HL1 ECSs do not support specifications modification.
    • HL1 ECSs use InfiniBand NICs that provide a bandwidth of 100 Gbit/s.
    • HL1 ECSs created using a private image must have the InfiniBand NIC driver installed. Download the required version (4.2-1.0.0.0) of InfiniBand NIC driver from the official Mellanox website and install the driver by following the instructions provided by Mellanox.
      • InfiniBand NIC type: Mellanox Technologies ConnectX-4 Infiniband HBA (MCX455A-ECAT)
      • Mellanox official website: http://www.mellanox.com/
      +
    • For SUSE HL1 ECSs, if IPoIB is required, you must manually configure an IP address for the InfiniBand NIC after installing the InfiniBand driver. For details, see How Can I Manually Configure an IP Address for an InfiniBand NIC?
    • HL1 ECSs support the following OSs:
      • For public images:
        • CentOS 7.3 64bit
        • SUSE Linux Enterprise Server 11 SP4 64bit
        • SUSE Linux Enterprise Server 12 SP2 64bit
        +
      • For private images:
        • CentOS 6.5 64bit
        • CentOS 7.2 64bit
        • CentOS 7.3 64bit
        • SUSE Linux Enterprise Server 11 SP4 64bit
        • SUSE Linux Enterprise Server 12 SP2 64bit
        • Red Hat Enterprise Linux 7.2 64bit
        • Red Hat Enterprise Linux 7.3 64bit
        +
      +
    • Charging an HL1 ECS is stopped when it is stopped.
    +
    + +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0035470101.html b/ecs/umn/en-us_topic_0035470101.html new file mode 100644 index 000000000..f7ab64417 --- /dev/null +++ b/ecs/umn/en-us_topic_0035470101.html @@ -0,0 +1,889 @@ + + +

    General-Purpose ECSs

    +

    Overview

    General-purpose ECSs provide a balance of computing, memory, and network resources and a baseline level of vCPU performance with the ability to burst above the baseline. These ECSs are suitable for applications with general workloads, such as web servers, enterprise R&D, and small-scale databases.

    +

    S3 ECSs are suitable for applications that require moderate performance generally but occasionally burstable high performance, such as light-workload web servers, enterprise R&D and testing environments, and low- and medium-performance databases.

    +

    S2 ECSs use Intel® Xeon® Scalable processors, which significantly improve the comprehensive performance. They provide a balance of computing, memory, and network resources and a baseline level of vCPU performance with the ability to burst above the baseline. These ECSs are suitable for many applications.

    +
    +

    Specifications

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 S3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    s3.medium.1

    +

    1

    +

    1

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6278

    +

    s3.large.1

    +

    2

    +

    2

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.1

    +

    4

    +

    4

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.1

    +

    8

    +

    8

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.1

    +

    16

    +

    16

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.1

    +

    32

    +

    32

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +

    s3.medium.2

    +

    1

    +

    2

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    s3.large.2

    +

    2

    +

    4

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.2

    +

    4

    +

    8

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.2

    +

    8

    +

    16

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.2

    +

    16

    +

    32

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.2

    +

    32

    +

    64

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +

    s3.medium.4

    +

    1

    +

    4

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    s3.large.4

    +

    2

    +

    8

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.4

    +

    4

    +

    16

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.4

    +

    8

    +

    32

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.4

    +

    16

    +

    64

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.4

    +

    32

    +

    128

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +

    s3.medium.8

    +

    1

    +

    8

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    s3.large.8

    +

    2

    +

    16

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.8

    +

    4

    +

    32

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.8

    +

    8

    +

    64

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.8

    +

    16

    +

    128

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.8

    +

    32

    +

    256

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 S2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    s2.medium.1

    +

    1

    +

    1

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6161

    +

    s2.large.1

    +

    2

    +

    2

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.1

    +

    4

    +

    4

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.1

    +

    8

    +

    8

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.1

    +

    16

    +

    16

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.1

    +

    32

    +

    32

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +

    s2.medium.2

    +

    1

    +

    2

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    s2.large.2

    +

    2

    +

    4

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.2

    +

    4

    +

    8

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.2

    +

    8

    +

    16

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.2

    +

    16

    +

    32

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.2

    +

    32

    +

    64

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +

    s2.medium.4

    +

    1

    +

    4

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    s2.large.4

    +

    2

    +

    8

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.4

    +

    4

    +

    16

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.4

    +

    8

    +

    32

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.4

    +

    16

    +

    64

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.4

    +

    32

    +

    128

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +

    s2.medium.8

    +

    1

    +

    8

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    s2.large.8

    +

    2

    +

    16

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.8

    +

    4

    +

    32

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.8

    +

    8

    +

    64

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.8

    +

    16

    +

    128

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.8

    +

    32

    +

    256

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +
    +
    +
    +

    Scenarios

    • Applications

      General-purpose ECSs are suitable for applications that have no special requirements on CPU performance, memory, disk capacity, or bandwidth, but have high requirements on security and reliability. They feature low initial investment and maintenance costs.

      +
    • Application scenarios

      Enterprise website deployment, enterprise office environment setup, enterprise R&D and testing activities, web servers, R&D and testing environments, and small-scale databases

      +
    +
    +

    Notes

    • General-purpose ECSs support all released OSs.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0035550301.html b/ecs/umn/en-us_topic_0035550301.html new file mode 100644 index 000000000..ba5dabd2c --- /dev/null +++ b/ecs/umn/en-us_topic_0035550301.html @@ -0,0 +1,360 @@ + + +

    Memory-optimized ECSs

    +

    Overview

    • M4 ECSs use second-generation Intel® Xeon® Scalable processors with technologies optimized to offer powerful and stable computing performance. Using 25GE high-speed intelligent NICs, M4 ECSs provide a maximum memory size of 512 GiB based on DDR4 for memory-intensive applications with high requirements on network bandwidth and Packets Per Second (PPS).
    • M3 ECSs are developed based on the KVM virtualization platform and designed for processing large-scale data sets in the memory. They use Intel® Xeon® Scalable processors, network acceleration engines, and DPDK rapid packet processing mechanism to provide higher network performance and up to 512 GiB of DDR4 memory for memory-intensive computing applications.
    • M2 ECSs use Intel Xeon E5-2690 v4 CPUs and are designed for memory-optimized applications.
    +
    +

    Specifications

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 M4 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    m4.large.8

    +

    2

    +

    16

    +

    4/1.2

    +

    40

    +

    2

    +

    2

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6266

    +

    m4.xlarge.8

    +

    4

    +

    32

    +

    8/2.4

    +

    80

    +

    2

    +

    3

    +

    KVM

    +

    m4.2xlarge.8

    +

    8

    +

    64

    +

    15/4.5

    +

    150

    +

    4

    +

    4

    +

    KVM

    +

    m4.3xlarge.8

    +

    12

    +

    96

    +

    17/7

    +

    200

    +

    4

    +

    6

    +

    KVM

    +

    m4.4xlarge.8

    +

    16

    +

    128

    +

    20/9

    +

    280

    +

    8

    +

    8

    +

    KVM

    +

    m4.6xlarge.8

    +

    24

    +

    192

    +

    25/14

    +

    400

    +

    8

    +

    8

    +

    KVM

    +

    m4.8xlarge.8

    +

    32

    +

    256

    +

    30/18

    +

    550

    +

    16

    +

    8

    +

    KVM

    +

    m4.16xlarge.8

    +

    64

    +

    512

    +

    40/36

    +

    1000

    +

    32

    +

    8

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 M3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    m3.large.8

    +

    2

    +

    16

    +

    1.5/0.6

    +

    30

    +

    2

    +

    12

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151

    +

    m3.xlarge.8

    +

    4

    +

    32

    +

    3/1.1

    +

    50

    +

    2

    +

    12

    +

    KVM

    +

    m3.2xlarge.8

    +

    8

    +

    64

    +

    5/2

    +

    90

    +

    4

    +

    12

    +

    KVM

    +

    m3.4xlarge.8

    +

    16

    +

    128

    +

    10/4.5

    +

    130

    +

    4

    +

    12

    +

    KVM

    +

    m3.8xlarge.8

    +

    32

    +

    256

    +

    15/9

    +

    260

    +

    8

    +

    12

    +

    KVM

    +

    m3.15xlarge.8

    +

    60

    +

    512

    +

    17/17

    +

    500

    +

    16

    +

    12

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 M2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Hardware

    +

    m2.4xlarge.8

    +

    16

    +

    128

    +

    8/5

    +

    40

    +

    4

    +

    KVM

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +

    +

    m2.8xlarge.8

    +

    32

    +

    256

    +

    13/8

    +

    60

    +

    8

    +

    KVM

    +
    +
    +
    +

    Scenarios

    • High-performance relational (MySQL) and NoSQL (MongoDB and Cassandra) databases
    • Distributed web scale cache stores that provide in-memory caching of key-value type data (Memcached and Redis)
    • Applications processing big unstructured data in real time (financial services, Hadoop/Spark clusters)
    • High-performance computing (HPC) and electronic design automation (EDA)
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0036046828.html b/ecs/umn/en-us_topic_0036046828.html new file mode 100644 index 000000000..8f8293851 --- /dev/null +++ b/ecs/umn/en-us_topic_0036046828.html @@ -0,0 +1,138 @@ + + +

    Detaching an EVS Disk from a Running ECS

    +

    Scenarios

    An EVS disk attached to an ECS can function as a system disk or data disk.

    +
    • EVS disks mounted to /dev/sda or /dev/vda function as system disks. You can only detach system disks offline. Before detaching a system disk from an ECS, you must stop the ECS.
    • EVS disks mounted to other locations function as data disks. In addition to offline detachment, data disks can be detached online if the OS running on the ECS supports this feature.
    +

    This section describes how to detach a disk from a running ECS.

    +
    +

    Constraints

    • The EVS disk to be detached must be mounted at a location other than /dev/sda or /dev/vda.

      EVS disks mounted to /dev/sda or /dev/vda are system disks and cannot be detached from running ECSs.

      +
    • Before detaching an EVS disk from a running Windows ECS, make sure that OTC Tools have been installed on the ECS and that the tools are running properly.
    • Before detaching an EVS disk from a running Windows ECS, ensure that no program is reading data from or writing data to the disk. Otherwise, data will be lost.
    • SCSI EVS disks cannot be detached from running Windows ECSs.
    +
    • Before detaching an EVS disk from a running Linux ECS, you must log in to the ECS and run the umount command to cancel the association between the disk and the file system. In addition, ensure that no program is reading data from or writing data to the disk. Otherwise, detaching the disk will fail.
    +
    +

    Notes

    • On a Windows ECS, if the disk is in non-offline state, the system forcibly detaches the EVS disk. If this occurs, the system may generate a xenvbd alarm. You can ignore this alarm.

      To view the status of an EVS disk, perform the following operations:

      +
      1. Click Start in the task bar. In the displayed Start menu, right-click Computer and choose Manage from the shortcut menu.

        The Server Manager page is displayed.

        +
      2. In the navigation pane on the left, choose Storage > Disk Management.

        The EVS disk list is displayed in the right pane.

        +
      3. View the status of each EVS disk.
      +
      +
    • Do not detach an EVS disk from an ECS that is being started, stopped, or restarted.
    • Do not detach an EVS disk from a running ECS whose OS does not support this feature. OSs supporting EVS disk detachment from a running ECS are listed in OSs Supporting EVS Disk Detachment from a Running ECS.
    • For a running Linux ECS, the drive letter may be changed after an EVS disk is detached from it and then attached to it again. This is a normal case due to the drive letter allocation mechanism of the Linux system.
    • For a running Linux ECS, the drive letter may be changed after an EVS disk is detached from it and the ECS is restarted. This is a normal case due to the drive letter allocation mechanism of the Linux system.
    +
    +

    OSs Supporting EVS Disk Detachment from a Running ECS

    OSs supporting EVS disk detachment from a running ECS include two parts:
    • For the first part, see Formats and OSs Supported for External Image Files.
    • Table 1 lists the second part of supported OSs. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 OSs supporting EVS disk detachment from a running ECS

      OS

      +

      Version

      +

      CentOS

      +

      7.3 64bit

      +

      7.2 64bit

      +

      6.8 64bit

      +

      6.7 64bit

      +

      Debian

      +

      8.6.0 64bit

      +

      8.5.0 64bit

      +

      Fedora

      +

      25 64bit

      +

      24 64bit

      +

      SUSE

      +

      SUSE Linux Enterprise Server 12 SP2 64bit

      +

      SUSE Linux Enterprise Server 12 SP1 64bit

      +

      SUSE Linux Enterprise Server 11 SP4 64bit

      +

      SUSE Linux Enterprise Server 12 64bit

      +

      OpenSUSE

      +

      42.2 64bit

      +

      42.1 64bit

      +

      Oracle Linux Server release

      +

      7.3 64bit

      +

      7.2 64bit

      +

      6.8 64bit

      +

      6.7 64bit

      +

      Ubuntu Server

      +

      16.04 64bit

      +

      14.04 64bit

      +

      14.04.4 64bit

      +

      Windows (SCSI EVS disks cannot be detached from a running ECS.)

      +

      Windows Server 2008 R2 Enterprise 64bit

      +

      Windows Server 2012 R2 Standard 64bit

      +

      Windows Server 2016 R2 Standard 64bit

      +

      Red Hat Linux Enterprise

      +

      7.3 64bit

      +

      6.8 64bit

      +
      +
      +
    +
    +

    Online detachment is not supported by the ECSs running OSs not listed in the preceding table. For such ECSs, stop the ECSs before detaching disks from them to prevent any possible problems from occurring.

    +
    +
    +

    Procedure

    1. On the Elastic Cloud Server page, click the name of the ECS from which the EVS disk is to be detached. The page providing details about the ECS is displayed.
    2. Click the Disks tab. Locate the row containing the EVS disk to be detached and click Detach.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0036068717.html b/ecs/umn/en-us_topic_0036068717.html new file mode 100644 index 000000000..4fab46b49 --- /dev/null +++ b/ecs/umn/en-us_topic_0036068717.html @@ -0,0 +1,78 @@ + + +

    Why Is the NIC Not Working?

    +

    Symptom

    The NIC equipped on a disk-intensive or large-memory ECS does not work.

    +
    +

    Possible Causes

    The NIC driver has not been correctly installed.

    +
    +

    Solution

    Disk-intensive and large-memory ECSs use passthrough NICs to improve network performance. You must install the passthrough NIC driver on the ECSs or the image that is used for creating the ECSs.

    +

    If you mount the CD/DVD-ROM driver over a VPN, ensure that the VPN bandwidth is greater than 8 Mbit/s.

    +
    +

    To install the passthrough NICE driver, do as follows:

    +
    1. Obtain the passthrough NIC driver.

      Passthrough NIC driver versions vary depending on the OS. For details, see Table 1.

      + +
      + + + + + + + + + + + + + + + +
      Table 1 NIC driver versions and OSs

      NIC Driver Version

      +

      OS

      +

      How to Obtain

      +

      ixgbevf 2.16.4

      +

      CentOS 7.2 64bit

      +

      https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/2.16.4/

      +

      Red Hat Enterprise Linux 7.2 64bit

      +

      ixgbevf 2.16.1

      +

      SUSE Linux Enterprise Server 11 SP3 64bit

      +

      SUSE Linux Enterprise Server 11 SP4 64bit

      +

      https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/2.16.1/

      +
      +
      +

    2. Log in to the ECS.

      For more details, see Login Overview.

      +

    3. Install the passthrough NIC driver on the ECS. In this procedure, Red Hat Enterprise Linux 7.2 64bit is used as an example.

      1. Configure the passthrough NIC.
        Not all ECS OSs identify passthrough NICs using the standard NIC naming rule of ethx, where x is a number. If this is the case, you must configure the ECS so that it can identify the passthrough NIC. The procedure is as follows:
        1. Run the following command to view all NICs on the ECS and identify the passthrough NIC:

          ifconfig -a

          +
        2. Run the following command to switch to the directory where configuration files are stored:

          cd /etc/sysconfig/network-scripts/

          +
        3. Run the following command to create a configuration file for the passthrough NIC:

          cp ifcfg-eth0 ifcfg-NIC_name

          +

          In the preceding command, NIC_name specifies the name of the passthrough NIC.

          +
        4. Use the vi editor to edit this configuration file:

          vi ifcfg-NIC_name

          +
        5. Set the DEVICE parameter in the configuration file to the name of the passthrough NIC. The following is an example configuration:
          DEVICE="NIC_name"
          +BOOTPROTO="dhcp"
          +ONBOOT="yes"
          +STARTMODE="onboot"
          +
        6. Run the following command to restart the network service and allow the configuration to take effect:

          service network restart

          +
        +
        +
      2. Upload the obtained passthrough NIC driver to a directory on the ECS, for example, /home.
      3. Switch to user root on the ECS CLI and open the target directory.

        In this example, the passthrough NIC driver is stored in the /home directory. Run the cd /home command to switch to the target directory.

        +
      4. Run the following command to decompress the software package. (In this procedure, ixgbevf version 2.16.4 is used as an example.)

        tar -zxvf ixgbevf-2.16.4.tar.gz

        +
      5. Run the following command to switch to the generated src directory:

        cd ixgbevf-2.16.4/src

        +
      6. Run the following commands to install the driver:

        make

        +

        make install

        +
      7. Run the following command to restart the ECS to make the drive take effect:

        reboot

        +
      8. Switch to user root on the ECS CLI and open the src directory, for example, by running the cd /home/ixgbevf-2.16.4/src command. Then, run the following commands to check whether the driver has been installed:

        rmmod ixgbevf

        +

        insmod ./ixgbevf.ko

        +

        ethtool -i NIC_name

        +

        In the preceding command, NIC_name specifies the passthrough NIC name, for example, ens5.

        +
        • After you run the rmmod ixgbevf command, the system may display an error message. This message does not affect the installation of the passthrough NIC driver and can be ignored.
        • NIC_name specifies the passthrough NIC name, for example, ens5.
        +
        +
      9. Check the driver status based on the displayed information.

        In this example, the driver is installed if driver is ixgbevf and version is 2.16.4.

        +
      +

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0037470901.html b/ecs/umn/en-us_topic_0037470901.html new file mode 100644 index 000000000..e8a99a8dd --- /dev/null +++ b/ecs/umn/en-us_topic_0037470901.html @@ -0,0 +1,20 @@ + + +

    Expanding the Local Disks of a Disk-intensive ECS

    +

    Scenarios

    Disk-intensive ECSs can use both local disks and EVS disks to store data. Local disks are generally used to store service data and feature higher throughput than EVS disks.

    +

    Disk-intensive ECSs do not support modifying specifications. Therefore, when the idle capacity of the local disks of such an ECS is insufficient, you must create a new disk-intensive ECS with higher specifications for capacity expansion. In such a case, the data stored in the original ECS can be migrated to the new ECS through an EVS disk.

    +
    +

    Procedure

    1. Create an EVS disk according to the volume of data to be migrated.
    2. Attach the EVS disk to the disk-intensive ECS.
    3. Back up the data stored in the local disks to the EVS disk that is newly attached to the disk-intensive ECS.
    4. Detach the EVS disk from the ECS.
      1. On the Elastic Cloud Server page, select this disk-intensive ECS and ensure that it is Stopped.

        If the ECS is in the Running state, choose More > Stop to stop it.

        +
      2. Click the name of the disk-intensive ECS. The page providing details about the ECS is displayed.
      3. Click the Disks tab. Locate the row containing the EVS data disk and click Detach to detach the disk from the ECS.
      +
    5. Ensure that a new disk-intensive ECS with higher specifications than the original one is available.

      The idle local disk capacity of the new ECS must meet service requirements.

      +
    6. Attach the EVS disk to the new disk-intensive ECS.

      On the Elastic Cloud Server page, click the name of the ECS described in step 5. The page providing details about the ECS is displayed.

      +
    7. Click the Disks tab. Then, click Attach Disk.

      In the displayed dialog box, select the EVS disk detached in step 4 and the device name.

      +
    8. Migrate the data from the EVS disk to the local disks of the new disk-intensive ECS.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0037633087.html b/ecs/umn/en-us_topic_0037633087.html new file mode 100644 index 000000000..4c32b9a57 --- /dev/null +++ b/ecs/umn/en-us_topic_0037633087.html @@ -0,0 +1,31 @@ + + +

    What Is the cloudbase-init Account in Windows ECSs Used for?

    +

    Description

    In Windows ECSs, cloudbase-init is the default account of the Cloudbase-Init agent program. It is used to obtain the metadata and execute configurations when the ECS starts.

    +

    This account is unavailable on Linux ECSs.

    +
    +

    Do not modify or delete this account or uninstall the Cloudbase-Init agent program. Otherwise, you will be unable to insert data to initialize an ECS created using a Windows private image.

    +
    +

    Security Hardening for Randomized cloudbase-init Passwords

    In Cloudbase-Init 0.9.10, the security of randomized cloudbase-init passwords has been hardened to ensure that the hash values (LM-HASH and NTLM-HASH) of the passwords are different.

    +

    In Windows, the hash passwords are in the format of "Username:RID:LM-HASH value:NT-HASH value".

    +

    For example, in "Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE9CC:::",

    +
    • Username: Administrator
    • RID: 500
    • LM-HASH value: C8825DB10F2590EAAAD3B435B51404EE
    • NT-HASH value: 683020925C5D8569C23AA724774CE9CC
    +

    Use an image to create two ECSs, ecs01 and ecs02. Then, verify that the hash values of the cloudbase-init account for the two ECSs are different.

    +
    • LM-HASH and NTLM-HASH values of the cloudbase-init account for ecs01
      Figure 1 ecs01
      +
    • LM-HASH and NTLM-HASH values of the cloudbase-init account for ecs02
      Figure 2 ecs02
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0038024694.html b/ecs/umn/en-us_topic_0038024694.html new file mode 100644 index 000000000..9dca1b4ea --- /dev/null +++ b/ecs/umn/en-us_topic_0038024694.html @@ -0,0 +1,105 @@ + + +

    Large-Memory ECSs

    +

    Overview

    Large-memory ECSs provide an even larger amount of memory than memory-optimized ECSs. They are used for applications that require a large amount of memory, rapid data switching, low latency, and process large volumes of data. Large-memory ECSs provide large memory and high computing, storage, and network performance.

    +
    • Applications

      Large-memory ECSs are suitable for applications that require a large amount of memory, rapid data switching, and low latency, and process large volumes of data.

      +
    • Application scenarios

      E3 ECSs: OLAP and OLTP applications with hyper-threading enabled

      +
    +
    +

    Specifications

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 E3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Hardware

    +

    e3.7xlarge.12

    +

    28

    +

    348

    +

    25/12

    +

    280

    +

    8

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151

    +

    e3.14xlarge.12

    +

    56

    +

    696

    +

    25/25

    +

    500

    +

    16

    +

    KVM

    +
    +
    +
    +

    Notes

    • Large-memory ECSs do not support NIC hot swapping.
    • E3 ECSs support the following OSs that have been verified:

      SUSE Enterprise Linux Server 12 SP2 64bit

      +

      SUSE Enterprise Linux Server 12 SP3 64bit

      +
    • E3 ECSs can use ultra-high I/O EVS disks as the system disk and data disks.
    • The primary and extension NICs of a large-memory ECS have specified application scenarios. For details, see Table 2. +
      + + + + + + + + + + + + + +
      Table 2 Application scenarios of the NICs of a large-memory ECS

      NIC Type

      +

      Application Scenario

      +

      Remarks

      +

      Primary NIC

      +

      Vertical layer 3 communication

      +

      N/A

      +

      Extension NIC

      +

      Horizontal layer 2 communication

      +

      To improve network performance, you can set the MTU of an extension NIC to 8888.

      +
      +
      +
    • An ECS can have a maximum of 60 attached disks, including the system disk. For details about constraints, see Can I Attach Multiple Disks to an ECS?

      An example is provided as follows:

      +

      An E3 ECS is to be created. It can have a maximum of 60 attached disks, where:

      +
      • The number of system disks is 1.
      • The number of EVS disks is at most 59.
      +

      The maximum number of disks attached to an existing large-memory ECS remains unchanged. To attach 60 disks, enable advanced disk. For details, see Enabling Advanced Disk.

      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0039524582.html b/ecs/umn/en-us_topic_0039524582.html new file mode 100644 index 000000000..fee36e8d2 --- /dev/null +++ b/ecs/umn/en-us_topic_0039524582.html @@ -0,0 +1,15 @@ + + +

    Why Does the Failures Area Show an ECS Creation Failure But the ECS List Displays the Created ECS?

    +

    Symptom

    After you created an ECS bound with an EIP on the management console, the ECS creation was successful but binding the EIP failed due to insufficient EIPs. Although the Failures area showed that the ECS creation failed, the ECS was displayed in the ECS list. The results of the ECS creation task were inconsistent.

    +
    +

    Root Cause

    • The ECS list displays created ECSs.
    • The Failures area shows the ECS creation status, including the statuses of subtasks, such as creating ECS resources and binding an EIP. Only when all subtasks are successful, the ECS is created.
    +

    If the ECS is created but EIP binding failed, the task failed. However, the ECS you created is temporarily displayed in the list. After the system rolls back, the ECS is removed from the list.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0039588795.html b/ecs/umn/en-us_topic_0039588795.html new file mode 100644 index 000000000..6e0c8d021 --- /dev/null +++ b/ecs/umn/en-us_topic_0039588795.html @@ -0,0 +1,18 @@ + + +

    Viewing ECS Creation Statuses

    +

    Scenarios

    After submitting the request for creating an ECS, you can view the creation status. This section describes how to view the creation status of an ECS.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. After creating an ECS, view the creation status in the task status area on the right side of common operations (Start, Stop, and More).
    5. Click the number displayed above Creating and view details about the tasks.
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0040630518.html b/ecs/umn/en-us_topic_0040630518.html new file mode 100644 index 000000000..3bcab9966 --- /dev/null +++ b/ecs/umn/en-us_topic_0040630518.html @@ -0,0 +1,50 @@ + + +

    Changing the Time Zone for an ECS

    +

    Scenarios

    The default time zone for an ECS is the one you selected when creating the image that was used to create the ECS. This section describes how to change the time zone for an ECS to the local one or to another time zone in your network.

    +

    After you log in to your ECS, if you find that the time on the ECS is different from the local time, change the time zone for the ECS so that the time on the ECS is the same as the local time.

    +
    +

    For Linux ECSs

    The process of changing the time zone for a Linux ECS depends on the OS. In this section, the CentOS 6.x 64bit OS is used to demonstrate how to change the time zone for a Linux ECS.

    +
    1. Log in to the ECS.
    2. Run the following command to switch to user root:

      su - root

      +
    3. Run the following command to obtain the time zones supported by the ECS:

      ls /usr/share/zoneinfo/

      +

      In the terminal display, the /user/share/zoneinfo directory contains a hierarchy of time zone data files. Use the directory structure to obtain your desired time zone file.

      +

      The directory structure shown in /user/share/zoneinfo includes both time zones and directories. The directories contain time zone files for specific cities. Locate the time zone for the city in which the ECS is located.

      +

      For example:

      +
      • If you are to use the time zone for Shanghai, China, run the ls /usr/share/zoneinfo/Asia command to obtain the directory /usr/share/zoneinfo/Asia/Shanghai.
      • If you are to use the time zone for Paris, France, run the ls /usr/share/zoneinfo/Europe command to obtain the directory /usr/share/zoneinfo/Europe/Paris.
      +
    4. Set the target time zone.
      1. Run the following command to open the /etc/sysconfig/clock file:

        vim /etc/sysconfig/clock

        +
      2. Locate the ZONE entry and change its value to the name of the desired time zone file.

        For example:

        +
        • If the target time zone is for Shanghai, China, change the ZONE entry value as follows:

          ZONE="Asia/Shanghai"

          +
        • If the target time zone is for Paris, France, change the ZONE entry value as follows:

          ZONE="Europe/Paris"

          +
        +
      +
    5. Press Esc. Then, run the following command to save and exit the /etc/sysconfig/clock file:

      :wq

      +
    6. Run the following command to check whether the /etc/localtime file is available on the ECS:

      ls /etc/localtime

      +
      • If the file is available, go to step 7.
      • If the file is not available, go to step 8.
      +
    7. Run the following command to delete the existing /etc/localtime file:

      rm /etc/localtime

      +
    8. Run the following command to create a symbolic link between /etc/localtime and your time zone file so that the ECS can find this time zone file when it references the local time:

      ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

      +
    9. Run the following command to restart the ECS so that all services and applications running on the ECS use the new time zone:

      reboot

      +
    10. Log in to the ECS again and run the following command as user root to check whether the time zone has been changed:

      ls -lh /etc/localtime

      +

      The following information is displayed:

      +
      # ls -lh /etc/localtime
      +lrwxrwxrwx 1 root root 33 Nov 27 11:01 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
      +
    +
    +

    For Windows ECSs

    1. Log in to the ECS.
    2. Click the time display on the far right side of the task bar located at the bottom of your screen. In the dialog box that is displayed, click Change date and time settings.

      The Date and Time page is displayed.

      +
      Figure 1 Date and Time
      +
    3. Click Change time zone.

      The Time Zone Settings page is displayed.

      +
    4. In the Set the time zone pane, choose the target time zone from the Time zone drop-down list.
    5. Click OK.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0040863659.html b/ecs/umn/en-us_topic_0040863659.html new file mode 100644 index 000000000..907f9d10e --- /dev/null +++ b/ecs/umn/en-us_topic_0040863659.html @@ -0,0 +1,12 @@ + + +

    What Are the Requirements for Attaching an EVS Disk to an ECS?

    +
    • The EVS disk and the target ECS must be located in the same AZ.
    • For a non-shared disk, the EVS disk must be in Available state.

      For a shared disk, the target EVS disk must be in In-use or Available state.

      +
    • The target ECS must be in Running or Stopped state.
    • A SCSI EVS disk cannot be used as an ECS system disk.
    • Certain ECSs support SCSI EVS disk attachment. For details, see Which ECSs Can Be Attached with SCSI EVS Disks?
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0041169567.html b/ecs/umn/en-us_topic_0041169567.html new file mode 100644 index 000000000..f07242f06 --- /dev/null +++ b/ecs/umn/en-us_topic_0041169567.html @@ -0,0 +1,563 @@ + + +

    Change History

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Released On

    +

    Description

    +

    2022-01-10

    +

    Modified the following content:

    + +

    2021-12-30

    +

    Modified the following content:

    + +

    2021-11-20

    +

    Added the following content:

    +

    Can ECSs Automatically Recover After the Physical Host Accommodating the ECSs Becomes Faulty?

    +

    Modified the following content:

    + +

    2021-10-20

    +

    Optimized descriptions in Step 1: Configure Basic Settings.

    +

    2021-09-10

    +
    • Modified the following content:
      • Deleted description about Xen ECSs.
      +
    • Deleted the following sections:
      • Changing a General-Purpose ECS to an H1 ECS
      • Changing a Xen ECS to a KVM ECS (Windows)
      • Automatically Changing a Xen ECS to a KVM ECS (Linux)
      • Manually Changing a Xen ECS to a KVM ECS (Linux)
      +
    +

    2021-08-09

    +

    Modified the following content:

    + +

    2021-08-02

    +

    Modified the following content:

    +

    Deleted descriptions about Marketplace images from Images and Step 1: Configure Basic Settings.

    +

    2021-04-23

    +

    Added the following content:

    +

    Added How Do I Configure atop and kdump on Linux ECSs for Performance Analysis?.

    +

    2020-11-12

    +

    Modified the following content:

    + +

    2020-10-09

    +

    Added the following content:

    +

    Added the Windows Server 2019 Standard 64bit and Oracle Linux 7.6 64bit OSs supported by P2v ECSs in GPU-accelerated ECSs.

    +

    2020-09-08

    +
    Added the following content: +
    +
    Modified the following content: +
    +

    2020-06-08

    +

    Modified the following content:

    +

    Added the procedure for changing the OS keyboard language in What Should I Do If I Cannot Use the German Keyboard to Enter Characters When I Log In to a Linux ECS Using VNC?

    +

    2020-04-22

    +

    Modified the following content:

    + +

    2020-03-30

    +

    Added the following content:

    +
    • Added GPU Driver to describe GRID and Tesla drivers.
    +

    Modified the following content:

    + +

    2019-12-26

    +

    Added the following content:

    + +

    Modified the following content:

    +
    • Changing a Xen ECS to a KVM ECS (Windows)
    +

    2019-03-13

    +

    Modified the following content:

    +
    • Deleted E3 ECSs in Large-Memory ECSs because they have been terminated.
    • Deleted "FPGA-accelerated ECSs" because such ECSs have been terminated.
    +

    2019-03-06

    +

    Modified the following content:

    + +

    2019-03-05

    +

    Deleted the following content:

    +
    • Deleted FAQ "Why Are Certain Flavor Quotas Separately Displayed on the Quota Page?"
    • Deleted description of separately displayed quotas in Quota Adjustment.
    +

    2019-03-04

    +

    Modified the following content:

    +
    • Modified the figure for ECS login modes in Logging In to an ECS.
    • Modified the flowchart in sections "Changing a Xen ECS to a KVM ECS (Windows)" and "Automatically Changing a Xen ECS to a KVM ECS (Linux)".
    +

    2019-02-25

    +

    Modified the following content:

    + +

    2019-02-22

    +

    Modified the following content:

    +
    • Added operation limitations after the ECS state changes from Creating to Running in Creating an ECS.
    +

    2019-02-18

    +

    Added the following content:

    + +

    Modified the following content:

    +
    • Why Are Certain Flavor Quotas Separately Displayed on the Quota Page?
    • Changed the ECS types that support changing from Xen to KVM in "Changing a Xen ECS to a KVM ECS (Windows)".
    • Changed the ECS types that support changing from Xen to KVM and the command for downloading the driver installation script in "Automatically Changing a Xen ECS to a KVM ECS (Linux)".
    • Added description about the impact on ECS backups and IDs after a cold migration in Migrating an ECS.
    • Added the information that OTC Tools has been installed for public images in Basic ECS Metrics.
    +

    2019-02-13

    +

    Modified the following content:

    +

    Added EulerOS and SUSE 11 to the OSs that support automatic script operations in "Automatically Changing a Xen ECS to a KVM ECS (Linux)".

    +

    2019-02-12

    +

    Modified the following content:

    +
    • Changed the URL for downloading the PV driver and UVP VMTools in "Changing a Xen ECS to a KVM ECS (Windows)".
    • Changed the URL for downloading the script in "Automatically Changing a Xen ECS to a KVM ECS (Linux)".
    +

    2019-02-03

    +

    Modified the following content:

    + +

    2019-01-30

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    Deleted the following content:

    +
    • Terminated T series of general computing-basic ECSs.
    +

    2018-12-30

    +

    Added the following content:

    +
    • Added newly released T series of general computing-basic ECSs.
    +

    Modified the following content:

    + +

    2018-12-22

    +

    Modified the following content:

    +
    • Added DeH parameter description in Creating an ECS.
    • Modified the flowchart and follow-up operations in "Changing a Xen ECS to a KVM ECS (Windows)".
    • Modified the flowchart and follow-up operations in "Automatically Changing a Xen ECS to a KVM ECS (Linux)".
    • Added UVP in Glossary.
    +

    2018-12-12

    +

    Modified the following content:

    + +

    2018-12-10

    +

    Added the following content:

    +
    • Changing a Xen ECS to a KVM ECS (Windows)
    • Automatically Changing a Xen ECS to a KVM ECS (Linux)
    +

    Modified the following content:

    +
    • Adjusted the structure of the document.
    • Modified the procedure for creating an ECS in Getting Started.
    +

    2018-11-22

    +

    KVM ECSs support automatic recovery.

    +

    Added the following content:

    +
    • Automatically Recovering ECSs
    +

    Modified the following content:

    + +

    2018-10-29

    +

    Added the following content:

    +
    • Why Are Certain Flavor Quotas Separately Displayed on the Quota Page?
    +

    2018-09-30

    +

    Modified the following content:

    + +

    2018-09-22

    +

    Modified the following content:

    + +

    2018-08-31

    +

    Accepted in OTC 3.2.

    +

    2018-08-17

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2018-07-31

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2018-07-03

    +

    Modified the following content:

    + +

    2018-07-01

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2018-06-30

    +

    Accepted in OTC 3.1.

    +

    2018-06-29

    +

    Modified the following content:

    +
    • Terminated the full-ECS image function.
    • Terminated FPGA-accelerated ECSs.
    +

    2018-06-22

    +

    Modified Elastic Cloud Server User Guide 38 according to review comments.

    +

    2018-06-14

    +

    Added the following content:

    +
    • Allowed to create ECSs using full-ECS images.
    +

    Modified the following content:

    + +

    2018-06-01

    +

    Modified the following content:

    +
    • Modified FPGA-accelerated ECS specifications.
    • Deleted the DSS information.
    +

    2018-05-23

    +

    Modified the following content:

    + +

    2018-04-28

    +

    Added the following content:

    +
    • Added newly released FPGA-accelerated ECSs.
    • Installing a NVIDIA GPU Driver and CUDA Toolkit on a P2 ECS
    • Viewing Failures
    +

    Modified the following content:

    + +

    2018-03-30

    +

    Added the following content:

    + +

    2018-02-07

    +

    Accepted in OTC 3.0.

    +

    2018-02-03

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2018-01-26

    +

    Modified the following content:

    +
    • Updated certain screenshots in this document.
    • Added notes on using M3 ECSs.
    +

    2018-01-19

    +

    Modified the following content:

    + +

    2017-12-30

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2017-10-27

    +

    Modified the following content:

    +
    • Added computing I, computing II, and memory-optimized first-generation ECS types into the general-purpose ECS type in ECS Types.
    +

    2017-10-18

    +

    Modified the following content:

    + +

    2017-10-06

    +

    Modified the following content:

    + +

    2017-09-30

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2017-09-18

    +

    Modified the following content:

    + +

    2017-09-06

    +

    Modified the following content:

    + +

    2017-08-22

    +

    Added the following content:

    +
    • Added automatic recovery.
    +

    Modified the following content:

    +
    • Modified description, indicating that SCSI EVS disks cannot be added during ECS creation.
    +
    • Deleted the description of exporting the ECS list.
    • Changed the KVM ECS types to H2, M2, and HL1.
    • Confirmed and modified all issues in this document.
    +

    2017-08-11

    +

    Added the following content:

    +
    • Supported the multi-project function in Project.
    +

    2017-06-07

    +

    Modified the following content:

    + +

    2017-06-05

    +

    Modified the following content:

    + +

    2017-05-30

    +

    Modified the following content:

    + +

    2017-05-19

    +

    Modified the following content:

    + +

    2017-05-08

    +

    Added the following content:

    + +

    2017-04-07

    +

    Added the following content:

    + +

    Modified the following content:

    + + + + +

    2017-03-09

    +

    Modified the following content:

    +
    • Changed the maximum number of tags that can be added to an ECS to 11, where 1 is automatically added by the system and the other 10 must be manually added.
    • Changed one tag-related screenshot due to GUI optimization.
    +

    2017-02-03

    +

    Added the following content:

    + +

    Modified the following content:

    +
    • Modified the method of using puttygen.exe to generate key pairs in Creating a Key Pair.
    • Added description in License Type, indicating that the system does not support dynamic license type changing.
    +

    2017-01-27

    +

    Modified the following content:

    +
    • Deleted Ubuntu from the OSs supporting BYOL in License Type.
    +

    2017-01-26

    +

    Modified the following content:

    + +

    2017-01-20

    +

    Added the following content:

    + +

    2017-01-16

    +

    Modified the following content:

    + +

    2016-10-09

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2016-09-30

    +

    Modified the following content:

    +
    • Added constraints in Managing ECS Groups because ECS groups apply only to HANA ECSs and large-memory ECSs.
    +

    2016-09-28

    +

    Added the following content:

    + +

    Modified the following content:

    +
    • Deleted the FAQ that is not required any more because the preset Linux ECS username has been changed after Cloud-Init is supported.
    +

    2016-09-27

    +

    Added the following content:

    + +

    Modified the following content:

    +
    • Modified the instructions to configure keyboard languages in VNC logins in Login Using VNC.
    +

    2016-09-26

    +

    Modified the following content:

    +
    • Added the instructions to configure keyboard languages in VNC logins in Login Using VNC.
    +

    2016-09-23

    +

    Added the following content:

    + +

    Modified the following content:

    +
    • Added encryption algorithms and the method of using PuTTYgen to generate key pairs in Creating a Key Pair.
    +

    2016-09-18

    +

    Added the following content:

    + +

    Modified the following content:

    + +

    2016-08-25

    +

    Added the following content:

    + +

    2016-07-15

    +

    Added the following content:

    +
    • Cloud-Init
    • Forcible ECS shutdown
    • Forcible ECS restarting
    • OS changing
    +

    Modified the following content:

    +
    • ECS login modes
    • OS reinstallation
    +

    2016-03-14

    +

    This issue is the first official release.

    +
    +
    +
    + diff --git a/ecs/umn/en-us_topic_0042400609.html b/ecs/umn/en-us_topic_0042400609.html new file mode 100644 index 000000000..11e1d00e6 --- /dev/null +++ b/ecs/umn/en-us_topic_0042400609.html @@ -0,0 +1,376 @@ + + +

    Obtaining Metadata

    +

    Scenarios

    ECS metadata includes basic information of an ECS on the cloud platform, such as the ECS ID, hostname, and network information. ECS metadata can be obtained using either OpenStack or EC2 compatible APIs, as shown in Table 1. The following describes the URI and methods of using the supported ECS metadata.

    +
    +

    Notes

    If the metadata contains sensitive data, take appropriate measures to protect the sensitive data, for example, controlling access permissions and encrypting the data.

    +

    Perform the following configuration on the firewall:

    +
    • Windows

      If you need to assign permissions to only the administrator to access custom data, enable the firewall as an administrator and run the following commands in PowerShell:

      +

      PS C:\>$RejectPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Everyone")

      +

      PS C:\>$RejectPrincipalSID = $RejectPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value

      +

      PS C:\>$ExceptPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Administrator")

      +

      PS C:\>$ExceptPrincipalSID = $ExceptPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value

      +

      PS C:\>$PrincipalSDDL = "O:LSD:(D;;CC;;;$ExceptPrincipalSID)(A;;CC;;;$RejectPrincipalSID)"

      +

      PS C:\>New-NetFirewallRule -DisplayName "Reject metadata service for $($RejectPrincipal.Value), exception: $($ExceptPrincipal.Value)" -Action block -Direction out -Protocol TCP -RemoteAddress 169.254.169.254 -LocalUser $PrincipalSDDL

      +
    • Linux

      If you need to assign permissions to only user root to access custom data, run the following command as user root:

      +

      iptables --append OUTPUT --proto tcp --destination 169.254.169.254 --match owner ! --uid-owner root --jump REJECT

      +
    +
    +

    ECS Metadata Types

    Table 1 does not contain metadata items ami-id, ami-launch-index, ami-manifest-path, block-device-mapping/, instance-action, instance-id and reservation-id. These metadata items are not compatible with EC2 and are not recommended.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ECS metadata types

    Metadata Type

    +

    Metadata Item

    +

    Description

    +

    OpenStack

    +

    +

    /meta_data.json

    +

    Displays ECS metadata.

    +

    For the key fields in the ECS metadata, see Table 2.

    +

    OpenStack

    +

    /password

    +

    Displays the password for logging in to an ECS.

    +

    This metadata is used by Cloudbase-Init to store ciphertext passwords during initialization of key-pair-authenticated Windows ECSs.

    +

    OpenStack

    +

    /user_data

    +

    Displays ECS user data.

    +

    This metadata allows you to specify scripts and configuration files for initializing ECSs. For details, see Passing User Data to ECSs.

    +

    For password-authenticated Linux ECSs, this metadata is used to save password injection scripts.

    +

    OpenStack

    +

    /network_data.json

    +

    Displays ECS network information.

    +

    OpenStack

    +

    /securitykey

    +

    Obtains temporary AKs and SKs.

    +

    Before enabling an ECS to obtain a temporary AK and SK, make sure that the op_svc_ecs account has been authorized on IAM and that the desired ECS resources have been authorized for management.

    +

    EC2

    +

    /meta-data/hostname

    +

    Displays the name of the host accommodating an ECS.

    +

    To remove the suffix .novalocal from an ECS, see:

    +

    Is an ECS Hostname with Suffix .novalocal Normal?

    +

    EC2

    +

    /meta-data/local-hostname

    +

    The meaning of this field is the same as that of hostname.

    +

    EC2

    +

    /meta-data/public-hostname

    +

    The meaning of this field is the same as that of hostname.

    +

    EC2

    +

    /meta-data/instance-type

    +

    Displays an ECS flavor.

    +

    EC2

    +

    /meta-data/local-ipv4

    +

    Displays the fixed IP address of an ECS.

    +

    If there are multiple NICs, only the IP address of the primary NIC is displayed.

    +

    EC2

    +

    /meta-data/placement/availability-zone

    +

    Displays the AZ accommodating an ECS.

    +

    EC2

    +

    /meta-data/public-ipv4

    +

    Displays the EIP bound to an ECS.

    +

    If there are multiple NICs, only the EIP of the primary NIC is displayed.

    +

    EC2

    +

    /meta-data/public-keys/0/openssh-key

    +

    Displays the public key of an ECS.

    +

    EC2

    +

    /user-data

    +

    Displays ECS user data.

    +

    EC2

    +

    /meta-data/security-groups

    +

    Displays the security group to which an ECS belongs.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Metadata key fields

    Parameter

    +

    Type

    +

    Description

    +

    uuid

    +

    String

    +

    Specifies an ECS ID.

    +

    availability_zone

    +

    String

    +

    Specifies the AZ where an ECS locates.

    +

    meta

    +

    Dict

    +

    Specifies the metadata information, including the image name, image ID, and VPC ID.

    +

    hostname

    +

    String

    +

    Specifies the name of the host accommodating an ECS.

    +

    To remove the suffix .novalocal from an ECS, see:

    +

    Is an ECS Hostname with Suffix .novalocal Normal?

    +
    +
    +
    +

    Prerequisites

    • The target ECS has been logged in.
    • Security group rules in the outbound direction meet the following requirements:
      • Protocol: TCP
      • Port: 80
      • Destination: 169.254.0.0/16
      +

      If you use the default security group rules for the outbound direction, the preceding requirements are met. Then, the metadata can be accessed. Default security group rules for the outbound direction are as follows:

      +
      • Protocol: All
      • Port: All
      • Destination: 0.0.0.0/0
      +
      +
    +
    +

    Metadata (OpenStack Metadata API)

    Displays ECS metadata.

    +
    • URI

      /169.254.169.254/openstack/latest/meta_data.json

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      To use cURL to view Linux ECS metadata, run the following command:

      +

      curl http://169.254.169.254/openstack/latest/meta_data.json

      +

      To use Invoke-RestMethod to view Windows ECS metadata, run the following command:

      +

      Invoke-RestMethod http://169.254.169.254/openstack/latest/meta_data.json | ConvertTo-Json

      +
      {
      +    "random_seed": "rEocCViRS+dNwlYdGIxJHUp+00poeUsAdBFkbPbYQTmpNwpoEb43k9z+96TyrekNKS+iLYDdRNy4kKGoNPEVBCc05Hg1TcDblAPfJwgJS1okqEtlcofUhKmL3K0fto+5KXEDU3GNuGwyZXjdVb9HQWU+E1jztAJjjqsahnU+g/tawABTVySLBKlAT8fMGax1mTGgArucn/WzDcy19DGioKPE7F8ILtSQ4Ww3VClK5VYB/h0x+4r7IVHrPmYX/bi1Yhm3Dc4rRYNaTjdOV5gUOsbO3oAeQkmKwQ/NO0N8qw5Ya4l8ZUW4tMav4mOsRySOOB35v0bvaJc6p+50DTbWNeX5A2MLiEhTP3vsPrmvk4LRF7CLz2J2TGIM14OoVBw7LARwmv9cz532zHki/c8tlhRzLmOTXh/wL36zFW10DeuReUGmxth7IGNmRMQKV6+miI78jm/KMPpgAdK3vwYF/GcelOFJD2HghMUUCeMbwYnvijLTejuBpwhJMNiHA/NvlEsxJDxqBCoss/Jfe+yCmUFyxovJ+L8oNkTzkmtCNzw3Ra0hiKchGhqK3BIeToV/kVx5DdF081xrEA+qyoM6CVyfJtEoz1zlRRyoo9bJ65Eg6JJd8dj1UCVsDqRY1pIjgzE/Mzsw6AaaCVhaMJL7u7YMVdyKzA6z65Xtvujz0Vo=",
      +    "uuid": "ca9e8b7c-f2be-4b6d-a639-f10b4d994d04",
      +    "availability_zone": "lt-test-1c",
      +    "hostname": "ecs-ddd4-l00349281.novalocal",
      +    "launch_index": 0,
      +    "meta": {
      +        "metering.image_id": "3a64bd37-955e-40cd-ab9e-129db56bc05d",
      +        "metering.imagetype": "gold",
      +        "metering.resourcespeccode": "s3.medium.1.linux",
      +        "image_name": "CentOS 7.6 64bit",
      +        "os_bit": "64",
      +        "vpc_id": "3b6c201f-aeb3-4bce-b841-64756e66cb49",
      +        "metering.resourcetype": "1",
      +        "cascaded.instance_extrainfo": "pcibridge:2",
      +        "os_type": "Linux",
      +        "charging_mode": "0"
      +    },
      +    "project_id": "6e8b0c94265645f39c5abbe63c4113c6",
      +    "name": "ecs-ddd4-l00349281"
      +}
      +
    +
    +

    User Data (OpenStack Metadata API)

    Displays ECS user data. The value is configured only when you create an ECS. It cannot be changed after the configuration.

    +
    • URI

      /169.254.169.254/openstack/latest/user_data

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/openstack/latest/user_data

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/openstack/latest/user_data

      +
      ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
      +
      If user data was not passed to the ECS during ECS creation, the query result is 404.
      Figure 1 404 Not Found
      +
      +
      +
    +
    +

    Network Data (OpenStack Metadata API)

    Displays information about all NICs attached to an ECS, including their DNS server addresses, network bandwidth, IDs, private IP addresses, EIPs, and MAC addresses.

    +
    • URI

      /openstack/latest/network_data.json

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      instance_max_bandwidth and instance_min_bandwidth are in the unit of Mbit/s. If the value is -1, the bandwidth is not limited.

      +
      +

      Linux:

      +

      curl http://169.254.169.254/openstack/latest/network_data.json

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/openstack/latest/network_data.json | ConvertTo-Json

      +
      {
      +    "services": [{
      +        "type": "dns",
      +        "address": "xxx.xx.x.x"
      +    },
      +    {
      +        "type": "dns",
      +        "address": "100.1
      +25.21.250"
      +    }],
      +    "networks": [{
      +        "network_id": "67dc10ce-441f-4592-9a80-cc709f6436e7",
      +        "type": "i
      +pv4_dhcp",
      +        "link": "tap68a9272d-71",
      +        "id": "network0"
      +    }],
      +    "links": [{
      +        "type": "cascading",
      +        "vif_id": "68a9272d-7152-4ae7-a138-3ef53af669e7",
      +        "ethernet_mac_address": "fa:16:3e:f7:c1:47",
      +        "id": "tap68a9272d-71",
      +        "mtu": null
      +
      +    }],
      +    "qos":{
      +        "instance_max_bandwidth": 1200,
      +        "instance_min_bandwidth": 4000
      +    }
      +}
      +
    +
    +

    Security Key (OpenStack Metadata API)

    Obtains temporary AKs and SKs.

    +
    • If an ECS needs to obtain a temporary AK and SK, go to the ECS details page, and configure Agency for the ECS in the Management Information area so that the ECS is authorized on IAM.
    • The validity period of a temporary AK and SK is one hour. The temporary AK and SK are updated 10 minutes ahead of the expiration time. During the 10 minutes, both the new and old temporary AKs and SKs can be used.
    • When using temporary AKs and SKs, add 'X-Security-Token':{securitytoken} in the message header. securitytoken is the value returned when a call is made to the API.
    +
    +
    • URI

      /openstack/latest/securitykey

      +
    • Usage method

      Supports GET requests.

      +
    • Examples

      Linux:

      +

      curl http://169.254.169.254/openstack/latest/securitykey

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/openstack/latest/securitykey

      +
    +
    +

    User Data (EC2 Compatible API)

    Displays ECS user data. The value is configured only when you create an ECS. It cannot be changed after the configuration.

    +
    • URI

      /169.254.169.254/latest/user-data

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/user-data

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/user-data

      +
      ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
      +
    +
    +

    Hostname (EC2 Compatible API)

    Displays the name of the host accommodating an ECS. The .novalocal suffix will be added later.

    +
    • URI

      /169.254.169.254/latest/meta-data/hostname

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/meta-data/hostname

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/meta-data/hostname

      +
      vm-test.novalocal
      +
    +
    +

    Instance Type (EC2 Compatible API)

    Displays an ECS flavor.

    +
    • URI

      /169.254.169.254/latest/meta-data/instance-type

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/meta-data/instance-type

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/meta-data/instance-type

      +
      s3.medium.1
      +
    +
    +

    Local IPv4 (EC2 Compatible API)

    Displays the fixed IP address of an ECS. If there are multiple NICs, only the IP address of the primary NIC is displayed.

    +
    • URI

      /169.254.169.254/latest/meta-data/local-ipv4

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/meta-data/local-ipv4

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/meta-data/local-ipv4

      +
      192.1.1.2
      +
    +
    +

    Availability Zone (EC2 Compatible API)

    Displays the AZ accommodating an ECS.

    +
    • URI

      /169.254.169.254/latest/meta-data/placement/availability-zone

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/meta-data/placement/availability-zone

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/meta-data/placement/availability-zone

      +
      az1.dc1
      +
    +
    +

    Public IPv4 (EC2 Compatible API)

    Displays the EIP bound to an ECS. If there are multiple NICs, only the EIP of the primary NIC is displayed.

    +
    • URI

      /169.254.169.254/latest/meta-data/public-ipv4

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/meta-data/public-ipv4

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/meta-data/public-ipv4

      +
      46.1.1.2
      +
    +
    +

    Public Keys (EC2 Compatible API)

    Displays the public key of an ECS.

    +
    • URI

      /169.254.169.254/latest/meta-data/public-keys/0/openssh-key

      +
    • Usage method

      Supports GET requests.

      +
    • Example

      Linux:

      +

      curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key

      +

      Windows:

      +

      Invoke-RestMethod http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key

      +
      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI5Fw5k8Fgzajn1zJwLoV3+wMP+6CyvsSiIc/hioggSnYu/AD0Yqm8vVO0kWlun1rFbdO+QUZKyVr/OPUjQSw4SRh4qsTKf/+eFoWTjplFvd1WCBZzS/WRenxIwR00KkczHSJro763+wYcwKieb4eKRxaQoQvoFgVjLBULXAjH4eKoKTVNtMXAvPP9aMy2SLgsJNtMb9ArfziAiblQynq7UIfLnN3VclzPeiWrqtzjyOp6CPUXnL0lVPTvbLe8sUteBsJZwlL6K4i+Y0lf3ryqnmQgC21yW4Dzu+kwk8FVT2MgWkCwiZd8gQ/+uJzrJFyMfUOBIklOBfuUENIJUhAB Generated-by-Nova
      +
    +
    + +
    + + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0046566932.html b/ecs/umn/en-us_topic_0046566932.html new file mode 100644 index 000000000..58ac7e952 --- /dev/null +++ b/ecs/umn/en-us_topic_0046566932.html @@ -0,0 +1,29 @@ + + +

    License Type

    +

    Using License from the System

    You can use the license provided by the public cloud platform. After creating an ECS with a license authorized, you can use the authorized OS. The platform manages license compliance for you.

    +
    +

    BYOL

    What Is BYOL?

    +

    Bring your own license (BYOL) allows you to use your existing OS license. In such a case, you do not need to apply for a license again. In BYOL license type, you do not pay for the license fee when creating an ECS.

    +

    +

    How to Use BYOL?

    +

    If you select the BYOL license type, you are required to manage licenses by yourself. The public cloud platform provides functions for you to maintain license compliance during the license lifecycle, for example, deploying ECSs on DeHs. If you have obtained an OS license, you do not need to apply for a license any more.

    +
    +
    The OSs supporting BYOL are as follows:
    • SUSE Linux Enterprise Server
    • Oracle Enterprise Linux
    • Red Hat Enterprise Linux
    +
    +

    +

    +

    Application Scenarios

    +

    The system does not support dynamic license type changing. ECSs support BYOL in the following scenarios:

    +
    • Creating an ECS

      After creating an ECS, you cannot change its license type. If the license type must be changed, reinstall or change the ECS OS.

      +
    • Reinstalling an ECS OS

      When reinstalling an ECS OS, you can set the license type for the ECS.

      +
    • Changing an ECS OS

      When changing an ECS OS, you can set the license type for the ECS.

      +
    • Attaching a system disk

      The license type of a system disk is determined by the ECS license type after the ECS is created, the ECS OS is reinstalled, or the ECS OS is changed. If the system disk is detached and then attached to a new ECS or the original ECS, ensure that the ECS license type is the same as the system disk license type.

      +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0046912051.html b/ecs/umn/en-us_topic_0046912051.html new file mode 100644 index 000000000..927907c1c --- /dev/null +++ b/ecs/umn/en-us_topic_0046912051.html @@ -0,0 +1,64 @@ + + +

    User Encryption

    +

    User encryption allows you to use the encryption feature provided on the public cloud platform to encrypt ECS resources, improving data security. User encryption includes image encryption and EVS disk encryption.

    +

    Image Encryption

    Image encryption supports encrypting private images. When creating an ECS, if you select an encrypted image, the system disk of the created ECS is automatically encrypted, improving data security.

    +

    Use either of the following methods to create an encrypted image:

    +
    • Use an external image file.
    • Use an existing encrypted ECS.
    +

    For more information about image encryption, see Image Management Service User Guide.

    +
    +

    EVS Disk Encryption

    EVS disk encryption supports system disk encryption and data disk encryption.

    +
    • When creating an ECS, if you select an encrypted image, the system disk of the created ECS automatically has encryption enabled, and the encryption mode complies with the image encryption mode.
    • When creating an ECS, you can encrypt its system disk.
    • When creating an ECS, you can encrypt added data disks.
    +

    For more information about EVS disk encryption, see Elastic Volume Service User Guide.

    +
    +

    Impact on AS

    If you use an encrypted ECS to create an Auto Scaling (AS) configuration, the encryption mode of the created AS configuration complies with the ECS encryption mode.

    +
    +

    About Keys

    The key used for encryption relies on the Key Management Service (KMS). KMS uses a data encryption key (DEK) to encrypt data and a customer master key (CMK) to encrypt the DEK.

    +
    Figure 1 Data encryption process
    +

    Table 1 describes the keys involved in the data encryption process.

    + +
    + + + + + + + + + + + + + + + + + +
    Table 1 Keys

    Name

    +

    Description

    +

    Function

    +

    DEK

    +

    An encryption key that is used for encrypting data.

    +

    Encrypts specific data.

    +

    CMK

    +

    An encryption key created using KMS for encrypting DEKs.

    +

    A CMK can encrypt multiple DEKs.

    +

    Supports CMK disabling and scheduled deletion.

    +

    Default CMK

    +

    A master key automatically generated by the system when you use KMS for encryption for the first time.

    +

    The name extension of a default CMK is /default, for example, evs/default.

    +
    • Supports viewing details of the default CMK on the KMS console.
    • Does not support CMK disabling or scheduled deletion.
    +
    +
    +

    After disabling a CMK or scheduling the deletion of a CMK takes effect, the EVS disk encrypted using this CMK can still be used until the disk is detached from and then attached to an ECS again. During this process, the disk fails to be attached to the ECS because the CMK cannot be obtained. Therefore, the EVS disk becomes unavailable.

    +
    +

    For details about KMS, see Key Management Service User Guide.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0047272493.html b/ecs/umn/en-us_topic_0047272493.html new file mode 100644 index 000000000..9b97797b8 --- /dev/null +++ b/ecs/umn/en-us_topic_0047272493.html @@ -0,0 +1,29 @@ + + +

    Can All Users Use the Encryption Feature?

    +

    The rights of users in a user group to use the encryption feature are as follows:

    +
    • The user who has security administrator rights can grant KMS access rights to EVS for using the encryption feature.
    • When a common user who does not have security administrator rights attempts to use the encryption feature, the condition varies depending on whether the user is the first one in the user group to use this feature.
      • If the common user is the first one in the user group to use the encryption feature, the common user must request a user who has security administrator rights to grant the common user permissions. Then, the common user can use the encryption feature.
      • If the common user is not the first one in the user group to use the encryption feature, the user will have the permission to use the encryption feature.
      +
    +

    The following section uses a user group as an example to describe how to grant KMS access rights to EVS for using the encryption feature.

    +

    For example, a user group shown in Figure 1 consists of four users, user 1 to user 4. User 1 has security administrator rights. Users 2, 3, and 4 are common users who do not have security administrator rights.

    +
    Figure 1 User group
    +

    Scenario 1: User 1 Uses the Encryption Feature

    In this user group, if user 1 uses the encryption feature for the first time, the procedure is as follows:

    +
    1. User 1 creates Xrole to grant KMS access permissions to EVS.

      After user 1 grants permissions, the system automatically creates CMK evs/default for encrypting EVS disks.

      +

      When user 1 uses the encryption feature for the first time, the user must grant the KMS access permissions to EVS. Then, all the users in the user group can use the encryption feature by default.

      +
      +
    2. User 1 selects a key.
      One of the following keys can be used:
      • Default CMK, evs/default
      • CMK, the key created before using the EVS disk encryption feature
      • Newly created key (For instructions about how to create a key, see "Creating a Key Pair" in Key Management Service User Guide.)
      +
      +
    +

    After user 1 uses the encryption feature, all other users in the user group can use this feature, without requiring to contact user 1 for rights granting.

    +
    +

    Scenario 2: Common User Uses the Encryption Feature

    In this user group, when user 3 uses the encryption feature for the first time:

    +
    1. The system displays a message indicating that the user has no rights.
    2. User 3 asks user 1 to create Xrole to grant KMS access permissions to EVS.
    +

    After user 1 grants the permissions, user 3 and all other users in the user group can use the encryption feature by default.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0047624368.html b/ecs/umn/en-us_topic_0047624368.html new file mode 100644 index 000000000..db670fbcb --- /dev/null +++ b/ecs/umn/en-us_topic_0047624368.html @@ -0,0 +1,12 @@ + + +

    Why Cannot I Use the MAC Keyboard to Enter Lowercase Characters When I Log In to an ECS Using VNC?

    +

    If you use the MAC keyboard to enter German characters on your computer running MAC OS, uppercase characters can be entered properly after Caps Lock is enabled. However, after Caps Lock is disabled, the entered characters are still uppercase.

    +

    To resolve this issue, hold Shift and press the letter key on the keyboard.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0047654687.html b/ecs/umn/en-us_topic_0047654687.html new file mode 100644 index 000000000..a7667459c --- /dev/null +++ b/ecs/umn/en-us_topic_0047654687.html @@ -0,0 +1,29 @@ + + +

    Why Does a Key Pair Created Using puttygen.exe Fail to Be Imported on the Management Console?

    +

    Symptom

    When you try to import a key pair that you created using puttygen.exe on the management console, the system displays a message indicating that the import failed.

    +
    +

    Possible Causes

    The format of the public key content does not meet system requirements.

    +

    If you store a public key by clicking Save public key of puttygen.exe, the format of the public key content will change. Therefore, you cannot import the key on the management console.

    +
    +

    Solution

    Use the locally stored private key and PuTTY Key Generator to restore the format of the public key content. Then, import the public key to the management console.

    +
    1. Double-click puttygen.exe to switch to the PuTTY Key Generator page.
      Figure 1 PuTTY Key Generator
      +
    2. Click Load and select the private key.

      The system automatically loads the private key and restores the format of the public key content in PuTTY Key Generator. The content in the red box in Figure 2 is the public key whose format meets system requirements.

      +
      Figure 2 Restoring the format of the public key content
      +
    3. Copy the public key content to a .txt file and save the file in a local directory.
    4. Import the public key to the management console.
      1. Log in to the management console.
      2. Click in the upper left corner and select your region and project.
      3. Under Computing, click Elastic Cloud Server.
      4. In the navigation pane on the left, choose Key Pair.
      5. On the right side of the page, click Import Key Pair.
      6. Copy the public key content in the .txt file to Public Key Content and click OK.
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0047898078.html b/ecs/umn/en-us_topic_0047898078.html new file mode 100644 index 000000000..77d84f784 --- /dev/null +++ b/ecs/umn/en-us_topic_0047898078.html @@ -0,0 +1,7 @@ + + +

    Glossary

    +

    For details about the terms involved in this document, see Glossary.

    +
    +
    + diff --git a/ecs/umn/en-us_topic_0048642616.html b/ecs/umn/en-us_topic_0048642616.html new file mode 100644 index 000000000..c41f24415 --- /dev/null +++ b/ecs/umn/en-us_topic_0048642616.html @@ -0,0 +1,30 @@ + + +

    Cloud-Init

    +

    Cloud-Init is an open-source cloud initialization program, which initializes some of the customized configurations of a newly created ECS, such as the hostname, key pair, and user data.

    +

    All standard (Standard_xxx) and enterprise (Enterprise_xxx) images support Cloud-Init. Only certain community images (Community_xxx) do not support it.

    +

    Using Cloud-Init to initialize your ECSs will affect your ECS, IMS, and AS services.

    +

    Impact on IMS

    To ensure that ECSs created using a private image support customized configurations, you must install Cloud-Init or Cloudbase-Init on the ECSs before using them to create private images.

    +
    • For Windows OSs, download and install Cloudbase-Init.
    • For Linux OSs, download and install Cloud-Init.
    +

    After Cloud-Init or Cloudbase-Init is installed in an image, Cloud-Init or Cloudbase-Init automatically configures initial attributes for the ECSs created using this image.

    +

    For more information, see Image Management Service User Guide.

    +
    +

    Impact on ECS

    +
    +

    Impact on AS

    • When creating an AS configuration, you can use the User Data function to specify ECS configurations for initialization. If the AS configuration has taken effect in an AS group, the ECSs newly created in the AS group will automatically initialize their configurations based on the specified ECS configurations.
    • For an existing AS configuration, if its private image does not have Cloud-Init or Cloudbase-Init installed, the login mode of the ECSs created in the AS group where the AS configuration takes effect may fail to take effect.

      To resolve this issue, see "How Does Cloud-Init Affect the AS Service?" in Auto Scaling User Guide.

      +
    +
    +

    Notes

    • When using Cloud-Init, enable DHCP in the VPC to which the ECS belongs.
    • When using Cloud-Init, ensure that security group rules for the outbound direction meet the following requirements:
      • Protocol: TCP
      • Port: 80
      • Destination: 169.254.0.0/16
      +

      If you use the default security group rules for the outbound direction, the preceding requirements are met. Then, the metadata can be accessed. Default security group rules for the outbound direction are as follows:

      +
      • Protocol: All
      • Port: All
      • Destination: 0.0.0.0/0
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0050735736.html b/ecs/umn/en-us_topic_0050735736.html new file mode 100644 index 000000000..7f0eb06c1 --- /dev/null +++ b/ecs/umn/en-us_topic_0050735736.html @@ -0,0 +1,36 @@ + + +

    How Can a Changed Static Hostname Take Effect Permanently?

    +

    Symptom

    The static hostname of a Linux ECS is user defined and injected using Cloud-Init during the ECS creation. Although the hostname can be changed by running the hostname command, the changed hostname is restored after the ECS is restarted.

    +
    +

    Changing the Hostname on the ECS

    To make the hostname changed by running the hostname command take effect even after the ECS is stopped or restarted, save the changed hostname into configuration files.

    +

    The changed hostname is assumed to be new_hostname.

    +
    +
    1. Modify the /etc/hostname configuration file.

      1. Run the following command to edit the configuration file:

        sudo vim /etc/hostname

        +
      2. Change the hostname to the new one.
      3. Run the following command to save and exit the configuration file:

        :wq

        +
      +

    2. Modify the /etc/sysconfig/network configuration file.

      1. Run the following command to edit the configuration file:

        sudo vim /etc/sysconfig/network

        +
      2. Change the HOSTNAME value to the new hostname.

        HOSTNAME=Changed hostname

        +

        If there is no HOSTNAME in the configuration file, manually add this parameter and set it to the changed hostname.

        +
        +

        An example is provided as follows:

        +

        HOSTNAME=new_hostname

        +
      3. Run the following command to save and exit the configuration file:

        :wq

        +
      +

    3. Modify the /etc/cloud/cloud.cfg configuration file.

      1. Run the following command to edit the configuration file:

        sudo vim /etc/cloud/cloud.cfg

        +
      2. Use either of the following methods to modify the configuration file:
        • Method 1: Change the preserve_hostname parameter value or add the preserve_hostname parameter to the configuration file.

          If preserve_hostname: false is already available in the /etc/cloud/cloud.cfg configuration file, change it to preserve_hostname: true. If preserve_hostname is unavailable in the /etc/cloud/cloud.cfg configuration file, add preserve_hostname: true before cloud_init_modules.

          +

          If you use method 1, the changed hostname still takes effect after the ECS is stopped or restarted. However, if the ECS is used to create a private image and the image is used to create a new ECS, the hostname of the new ECS is the hostname (new_hostname) used by the private image, and user-defined hostnames cannot be injected using Cloud-Init.

          +
        • Method 2 (recommended): Delete or comment out - update_hostname.

          If you use method 2, the changed hostname still takes effect after the ECS is stopped or restarted. If the ECS is used to create a private image and the image is used to create a new ECS, the changed hostname permanently takes effect, and user-defined hostnames (such as new_new_hostname) can be injected using Cloud-Init.

          +
        +
      +

    4. Run the following command to restart the ECS:

      sudo reboot

      +

    5. Run the following command to check whether the hostname has been changed:

      sudo hostname

      +

      If the changed hostname is displayed in the command output, the hostname has been changed and the new name permanently takes effect.

      +

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0053287548.html b/ecs/umn/en-us_topic_0053287548.html new file mode 100644 index 000000000..3a6a369e8 --- /dev/null +++ b/ecs/umn/en-us_topic_0053287548.html @@ -0,0 +1,19 @@ + + +

    How Can I Handle the Issue that a Windows 7 ECS Equipped with an Intel 82599 NIC Reports an Error in SR-IOV Scenarios?

    +

    Symptom

    When the 20.4.1 driver package downloaded at Intel website https://downloadcenter.intel.com/search?keyword=Intel++Ethernet+Connections+CD was installed in a Windows 7 64bit ECS with SR-IOV passthrough enabled, the system displayed the message "No Intel adapter found".

    +
    +

    Cause Analysis

    The OS identifies an Intel 82599 passthrough NIC without a driver installed as an Ethernet controller. When the 20.4.1 driver package was installed, the OS did not identify the Intel NIC, leading to the error.

    +
    +

    Solution

    Run Autorun.exe in the folder where the 20.4.1 driver package is stored. Install a driver on the NIC before installing the driver package so that the NIC can be identified as an Intel 82599 virtual function (VF) device by the OS. Use either of the following methods to install the driver:

    +
    • Method 1: Update the version.
      1. Download the 18.6 driver package at the Intel website.
      2. Run Autorun.exe.
      3. Run Autorun.exe in the folder where the 20.4.1 driver package is stored to update the driver.
      +
    • Method 2: Use the device manager.
      1. Start the Windows resource manager. Right-click Computer and choose Manage from the shortcut menu. In the Device Manager window, locate the NIC. When the NIC has no driver installed, the NIC locates in Other devices and is named Ethernet Controller.
      2. Right-click Ethernet Controller and choose Update Driver Software.
      3. Click Browse, select the path where the driver package is stored, and click Next.
      4. Locate the NIC in Network Adapter of Device Manager.
      5. Run Autorun.exe to install the 20.4.1 driver package.
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0054121392.html b/ecs/umn/en-us_topic_0054121392.html new file mode 100644 index 000000000..2775bf169 --- /dev/null +++ b/ecs/umn/en-us_topic_0054121392.html @@ -0,0 +1,13 @@ + + +

    User Permissions

    +

    Two types of permissions are provided by default: user management and resource management.

    +
    • User management refers to the management of users, user groups, and user group rights.
    • Resource management refers to the control operations that can be performed by users on cloud service resources.
    +

    For further details, see Permissions.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0057711189.html b/ecs/umn/en-us_topic_0057711189.html new file mode 100644 index 000000000..3669afb62 --- /dev/null +++ b/ecs/umn/en-us_topic_0057711189.html @@ -0,0 +1,49 @@ + + +

    Obtaining ECS Console Logs

    +

    Scenarios

    When an ECS cannot start or run properly, you can download and view ECS console logs for troubleshooting, for example, checking whether the kernel and service configuration are correct.

    +

    The ECS console logs record ECS operations, such as ECS starting, stopping, restarting, or forcibly restarting. Through the management console, you can obtain the ECS logs within one hour.

    +
    +

    Notes

    • The system does not record the logs for forcible ECS stopping.
    • The system supports viewing console logs for the ECSs running the following OSs:
      • Red Hat Enterprise Linux 6.x series
      • Red Hat Enterprise Linux 7.x series
      • CentOS 6.x series
      • CentOS 7.x series
      • Ubuntu 14.x series
      • Ubuntu 16.x series
      • SUSE 11.x series
      • SUSE 12.x series
      • OpenSUSE 13.x series
      • OpenSUSE 42.x series
      • Debine 16.x series
      • Fedora series
      • Freebsd series
      • CoreOS series
      +
    • The ECSs running Windows do not support console logs.
    • The system can save up to 100 KB log files.
    +
    +

    Procedure

    1. Log in to the ECS.
    2. Check and modify the grub file.

      The configuration method varies depending on the OS.

      To prevent impact on the start of the recovery mode, you are advised to modify only the item used for the default start.

      +
      +
      • For CentOS and Red Hat 6, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/grub/menu.lst

          +
        2. Locate the row that contains linux, linux16, or kernel (depending on the system), add console=ttyS0 to its end, and delete parameter rhgb quiet. If console=ttyS0 already exists, you do not need to add it. Save the change and exit.
        +
      • For CentOS 7, Red Hat 7, and Ubuntu 14, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/grub2/grub.cfg

          +
        2. Locate the row that contains linux, linux16, or kernel (depending on the system), add console=ttyS0 to its end, and delete parameter rhgb quiet. If console=ttyS0 already exists, you do not need to add it. Save the change and exit.
        +
      • For SUSE Linux 11, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/grub/menu.1st

          +
        2. Locate the row that contains linux, linux16, or kernel (depending on the system) and add console=ttyS0 to its end. If console=ttyS0 already exists, you do not need to add it. Save the change and exit.
        +
      • For SUSE Linux 12, openSUSE 13, and openSUSE 42, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/grub2/grub.cfg

          +
        2. Locate the row that contains linux, linux16, or kernel (depending on the system) and add console=ttyS0 to its end. If console=ttyS0 already exists, you do not need to add it. Save the change and exit.
        +
      • For Debian and Ubuntu 16, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/grub/grub.cfg

          +
        2. Locate the row that contains linux, linux16, or kernel (depending on the system) and add console=ttyS0 to its end. If console=ttyS0 already exists, you do not need to add it. Save the change and exit.
        +
      • For Fedora, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/grub2/grub.cfg

          +
        2. Locate the row that contains linux, linux16, or kernel (depending on the system) and add console=ttyS0 to its end. If console=ttyS0 already exists, you do not need to add it. Save the change and exit.
        +
      • For FreeBSD, perform the following steps:
        1. Run the following command to open the configuration file:

          vi /boot/loader.conf

          +
        2. Add console="comconsole". If console="comconsole" already exists, you do not need to add it. Save the change and exit.
        +
      • For CoreOS, perform the following steps:
        1. Run the following command to check whether ttyS0 has been configured:

          cat /proc/cmdline | grep ttyS0

          +
          • If yes, ttyS0 has been configured.
          • If no, ttyS0 has not been configured. Go to 2.b.
          +
        2. Run the following command to open the configuration file to be edited:

          vi /usr/share/oem/grub.cfg

          +

          If the /usr/share/oem/grub.cfg configuration file does not exist, manually create the file.

          +
          +
        3. Add set linux_append="console=ttyS0". If set linux_append="console=ttyS0" already exists, you do not need to add it. Save the change and exit.
        +
      +
      +

    3. On the Elastic Cloud Server page, click Restart.
    4. Obtain ECS console logs.

      1. Log in to the management console.
      2. Click in the upper left corner and select your region and project.
      3. Under Computing, click Elastic Cloud Server.
      4. On the Elastic Cloud Server page, click the name of the target ECS.
      5. On the page providing details about the ECS, click the Console Logs tab.
      6. Choose the number of lines to be displayed for a log from the Displayed Lines drop-down list.
      7. Click Query.

        View details of the displayed log.

        +

        After you click Query, the system will not automatically update the displayed log. To view the latest log, click Query again.

        +
        +
      8. (Optional) Click Download to download the information of the displayed log.

        Downloaded log files are in .txt format.

        +
      +

    +
    + +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0058747426.html b/ecs/umn/en-us_topic_0058747426.html new file mode 100644 index 000000000..ed7588a81 --- /dev/null +++ b/ecs/umn/en-us_topic_0058747426.html @@ -0,0 +1,30 @@ + + +

    How Can I Check Whether the Network Communication Is Normal Between Two ECSs Equipped with an InfiniBand NIC Driver?

    +

    For high-performance H2 ECSs equipped with an InfiniBand NIC driver (InfiniBand ECSs for short), perform the following operations to check whether the driver installation is successful and whether the network communication between the ECSs is normal.

    +

    During the check, if your ECS has no command tool installed, such as ibstat, obtain the tool from the installation package for the InfiniBand NIC driver and install the tool.

    +
    +
    1. Check whether the NICs of the InfiniBand ECSs are functional.

      1. Log in to an ECS.
      2. Run the following command to check whether the NIC is functional:
        ibstat
        • If it is functional, go to 2.
        • If it is not functional, contact customer service for technical support.
        +
        +
      +

    2. Check whether the network communication between two InfiniBand ECSs is normal.

      1. Log in to one InfiniBand ECS and run the following command:

        ib_write_bw -x 0 --pkey_index 0

        +
      2. Log in to the other InfiniBand ECS and run the following command:

        ib_write_bw -x 0 --pkey_index 0ip_addr

        +

        In the preceding command, ip_addr is the NIC IP address of the first InfiniBand ECS.

        +
      3. Check whether the terminal display is correct.
        Figure 1 Normal network communication
        +
        • If the terminal display is shown in Figure 1, the network communication between the two InfiniBand ECSs is normal.
        • If the InfiniBand network is inaccessible, contact customer service for technical support.
        +
      +

    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0058758453.html b/ecs/umn/en-us_topic_0058758453.html new file mode 100644 index 000000000..df4e44580 --- /dev/null +++ b/ecs/umn/en-us_topic_0058758453.html @@ -0,0 +1,286 @@ + + +

    Enabling NIC Multi-Queue

    +

    Scenarios

    Single-core CPU performance cannot meet the requirement of processing NIC interruptions incurred with the increase of network I/O bandwidth. NIC multi-queue enables multiple CPUs to process ECS NIC interruptions, thereby improving PPS and I/O performance.

    +
    +

    The ECS described in this section is assumed to comply with the requirements on specifications and virtualization type.

    + +

    Support of NIC Multi-Queue

    NIC multi-queue can be enabled on an ECS only when the ECS specifications, virtualization type, and image OS meet the requirements described in this section.

    +
    • For details about the ECS specifications that support NIC multi-queue, see ECS Specifications and Types.

      If the number of NIC queues is greater than 1, NIC multi-queue is supported.

      +
      +
    • The virtualization type must be KVM.
    • The Linux public images listed in Table 2 support NIC multi-queue.
      • Windows public images have not supported NIC multi-queue. If you enable NIC multi-queue in a Windows public image, starting an ECS created using such an image may be slow.
      • It is a good practice to upgrade the kernel version of the Linux ECS to 2.6.35 or later. Otherwise, NIC multi-queue is not supported.

        Run the uname -r command to obtain the kernel version. If the kernel version is earlier than 2.6.35, contact customer service to upgrade the kernel.

        +
      +
      +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Support of NIC multi-queue for Linux ECSs

    Image

    +

    Support of NIC Multi-Queue

    +

    NIC Multi-Queue Enabled by Default

    +

    Ubuntu 14.04/16.04/18.04/20.04 server 64bit

    +

    Yes

    +

    Yes

    +

    OpenSUSE 42.2/15.* 64bit

    +

    Yes

    +

    Yes

    +

    SUSE Enterprise 12 SP1/SP2 64bit

    +

    Yes

    +

    Yes

    +

    CentOS 6.8/6.9/7.*/8.* 64bit

    +

    Yes

    +

    Yes

    +

    Debian 8.0.0/8.8.0/8.9.0/9.0.0/10.0.0/10.2.0 64bit

    +

    Yes

    +

    Yes

    +

    Fedora 24/25/30 64bit

    +

    Yes

    +

    Yes

    +

    EulerOS 2.2/2.3/2.5 64bit

    +

    Yes

    +

    Yes

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Support of NIC multi-queue for KVM ECSs

    OS

    +

    Image

    +

    Status

    +

    Windows

    +

    Windows Server 2008 Web R2 64-bit

    +

    Supported using private images

    +

    Windows Server 2008 R2 Standard/DataCenter/Enterprise 64bit

    +

    Supported using private images

    +

    Windows Server 2012 R2 Standard/DataCenter 64bit

    +

    Supported using private images

    +

    Windows Server 2016 Standard/DataCenter 64bit

    +

    Supported using private images

    +

    Linux

    +

    Ubuntu 14.04/16.04 server 64bit

    +

    Supported

    +

    OpenSUSE 42.2 64bit

    +

    Supported

    +

    SUSE Enterprise 12 SP1/SP2 64bit

    +

    Supported

    +

    CentOS 6.8/6.9/7.0/7.1/7.2/7.3/7.4/7.5/7.6 64bit

    +

    Supported

    +

    Debian 8.0.0/8.8.0/8.9.0/9.0.0 64bit

    +

    Supported

    +

    Fedora 24/25 64bit

    +

    Supported

    +

    EulerOS 2.2 64bit

    +

    Supported

    +
    +
    +
    +

    Importing the External Image File to the IMS Console

    For details, see "Registering an Image File as a Private Image" in Image Management Service User Guide.

    +
    +

    Setting NIC Multi-Queue for the Image

    Windows OSs have not commercially supported NIC multi-queue. If you enable NIC multi-queue in a Windows image, starting an ECS created using such an image may be slow.

    +

    Use one of the following methods to set the NIC multi-queue attribute:

    +
    Method 1:
    1. Log in to the management console.
    2. Under Computing, click Image Management Service.
    3. Click the Private Images tab, locate the row containing the target image, click Modify in the Operation column.
    4. Set the NIC multi-queue attribute of the image.
    +
    +
    Method 2:
    1. Log in to the management console.
    2. Under Computing, click Image Management Service.
    3. Click the Private Images tab. In the image list, click the name of the target image to switch to the page providing details about the image.
    4. Click Modify in the upper right corner. In the displayed Modify Image dialog box, set the NIC multi-queue attribute.
    +
    +

    Method 3: Add hw_vif_multiqueue_enabled to an image through the API.

    +
    1. For instructions about how to obtain the token, see Token Authentication.
    2. For instructions about how to call an API to update image information, see "Updating Image Information (Native OpenStack API)" in Image Management Service API Reference.
    3. Add X-Auth-Token to the request header.

      The value of X-Auth-Token is the token obtained in step 1.

      +
    4. Add Content-Type to the request header.

      The value of Content-Type is application/openstack-images-v2.1-json-patch.

      +

      The request URI is in the following format:

      +

      PATCH /v2/images/{image_id}

      +
      The request body is as follows:
      [       
      +         { 
      +          "op":"add",
      +          "path":"/hw_vif_multiqueue_enabled", 
      +          "value": "true" 
      +         } 
      + ]
      +
      +

      Figure 1 shows an example request body for modifying the NIC multi-queue attribute.

      +
      Figure 1 Example request body
      +
    +

    +
    +

    Creating an ECS Using a Private Image

    Create an ECS using a registered private image. For details, see Creating an ECS. Note the following when setting the parameters:
    • Region: Select the region where the private image is located.
    • Image: Select Private image and then the desired image from the drop-down list.
    +
    +
    +

    Enabling NIC Multi-Queue

    KVM Windows ECSs use private images to support NIC multi-queue. For details, see "How Do I Set NIC Multi-queue Feature of an Image?" in Image Management Service User Guide.

    +

    This section uses a Linux ECS running CentOS 7.4 as an example to describe how to enable NIC multi-queue.

    +
    1. Enable NIC multi-queue.

      1. Log in to the ECS.
      2. Run the following command to obtain the number of queues supported by the NIC and the number of queues with NIC multi-queue enabled:

        ethtool -l NIC

        +
      3. Run the following command to configure the number of queues used by the NIC:

        ethtool -L NIC combined Number of queues

        +
      +

      An example is provided as follows:

      +
      [root@localhost ~]# ethtool -l eth0  #View the number of queues used by NIC eth0.
      +Channel parameters for eth0:
      +Pre-set maximums:
      +RX:               0
      +TX:               0
      +Other:                  0
      +Combined: 4  #Indicates that a maximum of four queues can be enabled for the NIC.
      +Current hardware settings:
      +RX:               0
      +TX:               0
      +Other:                  0
      +Combined: 1 #Indicates that one queue has been enabled.
      +
      +[root@localhost ~]# ethtool -L eth0 combined 4 #Enable four queues on NIC eth0.
      +

    2. (Optional) Enable irqbalance so that the system automatically allocates NIC interrupts on multiple vCPUs.

      1. Run the following command to enable irqbalance:

        service irqbalance start

        +
      2. Run the following command to view the irqbalance status:

        service irqbalance status

        +

        If the Active value in the command output contains active (running), irqbalance has been enabled.

        +
        Figure 2 Enabled irqbalance
        +
      +

    3. (Optional) Enable interrupt binding.

      Enabling irqbalance allows the system to automatically allocate NIC interrupts, improving network performance. If the improved network performance still fails to meet your requirements, manually configure interrupt affinity on the ECS.

      +

      To do so, perform the following operations:

      +

      Configure the following script so that one ECS vCPU serves the interrupt requests initialized by one queue. One queue corresponds to one interrupt, and one interrupt binds to one vCPU.

      +
      #!/bin/bash
      +service irqbalance stop
      +
      +eth_dirs=$(ls -d /sys/class/net/eth*)
      +if [ $? -ne 0 ];then
      +    echo "Failed to find eth*  , sleep 30" >> $ecs_network_log
      +    sleep 30
      +    eth_dirs=$(ls -d /sys/class/net/eth*)
      +fi
      +
      +for eth in $eth_dirs
      +do
      +    cur_eth=$(basename $eth)
      +    cpu_count=`cat /proc/cpuinfo| grep "processor"| wc -l`
      +    virtio_name=$(ls -l /sys/class/net/"$cur_eth"/device/driver/ | grep pci |awk {'print $9'})
      +
      +    affinity_cpu=0
      +    virtio_input="$virtio_name""-input"
      +    irqs_in=$(grep "$virtio_input" /proc/interrupts | awk -F ":" '{print $1}')
      +    for irq in ${irqs_in[*]}
      +    do
      +        echo $((affinity_cpu%cpu_count)) > /proc/irq/"$irq"/smp_affinity_list
      +        affinity_cpu=$[affinity_cpu+2]
      +    done
      +
      +    affinity_cpu=1
      +    virtio_output="$virtio_name""-output"
      +    irqs_out=$(grep "$virtio_output" /proc/interrupts | awk -F ":" '{print $1}')
      +    for irq in ${irqs_out[*]}
      +    do
      +        echo $((affinity_cpu%cpu_count)) > /proc/irq/"$irq"/smp_affinity_list
      +        affinity_cpu=$[affinity_cpu+2]
      +    done
      +done
      +

    4. (Optional) Enable XPS and RPS.

      XPS allows the system with NIC multi-queue enabled to select a queue by vCPU when sending a data packet.

      +
      #!/bin/bash
      +# enable XPS feature
      +cpu_count=$(grep -c processor /proc/cpuinfo)
      +dec2hex(){
      +  echo $(printf "%x" $1)
      +}
      +eth_dirs=$(ls -d /sys/class/net/eth*)
      +if [ $? -ne 0 ];then
      +    echo "Failed to find eth* , sleep 30" >> $ecs_network_log
      +    sleep 30
      +    eth_dirs=$(ls -d /sys/class/net/eth*)
      +fi
      +for eth in $eth_dirs
      +do
      +    cpu_id=1
      +    cur_eth=$(basename $eth)
      +    cur_q_num=$(ethtool -l $cur_eth | grep -iA5 current | grep -i combined | awk {'print $2'})
      +    for((i=0;i<cur_q_num;i++))
      +    do
      +        if [ $i -eq $cpu_count ];then
      +            cpu_id=1
      +        fi
      +        xps_file="/sys/class/net/${cur_eth}/queues/tx-$i/xps_cpus"
      +        rps_file="/sys/class/net/${cur_eth}/queues/rx-$i/rps_cpus"
      +        cpuset=$(dec2hex "$cpu_id")
      +        echo $cpuset > $xps_file
      +        echo $cpuset > $rps_file
      +        let cpu_id=cpu_id*2
      +    done
      +done
      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0060610074.html b/ecs/umn/en-us_topic_0060610074.html new file mode 100644 index 000000000..dff7ef3c0 --- /dev/null +++ b/ecs/umn/en-us_topic_0060610074.html @@ -0,0 +1,15 @@ + + +

    Exporting ECS Information

    +

    Scenarios

    The information of all ECSs under your account can be exported in CSV format to a local directory. The file records the IDs, private IP addresses, and EIPs of your ECSs.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the upper right corner of the ECS list, click .

      The system will automatically export all ECSs in the current region under your account to a local directory.

      +
    5. In the lower left corner of your local computer desktop, obtain the exported file servers.csv.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0070518971.html b/ecs/umn/en-us_topic_0070518971.html new file mode 100644 index 000000000..1706321aa --- /dev/null +++ b/ecs/umn/en-us_topic_0070518971.html @@ -0,0 +1,13 @@ + + +

    Project

    +

    A project groups and isolates OpenStack computing, storage, and network resources. A project can be a department or a team.

    +

    Multiple projects can be created for one account.

    +

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0072987316.html b/ecs/umn/en-us_topic_0072987316.html new file mode 100644 index 000000000..be33c224d --- /dev/null +++ b/ecs/umn/en-us_topic_0072987316.html @@ -0,0 +1,17 @@ + + +

    Monitoring

    +
    + + diff --git a/ecs/umn/en-us_topic_0074752335.html b/ecs/umn/en-us_topic_0074752335.html new file mode 100644 index 000000000..5a4b964f6 --- /dev/null +++ b/ecs/umn/en-us_topic_0074752335.html @@ -0,0 +1,35 @@ + + +

    (Optional) Configuring Mapping Between Hostnames and IP Addresses

    +

    ECSs in the same VPC can communicate with each other using hostnames. In such a case, you are required to configure the mapping between hostnames and IP addresses. The communication using hostnames is more convenient than that using IP addresses.

    +

    Constraints

    This method applies only to Linux ECSs.

    +
    +

    Procedure

    For example, there are two ECSs in a VPC, ecs-01 and ecs-02. Perform the following operations to enable communication using hostnames between ecs-01 and ecs-02:

    +
    1. Log in to ecs-01 and ecs-02 and obtain their private IP addresses.

      1. Log in to the management console.
      2. Under Computing, click Elastic Cloud Server.
      3. On the Elastic Cloud Server page, obtain the private IP address in the IP Address column.

        For example, the obtained private IP addresses are as follows:

        +

        ecs-01: 192.168.0.1

        +

        ecs-02: 192.168.0.2

        +
      +

    2. Obtain the hostnames for the two ECSs.

      1. Log in to an ECS.
      2. Run the following command to view the ECS hostname:

        sudo hostname

        +

        For example, the obtained hostnames are as follows:

        +

        ecs-01: hostname01

        +

        ecs-02: hostname02

        +
      +

    3. Create mapping between the hostnames and IP addresses and add information about other ECSs in the same VPC.

      1. Log in to ecs-01.
      2. Run the following command to switch to user root:

        sudo su -

        +
      3. Run the following command to edit the hosts configuration file:

        vi /etc/hosts

        +
      4. Press i to enter editing mode.
      5. Add the statement in the following format to set up the mapping:

        Private IP address hostname

        +

        For example, add the following statement:

        +

        192.168.0.1 hostname01

        +

        192.168.0.2 hostname02

        +
      6. Press Esc to exit editing mode.
      7. Run the following command to save the configuration and exit:

        :wq

        +
      8. Log in to ecs-02.
      9. Repeat 3.b to 3.g.
      +

    4. Check whether the ECSs can communicate with each other using hostnames.

      Log in to an ECS in the same VPC, run the following command to ping the added host, and check whether the operation is successful:

      +

      ping Hostname

      +

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0076210995.html b/ecs/umn/en-us_topic_0076210995.html new file mode 100644 index 000000000..1122fc122 --- /dev/null +++ b/ecs/umn/en-us_topic_0076210995.html @@ -0,0 +1,115 @@ + + +

    How Can I Adjust System Disk Partitions?

    +

    Scenarios

    If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can manually adjust the partitions to expand the system disk.

    +

    There are two ways to expand a system disk:

    + +
    +

    Procedure

    This section uses an ECS running CentOS 7.3 64bit as an example. A 60 GB system disk was created with the ECS. However, the capacity of the system disk partition is displayed as only 40 GB.

    +

    To use the 20 GB capacity, performing the following operations:

    +
    1. View disk partitions.

      1. Log in to the Linux ECS.
      2. Run the following command to switch to user root:

        sudo su -

        +
      3. Run the following command to view details about the ECS disk:

        fdisk -l

        +

        In the following command output, /dev/xvda or /dev/vda indicates the system disk.

        +
        Figure 1 Viewing details about the disk
        +
      4. Run the following command to view disk partitions:

        parted -l /dev/xvda

        +
        Figure 2 Viewing disk partitions
        +
      +

    2. Create a partition for the expanded system disk capacity.

      1. Run the following command to switch to the fdisk mode (taking /dev/xvda as an example):

        fdisk /dev/xvda

        +

        Information similar to the following is displayed:

        +
        [root@ecs-8d6c ]# fdisk /dev/xvda
        +Welcome to fdisk (util-linux 2.23.2).
        +
        +Changes will remain in memory only, until you decide to write them.
        +Be careful before using the write command.
        +
        +Command (m for help):
        +
      2. Enter n and press Enter to create a new partition.

        Because the system disk has two existing partitions, the system automatically creates the third one.

        +

        Information similar to the following is displayed.

        +
        Figure 3 Creating a new partition
        +
      3. Enter the new partition's start cylinder number and press Enter.

        The start cylinder number must be greater than the end cylinder numbers of existing partitions. In this example, use the default value for the new partition's start cylinder number and press Enter. Information similar to the following is displayed.

        +
        Figure 4 Specifying the new partition's start cylinder number
        +
      4. Enter the new partition's end cylinder number and press Enter.

        In this example, use the default value for the new partition's end cylinder number and press Enter. Information similar to the following is displayed.

        +
        Figure 5 Specifying the new partition's end cylinder number
        +
      5. Enter p and press Enter to view the created partition.

        Information similar to the following is displayed.

        +
        Figure 6 Viewing the created partition
        +
      6. Enter w and press Enter. The system saves and exits the partition.

        The system automatically writes the partition result into the partition list. Then, the partition is created.

        +

        Information similar to the following is displayed.

        +
        Figure 7 Completing the partition creation
        +
      7. Run the following command to view disk partitions:

        parted -l /dev/xvda

        +
        Figure 8 Viewing disk partitions
        +
      +

    3. Run the following command to synchronize the modifications in the partition list with the OS:

      partprobe

      +

    4. Configure the type of the new partition file system.

      1. Run the following command to view the type of the file system:

        df -TH

        +
        Figure 9 Viewing the file system type
        +
      2. Run the following command to format the partition (taking the ext4 type as an example):

        mkfs -t ext4 /dev/xvda3

        +

        Formatting the partition requires a period of time. During this time, observe the system running status and do not exit the system.

        +
        +

        Information similar to the following is displayed:

        +
        [root@ecs-86dc ]# mkfs -t ext4 /dev/xvda3
        +mke2fs 1.42.9 (28-Dec-2013)
        +Filesystem label=
        +OS type: Linux
        +Block size=4096 (log=2)
        +Fragment size=4096 (log=2)
        +Stride=0 blocks, Stripe width=0 blocks
        +1790544 inodes, 7156992 blocks
        +357849 blocks (5.00%) reserved for the super user
        +First data block=0
        +Maximum filesystem blocks=2155872256
        +219 block groups
        +32768 blocks per group, 32768 fragments per group
        +8176 inodes per group
        +Superblock backups stored on blocks:
        +        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        +        4096000
        +
        +Allocating group tables: done
        +Writing inode tables: done
        +Creating journal (32768 blocks): done
        +Writing superblocks and filesystem accounting information: done
        +
      +

    5. Mount the new partition to the target directory.

      If you mount the new partition to a directory that is not empty, the subdirectories and files in the directory will be hidden. It is a good practice to mount the new partition to an empty directory or a newly created directory. If you want to mount the new partition to a directory that is not empty, temporarily move the subdirectories and files in the directory to another directory. After the partition is mounted, move the subdirectories and files back.

      +
      Take the newly created directory /root/new as an example.
      1. Run the following command to create the /root/new directory:

        mkdir /root/new

        +
      2. Run the following command to mount the new partition to the /root/new directory:

        mount /dev/xvda3 /root/new

        +

        Information similar to the following is displayed:

        +
        [root@ecs-86dc ]# mount /dev/xvda3 /root/new
        +[root@ecs-86dc ]#
        +
      3. Run the following command to view the mounted file systems:

        df -TH

        +

        Information similar to the following is displayed:

        +
        Figure 10 Viewing the mounted file systems
        +
      +
      +

    6. Determine whether to set automatic mounting upon system startup for the new disk.

      If you do not set automatic mounting upon system startup, you must mount the new partition to the specified directory again after the ECS is restarted.
      • If automatic mounting is required, go to 7.
      • If automatic mounting is not required, no further action is required.
      +
      +

    7. Set automatic mounting upon system startup for the new disk.

      Do not set automatic mounting upon system startup for unformatted disks because this will cause ECS startup failures.

      +
      +
      1. Run the following command to obtain the file system type and UUID:

        blkid

        +
        Figure 11 Viewing the file system type
        +

        According to the preceding figure, the UUID of the new partition is 96e5e028-b0fb-4547-a82a-35ace1086c4f.

        +
      2. Run the following command to open the fstab file using the vi editor:

        vi /etc/fstab

        +
      3. Press i to enter editing mode.
      4. Move the cursor to the end of the file and press Enter. Then, add the following information:

        UUID=96e5e028-b0fb-4547-a82a-35ace1086c4f /root/new ext4 defaults 0 0

        +
      5. Press Esc, run the following command, and press Enter. The system saves the configurations and exits the vi editor.

        :wq

        +
      +

      If you want to detach a new disk for which automatic mounting upon system startup has been set, you must delete the automatic mounting configuration before you detach the disk. Otherwise, the ECS cannot be started after you detach the disk. To delete the automatic mounting configuration, perform the following operations:

      +
      1. Run the following command to open the fstab file using the vi editor:

        vi /etc/fstab

        +
      2. Press i to enter editing mode.
      3. Delete the following statement:

        UUID=96e5e028-b0fb-4547-a82a-35ace1086c4f /root/new ext4 defaults 0 0

        +
      4. Press Esc, run the following command, and press Enter. The system saves the configurations and exits the vi editor.

        :wq

        +
      +
      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0077938284.html b/ecs/umn/en-us_topic_0077938284.html new file mode 100644 index 000000000..694863543 --- /dev/null +++ b/ecs/umn/en-us_topic_0077938284.html @@ -0,0 +1,11 @@ + + +

    Which ECSs Can Be Attached with SCSI EVS Disks?

    +

    All types of ECSs can be attached with SCSI EVS disks.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0078300749.html b/ecs/umn/en-us_topic_0078300749.html new file mode 100644 index 000000000..1a9f27142 --- /dev/null +++ b/ecs/umn/en-us_topic_0078300749.html @@ -0,0 +1,50 @@ + + +

    How Can I Add the Empty Partition of an Expanded System Disk to the End Root Partition Online?

    +

    Scenarios

    If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can add the empty partition to the root partition of the system disk.

    +

    This section describes how to add the empty partition to the end root partition online.

    +
    +

    Procedure

    In the following operations, the ECS that runs CentOS 6.5 64bit and has a 50 GB system disk is used as an example. The system disk has two partitions, /dev/xvda1: swap and /dev/xvda2: root, and the root partition is the end partition.

    +
    1. Run the following command to view disk partitions:

      parted -l /dev/xvda

      +
      [root@sluo-ecs-5e7d ~]# parted -l /dev/xvda
      +Disk /dev/xvda: 53.7GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: msdos
      +
      +Number  Start   End     Size    Type     File system     Flags
      + 1      1049kB  4296MB  4295MB  primary  linux-swap(v1)
      + 2      4296MB  42.9GB  38.7GB  primary  ext4            boot
      +
    2. Run the following command to obtain the file system type and UUID:

      blkid

      +
      /dev/xvda1: UUID="25ec3bdb-ba24-4561-bcdc-802edf42b85f" TYPE="swap" 
      +/dev/xvda2: UUID="1a1ce4de-e56a-4e1f-864d-31b7d9dfb547" TYPE="ext4" 
      +
    3. Run the following command to install the growpart tool:

      This tool may be integrated in the cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init package. Run the yum install cloud-* command to ensure it is available.

      +

      yum install cloud-utils-growpart

      +
    4. Run the following command to expand the root partition (the second partition) using growpart:
      growpart /dev/xvda 2
      [root@sluo-ecs-5e7d ~]# growpart /dev/xvda 2
      +CHANGED: partition=2 start=8390656 old: size=75495424 end=83886080 new: size=96465599,end=104856255
      +
      +
    5. Run the following command to verify that online capacity expansion is successful:
      parted -l /dev/xvda
      [root@sluo-ecs-5e7d ~]# parted -l /dev/xvda
      +Disk /dev/xvda: 53.7GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: msdos
      +
      +Number  Start   End     Size    Type     File system     Flags
      + 1      1049kB  4296MB  4295MB  primary  linux-swap(v1)
      + 2      4296MB  53.7GB  49.4GB  primary  ext4            boot
      +
      +
    6. Run the following command to expand the capacity of the file system:

      resize2fs -f $Partition name

      +

      Suppose the partition name is /dev/xvda2, run the following command:

      +
      [root@sluo-ecs-a611 ~]# resize2fs -f /dev/xvda2
      +resize2fs 1.42.9 (28-Dec-2013)
      +Filesystem at /dev/xvda2 is mounted on /; on-line resizing required
      +old_desc_blocks = 3, new_desc_blocks = 3
      +....
      +[root@sluo-ecs-a611 ~] # df -hT    //Check file system capacity expansion
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0078300750.html b/ecs/umn/en-us_topic_0078300750.html new file mode 100644 index 000000000..4352fe7f0 --- /dev/null +++ b/ecs/umn/en-us_topic_0078300750.html @@ -0,0 +1,117 @@ + + +

    How Can I Add the Empty Partition of an Expanded System Disk to the Non-end Root Partition Online?

    +

    Scenarios

    If the capacity of system disk partitions is inconsistent with the actual system disk capacity after an ECS is created, you can add the empty partition to the root partition of the system disk.

    +

    This section describes how to add the empty partition to the non-end root partition online.

    +
    +

    Procedure

    In the following operations, the ECS that runs CentOS 6.5 64bit and has a 100 GB system disk is used as an example. The system disk has two partitions, /dev/xvda1: root and /dev/xvda2: swap, and the root partition is not the end partition.

    +
    1. Run the following command to view disk partitions:
      parted -l /dev/xvda
      [root@sluo-ecs-a611 ~]# parted -l /dev/xvda
      +Disk /dev/xvda: 107GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: msdos
      +Disk Flags: 
      +
      +Number  Start   End     Size    Type     File system     Flags
      + 1      1049kB  41.0GB  40.9GB  primary  ext4            boot
      + 2      41.0GB  42.9GB  2000MB  primary  linux-swap(v1)
      +
      +

      The first is the root partition, and the second is the swap partition.

      +
    2. View and edit the fstab partition table to delete the swap partition attaching information.
      1. Run the following command to view the fstab partition table:

        tail -n 3 /etc/fstab

        +
        [root@sluo-ecs-a611 ~]# tail -n 3 /etc/fstab 
        +#
        +UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea /                       ext4    defaults        1 1
        +UUID=5de3cf2c-30c6-4fb2-9e63-830439d4e674 swap                    swap    defaults        0 0
        +
      2. Run the following command to edit the fstab partition table and delete the swap partition attaching information.

        vi /etc/fstab

        +
        tail -n 3 /etc/fstab
        [root@sluo-ecs-a611 ~]# vi /etc/fstab 
        +[root@sluo-ecs-a611 ~]# tail -n 3 /etc/fstab 
        +#
        +UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea /                       ext4    defaults        1 1
        +
        +
      +
    3. Run the following command to disable the swap partition:

      swapoff -a

      +
    4. Delete the swap partition.
      1. Run the following command to view the partition:
        parted /dev/xvda
        [root@sluo-ecs-a611 ~]# parted /dev/xvda
        +GNU Parted 3.1
        +Using /dev/xvda
        +Welcome to GNU Parted! Type ´help´ to view a list of commands.
        +(parted) help                                                             
        +  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
        +  help [COMMAND]                           print general help, or help on COMMAND
        +  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
        +  mkpart PART-TYPE [FS-TYPE] START END     make a partition
        +  name NUMBER NAME                         name partition NUMBER as NAME
        +  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a
        +        particular partition
        +  quit                                     exit program
        +  rescue START END                         rescue a lost partition near START and END
        +  rm NUMBER                                delete partition NUMBER
        +  select DEVICE                            choose the device to edit
        +  disk_set FLAG STATE                      change the FLAG on selected device
        +  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
        +  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
        +  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
        +  unit UNIT                                set the default unit to UNIT
        +  version                                  display the version number and copyright information of GNU Parted
        +(parted)                                                         
        +
        +
      2. Press p.
        Disk /dev/xvda: 107GB
        +Sector size (logical/physical): 512B/512B
        +Partition Table: msdos
        +Disk Flags: 
        +
        +Number  Start   End     Size    Type     File system     Flags
        + 1      1049kB  41.0GB  40.9GB  primary  ext4            boot
        + 2      41.0GB  42.9GB  2000MB  primary  linux-swap(v1)
        +                                                       
        +
      3. Run the following command to delete the partition:
        rm 2
        (parted) rm2   
        +
        +
      4. Press p.
        (parted) p 
        +Disk /dev/xvda: 107GB
        +Sector size (logical/physical): 512B/512B
        +Partition Table: msdos
        +Disk Flags: 
        +
        +Number  Start   End     Size    Type     File system  Flags
        + 1      1049kB  41.0GB  40.9GB  primary  ext4         boot
        +
      5. Run the following command to edit the fstab partition table:
        quit
        (parted) quit                                                     
        +Information: You may need to update /etc/fstab.
        +
        +
      +
    5. Run the following command to view partition after the swap partition is deleted:

      parted -l /dev/xvda

      +
      [root@sluo-ecs-a611 ~]# parted -l /dev/xvda
      +Disk /dev/xvda: 107GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: msdos
      +Disk Flags: 
      +
      +Number  Start   End     Size    Type     File system  Flags
      + 1      1049kB  41.0GB  40.9GB  primary  ext4         boot
      +
    6. Run the following command to install the growpart tool:

      This tool may be integrated in the cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init package. Run the yum install cloud-* command to ensure it is available.

      +

      yum install cloud-utils-growpart

      +
    7. Run the following command to expand the root partition (the first partition) using growpart:

      growpart /dev/xvda 1

      +
      [root@sluo-ecs-a611 ~]# growpart /dev/xvda 1
      +CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=209710462,end=209712510
      +
    8. Run the following command to verify that online capacity expansion is successful:
      [root@sluo-ecs-a611 ~]# parted -l /dev/xvda
      +Disk /dev/xvda: 107GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: msdos
      +Disk Flags: 
      +
      +Number  Start   End    Size   Type     File system  Flags
      + 1      1049kB  107GB  107GB  primary  ext4         boot
      +
    9. Run the following command to expand the capacity of the file system:

      resize2fs -f $Partition name

      +

      Suppose the partition name is /dev/xvda1, run the following command:

      +
      [root@sluo-ecs-a611 ~]# resize2fs -f /dev/xvda1
      +resize2fs 1.42.9 (28-Dec-2013)
      +Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
      +old_desc_blocks = 3, new_desc_blocks = 3
      +....
      +[root@sluo-ecs-a611 ~] # df -hT     //Check file system capacity expansion
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0079176727.html b/ecs/umn/en-us_topic_0079176727.html new file mode 100644 index 000000000..5880a49c7 --- /dev/null +++ b/ecs/umn/en-us_topic_0079176727.html @@ -0,0 +1,29 @@ + + +

    How Can I Set the Validity Period of the Image Password?

    +

    If an ECS cannot be logged in because of expired image password, you can contact the administrator for handling.

    +

    If the ECS can still be logged in, you can perform the following operations to set the password validity period.

    +

    Procedure

    The following operations use EulerOS 2.2 as an example.

    +
    +
    1. Log in to the ECS.
    2. Run the following command to check the password validity period:

      vi /etc/login.defs

      +

      The value of parameter PASS_MAX_DAYS is the password validity period.

      +
    3. Run the following command to change the value of parameter PASS_MAX_DAYS:

      chage -M 99999 user_name

      +

      99999 is the password validity period, and user_name is the system user, for example, user root.

      +

      You are advised to configure the password validity period as needed and change it at a regular basis.

      +
      +
    4. Run command vi /etc/login.defs to verify that the configuration has taken effect.
      Figure 1 Configuration verification
      +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0081525053.html b/ecs/umn/en-us_topic_0081525053.html new file mode 100644 index 000000000..a9a56823d --- /dev/null +++ b/ecs/umn/en-us_topic_0081525053.html @@ -0,0 +1,16 @@ + + +

    How Can I Obtain the Key Pair Used by an ECS?

    +

    Symptom

    You have created multiple key pairs, and you are trying to find the key pair to log in to the target ECS.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, select the target ECS.
    5. Click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    6. Obtain the Key Pair value.

      The value is the key pair used by the ECS.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0081525054.html b/ecs/umn/en-us_topic_0081525054.html new file mode 100644 index 000000000..16d474631 --- /dev/null +++ b/ecs/umn/en-us_topic_0081525054.html @@ -0,0 +1,32 @@ + + +

    Why Can't I Obtain the Password for Logging In to My Windows ECS Authenticated Using a Key Pair?

    +

    Symptom

    A private key cannot be used to obtain the password for logging in to a Windows ECS that is authenticated using a key pair.

    +
    +

    Possible Causes

    The password fails to inject using Cloudbase-Init due to:
    • A network fault, leading to the failure of the connection from the ECS to the Cloudbase-Init server.
    • No configuration on the image for Cloudbase-Init to obtain the password.
    • Other reasons.
    +
    +
    +

    Solution

    If logging in to an ECS with Cloudbase-Init enabled failed, perform the following operations to locate the fault:

    +
    1. Ensure that Cloudbase-Init has been correctly configured on the image that was used to create the ECS.
      • If Cloudbase-Init has not been configured, your ECS will not allow customized configurations, and you can log in to it only by using the original image password.
      • The ECSs created using a public image have Cloudbase-Init installed by default. Therefore, you do not need to install and configure Cloudbase-Init anymore.
      • If you created your ECS by using an external image file, install and configure Cloudbase-Init.

        For details, see "Installing and Configuring Cloudbase-Init" in Image Management Service User Guide.

        +
      +
    1. Ensure that the key pair for logging in to the ECS is correct.

      The key used for obtaining the password must be the key used during the ECS creation.

      +
    2. Ensure that DHCP is enabled in the VPC to which the ECS belongs.

      On the management console, check whether DHCP has been enabled in the target subnet.

      +
    3. Ensure that the ECS has an EIP bound.
    4. Ensure that traffic to and from port 80 is allowed in security group rules.
    5. Check Cloudbase-Init logs to identify the cause.
      1. Stop the affected ECS and detach the system disk from it.
      2. Use a public image to create a temporary Windows ECS and attach the system disk detached in 6.a to the ECS.
      3. Log in to the temporary ECS, open the Server Manager page, choose File and Storage Services > Volumes > Disks, right-click the offline disk, and choose Online from the shortcut menu.
        Figure 1 Setting disk online
        +
      4. Switch to the cloudbase-init file in /Program Files/Cloudbase Solution/Cloudbase-Init/log of this disk to view the log for fault locating.
        Figure 2 cloudbase-init
        +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0083225171.html b/ecs/umn/en-us_topic_0083225171.html new file mode 100644 index 000000000..10a289e65 --- /dev/null +++ b/ecs/umn/en-us_topic_0083225171.html @@ -0,0 +1,30 @@ + + +

    How Can I Manually Configure an IP Address for an InfiniBand NIC?

    +

    IP over InfiniBand (IPoIB) allows IP data transmission over InfiniBand. For SUSE high-performance H2 and HL1 ECSs, if IPoIB is required, you must manually configure an IP address for the InfiniBand NIC after installing the InfiniBand NIC driver.

    +

    Prerequisites

    The InfiniBand NIC driver has been installed on the high-performance H2 or HL1 ECSs.

    +
    +

    Background

    To prevent IP address conflict of the InfiniBand NICs configured for the ECSs of a tenant, determine the IP address to be configured for an InfiniBand NIC according to the IP addresses available in the VPC. The method is as follows:

    +

    For example, if the first two eight-bits of the IP address (specified by IPADDR) to be configured for the InfiniBand NIC are consistently 169.254, the latter two eight-bits must be the same as those of the eth0 IP address, and the subnet mask must be the same as that of the eth0 NIC.

    +

    An example is provided as follows:

    +

    If the IP address of the eth0 NIC is 192.168.0.100/24, the IP address to be configured for the InfiniBand NIC is 169.254.0.100/24.

    +
    +

    Procedure

    1. Log in to the ECS.
    2. Run the following command to switch to user root:

      sudo su -

      +
    3. Run the following command to edit the /etc/sysconfig/network/ifcfg-ib0 file:

      vi /etc/sysconfig/network/ifcfg-ib0

      +
    4. Enter the following information:

      DEVICE=ib0

      +

      BOOTPROTO=static

      +

      IPADDR=IP address to be configured for the InfiniBand NIC

      +

      NETMASK=Subnet mask

      +

      STARTMODE=auto

      +

      For instructions about how to obtain the IP address and subnet mask for an InfiniBand NIC, see Background.

      +
      +
    5. Run the following command to restart the network for the configuration to take effect:

      service network restart

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0085634796.html b/ecs/umn/en-us_topic_0085634796.html new file mode 100644 index 000000000..f62b778cc --- /dev/null +++ b/ecs/umn/en-us_topic_0085634796.html @@ -0,0 +1,48 @@ + + +

    Initializing a Windows Data Disk (Windows Server 2008)

    +

    Scenarios

    This section uses Windows Server 2008 R2 Enterprise 64bit to describe how to initialize a data disk attached to a server running Windows.

    +

    The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Therefore, use the GPT partition style if your disk capacity is larger than 2 TB. For details about disk partition styles, see Scenarios and Disk Partitions.

    +

    The method for initializing a disk varies depending on the OS running on the server. This document is used for reference only. For the detailed operations and differences, see the product documents of the corresponding OS.

    +
    +

    Prerequisites

    • A data disk has been attached to a server and has not been initialized.
    • You have logged in to the server.
      • For how to log in to an ECS, see the Elastic Cloud Server User Guide.
      • For how to log in to a BMS, see the Bare Metal Server User Guide.
      +
    +
    +

    Procedure

    1. On the desktop of the server, right-click Computer and choose Manage from the shortcut menu.

      The Server Manager window is displayed.

      +

    2. In the navigation tree, choose Storage > Disk Management.

      The Disk Management window is displayed.
      • If Figure 1 is displayed, the new disk is offline. Go to 3.
      • If Figure 4 is displayed, the Initialize Disk window is prompted. Go to 5.
      +
      +
      Figure 1 Disk Management
      +

    3. Disks are displayed in the right pane. In the Disk 1 area, right-click Offline and choose Online from the shortcut menu to online the disk.

      Figure 2 Online the disk
      +

      If the disk is offline, you need to online the disk before initializing it.

      +
      +

    4. After making the disk online, the disk status changes from Offline to Not Initialized. Right-click the disk status and choose Initialize Disk from the shortcut menu, as shown in Figure 3.

      Figure 3 Initialize Disk
      +

    5. In the Initialize Disk dialog box, select the target disk, click MBR (Master Boot Record) or GPT (GUID Partition Table), and click OK, as shown in Figure 4.

      Figure 4 Unallocated space
      +

      The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Because a data disk currently supports up to 32 TB, use the GPT partition style if your disk capacity is larger than 2 TB.

      +

      If you change the disk partition style after the disk has been used, the data on the disk will be cleared. Therefore, select a proper disk partition style when initializing the disk.

      +
      +
      +

    6. Right-click at the unallocated space and choose New Simple Volume from the shortcut menu, as shown in Figure 5.

      Figure 5 New Simple Volume
      +

    7. On the displayed New Simple Volume Wizard window, click Next.

      Figure 6 New Simple Volume Wizard
      +

    8. Specify the volume size and click Next. The default value is the maximum size.

      Figure 7 Specify Volume Size
      +

    9. Assign the driver letter and click Next.

      Figure 8 Assign Driver Letter or Path
      +

    10. Select Format this volume with the following settings, set parameters based on the actual requirements, and select Perform a quick format. Then, click Next.

      Figure 9 Format Partition
      +
      Figure 10 Completing the partition creation
      +

      The partition sizes supported by file systems vary. Therefore, you are advised to choose an appropriate file system based on your service requirements.

      +
      +

    11. Click Finish. Wait for the initialization to complete. When the volume status changes to Healthy, the initialization has finished successfully, as shown in Figure 11.

      Figure 11 Disk initialization succeeded
      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0085634797.html b/ecs/umn/en-us_topic_0085634797.html new file mode 100644 index 000000000..4e0da7c6c --- /dev/null +++ b/ecs/umn/en-us_topic_0085634797.html @@ -0,0 +1,186 @@ + + +

    Initializing a Linux Data Disk (fdisk)

    +

    Scenarios

    This section uses CentOS 7.4 64bit to describe how to initialize a data disk attached to a server running Linux and use fdisk to partition the data disk.

    +

    The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Therefore, use the GPT partition style if your disk capacity is larger than 2 TB. In Linux, if you choose to use the GPT partition style, the fdisk partitioning tool cannot be used. Use the parted partitioning tool instead. For details about disk partition styles, see Scenarios and Disk Partitions.

    +

    The method for initializing a disk varies depending on the OS running on the server. This document is used for reference only. For the detailed operations and differences, see the product documents of the corresponding OS.

    +
    +

    Prerequisites

    • A data disk has been attached to a server and has not been initialized.
    • You have logged in to the server.
      • For how to log in to an ECS, see the Elastic Cloud Server User Guide.
      • For how to log in to a BMS, see the Bare Metal Server User Guide.
      +
    +
    +

    Creating and Mounting a Partition

    The following example shows you how a new primary partition can be created on a new data disk that has been attached to a server. The primary partition will be created using fdisk, and MBR is the default partition style. Furthermore, the partition will be formatted using the ext4 file system, mounted on /mnt/sdc, and configured with automatic mounting at system start.

    +
    +
    1. Run the following command to query information about the new data disk:

      fdisk -l

      +
      Information similar to the following is displayed:
      [root@ecs-test-0001 ~]# fdisk -l
      +
      +Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
      +Units = sectors of 1 * 512 = 512 bytes
      +Sector size (logical/physical): 512 bytes / 512 bytes
      +I/O size (minimum/optimal): 512 bytes / 512 bytes
      +Disk label type: dos
      +Disk identifier: 0x000bcb4e
      +
      +   Device Boot      Start         End      Blocks   Id  System
      +/dev/vda1   *        2048    83886079    41942016   83  Linux
      +
      +Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
      +Units = sectors of 1 * 512 = 512 bytes
      +Sector size (logical/physical): 512 bytes / 512 bytes
      +I/O size (minimum/optimal): 512 bytes / 512 bytes
      +
      +

      In the command output, the server contains two disks. /dev/vda is the system disk, and /dev/vdb is the new data disk.

      +

    2. Run the following command to enter fdisk to partition the new data disk:

      fdisk New data disk

      +

      In this example, run the following command:

      +

      fdisk /dev/vdb

      +
      Information similar to the following is displayed:
      [root@ecs-test-0001 ~]# fdisk /dev/vdb
      +Welcome to fdisk (util-linux 2.23.2).
      +
      +Changes will remain in memory only, until you decide to write them.
      +Be careful before using the write command.
      +
      +Device does not contain a recognized partition table
      +Building a new DOS disklabel with disk identifier 0x38717fc1.
      +
      +Command (m for help): 
      +
      +

    3. Enter n and press Enter to create a new partition.

      Information similar to the following is displayed:
      Command (m for help): n
      +Partition type:
      +   p   primary (0 primary, 0 extended, 4 free)
      +   e   extended
      +
      +
      There are two types of disk partitions:
      • Choosing p creates a primary partition.
      • Choosing e creates an extended partition.
      +

      If the MBR partition style is used, a maximum of 4 primary partitions, or 3 primary partitions and 1 extended partition can be created. The extended partition cannot be used directly and must be divided into logical partitions before use.

      +

      Disk partitions created using GPT are not categorized.

      +
      +
      +

    4. In this example, a primary partition is created. Therefore, enter p and press Enter to create a primary partition.

      Information similar to the following is displayed:
      Select (default p): p
      +Partition number (1-4, default 1): 
      +
      +

      Partition number indicates the serial number of the primary partition. The value ranges from 1 to 4.

      +

    5. Enter the serial number of the primary partition and press Enter. Primary partition number 1 is used in this example. One usually starts with partition number 1 when partitioning an empty disk.

      Information similar to the following is displayed:
      Partition number (1-4, default 1): 1
      +First sector (2048-209715199, default 2048):
      +
      +

      First sector indicates the start sector. The value ranges from 2048 to 209715199, and the default value is 2048.

      +

    6. Select the default start sector 2048 and press Enter.

      The system displays the start and end sectors of the partition's available space. You can customize the value within this range or use the default value. The start sector must be smaller than the partition's end sector.

      +
      Information similar to the following is displayed:
      First sector (2048-209715199, default 2048):
      +Using default value 2048
      +Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
      +
      +

      Last sector indicates the end sector. The value ranges from 2048 to 209715199, and the default value is 209715199.

      +

    7. Select the default end sector 209715199 and press Enter.

      The system displays the start and end sectors of the partition's available space. You can customize the value within this range or use the default value. The start sector must be smaller than the partition's end sector.

      +

      Information similar to the following is displayed:

      +
      Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
      +Using default value 209715199
      +Partition 1 of type Linux and of size 100 GiB is set
      +
      +Command (m for help):
      +

      A primary partition has been created for the new data disk.

      +

    8. Enter p and press Enter to view details about the new partition.

      Information similar to the following is displayed:
      Command (m for help): p
      +
      +Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
      +Units = sectors of 1 * 512 = 512 bytes
      +Sector size (logical/physical): 512 bytes / 512 bytes
      +I/O size (minimum/optimal): 512 bytes / 512 bytes
      +Disk label type: dos
      +Disk identifier: 0x38717fc1
      +
      +   Device Boot      Start         End      Blocks   Id  System
      +/dev/vdb1            2048   209715199   104856576   83  Linux
      +
      +Command (m for help):
      +
      +

      Details about the /dev/vdb1 partition are displayed.

      +

    9. Enter w and press Enter to write the changes to the partition table.

      Information similar to the following is displayed:
      Command (m for help): w
      +The partition table has been altered!
      +
      +Calling ioctl() to re-read partition table.
      +Syncing disks.
      +
      +

      The partition is created.

      +

      In case that you want to discard the changes made before, you can exit fdisk by entering q.

      +
      +

    10. Run the following command to synchronize the new partition table to the OS:

      partprobe

      +

    11. Run the following command to set the file system format for the new partition:

      mkfs -t File system format /dev/vdb1

      +

      In this example, run the following command to set the ext4 file system for the new partition:

      +

      mkfs -t ext4 /dev/vdb1

      +
      Information similar to the following is displayed:
      [root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1
      +mke2fs 1.42.9 (28-Dec-2013)
      +Filesystem label=
      +OS type: Linux
      +Block size=4096 (log=2)
      +Fragment size=4096 (log=2)
      +Stride=0 blocks, Stripe width=0 blocks
      +6553600 inodes, 26214144 blocks
      +1310707 blocks (5.00%) reserved for the super user
      +First data block=0
      +Maximum filesystem blocks=2174746624
      +800 block groups
      +32768 blocks per group, 32768 fragments per group
      +8192 inodes per group
      +Superblock backups stored on blocks:
      +        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
      +        4096000, 7962624, 11239424, 20480000, 23887872
      +
      +Allocating group tables: done
      +Writing inode tables: done
      +Creating journal (32768 blocks): done
      +Writing superblocks and filesystem accounting information: done
      +
      +

      The formatting takes a period of time. Observe the system running status and do not exit.

      +

      The partition sizes supported by file systems vary. Therefore, you are advised to choose an appropriate file system based on your service requirements.

      +
      +

    12. Run the following command to create a mount point:

      mkdir Mount point

      +

      In this example, run the following command to create the /mnt/sdc mount point:

      +

      mkdir /mnt/sdc

      +

    13. Run the following command to mount the new partition on the created mount point:

      mount Disk partition Mount point

      +

      In this example, run the following command to mount the new partition /dev/vdb1 on /mnt/sdc:

      +

      mount /dev/vdb1 /mnt/sdc

      +

    14. Run the following command to view the mount result:

      df -TH

      +

      Information similar to the following is displayed:

      +
      [root@ecs-test-0001 ~]# df -TH
      +Filesystem     Type      Size  Used Avail Use% Mounted on
      +/dev/vda1      ext4       43G  1.9G   39G   5% /
      +devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev
      +tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
      +tmpfs          tmpfs     2.0G  9.1M  2.0G   1% /run
      +tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
      +tmpfs          tmpfs     398M     0  398M   0% /run/user/0
      +/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc
      +

      New partition /dev/vdb1 is mounted on /mnt/sdc.

      +

      If the server is restarted, the mounting will become invalid. You can set automatic mounting for partitions at system start by modifying the /etc/fstab file. For details, see Setting Automatic Mounting at System Start.

      +
      +

    +

    Setting Automatic Mounting at System Start

    Modify the fstab file to set automatic disk mounting at server start. You can also set automatic mounting for the servers containing data. This operation will not affect the existing data.

    +

    The following procedure shows how to set automatic disk mounting at server start by using UUIDs to identify disks in the fstab file. You are advised not to use device names to identify disks in the file because a device name may change (for example, from /dev/vdb1 to /dev/vdb2) during the server stop or start, resulting in improper server running after restart.

    +

    UUID is the unique character string for disk partitions in a Linux system.

    +
    +
    1. Run the following command to query the partition UUID:

      blkid Disk partition

      +

      In this example, run the following command to query the UUID of the /dev/vdb1 partition:

      +

      blkid /dev/vdb1

      +

      Information similar to the following is displayed:

      +
      [root@ecs-test-0001 ~]# blkid /dev/vdb1
      +/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
      +

      The UUID of the /dev/vdb1 partition is displayed.

      +

    2. Run the following command to open the fstab file using the vi editor:

      vi /etc/fstab

      +

    3. Press i to enter the editing mode.
    4. Move the cursor to the end of the file and press Enter. Then, add the following information:

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc                ext4    defaults        0 2
      +

    5. Press Esc, enter :wq, and press Enter.

      The system saves the configurations and exits the vi editor.

      +

    6. Perform the following operations to verify the automatic mounting function:

      1. Run the following command to unmount the partition:

        umount Disk partition

        +

        In this example, run the following command:

        +

        umount /dev/vdb1

        +
      2. Run the following command to reload all the content in the /etc/fstab file:

        mount -a

        +
      3. Run the following command to query the file system mounting information:

        mount | grep Mount point

        +

        In this example, run the following command:

        +

        mount | grep /mnt/sdc

        +

        If information similar to the following is displayed, the automatic mounting function takes effect:

        +
        root@ecs-test-0001 ~]# mount | grep /mnt/sdc
        +/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
        +
      +

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0085634798.html b/ecs/umn/en-us_topic_0085634798.html new file mode 100644 index 000000000..885582190 --- /dev/null +++ b/ecs/umn/en-us_topic_0085634798.html @@ -0,0 +1,174 @@ + + +

    Initializing a Linux Data Disk (parted)

    +

    Scenarios

    This section uses CentOS 7.4 64bit to describe how to initialize a data disk attached to a server running Linux and use parted to partition the data disk.

    +

    The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Therefore, use the GPT partition style if your disk capacity is larger than 2 TB. In Linux, if you choose to use the GPT partition style, the fdisk partitioning tool cannot be used. Use the parted partitioning tool instead. For details about disk partition styles, see Scenarios and Disk Partitions.

    +

    The method for initializing a disk varies depending on the OS running on the server. This document is used for reference only. For the detailed operations and differences, see the product documents of the corresponding OS.

    +
    +

    Prerequisites

    • A data disk has been attached to a server and has not been initialized.
    • You have logged in to the server.
      • For how to log in to an ECS, see the Elastic Cloud Server User Guide.
      • For how to log in to a BMS, see the Bare Metal Server User Guide.
      +
    +
    +

    Creating and Mounting a Partition

    The following example shows you how a new partition can be created on a new data disk that has been attached to a server. The partition will be created using parted, and GPT is used as the partition style. Furthermore, the partition will be formatted using the ext4 file system, mounted on /mnt/sdc, and configured automatic mounting at system start.

    +
    +
    1. Run the following command to query information about the new data disk:

      lsblk

      +
      Information similar to the following is displayed:
      root@ecs-test-0001 ~]# lsblk
      +NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      +vda    253:0    0   40G  0 disk
      +└─vda1 253:1    0   40G  0 part /
      +vdb    253:16   0  100G  0 disk
      +
      +

      In the command output, the server contains two disks. /dev/vda is the system disk, and /dev/vdb is the new data disk.

      +

    2. Run the following command to enter parted to partition the new data disk:

      parted New data disk

      +

      In this example, run the following command:

      +

      parted /dev/vdb

      +
      Information similar to the following is displayed:
      [root@ecs-test-0001 ~]# parted /dev/vdb
      +GNU Parted 3.1
      +Using /dev/vdb
      +Welcome to GNU Parted! Type 'help' to view a list of commands.
      +(parted) 
      +
      +

    3. Enter p and press Enter to view the current disk partition style.

      Information similar to the following is displayed:
      (parted) p
      +Error: /dev/vdb: unrecognised disk label
      +Model: Virtio Block Device (virtblk)
      +Disk /dev/vdb: 107GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: unknown
      +Disk Flags:
      +(parted) 
      +
      +

      In the command output, the Partition Table value is unknown, indicating that no partition style is set for the new disk.

      +

    4. Run the following command to set the disk partition style:

      mklabel Disk partition style

      +

      In this example, run the following command to set the partition style to GPT: (Disk partition styles can be MBR or GPT.)

      +

      mklabel gpt

      +

      The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Because a data disk currently supports up to 32 TB, use the GPT partition style if your disk capacity is larger than 2 TB.

      +

      If you change the disk partition style after the disk has been used, the data on the disk will be cleared. Therefore, select a proper disk partition style when initializing the disk.

      +
      +

    5. Enter p and press Enter to view the disk partition style.

      Information similar to the following is displayed:
      (parted) mklabel gpt
      +(parted) p
      +Model: Virtio Block Device (virtblk)
      +Disk /dev/vdb: 107GB
      +Sector size (logical/physical): 512B/512B
      +Partition Table: gpt
      +Disk Flags:
      +
      +Number  Start  End  Size  File system  Name  Flags
      +
      +(parted) 
      +
      +

      In the command output, the Partition Table value is gpt, indicating that the disk partition style is GPT.

      +

    6. Enter unit s and press Enter to set the measurement unit of the disk to sector.
    7. Run the following command and press Enter:

      mkpart Partition name Start sector End sector

      +

      In this example, run the following command:

      +

      mkpart test 2048s 100%

      +

      In this example, one partition is created for the new data disk. Variable 2048s indicates the disk start sector, and variable 100% indicates the disk end sector. The two values are used for reference only. You can determine the number of partitions and the partition size based on your service requirements.

      +
      Information similar to the following is displayed:
      (parted) mkpart opt 2048s 100%
      +(parted)
      +
      +

    8. Enter p and press Enter to view details about the new partition.

      Information similar to the following is displayed:
      (parted) p
      +Model: Virtio Block Device (virtblk)
      +Disk /dev/vdb: 209715200s
      +Sector size (logical/physical): 512B/512B
      +Partition Table: gpt
      +Disk Flags:
      +
      +Number  Start  End         Size        File system  Name  Flags
      + 1      2048s  209713151s  209711104s               test
      +
      +(parted) 
      +
      +

    9. Enter q and press Enter to exit parted.

      Information similar to the following is displayed:
      (parted) q
      +Information: You may need to update /etc/fstab.
      +
      +

      You can set automatic disk mounting by updating the /etc/fstab file. Before updating the file, set the file system format for the partition and mount the partition on the mount point.

      +

    10. Run the following command to view the disk partition information:

      lsblk

      +
      Information similar to the following is displayed:
      [root@ecs-test-0001 ~]# lsblk
      +NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      +vda    253:0    0   40G  0 disk
      +└─vda1 253:1    0   40G  0 part /
      +vdb    253:16   0  100G  0 disk
      +└─vdb1 253:17   0  100G  0 part
      +
      +

      In the command output, /dev/vdb1 is the partition you created.

      +

    11. Run the following command to set the file system format for the new partition:

      mkfs -t File system format /dev/vdb1

      +

      In this example, run the following command to set the ext4 file system for the new partition:

      +

      mkfs -t ext4 /dev/vdb1

      +
      Information similar to the following is displayed:
      [root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1
      +mke2fs 1.42.9 (28-Dec-2013)
      +Filesystem label=
      +OS type: Linux
      +Block size=4096 (log=2)
      +Fragment size=4096 (log=2)
      +Stride=0 blocks, Stripe width=0 blocks
      +6553600 inodes, 26213888 blocks
      +1310694 blocks (5.00%) reserved for the super user
      +First data block=0
      +Maximum filesystem blocks=2174746624
      +800 block groups
      +32768 blocks per group, 32768 fragments per group
      +8192 inodes per group
      +Superblock backups stored on blocks:
      +        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
      +        4096000, 7962624, 11239424, 20480000, 23887872
      +
      +Allocating group tables: done
      +Writing inode tables: done
      +Creating journal (32768 blocks): done
      +Writing superblocks and filesystem accounting information: done
      +
      +

      The formatting takes a period of time. Observe the system running status and do not exit.

      +

      The partition sizes supported by file systems vary. Therefore, you are advised to choose an appropriate file system based on your service requirements.

      +
      +

    12. Run the following command to create a mount point:

      mkdir Mount point

      +

      In this example, run the following command to create the /mnt/sdc mount point:

      +

      mkdir /mnt/sdc

      +

    13. Run the following command to mount the new partition on the created mount point:

      mount Disk partition Mount point

      +

      In this example, run the following command to mount the new partition /dev/vdb1 on /mnt/sdc:

      +

      mount /dev/vdb1 /mnt/sdc

      +

    14. Run the following command to view the mount result:

      df -TH

      +

      Information similar to the following is displayed:

      +
      [root@ecs-test-0001 ~]# df -TH
      +Filesystem     Type      Size  Used Avail Use% Mounted on
      +/dev/vda1      ext4       43G  1.9G   39G   5% /
      +devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev
      +tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
      +tmpfs          tmpfs     2.0G  9.0M  2.0G   1% /run
      +tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
      +tmpfs          tmpfs     398M     0  398M   0% /run/user/0
      +/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc
      +

      New partition /dev/vdb1 is mounted on /mnt/sdc.

      +

      If the server is restarted, the mounting will become invalid. You can set automatic mounting for partitions at system start by modifying the /etc/fstab file. For details, see Setting Automatic Mounting at System Start.

      +
      +

    +

    Setting Automatic Mounting at System Start

    Modify the fstab file to set automatic disk mounting at server start. You can also set automatic mounting for the servers containing data. This operation will not affect the existing data.

    +

    The following procedure shows how to set automatic disk mounting at server start by using UUIDs to identify disks in the fstab file. You are advised not to use device names to identify disks in the file because a device name may change (for example, from /dev/vdb1 to /dev/vdb2) during the server stop or start, resulting in improper server running after restart.

    +

    UUID is the unique character string for disk partitions in a Linux system.

    +
    +
    1. Run the following command to query the partition UUID:

      blkid Disk partition

      +

      In this example, run the following command to query the UUID of the /dev/vdb1 partition:

      +

      blkid /dev/vdb1

      +

      Information similar to the following is displayed:

      +
      [root@ecs-test-0001 ~]# blkid /dev/vdb1
      +/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
      +

      The UUID of the /dev/vdb1 partition is displayed.

      +

    2. Run the following command to open the fstab file using the vi editor:

      vi /etc/fstab

      +

    3. Press i to enter the editing mode.
    4. Move the cursor to the end of the file and press Enter. Then, add the following information:

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc                ext4    defaults        0 2
      +

    5. Press Esc, enter :wq, and press Enter.

      The system saves the configurations and exits the vi editor.

      +

    6. Perform the following operations to verify the automatic mounting function:

      1. Run the following command to unmount the partition:

        umount Disk partition

        +

        In this example, run the following command:

        +

        umount /dev/vdb1

        +
      2. Run the following command to reload all the content in the /etc/fstab file:

        mount -a

        +
      3. Run the following command to query the file system mounting information:

        mount | grep Mount point

        +

        In this example, run the following command:

        +

        mount | grep /mnt/sdc

        +

        If information similar to the following is displayed, the automatic mounting function takes effect:

        +
        root@ecs-test-0001 ~]# mount | grep /mnt/sdc
        +/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
        +
      +

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0087382187.html b/ecs/umn/en-us_topic_0087382187.html new file mode 100644 index 000000000..da706dbdd --- /dev/null +++ b/ecs/umn/en-us_topic_0087382187.html @@ -0,0 +1,27 @@ + + +

    Why Does a Linux ECS with a SCSI Disk Attached Fails to Restart?

    +

    Symptom

    For a Linux ECS with a SCSI disk attached, if you have enabled automatic SCSI disk attachment upon ECS startup in /etc/fstab and the disk drive letter (for example, /dev/sdb) is used, the ECS fails to restart.

    +
    +

    Possible Causes

    SCSI disk allocation is determined based on the ID of the slot accommodating the disk as well as the available drive letter in the ECS. Each time you attach a disk to the ECS, an idle drive letter is automatically allocated in sequence. When the ECS starts, the disks are loaded in slot sequence. Therefore, a slot ID corresponds to a drive letter.

    +

    After the SCSI disk is detached from the running ECS, the slot sequence for disks may change, leading to the disk drive letter being changed after the ECS is restarted. As a result, the slot IDs do not correspond to the drive letters, and the ECS fails to restart.

    +
    +

    Solution

    1. Log in to the Linux ECS.
    2. Run the following command to switch to user root:

      sudo su -

      +
    3. Run the following command to obtain the SCSI ID according to the drive letter of the SCSI disk:

      ll /dev/disk/by-id/|grep Disk drive letter

      +

      For example, if the drive letter of the SCSI disk is /dev/sdb, run the following command:

      +

      ll /dev/disk/by-id/|grep sdb

      +
      CNA64_22:/opt/galax/eucalyptus/ecs_scripts # ll /dev/disk/by-id/|grep sdb
      +lrwxrwxrwx 1 root root  9 Dec  6 11:26 scsi-3688860300001436b005014f890338280 -> ../../sdb
      +lrwxrwxrwx 1 root root  9 Dec  6 11:26 wwn-0x688860300001436b005014f890338280 -> ../../sdb
      +
    4. Change the drive letter (for example, /dev/sdb) of the SCSI disk to the corresponding SCSI ID in the /etc/fstab file.

      /dev/disk/by-id/SCSI ID

      +

      For example, if the SCSI ID obtained in step 3 is scsi-3688860300001436b005014f890338280, use the following data to replace /dev/sdb:

      +

      /dev/disk/by-id/scsi-3688860300001436b005014f890338280

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0087622835.html b/ecs/umn/en-us_topic_0087622835.html new file mode 100644 index 000000000..47873297b --- /dev/null +++ b/ecs/umn/en-us_topic_0087622835.html @@ -0,0 +1,31 @@ + + +

    How Can I Rectify the Fault That May Occur on a Linux ECS with an NVMe SSD Disk Attached?

    +

    Symptom

    When a Linux ECS with an NVMe SSD disk attached, such as a P1 ECS, becomes faulty, you must contact the administrator to remotely create the ECS again for reconstruction.

    +

    If automatic NVMe SSD disk attaching upon ECS startup is enabled in /etc/fstab on the faulty ECS, the system disk recovers after the ECS is created. However, the attached NVMe SSD disk does not have a file system, and automatic NVMe SSD disk attaching upon ECS startup fails to take effect. As a result, the ECS enters the emergency mode.

    +
    Figure 1 Emergency mode
    +

    To ensure that the new ECS is functional, you must manually delete the attaching information in /etc/fstab.

    +

    If the NVMe SSD disk is faulty, data on it will be lost. The operations provided in this section are only used to restore automatic NVMe SSD disk attachment to an ECS, but not restoring the data on the disk.

    +
    +
    +

    Solution

    1. Log in to the ECS.
    2. Enter the password of user root to log in to the ECS.
      Figure 2 Logging in to the ECS
      +
    3. Run the following command to edit the /etc/fstab file:

      vi /etc/fstab

      +
    4. Delete the attaching information of the NVMe SSD disk and save the file.
      Figure 3 Deleting the automatic attaching information
      +
    5. Run the following command to restart the ECS:

      reboot

      +
    6. Verify that the ECS recovers and can be logged in.
      Figure 4 Logging in to the ECS
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0087680813.html b/ecs/umn/en-us_topic_0087680813.html new file mode 100644 index 000000000..7754cdb6d --- /dev/null +++ b/ecs/umn/en-us_topic_0087680813.html @@ -0,0 +1,155 @@ + + +

    How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Windows ECS?

    +

    This section uses an ECS running Windows Server 2008 R2 64bit as an example to describe how to obtain the mapping between disk partitions and disk devices.

    +
    1. Log in to the Windows ECS.
    2. Click Start in the lower left corner of the desktop.
    3. Choose Control Panel > Administrative Tools > Computer Management.
    4. In the navigation pane on the left, choose Storage > Disk Management.
      Figure 1 Disk Management
      +
    5. Taking disk 1 marked in Figure 1 as an example, view the disk device for disk 1.
      1. Right-click the gray area where disk 1 is located, as shown in the red box in Figure 1.
      2. Click Properties.

        The SCSI Disk Device Properties dialog box is displayed, as shown in Figure 2.

        +
        Figure 2 Disk properties
        +
      3. Click the Details tab and set Property to Parent.
        Figure 3 Disk device details
        +
      4. Record the digits following & in the parameter value, for example, 51776, which is the master and slave device number corresponding to the disk partition.
      5. Obtain the disk device according to the information listed in Table 1.
        The disk device corresponding to 51776 is xvde. The disk device used by disk 1 is xvde. +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 Mapping between disk partitions and disk devices

        Master and Slave Device Number for a Disk Partition

        +

        Disk Device

        +

        51712

        +

        xvda

        +

        51728

        +

        xvdb

        +

        51744

        +

        xvdc

        +

        51760

        +

        xvdd

        +

        51776

        +

        xvde

        +

        51792

        +

        xvdf

        +

        51808

        +

        xvdg

        +

        51824

        +

        xvdh

        +

        51840

        +

        xvdi

        +

        51856

        +

        xvdj

        +

        51872

        +

        xvdk

        +

        51888

        +

        xvdl

        +

        51904

        +

        xvdm

        +

        51920

        +

        xvdn

        +

        51936

        +

        xvdo

        +

        51952

        +

        xvdp

        +

        268439552

        +

        xvdq

        +

        268439808

        +

        xvdr

        +

        268440064

        +

        xvds

        +

        268440320

        +

        xvdt

        +

        268440576

        +

        xvdu

        +

        268440832

        +

        xvdv

        +

        268441088

        +

        xvdw

        +

        268441344

        +

        xvdx

        +
        +
        +
        +
      +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0087901488.html b/ecs/umn/en-us_topic_0087901488.html new file mode 100644 index 000000000..a24b308d1 --- /dev/null +++ b/ecs/umn/en-us_topic_0087901488.html @@ -0,0 +1,153 @@ + + +

    How Can I Obtain the Mapping Between Disk Partitions and Disk Devices on a Linux ECS?

    +

    For a Linux ECS, its disk partitions correspond to disk devices. This section uses a Linux ECS running Red Hat Enterprise Linux 7 as an example to describe how to obtain the mapping between disk partitions and disk devices.

    +
    1. Log in to the Linux ECS as user root.
    2. Right-click in the blank area of the desktop and choose Open Terminal from the shortcut menu.
      Figure 1 open terminal
      +
    3. Run the following command to view disk partitions and disk devices:

      fdisk -l

      +
      Figure 2 Viewing disk partitions and disk devices
      +

      Table 1 lists the mapping between disk partitions and disk devices.

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Mapping between disk partitions and disk devices

      Disk Partition

      +

      Disk Device

      +

      xvda

      +

      xvda

      +

      xvdb

      +

      xvdb

      +

      xvdc

      +

      xvdc

      +

      xvdd

      +

      xvdd

      +

      xvde

      +

      xvde

      +

      xvdf

      +

      xvdf

      +

      xvdg

      +

      xvdg

      +

      xvdh

      +

      xvdh

      +

      xvdi

      +

      xvdi

      +

      xvdj

      +

      xvdj

      +

      xvdk

      +

      xvdk

      +

      xvdl

      +

      xvdl

      +

      xvdm

      +

      xvdm

      +

      xvdn

      +

      xvdn

      +

      xvdo

      +

      xvdo

      +

      xvdp

      +

      xvdp

      +

      xvdq

      +

      xvdq

      +

      xvdr

      +

      xvdr

      +

      xvds

      +

      xvds

      +

      xvdt

      +

      xvdt

      +

      xvdu

      +

      xvdu

      +

      xvdv

      +

      xvdv

      +

      xvdw

      +

      xvdw

      +

      xvdx

      +

      xvdx

      +
      +
      +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0088241338.html b/ecs/umn/en-us_topic_0088241338.html new file mode 100644 index 000000000..0f031de10 --- /dev/null +++ b/ecs/umn/en-us_topic_0088241338.html @@ -0,0 +1,25 @@ + + +

    Why Does the System Display a Question Mark When I Attempt to Obtain Console Logs?

    +

    Symptom

    The system displays a question mark (?) when I attempt to obtain the console logs of an ECS.

    +
    Figure 1 Obtaining console logs
    +
    +

    Possible Causes

    The image based on which the ECS was created supports viewing console logs. However, this function is not enabled on the ECS.

    +
    +

    Solution

    Enable management console log obtaining on the ECS.

    +

    For details, see step 1 in section Obtaining ECS Console Logs.

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0091224748.html b/ecs/umn/en-us_topic_0091224748.html new file mode 100644 index 000000000..94de723cd --- /dev/null +++ b/ecs/umn/en-us_topic_0091224748.html @@ -0,0 +1,544 @@ + + +

    Dedicated General-Purpose ECSs

    +

    Overview

    C4 ECSs use second-generation Intel® Xeon® Scalable processors with technologies optimized and high-speed intelligent NICs to offer powerful and stable computing performance, including ultra-high network bandwidth and PPS.

    +

    C3 ECSs are newly released. They are developed based on KVM virtualization, use Intel® Xeon® Scalable processors and Data Plane Development Kit (DPDK) rapid packet processing mechanism, and feature high and stable computing performance. Equipped with high-performance NICs, the C3 ECSs provide high performance and stability, meeting enterprise-grade application requirements.

    +
    +

    Specifications

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 C4 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    c4.large.2

    +

    2

    +

    4

    +

    4/1.2

    +

    40

    +

    2

    +

    2

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6266

    +

    c4.xlarge.2

    +

    4

    +

    8

    +

    8/2.4

    +

    80

    +

    2

    +

    3

    +

    KVM

    +

    c4.2xlarge.2

    +

    8

    +

    16

    +

    15/4.5

    +

    150

    +

    4

    +

    4

    +

    KVM

    +

    c4.3xlarge.2

    +

    12

    +

    24

    +

    17/7

    +

    200

    +

    4

    +

    6

    +

    KVM

    +

    c4.4xlarge.2

    +

    16

    +

    32

    +

    20/9

    +

    280

    +

    8

    +

    8

    +

    KVM

    +

    c4.6xlarge.2

    +

    24

    +

    48

    +

    25/14

    +

    400

    +

    8

    +

    8

    +

    KVM

    +

    c4.8xlarge.2

    +

    32

    +

    64

    +

    30/18

    +

    550

    +

    16

    +

    8

    +

    KVM

    +

    c4.16xlarge.2

    +

    64

    +

    128

    +

    40/36

    +

    1000

    +

    32

    +

    8

    +

    KVM

    +

    c4.large.4

    +

    2

    +

    8

    +

    4/1.2

    +

    40

    +

    2

    +

    2

    +

    KVM

    +

    c4.xlarge.4

    +

    4

    +

    16

    +

    8/2.4

    +

    80

    +

    2

    +

    3

    +

    KVM

    +

    c4.2xlarge.4

    +

    8

    +

    32

    +

    15/4.5

    +

    150

    +

    4

    +

    4

    +

    KVM

    +

    c4.3xlarge.4

    +

    12

    +

    48

    +

    17/7

    +

    200

    +

    4

    +

    6

    +

    KVM

    +

    c4.4xlarge.4

    +

    16

    +

    64

    +

    20/9

    +

    280

    +

    8

    +

    8

    +

    KVM

    +

    c4.6xlarge.4

    +

    24

    +

    96

    +

    25/14

    +

    400

    +

    8

    +

    8

    +

    KVM

    +

    c4.8xlarge.4

    +

    32

    +

    128

    +

    30/18

    +

    550

    +

    16

    +

    8

    +

    KVM

    +

    c4.16xlarge.4

    +

    64

    +

    256

    +

    40/36

    +

    1000

    +

    32

    +

    8

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 C3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    c3.large.2

    +

    2

    +

    4

    +

    1.5/0.6

    +

    30

    +

    2

    +

    12

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151

    +

    c3.xlarge.2

    +

    4

    +

    8

    +

    3/1

    +

    50

    +

    2

    +

    12

    +

    KVM

    +

    c3.2xlarge.2

    +

    8

    +

    16

    +

    5/2

    +

    90

    +

    4

    +

    12

    +

    KVM

    +

    c3.4xlarge.2

    +

    16

    +

    32

    +

    10/4

    +

    130

    +

    4

    +

    12

    +

    KVM

    +

    c3.8xlarge.2

    +

    32

    +

    64

    +

    15/8

    +

    260

    +

    8

    +

    12

    +

    KVM

    +

    c3.15xlarge.2

    +

    60

    +

    128

    +

    17/16

    +

    500

    +

    16

    +

    12

    +

    KVM

    +

    c3.large.4

    +

    2

    +

    8

    +

    1.5/0.6

    +

    30

    +

    2

    +

    12

    +

    KVM

    +

    c3.xlarge.4

    +

    4

    +

    16

    +

    3/1

    +

    50

    +

    2

    +

    12

    +

    KVM

    +

    c3.2xlarge.4

    +

    8

    +

    32

    +

    5/2

    +

    90

    +

    4

    +

    12

    +

    KVM

    +

    c3.4xlarge.4

    +

    16

    +

    64

    +

    10/4

    +

    130

    +

    4

    +

    12

    +

    KVM

    +

    c3.8xlarge.4

    +

    32

    +

    128

    +

    15/8

    +

    260

    +

    8

    +

    12

    +

    KVM

    +

    c3.15xlarge.4

    +

    60

    +

    256

    +

    16/16

    +

    500

    +

    16

    +

    12

    +

    KVM

    +
    +
    +
    +

    Scenarios

    • C4 ECSs: Websites and web applications, generalized databases and cache servers, and medium- and heavy-workload enterprise applications with strict requirements on computing and network performance
    • C3 ECSs: Small- and medium-scale databases, cache servers, and search clusters with high requirements on stability; enterprise-grade applications of diverse types and in various scales
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0092435778.html b/ecs/umn/en-us_topic_0092435778.html new file mode 100644 index 000000000..927ac9e60 --- /dev/null +++ b/ecs/umn/en-us_topic_0092435778.html @@ -0,0 +1,21 @@ + + +

    Security

    +
    +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0092435779.html b/ecs/umn/en-us_topic_0092435779.html new file mode 100644 index 000000000..09d466475 --- /dev/null +++ b/ecs/umn/en-us_topic_0092435779.html @@ -0,0 +1,14 @@ + + +

    Overview

    +

    An ECS is a basic computing unit that consists of vCPUs, memory, OS, and EVS disks.

    +

    After creating an ECS, you can use it like using your local computer or physical server, ensuring secure, reliable, and efficient computing. ECSs support self-service creation, modification, and operation. You can create an ECS by specifying its vCPUs, memory, OS, and login authentication. After the ECS is created, you can modify its specifications as required. This ensures a reliable, secure, efficient computing environment.

    +

    The cloud platform provides multiple ECS types for different computing and storage capabilities. One ECS type provides various flavors with different vCPU and memory configurations for you to select.

    + +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0092494193.html b/ecs/umn/en-us_topic_0092494193.html new file mode 100644 index 000000000..9e63a2065 --- /dev/null +++ b/ecs/umn/en-us_topic_0092494193.html @@ -0,0 +1,37 @@ + + +

    Logging In to an ECS

    +

    Logging In to a Windows ECS

    You can log in to a Windows ECS using either VNC or MSTSC provided on the management console.

    +
    Figure 1 Windows ECS login modes
    +
    1. Obtain the password.

      Use the password obtaining function provided by the management console to decrypt the key file to obtain a password.

      +

      For details, see Obtaining the Password for Logging In to a Windows ECS.

      +
    2. Select a login method and log in to the ECS. +
    +
    +

    Logging In to a Linux ECS

    You can log in to a Linux ECS using either VNC or SSH key provided on the management console.

    +
    Figure 2 Linux ECS login modes
    +
    1. Select a login method and log in to the ECS. +
    +
    +

    Follow-up Procedure

    • If you have added a data disk during ECS creation, you must initialize the data disk after logging in to the ECS.

      For details, see Scenarios and Disk Partitions.

      +
    • Certain ECSs require the installation of a driver after you log in to them. For details about available ECS types as well as their functions and usage, see "Notes" in ECS Types.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0092494580.html b/ecs/umn/en-us_topic_0092494580.html new file mode 100644 index 000000000..957ebe9c7 --- /dev/null +++ b/ecs/umn/en-us_topic_0092494580.html @@ -0,0 +1,32 @@ + + +

    Service Overview

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0092494943.html b/ecs/umn/en-us_topic_0092494943.html new file mode 100644 index 000000000..fe8de91fb --- /dev/null +++ b/ecs/umn/en-us_topic_0092494943.html @@ -0,0 +1,54 @@ + + +

    Login Overview

    +

    Constraints

    • Only a running ECS can be logged in.
    • Login usernames, passwords, and constraints vary depending on OSs running on the ECSs created using a public image. For details, see Public Images Introduction.
    • If an ECS uses key pair authentication, use the password obtaining function available on the management console to decrypt the private key used during ECS creation to obtain a password.
    • Certain G series of ECSs do not support remote login provided by the management console. If you need to remotely log in to the ECSs, install the VNC server on them. For details, see GPU-accelerated ECSs. You are suggested to log in to the ECSs using MSTSC.
    • If you log in to a GPU-accelerated ECS using MSTSC, GPU acceleration will fail. This is because MSTSC replaces the WDDM GPU driver with a non-accelerated remote desktop display driver. In such a case, you must use other methods to log in to the ECS, such as VNC. If the remote login function available on the management console fails to meet your service requirements, you must install a suitable remote login tool on the ECS, such as TightVNC.

      To download TightVNC, log in at https://www.tightvnc.com/download.php.

      +
    +
    +

    Login Modes

    Select a login mode as required and log in to the target ECS.

    + +
    + + + + + + + + + + + + + + + + + + +
    Table 1 Windows login modes

    ECS OS

    +

    Local OS

    +

    Connection Method

    +

    Requirement

    +

    Windows

    +

    Windows

    +

    Use MSTSC.

    +

    Click Start on the local computer. In the Search programs and files text box, enter mstsc to open the Remote Desktop Connection dialog box.

    +

    For details, see Login Using MSTSC.

    +

    The target ECS has had an EIP bound.

    +

    Linux

    +

    Install a remote connection tool, for example, rdesktop.

    +

    For details, see Logging In to a Windows ECS from a Linux Computer.

    +

    Windows

    +

    Through the management console.

    +

    For details, see Login Using VNC.

    +

    No EIP is required.

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0092497777.html b/ecs/umn/en-us_topic_0092497777.html new file mode 100644 index 000000000..0b73c203f --- /dev/null +++ b/ecs/umn/en-us_topic_0092497777.html @@ -0,0 +1,20 @@ + + +

    NICs

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0092499768.html b/ecs/umn/en-us_topic_0092499768.html new file mode 100644 index 000000000..674e82cbc --- /dev/null +++ b/ecs/umn/en-us_topic_0092499768.html @@ -0,0 +1,56 @@ + + +

    Overview

    +

    Scenarios

    A tag identifies an ECS. Adding tags to an ECS facilitates ECS identification and management.

    +

    You can add a tag to an ECS during the ECS creation or after the ECS creation (Tags tab on the page providing details about the ECS). Up to 10 tags can be added to an ECS.

    +

    Tags added during ECS creation will also be added to the created EIP and EVS disks (including the system disk and data disks) of the ECS. If the ECS uses an existing EIP, the tags will not be added to the EIP.

    +

    After creating the ECS, you can view the tags on the pages providing details about the ECS, EIP, and EVS disks.

    +
    +
    +

    Basics of Tags

    Tags are used to identify cloud resources. When you have many cloud resources of the same type, you can use tags to classify cloud resources by dimension (for example, use, owner, or environment).

    +
    Figure 1 Example tags
    +

    Figure 1 shows how tags work. In this example, you assign two tags to each cloud resource. Each tag contains a key and a value that you define. The key of one tag is Owner, and the key of another tag is Use. Each tag has a value.

    +

    You can quickly search for and filter specific cloud resources based on the tags added to them. For example, you can define a set of tags for cloud resources in an account to track the owner and usage of each cloud resource, making resource management easier.

    +
    +

    Tag Naming Rules

    • Each tag consists of a key-value pair.
    • Each ECS supports adding up to 10 tags.
    • For each resource, a tag key must be unique and can have only one tag value.
    • A tag consists of a tag key and a tag value. Table 1 lists the tag key and value requirements. +
      + + + + + + + + + + + + + +
      Table 1 Tag key and value requirements

      Parameter

      +

      Requirement

      +

      Example Value

      +

      Key

      +
      • Cannot be left blank.
      • The key value must be unique for an ECS.
      • Can contain a maximum of 36 characters.
      • Can only consist of digits, letters, hyphens (-), and underscores (_).
      +

      Organization

      +

      Value

      +
      • Can contain a maximum of 43 characters.
      • Can only consist of digits, letters, hyphens (-), and underscores (_).
      +

      Apache

      +
      +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0092499769.html b/ecs/umn/en-us_topic_0092499769.html new file mode 100644 index 000000000..a46fc215f --- /dev/null +++ b/ecs/umn/en-us_topic_0092499769.html @@ -0,0 +1,11 @@ + + +

    Security

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0092499770.html b/ecs/umn/en-us_topic_0092499770.html new file mode 100644 index 000000000..a643f8413 --- /dev/null +++ b/ecs/umn/en-us_topic_0092499770.html @@ -0,0 +1,20 @@ + + +

    EVS Disks

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0093153741.html b/ecs/umn/en-us_topic_0093153741.html new file mode 100644 index 000000000..ac5c045e9 --- /dev/null +++ b/ecs/umn/en-us_topic_0093153741.html @@ -0,0 +1,64 @@ + + +

    Why Is the Memory of an ECS Obtained by Running the free Command Inconsistent with the Actual Memory?

    +

    Symptom

    After you create an ECS, you run the free -m command to view the ECS memory. The ECS memory is less than the memory configured during ECS creation.

    +

    An example is provided as follows:

    +

    For example, you configure the memory as 4,194,304 KB (4,096 MB) when you create the ECS. After the ECS is created, you run the free -m command to view its memory. The command output is as follows:

    +
    [root@localhost ~]# free -m
    +total used free shared buff/cache available
    +Mem: 3790 167 3474 8 147 3414
    +Swap: 1022 0 1022
    +

    The memory in the command output is 3790 MB, which is less than the configured 4096 MB.

    +

    Run the dmidecode -t memory command to check the actual memory configured for the ECS. The command output is as follows:

    +
    [root@localhost ~]# dmidecode -t memory
    +# dmidecode 3.0
    +Getting SMBIOS data from sysfs.
    +SMBIOS 2.8 present.
    +
    +Handle 0x1000, DMI type 16, 23 bytes
    +Physical Memory Array
    +Location: Other
    +Use: System Memory
    +Error Correction Type: Multi-bit ECC
    +Maximum Capacity: 4 GB
    +Error Information Handle: Not Provided
    +Number Of Devices: 1
    +
    +Handle 0x1100, DMI type 17, 40 bytes
    +Memory Device
    +Array Handle: 0x1000
    +Error Information Handle: Not Provided
    +Total Width: Unknown
    +Data Width: Unknown
    +Size: 4096 MB
    +Form Factor: DIMM
    +Set: None
    +Locator: DIMM 0
    +Bank Locator: Not Specified
    +Type: RAM
    +Type Detail: Other
    +Speed: Unknown
    +Manufacturer: QEMU
    +Serial Number: Not Specified
    +Asset Tag: Not Specified
    +Part Number: Not Specified
    +Rank: Unknown
    +Configured Clock Speed: Unknown
    +Minimum Voltage: Unknown
    +Maximum Voltage: Unknown
    +Configured Voltage: Unknown
    +

    The memory in the command output is the same as that configured during ECS creation.

    +
    +

    Possible Causes

    When the OS is started, related devices are initialized, which occupies memory. In addition, when the kernel is started, it also occupies memory. The memory occupied by kdump can be set. Unless otherwise specified, do not change the memory size occupied by kdump.

    +

    The command output of free -m shows the available memory of the ECS, and that of dmidecode -t memory shows the hardware memory.

    +

    Therefore, the memory obtained by running the free -m command is less than the memory configured for the ECS. This is a normal phenomenon.

    +

    This is a normal phenomenon even for physical servers.

    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0093263550.html b/ecs/umn/en-us_topic_0093263550.html new file mode 100644 index 000000000..5ac2b0747 --- /dev/null +++ b/ecs/umn/en-us_topic_0093263550.html @@ -0,0 +1,289 @@ + + +

    Login Using VNC

    +

    Scenarios

    This section describes how to use VNC provided on the management console to log in to an ECS. This function applies to emergency O&M. In other scenarios, you are advised to log in to ECSs using SSH or MSTSC.

    +

    For instructions about how to copy and paste data on VNC pages after the ECS login, see Follow-up Procedure.

    +

    Before using remote login (VNC) provided on the management console to log in to a Linux ECS authenticated using a key pair, log in to the ECS using an SSH key and set a login password.

    +
    +
    +

    Constraints

    • The remote login function is implemented using customized ports. Therefore, before attempting to log in remotely, ensure that the port to be used is not blocked by the firewall. For example, if the remote login link is xxx:8002, ensure that port 8002 is not blocked by the firewall.
    • If the client OS uses a local proxy and the firewall port cannot be configured on the local proxy, disable the proxy mode and then try logging in remotely.
    +
    +

    Login Notes

    1. When you log in to the ECS using VNC, four types of keyboards will be used, as described in Table 1. +
      + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Keyboard types

      Keyboard Type

      +

      Description

      +

      Keyboard Language

      +

      Physical keyboard

      +

      Used by the terminal and allows terminal data input.

      +

      Selected by users locally.

      +

      Input method keyboard on the terminal

      +

      Used for logging in to the management console from a terminal, such as a computer. The keyboard input method of the terminal must comply with the physical keyboard language type. In this way, the entered data can be correctly transferred from the physical keyboard to the VNC client.

      +

      Selected by users locally.

      +

      VNC keyboard

      +

      Used for VNC logins. The VNC keyboard input method must comply with the physical keyboard language type. In this way, the entered data can be correctly transferred from the VNC client to the ECS OS.

      +
      NOTE:

      The English keyboard is used by default. The system also supports other keyboard languages.

      +
      +

      Can be configured through the management console.

      +

      For instructions about how to select a VNC keyboard language, see Logging In to an ECS Using an English Keyboard and Logging In to an ECS Using a Non-English Keyboard.

      +

      ECS OS keyboard

      +

      Input method keyboard configured in the ECS OS. Ensure that this input method complies with the physical keyboard language type for correct response to the entered data transferred from the VNC client.

      +
      NOTE:
      • The default OS keyboard language of an ECS created using a public image is English. For additional information, see Public Images Introduction.
      • The OS keyboard language of an ECS created using a private image is customized.
      +
      +

      Configured by users locally.

      +

      For instructions about how to change an ECS OS keyboard language, see Changing the OS Keyboard Language.

      +
      +
      +
    2. When you log in to the ECS using VNC, ensure that your configured keyboard language is correct.
      The entered data is as expected only if the input method keyboard on the terminal, the VNC keyboard, and the ECS OS keyboard languages are the same as the physical keyboard language. For details about language configuration in the four types of keyboards, see Table 2. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Language configuration in the four types of keyboards

      Physical Keyboard

      +

      Input Method Keyboard on the Terminal

      +

      VNC Keyboard

      +

      ECS OS Keyboard

      +

      Supported or Not

      +

      English

      +

      English

      +

      English

      +

      English

      +

      Yes

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      English

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      English

      +

      No

      +

      German

      +

      No

      +

      German

      +

      English

      +

      No

      +

      German

      +

      Yes

      +
      +
      +
      +
    3. If the password used when you create the ECS is entered using the English keyboard, you must use the English keyboard to enter the password when logging in to the ECS later.
    +
    +

    Logging In to an ECS Using an English Keyboard

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the search box above the upper right corner of the ECS list, enter the ECS name and click for search.
    5. Locate the row containing the ECS and click Remote Login in the Operation column.
    6. In the displayed Configure Keyboard Layout for Remote Login dialog box, select the English keyboard.
      Figure 1 Keyboard layout configuration
      +
    7. Click Remote Login.
    8. (Optional) If you have changed the system language, in the dialog box that is displayed, click Start Remote Login.
      Figure 2 Remote Login
      +
    9. (Optional) When the system displays "Press CTRL+ALT+DELETE to log on", click Send CtrlAltDel in the upper part of the remote login page to log in to the ECS.
      Figure 3 Send CtrlAltDel
      +
    10. (Optional) If you need your cursor to be displayed on the remote login page, click Local Cursor.
      Figure 4 Local Cursor
      +
    11. Enter the ECS password as prompted.
    +
    +

    Logging In to an ECS Using a Non-English Keyboard

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the search box above the upper right corner of the ECS list, enter the ECS name, IP address, or ID, and click for search.
    5. Locate the row containing the ECS and click Remote Login in the Operation column.
    6. In the displayed Configure Keyboard Layout for Remote Login dialog box, select the English keyboard.
      Figure 5 Keyboard layout configuration
      +
    1. Click Remote Login.
    2. (Optional) If you have changed the system language, in the dialog box that is displayed, click Start Remote Login.
      Figure 6 Remote Login
      +
    3. (Optional) When the system displays "Press CTRL+ALT+DELETE to log on", click Send CtrlAltDel in the upper part of the remote login page to log in to the ECS.
      Figure 7 Send CtrlAltDel
      +
    4. (Optional) If you need your cursor to be displayed on the remote login page, click Local Cursor.
      Figure 8 Local Cursor
      +
    5. Enter the ECS password as prompted.
      • When logging in to the ECS using VNC for the first time, use the English keyboard to enter the password. After you have logged in to the ECS, see Changing the OS Keyboard Language to change the keyboard language of the ECS OS. You can then select the keyboard language and enter the password the next time you log in.
      • If you have changed the keyboard language of the ECS OS, ensure that the keyboard language in use, the keyboard language selected in step 6, and the changed OS keyboard language are all the same.
      +
    +
    +

    Changing the OS Keyboard Language

    If the ECS is running Linux, run the following command:

    +

    loadkeys keymapfile

    +

    The keymapfile parameter indicates the name of the file containing the mappings between the keys and displayed characters.

    +

    For example, if the name of a German keyboard mapping file is de, run the loadkeys de command.

    +
    +

    Configuration Example

    Scenarios

    +
    If you attempt to log in to an ECS created using a public image for the first time, the languages of the four types of keyboards before the configuration are as follows (Before configuration row in Table 3):
    • Physical keyboard: German
    • Input method keyboard on the terminal: English
    • VNC keyboard: English
    • ECS OS keyboard: English
    +
    +

    In this case, you must change the languages of the other three types of keyboards to the same language as the physical keyboard for expected data entering. For details, see the Solution 1 row in Table 3.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Languages in the four types of keyboards

    -

    +

    Physical Keyboard

    +

    Input Method Keyboard on the Terminal

    +

    VNC Keyboard

    +

    ECS OS Keyboard

    +

    Before configuration

    +

    German

    +

    English

    +

    English

    +

    English

    +

    Solution 1

    +

    German

    +

    German

    +

    German

    +

    German

    +

    Solution 2

    +

    English

    +

    English

    +

    English

    +

    English

    +
    +
    +

    Procedure

    +
    1. Locally configure the language, for example, German, in the input method keyboard on the terminal.
    2. Set the VNC keyboard language to English.

      When you log in to the ECS using VNC for the first time, the default ECS OS keyboard language is English. Therefore, you must set the VNC keyboard language to English.

      +
      +
    3. Log in to the ECS and change the ECS OS language to German.

      For details, see Changing the OS Keyboard Language.

      +
    4. Change the VNC keyboard language to German.

      For details, see Logging In to an ECS Using a Non-English Keyboard.

      +
    +

    To set the languages on the four types of keyboards to all be the same, perform 1 to 4.

    +

    During the configuration, if English characters cannot be entered using the current physical keyboard, use the English soft keyboard to modify the configuration described in the Solution 2 row of Table 3. In such a case, you only need to use the English soft keyboard to enter characters.

    +
    • To enable the Windows English soft keyboard, choose Start > Run, enter osk, and press Enter.
    • The method of enabling the Linux English soft keyboard varies depending on the OS version and is not described in this document.
    +
    +
    +

    Follow-up Procedure

    Local commands can be copied to an ECS. To do so, perform the following operations:

    +
    1. Log in to the ECS using VNC.
    2. Click Input Commands in the upper right corner of the page.
      Figure 9 Input Commands
      +
    3. Press Ctrl+C to copy data from the local computer.
    4. Press Ctrl+V to paste the local data to the Copy Commands window.
    5. Click Send.

      Send the copied data to the CLI.

      +
    +

    There is a low probability that data is lost when you use Input Commands on the VNC page of a GUI-based Linux ECS. This is because the number of ECS vCPUs fails to meet GUI requirements. In such a case, it is a good practice to send a maximum of 5 characters at a time or switch from GUI to CLI (also called text interface), and then use the command input function.

    +
    +
    + +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0093492517.html b/ecs/umn/en-us_topic_0093492517.html new file mode 100644 index 000000000..3fd352ef6 --- /dev/null +++ b/ecs/umn/en-us_topic_0093492517.html @@ -0,0 +1,27 @@ + + +

    Changing a Security Group

    +

    Scenarios

    To change the security group of an ECS NIC, perform the operations described in this section.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the ECS list, locate the row that contains the target ECS. Click More in the Operation column and select Manage Network > Change Security Group.

      The Change Security Group dialog box is displayed.

      +
      Figure 1 Change Security Group
      +
    5. Select the target NIC and security groups as prompted.

      You can select multiple security groups. In such a case, the rules of all the selected security groups will be aggregated to apply on the ECS.

      +

      To create a security group, click Create Security Group.

      +

      Using multiple security groups may deteriorate ECS network performance. You are suggested to select no more than five security groups.

      +
      +
    6. Click OK.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0093492518.html b/ecs/umn/en-us_topic_0093492518.html new file mode 100644 index 000000000..8a44b1152 --- /dev/null +++ b/ecs/umn/en-us_topic_0093492518.html @@ -0,0 +1,41 @@ + + +

    Adding a NIC

    +

    Scenarios

    If multiple NICs are required by your ECS, you can add them to your ECS. To add a NIC to the ECS, perform the following operations:

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the NICs tab. Then, click Add NIC.
    6. Select the subnet and security group to be added.
      Figure 1 Selecting the security group and subnet
      +

      +
      • Security Group: You can select multiple security groups. In such a case, the access rules of all the selected security groups apply on the ECS.
      • Private IP Address: If you want to add a NIC with a specified IP address, enter an IP address into the Private IP Address field.
      +
    7. Click OK.
    +
    +

    Follow-up Procedure

    Some OSs cannot identify newly added NICs. In this case, you must manually activate the NICs. Ubuntu is used as an example in the following NIC activation procedure. Required operations may vary among systems. For additional information, see the documentation for your OS.

    +
    1. Locate the row containing the target ECS and click Remote Login in the Operation column.

      Log in to the ECS.

      +
    2. Run the following command to view the NIC name:

      ifconfig -a

      +

      In this example, the NIC name is eth2.

      +
    3. Run the following command to switch to the target directory:

      cd /etc/network

      +
    4. Run the following command to open the interfaces file:

      vi interfaces

      +
    5. Add the following information to the interfaces file:

      auto eth2

      +

      iface eth2 inet dhcp

      +
    6. Run the following command to save and exit the interfaces file:

      :wq

      +
    7. Run either the ifup eth2 command or the /etc/init.d/networking restart command to make the newly added NIC take effect.

      X in the preceding command indicates the NIC name and SN, for example, ifup eth2.

      +
    8. Run the following command to check whether the NIC name obtained in step 2 is displayed in the command output:

      ifconfig

      +

      For example, check whether eth2 is displayed in the command output.

      +
      • If yes, the newly added NIC has been activated, and no further action is required.
      • If no, the newly added NIC failed to be activated. Go to step 9.
      +
    9. Log in to the management console. Locate the row containing the target ECS, click More in the Operation column, and select Restart.
    10. Run the following command to check whether the NIC name obtained in step 2 is displayed in the command output:
      • If yes, no further action is required.
      • If no, contact customer service.
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0093492519.html b/ecs/umn/en-us_topic_0093492519.html new file mode 100644 index 000000000..a368e451f --- /dev/null +++ b/ecs/umn/en-us_topic_0093492519.html @@ -0,0 +1,19 @@ + + +

    Deleting a NIC

    +

    Scenarios

    An ECS can have up to 12 NICs, including one primary NIC that cannot be deleted and extension NICs. This section describes how to delete an extension NIC.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the NICs tab. Then, click Delete in the row of the target NIC.

      You are not allowed to delete the primary ECS NIC. By default, the primary ECS NIC is the first NIC displayed in the NIC list.

      +
      +
    6. Click Yes in the displayed dialog box.

      Certain ECSs do not support NIC deletion when they are running. For details about these ECSs, see the GUI display. To delete a NIC from such an ECS, stop the ECS.

      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0093492520.html b/ecs/umn/en-us_topic_0093492520.html new file mode 100644 index 000000000..514f4a827 --- /dev/null +++ b/ecs/umn/en-us_topic_0093492520.html @@ -0,0 +1,18 @@ + + +

    Managing Virtual IP Addresses

    +

    Scenarios

    A virtual IP address provides the second IP address for one or more ECS NICs, improving high availability between the ECSs.

    +

    One NIC can be bound with up to 10 virtual IP addresses, and one virtual IP address can be bound to up to 10 NICs. Multiple ECSs deployed to work in active/standby mode can be bound with the same virtual IP address for disaster recovery.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the Network Interfaces tab. Then, click Manage Virtual IP Address.

      The Virtual Private Cloud page is displayed.

      +
    6. On the IP Addresses tab, select a desired one or click Assign Virtual IP Address for a new one.
    7. Click Bind to Instance in the Operation column and select the target ECS name and the NIC to bind the virtual IP address to the ECS NIC.

      For more information about virtual IP addresses, see Virtual Private Cloud User Guide.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0093492521.html b/ecs/umn/en-us_topic_0093492521.html new file mode 100644 index 000000000..efe5185c1 --- /dev/null +++ b/ecs/umn/en-us_topic_0093492521.html @@ -0,0 +1,14 @@ + + +

    Changing an EIP Bandwidth

    +

    Scenarios

    If an EIP has been bound to the ECS, the ECS can access the Internet using the bandwidth associated with the EIP. This section describes how to adjust the bandwidth of an ECS.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Locate the row containing the target ECS. Click More in the Operation column and select Manage Network > Modify Bandwidth.
    5. Change the bandwidth name, billing mode, or bandwidth size as prompted.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0093492522.html b/ecs/umn/en-us_topic_0093492522.html new file mode 100644 index 000000000..6381a04d1 --- /dev/null +++ b/ecs/umn/en-us_topic_0093492522.html @@ -0,0 +1,19 @@ + + +

    Expanding the Capacity of an EVS Disk

    +

    Scenarios

    When your disk capacity is insufficient, you can handle the insufficiency by expanding the disk capacity.

    +
    +

    Procedure

    The capacity of an EVS disk can be expanded in either of the following ways:
    • Create an EVS disk and attach it to an ECS.
    • Expand the capacity of an existing EVS disk. The capacities of both system disks and data disks can be expanded.
      You can expand the disk capacities when the EVS disks are in the In-use or Available state.
      • Expanding an In-use EVS disk means that the to-be-expanded EVS disk has been attached to an ECS. Only certain ECS OSs support the expansion of In-use EVS disks. For details, see "Expanding an In-use EVS Disk" in Elastic Volume Service User Guide.
      • Expanding an Available EVS disk means that the to-be-expanded EVS disk has not been attached to an ECS. For details, see "Expanding an Available EVS Disk" in Elastic Volume Service User Guide.
      +
      +
    +
    +
    +

    After the capacity is expanded through the management console, only the storage capacity of the EVS disk is expanded. To use the expanded capacity, you also need to log in to the ECS and expand the partition and file system.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0094801708.html b/ecs/umn/en-us_topic_0094801708.html new file mode 100644 index 000000000..d02c144c1 --- /dev/null +++ b/ecs/umn/en-us_topic_0094801708.html @@ -0,0 +1,30 @@ + + +

    What Can I Do If Switching from a Non-root User to User root Times Out?

    +

    Symptom

    When you run the sudo command to switch to user root on an Ubuntu or Debian ECS, the system prompts connection timeout.

    +
    Figure 1 Connection timeout
    +
    +

    Solution

    1. Log in to the ECS.
    2. Run the following command to edit the hosts configuration file:

      vi /etc/hosts

      +
    3. Press i to enter editing mode.
    4. Add the IP address and hostname to the last line of the hosts configuration file.

      Private IP address hostname

      +

      An example is provided as follows:

      +

      If the ECS hostname is hostname and the private IP address of the ECS is 192.168.0.1, add the following statement:

      +

      192.168.0.1 hostname

      +
    5. Press Esc to exit editing mode.
    6. Run the following command to save the configuration and exit:

      :wq

      +
    +

    To update the hostname of an Ubuntu or Debian ECS, set the value of parameter manage_etc_hosts in the /etc/cloud/cloud.cfg file to false and update the new hostname in the /etc/hosts file. When editing the /etc/hosts file, do not delete the statement in the line where 127.0.0.1 is located. Otherwise, switching from a non-root user to user root will time out.

    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0094874138.html b/ecs/umn/en-us_topic_0094874138.html new file mode 100644 index 000000000..358a7369d --- /dev/null +++ b/ecs/umn/en-us_topic_0094874138.html @@ -0,0 +1,51 @@ + + +

    Is an ECS Hostname with Suffix .novalocal Normal?

    +

    Symptom

    Hostnames of ECSs created based on some types of images have the suffix .novalocal, whereas others do not.

    +

    For example, the hostname is set to abc during ECS creation. Table 1 lists the hostnames (obtained by running the hostname command) of ECSs created using different images and those displayed after the ECSs are restarted.

    + +
    + + + + + + + + + + + + + + + + + +
    Table 1 Hostnames of ECSs created from different images

    Image

    +

    Hostname Before ECS Restart

    +

    Hostname After ECS Restart

    +

    CentOS 6.8

    +

    abc

    +

    abc.novalocal

    +

    CentOS 7.3

    +

    abc.novalocal

    +

    abc.novalocal

    +

    Ubuntu 16

    +

    abc

    +

    abc

    +
    +
    +
    +

    +

    Troubleshooting

    This is a normal phenomenon.

    +
    +

    The static hostname of a Linux ECS is user defined and injected using Cloud-Init during the ECS creation. According to the test results, Cloud-Init adapts to OSs differently. As a result, hostnames of some ECSs have suffix .novalocal, whereas others do not.

    +

    If you do not need suffix .novalocal in obtained hostnames, change the hostnames. For details, see How Can a Changed Static Hostname Take Effect Permanently?

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0095020344.html b/ecs/umn/en-us_topic_0095020344.html new file mode 100644 index 000000000..a4f0238d0 --- /dev/null +++ b/ecs/umn/en-us_topic_0095020344.html @@ -0,0 +1,17 @@ + + +

    Can ECSs Automatically Recover After the Physical Host Accommodating the ECSs Becomes Faulty?

    +

    Yes.

    +

    ECSs run on physical hosts. Although there are multiple mechanisms to ensure system reliability, fault tolerance, and high availability, host hardware might be damaged or power failures might occur. If physical hosts cannot be powered on or restarted due to damage, CPU and memory data will lose and live migration cannot be used to recovery ECSs.

    +

    The cloud platform provides automatic recovery by default to restart ECSs through cold migration, ensuring high availability and dynamic ECS migration. Once a physical host accommodating ECSs breaks down, the ECSs will automatically migrate to a functional physical host to minimize the impact on your services. During the process, the ECSs will restart.

    +
    • Automatic recovery does not ensure user data consistency.
    • An ECS can be automatically recovered only if the physical server on which it is deployed becomes faulty. This function does not take effect if the fault is caused by the ECS itself.
    • An ECS can be automatically recovered only after the physical server on which it is deployed is shut down. If the physical server is not shut down due to a fault, for example, a memory fault, automatic recovery fails to take effect.
    • An ECS can be automatically recovered only once within 12 hours if the server on which it is deployed becomes faulty.
    • ECS automatic recovery may fail in the following scenarios:
      • No physical server is available for migration due to a system fault.
      • The target physical server does not have sufficient temporary capacity.
      +
    • An ECS with any of the following resources cannot be automatically recovered:
      • Local disk
      • Passthrough FPGA card
      • Passthrough InfiniBand NIC
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0096170524.html b/ecs/umn/en-us_topic_0096170524.html new file mode 100644 index 000000000..f93eacca9 --- /dev/null +++ b/ecs/umn/en-us_topic_0096170524.html @@ -0,0 +1,20 @@ + + +

    Troubleshooting

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0096293655.html b/ecs/umn/en-us_topic_0096293655.html new file mode 100644 index 000000000..544dfcc61 --- /dev/null +++ b/ecs/umn/en-us_topic_0096293655.html @@ -0,0 +1,35 @@ + + +

    Attaching an EVS Disk to an ECS

    +

    Scenarios

    If the existing disks of an ECS fail to meet service requirements, for example, due to insufficient disk space or poor disk performance, you can attach more available EVS disks to the ECS, or create more disks (Storage > Elastic Volume Service) and attach them to the ECS.

    +
    +

    Prerequisites

    • EVS disks are available.

      For instructions about how to create an EVS disk, see "Creating an EVS Disk" in Elastic Volume Service User Guide.

      +
    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. In the search box above the upper right corner of the ECS list, enter the ECS name, IP address, or ID for search.
    5. Click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    6. Click the Disks tab. Then, click Attach Disk.

      The Attach Disk dialog box is displayed.

      +
      Figure 1 Attach Disk
      +
    7. Select the target disk, specify the disk as the system disk or data disk.
      • If no EVS disks are available, click Create Disk in the lower part of the list.
      • For details about restrictions on attaching a disk, see What Are the Requirements for Attaching an EVS Disk to an ECS?
      • The device names for the local disks and EVS disks mounted to a disk-intensive ECS comply with the following rules:
        • System disk: Use sda or vda.
        • Local disk: Use the device name following sda or vda in alphabetical order.
        • EVS disk: Use the device name added in alphabetical order following those used by local disks.
        +
      +
      +
    8. Click OK.

      After the disk is attached, you can view the information about it on the Disks tab.

      +
      Figure 2 Viewing the newly attached disk
      +
    +
    +

    Follow-up Procedure

    If the attached disk is newly created, the disk can be used only after it is initialized.

    +

    For instructions about how to initialize a data disk, see Scenarios and Disk Partitions.

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0096304614.html b/ecs/umn/en-us_topic_0096304614.html new file mode 100644 index 000000000..a8ed8eb60 --- /dev/null +++ b/ecs/umn/en-us_topic_0096304614.html @@ -0,0 +1,13 @@ + + +

    CBR

    +
    + + diff --git a/ecs/umn/en-us_topic_0097289624.html b/ecs/umn/en-us_topic_0097289624.html new file mode 100644 index 000000000..f942c83b6 --- /dev/null +++ b/ecs/umn/en-us_topic_0097289624.html @@ -0,0 +1,756 @@ + + +

    GPU-accelerated ECSs

    +

    GPU-accelerated ECSs provide outstanding floating-point computing capabilities. They are suitable for applications that require real-time, highly concurrent massive computing.

    +
    GPU-accelerated ECSs are classified as G series and P series of ECSs.
    • G series: Graphics-accelerated ECSs, which are suitable for 3D animation rendering and CAD
    • P series: Computing-accelerated or inference-accelerated ECSs, which are suitable for deep learning, scientific computing, and CAE
    +
    +

    GPU-accelerated ECS Types

    GPU-accelerated ECSs are classified as graphics-accelerated (G series) and computing-accelerated (P series) ECSs.

    +

    Recommended:

    +

    +

    +

    Inference-accelerated PI2

    +

    Graphics-accelerated Enhancement G6

    +

    Available now: All GPU models except the recommended ones.

    + + +
    +

    Graphics-accelerated Enhancement G6

    Overview

    +

    G6 ECSs use NVIDIA Tesla T4 GPUs to support DirectX, OpenGL, and Vulkan and provide 16 GiB of GPU memory. The theoretical Pixel rate is 101.8 Gpixel/s and Texture rate 254.4 GTexel/s, meeting professional graphics processing requirements.

    +

    Select your desired GPU-accelerated ECS type and specifications.

    +

    Specifications

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 G6 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    g6.10xlarge.7

    +

    40

    +

    280

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    1 x T4

    +

    16

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6266

    +

    g6.20xlarge.7

    +

    80

    +

    560

    +

    30/30

    +

    400

    +

    32

    +

    8

    +

    2 x T4

    +

    32

    +

    KVM

    +
    +
    +

    A G6.10xlarge.7 ECS exclusively uses a T4 GPU for professional graphics acceleration. Such an ECS can be used for heavy-load CPU inference.

    +
    +

    G6 ECS Features

    +
    • CPU: 2nd Generation Intel® Xeon® Scalable 6266 processors (3.0 GHz of base frequency and 3.4 GHz of turbo frequency)
    • Graphics acceleration APIs
      • DirectX 12, Direct2D, DirectX Video Acceleration (DXVA)
      • OpenGL 4.5
      • Vulkan 1.0
      +
    • CUDA and OpenCL
    • NVIDIA T4 GPUs
    • Graphics acceleration applications
    • Heavy-load CPU inference
    • Application flow identical to common ECSs
    • Automatic scheduling of G6 ECSs to AZs where NVIDIA T4 GPUs are used
    • One built-in NVENC and two NVDEC GPUs
    +

    Supported Common Software

    +

    G6 ECSs are used in graphics acceleration scenarios, such as video rendering, cloud desktop, and 3D visualization. If the software relies on GPU DirectX and OpenGL hardware acceleration, use G6 ECSs. G6 ECSs support the following commonly used graphics processing software:

    +
    • AutoCAD
    • 3DS MAX
    • MAYA
    • Agisoft PhotoScan
    • ContextCapture
    +

    Notes

    +
    • G6 ECSs support the following OS:
      • Windows Server 2016 Standard 64bit
      +
    • G6 ECSs created using a public image have had the GRID driver of a specific version installed by default. However, you need to purchase and configure the GRID license by yourself. Ensure that the GRID driver version meets service requirements.

      +

      +
    • If a G6 ECS is created using a private image, make sure that the GRID driver was installed during the private image creation. If not, install the driver for graphics acceleration after the ECS is created.

      +

      +
    +
    +

    Computing-accelerated P2s

    Overview

    +

    P2s ECSs use NVIDIA Tesla V100 GPUs to provide flexibility, high-performance computing, and cost-effectiveness. P2s ECSs provide outstanding general computing capabilities and have strengths in AI-based deep learning, scientific computing, Computational Fluid Dynamics (CFD), computing finance, seismic analysis, molecular modeling, and genomics.

    +

    Specifications

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 P2s ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Connection

    +

    GPU Memory (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    p2s.2xlarge.8

    +

    8

    +

    64

    +

    10/4

    +

    50

    +

    4

    +

    4

    +

    1 x V100

    +

    PCIe Gen3

    +

    1 x 32 GiB

    +

    KVM

    +

    CPU: 2nd Generation Intel® Xeon® Scalable Processor 6278

    +

    +

    +

    +

    +

    p2s.4xlarge.8

    +

    16

    +

    128

    +

    15/8

    +

    100

    +

    8

    +

    8

    +

    2 x V100

    +

    PCIe Gen3

    +

    2 x 32 GiB

    +

    KVM

    +

    p2s.8xlarge.8

    +

    32

    +

    256

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    4 x V100

    +

    PCIe Gen3

    +

    4 x 32 GiB

    +

    KVM

    +

    p2s.16xlarge.8

    +

    64

    +

    512

    +

    30/30

    +

    400

    +

    32

    +

    8

    +

    8 x V100

    +

    PCIe Gen3

    +

    8 x 32 GiB

    +

    KVM

    +
    +
    +
    P2s ECS Features
    • CPU: 2nd Generation Intel® Xeon® Scalable 6278 processors (2.6 GHz of base frequency and 3.5 GHz of turbo frequency), or Intel® Xeon® Scalable 6151 processors (3.0 GHz of base frequency and 3.4 GHz of turbo frequency)
    • Up to eight NVIDIA Tesla V100 GPUs on an ECS
    • NVIDIA CUDA parallel computing and common deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    • 14 TFLOPS of single-precision computing and 7 TFLOPS of double-precision computing
    • NVIDIA Tensor cores with 112 TFLOPS of single- and double-precision computing for deep learning
    • Up to 30 Gbit/s of network bandwidth on a single ECS
    • 32 GiB of HBM2 GPU memory with a bandwidth of 900 Gbit/s
    • Comprehensive basic capabilities

      Networks are user-defined, subnets can be divided, and network access policies can be configured as needed. Mass storage is used, elastic capacity expansion as well as backup and restoration are supported to make data more secure. Auto Scaling allows you to add or reduce the number of ECSs quickly.

      +
    • Flexibility

      Similar to other types of ECSs, P2s ECSs can be provisioned in a few minutes.

      +
    • Excellent supercomputing ecosystem

      The supercomputing ecosystem allows you to build up a flexible, high-performance, cost-effective computing platform. A large number of HPC applications and deep-learning frameworks can run on P2s ECSs.

      +

      +
    +
    +

    Supported Common Software

    +
    P2s ECSs are used in computing acceleration scenarios, such as deep learning training, inference, scientific computing, molecular modeling, and seismic analysis. If the software is required to support GPU CUDA, use P2s ECSs. P2s ECSs support the following commonly used software:
    • Common deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    • CUDA GPU rendering supported by RedShift for Autodesk 3dsMax and V-Ray for 3ds Max
    • Agisoft PhotoScan
    • MapD
    +
    +
    Notes
    • P2s ECSs support the following OSs:
      • Windows Server 2019 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 20.04 64bit
      • Ubuntu Server 18.04 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.7 64bit
      • CentOS 7.4 64bit
      • EulerOS 2.5 64bit
      • Oracle Linux 7.6 64bit
      +
    • By default, P2s ECSs created using a Windows public image have the Tesla driver installed.
    • If a P2s ECS is created using a private image, make sure that the Tesla driver was installed during the private image creation. If not, install the driver for computing acceleration after the ECS is created. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    +
    +
    +

    Computing-accelerated P2v

    Overview

    +

    Compared with P2 ECSs, P2v ECSs use NVIDIA Tesla V100 GPUs to provide flexibility, high-performance computing, and cost-effectiveness. These ECSs use GPU NVLink for direct communication between GPUs, improving data transmission efficiency. P2v ECSs provide outstanding general computing capabilities and have strengths in AI-based deep learning, scientific computing, Computational Fluid Dynamics (CFD), computing finance, seismic analysis, molecular modeling, and genomics.

    +

    Specifications

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 P2v ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Connection

    +

    GPU Memory (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    p2v.2xlarge.8

    +

    8

    +

    64

    +

    10/4

    +

    50

    +

    4

    +

    4

    +

    1 x V100

    +

    N/A

    +

    1 × 16 GiB

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake-SP Gold 6151 v5

    +

    p2v.4xlarge.8

    +

    16

    +

    128

    +

    15/8

    +

    100

    +

    8

    +

    8

    +

    2 x V100

    +

    NVLink

    +

    2 × 16 GiB

    +

    KVM

    +

    p2v.8xlarge.8

    +

    32

    +

    256

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    4 x V100

    +

    NVLink

    +

    4 × 16 GiB

    +

    KVM

    +

    p2v.16xlarge.8

    +

    64

    +

    512

    +

    30/30

    +

    400

    +

    32

    +

    8

    +

    8 x V100

    +

    NVLink

    +

    8 × 16 GiB

    +

    KVM

    +
    +
    +
    P2v ECS Features
    • CPU: Intel® Xeon® Scalable 6151 processors (3.0 GHz of base frequency and 3.4 GHz of turbo frequency)
    • Up to eight NVIDIA Tesla V100 GPUs on an ECS
    • NVIDIA CUDA parallel computing and common deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    • 15.7 TFLOPS of single-precision computing and 7.8 TFLOPS of double-precision computing
    • NVIDIA Tensor cores with 125 TFLOPS of single- and double-precision computing for deep learning
    • Up to 30 Gbit/s of network bandwidth on a single ECS
    • 16 GiB of HBM2 GPU memory with a bandwidth of 900 Gbit/s
    • Comprehensive basic capabilities

      Networks are user-defined, subnets can be divided, and network access policies can be configured as needed. Mass storage is used, elastic capacity expansion as well as backup and restoration are supported to make data more secure. Auto Scaling allows you to add or reduce the number of ECSs quickly.

      +
    • Flexibility

      Similar to other types of ECSs, P2v ECSs can be provisioned in a few minutes.

      +
    • Excellent supercomputing ecosystem

      The supercomputing ecosystem allows you to build up a flexible, high-performance, cost-effective computing platform. A large number of HPC applications and deep-learning frameworks can run on P2v ECSs.

      +

      +
    +
    +

    Supported Common Software

    +
    P2v ECSs are used in computing acceleration scenarios, such as deep learning training, inference, scientific computing, molecular modeling, and seismic analysis. If the software is required to support GPU CUDA, use P2v ECSs. P2v ECSs support the following commonly used software:
    • Common deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    • CUDA GPU rendering supported by RedShift for Autodesk 3dsMax and V-Ray for 3ds Max
    • Agisoft PhotoScan
    • MapD
    +
    +
    Notes
    • P2v ECSs support the following OSs:
      • Windows Server 2019 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.7 64bit
      • EulerOS 2.5 64bit
      • Oracle Linux 7.6 64bit
      +
    • By default, P2v ECSs created using a Windows public image have the Tesla driver installed.
    • By default, P2v ECSs created using a Linux public image do not have a Tesla driver installed. After the ECS is created, install a driver on it for computing acceleration. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    • If a P2v ECS is created using a private image, make sure that the Tesla driver was installed during the private image creation. If not, install the driver for computing acceleration after the ECS is created. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    +
    +
    +

    Computing-accelerated P2

    Overview

    +

    Compared with P1 ECSs, P2 ECSs use NVIDIA Tesla V100 GPUs, which have improved both single- and double-precision computing capabilities by 50% and offer 112 TFLOPS of deep learning.

    +
    Specifications +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 P2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Local Disks

    +

    Virtualization Type

    +

    Hardware

    +

    p2.2xlarge.8

    +

    8

    +

    64

    +

    5/1.6

    +

    35

    +

    2

    +

    12

    +

    1 x V100

    +

    1 x 16

    +

    1 × 800 GiB NVMe

    +

    KVM

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +

    p2.4xlarge.8

    +

    16

    +

    128

    +

    8/3.2

    +

    70

    +

    4

    +

    12

    +

    2 x V100

    +

    2 x 16

    +

    2 × 800 GiB NVMe

    +

    KVM

    +

    p2.8xlarge.8

    +

    32

    +

    256

    +

    10/6.5

    +

    140

    +

    8

    +

    12

    +

    4 x V100

    +

    4 x 16

    +

    4 × 800 GiB NVMe

    +

    KVM

    +
    +
    +
    +
    P2 ECS Features
    • CPU: Intel® Xeon® Processor E5-2690 v4 (2.6 GHz)
    • NVIDIA Tesla V100 GPUs
    • GPU hardware passthrough
    • 14 TFLOPS of single-precision computing, 7 TFLOPS of double-precision computing, and 112 TFLOPS of deep learning
    • Maximum network bandwidth of 12 Gbit/s
    • 16 GiB of HBM2 GPU memory with a bandwidth of 900 Gbit/s
    • 800 GiB NVMe SSDs for temporary local storage
    • Comprehensive basic capabilities

      Networks are user-defined, subnets can be divided, and network access policies can be configured as needed. Mass storage is used, elastic capacity expansion as well as backup and restoration are supported to make data more secure. Auto Scaling allows you to add or reduce the number of ECSs quickly.

      +
    • Flexibility

      Similar to other types of ECSs, P2 ECSs can be provisioned in a few minutes.

      +
    • Excellent supercomputing ecosystem

      The supercomputing ecosystem allows you to build up a flexible, high-performance, cost-effective computing platform. A large number of HPC applications and deep-learning frameworks can run on P2 ECSs.

      +
    +
    +

    Supported Common Software

    +
    P2 ECSs are used in computing acceleration scenarios, such as deep learning training, inference, scientific computing, molecular modeling, and seismic analysis. If the software requires GPU CUDA parallel computing, use P2 ECSs. P2 ECSs support the following commonly used software:
    • Common deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    • CUDA GPU rendering supported by RedShift for Autodesk 3dsMax and V-Ray for 3ds Max
    • Agisoft PhotoScan
    • MapD
    +
    +
    Notes
    • The system disk of a P2 ECS must be greater than or equal to 15 GiB. It is recommended that the system disk be greater than 40 GiB.
    • The local NVMe SSDs attached to P2 ECSs are dedicated for services with strict requirements on storage I/O performance, such as deep learning training and HPC. Local disks are attached to the ECSs of specified flavors and cannot be separately bought. In addition, you are not allowed to detach a local disk and then attach it to another ECS.

      Data may be lost on the local NVMe SSDs attached to P2 ECSs due to, for example, a disk or host fault. Therefore, you are suggested to store only temporary data in local NVMe SSDs. If you store important data in such a disk, securely back up the data.

      +
      +
    • P2 ECSs do not support specifications modification.
    • P2 ECSs support the following OSs:

      Ubuntu Server 16.04 64bit

      +
    • After you delete a P2 ECS, the data stored in local NVMe SSDs is automatically cleared.
    • By default, P2 ECSs created using a Linux public image do not have a Tesla driver installed. After the ECS is created, install a driver on it for computing acceleration. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    • If a P2 ECS is created using a private image, make sure that the Tesla driver was installed during the private image creation. If not, install the driver for computing acceleration after the ECS is created. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    +
    +
    +

    Computing-accelerated P1

    Overview

    +

    P1 ECSs use NVIDIA Tesla P100 GPUs and provide flexibility, high performance, and cost-effectiveness. These ECSs support GPU Direct for direct communication between GPUs, improving data transmission efficiency. P1 ECSs provide outstanding general computing capabilities and have strengths in deep learning, graphic databases, high-performance databases, Computational Fluid Dynamics (CFD), computing finance, seismic analysis, molecular modeling, and genomics. They are designed for scientific computing.

    +

    Specifications

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 P1 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Local Disks (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    p1.2xlarge.8

    +

    8

    +

    64

    +

    5/1.6

    +

    35

    +

    2

    +

    12

    +

    1 x P100

    +

    1 x 16

    +

    1×800

    +

    KVM

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +

    p1.4xlarge.8

    +

    16

    +

    128

    +

    8/3.2

    +

    70

    +

    4

    +

    12

    +

    2 x P100

    +

    2 x 16

    +

    2×800

    +

    KVM

    +

    p1.8xlarge.8

    +

    32

    +

    256

    +

    10/6.5

    +

    140

    +

    8

    +

    12

    +

    4 x P100

    +

    4 x 16

    +

    4×800

    +

    KVM

    +
    +
    +
    P1 ECS Features
    • CPU: Intel® Xeon® Processor E5-2690 v4 (2.6 GHz)
    • Up to four NVIDIA Tesla P100 GPUs on a P1 ECS (If eight P100 GPUs are required on an instance, use BMS.)
    • GPU hardware passthrough
    • 9.3 TFLOPS of single-precision computing and 4.7 TFLOPS of double-precision computing
    • Maximum network bandwidth of 10 Gbit/s
    • 16 GiB of HBM2 GPU memory with a bandwidth of 732 Gbit/s
    • 800 GiB NVMe SSDs for temporary local storage
    • Comprehensive basic capabilities

      Networks are user-defined, subnets can be divided, and network access policies can be configured as needed. Mass storage is used, elastic capacity expansion as well as backup and restoration are supported to make data more secure. Auto Scaling allows you to add or reduce the number of ECSs quickly.

      +
    • Flexibility

      Similar to other types of ECSs, P1 ECSs can be provisioned in a few minutes. You can configure specifications as needed. P1 ECSs with two, four, and eight GPUs will be supported later.

      +
    • Excellent supercomputing ecosystem

      The supercomputing ecosystem allows you to build up a flexible, high-performance, cost-effective computing platform. A large number of HPC applications and deep-learning frameworks can run on P1 ECSs.

      +
    +
    +

    Supported Common Software

    +

    P1 ECSs are used in computing acceleration scenarios, such as deep learning training, inference, scientific computing, molecular modeling, and seismic analysis. If the software requires GPU CUDA parallel computing, use P1 ECSs. P1 ECSs support the following commonly used software:

    +
    • Deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    • RedShift for Autodesk 3dsMax, V-Ray for 3ds Max
    • Agisoft PhotoScan
    • MapD
    +
    Notes
    • It is recommended that the system disk of a P1 ECS be greater than 40 GiB.
    • The local NVMe SSDs attached to P1 ECSs are dedicated for services with strict requirements on storage I/O performance, such as deep learning training and HPC. Local disks are attached to the ECSs of specified flavors and cannot be separately bought. In addition, you are not allowed to detach a local disk and then attach it to another ECS.

      Data may be lost on the local NVMe SSDs attached to P1 ECSs due to a fault, for example, due to a disk or host fault. Therefore, you are suggested to store only temporary data in local NVMe SSDs. If you store important data in such a disk, securely back up the data.

      +
      +
    • After a P1 ECS is created, you must install the NVIDIA driver for computing acceleration. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    • P1 ECSs do not support specifications modification.
    • P1 ECSs support the following OSs:
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.4 64bit
      • Debian 9.0 64bit
      +
    • After you delete a P1 ECS, the data stored in local NVMe SSDs is automatically cleared.
    • By default, P1 ECSs created using a Windows public image have the Tesla driver installed.
    • By default, P1 ECSs created using a Linux public image do not have a Tesla driver installed. After the ECS is created, install a driver on it for computing acceleration. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    • If a P1 ECS is created using a private image, make sure that the Tesla driver was installed during the private image creation. If not, install the driver for computing acceleration after the ECS is created. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    +
    +
    +

    Inference-accelerated PI2

    Overview

    +

    PI2 ECSs use NVIDIA Tesla T4 GPUs dedicated for real-time AI inference. These ECSs use the T4 INT8 calculator for up to 130 TOPS of INT8 computing. The PI2 ECSs can also be used for light-load training.

    +

    +

    Specifications

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 6 PI2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Local Disks

    +

    Virtualization Type

    +

    Hardware

    +

    pi2.2xlarge.4

    +

    8

    +

    32

    +

    10/4

    +

    50

    +

    4

    +

    4

    +

    1 x T4

    +

    1 × 16 GiB

    +

    N/A

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151 3.0 GHz or Intel® Xeon® Cascade Lake 6278 2.6 GHz

    +

    pi2.4xlarge.4

    +

    16

    +

    64

    +

    15/8

    +

    100

    +

    8

    +

    8

    +

    2 x T4

    +

    2 × 16 GiB

    +

    N/A

    +

    KVM

    +

    pi2.8xlarge.4

    +

    32

    +

    128

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    4 x T4

    +

    4 × 16 GiB

    +

    N/A

    +

    KVM

    +
    +
    +

    PI2 ECS Features

    +
    • CPU: 2nd Generation Intel® Xeon® Scalable 6278 processors (2.6 GHz of base frequency and 3.5 GHz of turbo frequency), or Intel® Xeon® Scalable 6151 processors (3.0 GHz of base frequency and 3.4 GHz of turbo frequency)
    • Up to four NVIDIA Tesla T4 GPUs on an ECS
    • GPU hardware passthrough
    • Up to 8.1 TFLOPS of single-precision computing on a single GPU
    • Up to 130 TOPS of INT8 computing on a single GPU
    • 16 GiB of GDDR6 GPU memory with a bandwidth of 320 GiB/s on a single GPU
    • One built-in NVENC and two NVDEC GPUs
    +

    Supported Common Software

    +

    PI2 ECSs are used in GPU-based inference computing scenarios, such as image recognition, speech recognition, and natural language processing. The PI2 ECSs can also be used for light-load training.

    +

    PI2 ECSs support the following commonly used software:

    +
    • Deep learning frameworks, such as TensorFlow, Caffe, PyTorch, and MXNet
    +

    Notes

    +
    • After a PI2 ECS is stopped, basic resources including vCPUs, memory, and images are not billed, but its system disk is billed based on the disk capacity. If other products, such as EVS disks, EIP, and bandwidth are associated with the ECS, these products are billed separately.

      Resources are released after a PI2 ECS is stopped. If desired resources are insufficient when the PI2 ECS is started after being stopped, starting the ECS might fail. Therefore, if you need to use a PI2 ECS for a long time, keep the ECS running.

      +
      +
    +
    • PI2 ECSs support the following OSs:
      • Windows Server 2019 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.8 64bit
      +
    • PI2 ECSs support automatic recovery when the hosts accommodating such ECSs become faulty.
    • By default, PI2 ECSs created using a Windows public image have the Tesla driver installed.
    • By default, PI2 ECSs created using a Linux public image do not have a Tesla driver installed. After the ECS is created, install a driver on it for computing acceleration. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    • If a PI2 ECS is created using a private image, make sure that the Tesla driver was installed during the private image creation. If not, install the driver for computing acceleration after the ECS is created. For details, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0100005619.html b/ecs/umn/en-us_topic_0100005619.html new file mode 100644 index 000000000..a3c47932a --- /dev/null +++ b/ecs/umn/en-us_topic_0100005619.html @@ -0,0 +1,84 @@ + + +

    How Can I Log In to an ECS After Its System Disk Is Exchanged with That Attached to Another ECS Running the Same OS?

    +

    Symptom

    Two ECSs run the same OS, for example, both run Windows or Linux. The system disks attached to the two ECSs are exchanged offline. After the exchanging, the login keys of the ECSs may change. In such a case, how can I log in to the ECSs?

    +

    Before stopping an ECS for disk detachment, release the IP address assigned to the ECS using DHCP so that ECS can correctly obtain an IP address later. To do so, perform the following operations:

    +
    1. Log in to the Windows ECS.
    2. Run the following command to release the IP address:

      ipconfig /release

      +

      This operation will interrupt network connections and affect the use of the ECS. After the ECS is restarted, network connections will automatically recover.

      +
    +
    +
    +

    Windows

    For example, there are two Windows ECSs with parameters configured in Table 1.

    + +
    + + + + + + + + + + + + + +
    Table 1 Parameter configurations

    ECS

    +

    System Disk

    +

    Key Pair

    +

    ecs_01

    +

    vol_01

    +

    Keypair_01

    +

    ecs_02

    +

    vol_02

    +

    Keypair_02

    +
    +
    +

    System disk vol_01 is detached from ecs_01 offline and then attached to ecs_02 as the system disk. How can I log in to ecs_02?

    +
    The random password for logging in to ecs_02 must be resolved again. The procedure is as follows:
    1. Delete the initial password for logging in to ecs_02.

      Locate the row containing ecs_02, click More in the Operation column, and select Delete Password from the drop-down list. Then, click Delete.

      +

      ecs_02 must be in Stopped state.

      +
      +
    2. Start ecs_02.

      Locate the row containing ecs_02, click More in the Operation column, and select Start from the drop-down list. Then, in the Start ECS dialog box, click OK.

      +
    3. Obtain the password for logging in to ecs_02.
      1. Locate the row containing ecs_02, click More in the Operation column, and select Get Password from the drop-down list.
      2. Click Select File and upload private key file Keypair_02 of ecs_02.
      3. Click Get Password to obtain a new random password.
      +
    4. Use the random password obtained in step 3 to log in to ecs_02 with the system disk replaced.
    +
    +
    +

    Linux

    For example, there are two Linux ECSs with parameters configured in Table 2.

    + +
    + + + + + + + + + + + + + +
    Table 2 Parameter configurations

    ECS

    +

    System Disk

    +

    Key Pair

    +

    ecs_01

    +

    vol_01

    +

    Keypair_01

    +

    ecs_02

    +

    vol_02

    +

    Keypair_02

    +
    +
    +

    System disk vol_01 is detached from ecs_01 offline and then attached to ecs_02 as the system disk. How can I log in to ecs_02?

    +

    Use either of the following methods to log in to ecs_02:

    +
    • Use private key file Keypair_01 of ecs_01.
    • Use private key file Keypair_02 of ecs_02.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0101604501.html b/ecs/umn/en-us_topic_0101604501.html new file mode 100644 index 000000000..f5228072c --- /dev/null +++ b/ecs/umn/en-us_topic_0101604501.html @@ -0,0 +1,17 @@ + + +

    How Can I Create and Delete Tags and Search for ECSs by Tag?

    +

    Creating a Tag

    1. Log in to the management console.
    2. Select the region where the ECS is located.
    3. Under Computing, click Elastic Cloud Server.
    4. Click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click Tags and then Add Tag.
    6. Enter the tag key and value, and click OK.
    +
    +

    Searching for ECSs by Tag

    1. Log in to the management console.
    2. Select the region where the ECS is located.
    3. On the Elastic Cloud Server page, search for ECSs by tag.
    4. In the search bar, select Tag and then the tag key and value, and click OK.
    +
    +

    Deleting a Tag

    1. Log in to the management console.
    2. Select the region where the ECS is located.
    3. Click Elastic Cloud Server.
    4. Click the name of the target ECS.
    5. On the page providing details about the ECS, click Tags, locate the row containing the target tag, and click Delete in the Operation column.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0101604506.html b/ecs/umn/en-us_topic_0101604506.html new file mode 100644 index 000000000..9a5add8a0 --- /dev/null +++ b/ecs/umn/en-us_topic_0101604506.html @@ -0,0 +1,36 @@ + + +

    How Can I Obtain the MAC Address of My ECS?

    +

    This section describes how to obtain the MAC address of an ECS.

    +

    The MAC address of an ECS cannot be changed.

    +
    +

    Linux (CentOS 6)

    1. Log in to the Linux ECS.
    2. Run the following command to view the MAC address of the ECS:

      ifconfig

      +
      Figure 1 Obtaining the MAC address
      +
    +
    +

    Linux (CentOS 7)

    1. Log in to the Linux ECS.
    2. Run the following command to view the MAC address of the ECS:

      ifconfig

      +
      Figure 2 Obtaining the NIC information
      +
    3. Run the following command to view the MAC address of NIC eth0:

      ifconfig eth0 |egrep "ether"

      +
      Figure 3 Obtaining the MAC address of eth0
      +
    4. Obtain the returned MAC address.

      ifconfig eth0 |egrep "ether" |awk '{print $2}'

      +
      Figure 4 Obtaining the MAC address of eth0
      +
    +
    +

    Windows

    1. Press Win+R to start the Run text box.
    2. Enter cmd and click OK.
    3. Run the following command to view the MAC address of the ECS:

      ipconfig /all

      +

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0101604507.html b/ecs/umn/en-us_topic_0101604507.html new file mode 100644 index 000000000..8c36f2138 --- /dev/null +++ b/ecs/umn/en-us_topic_0101604507.html @@ -0,0 +1,47 @@ + + +

    How Can I Configure Port Redirection?

    +

    Requirement

    It is expected that the EIP and port on ECS 1 accessed from the Internet can be automatically redirected to the EIP and port on ECS 2.

    +
    +

    Windows

    For example, to redirect port 8080 on ECS 1 bound with EIP 192.168.10.43 to port 18080 on ECS 2 bound with EIP 192.168.10.222, perform the following operations on ECS 1.

    +

    Ensure that the desired ports have been enabled on the ECS security group and firewall.

    +
    +
    1. Open the cmd window on the ECS and run the following command: The ECS running Windows Server 2012 is used as an example.

      netsh interface portproxy add v4tov4 listenaddress=192.168.10.43 listenport=8080 connectaddress=192.168.10.222 connectport=18080

      +

      To cancel port redirection, run the following command:

      +

      netsh interface portproxy delete v4tov4 listenaddress=192.168.10.43 listenport=8080

      +
    2. Run the following command to view all port redirections configured on the ECS:

      netsh interface portproxy show v4tov4

      +
      Figure 1 Port redirections on Windows
      +
    +
    +

    Linux

    For example, to redirect port 1080 on ECS 1 to port 22 on ECS 2 with the following configurations:

    +

    Private IP address and EIP of ECS 1: 192.168.72.10 and 123.xxx.xxx.456

    +

    Private IP address of ECS 2: 192.168.72.20

    +
    • Ensure that the desired ports have been enabled on the ECS security group and firewall.
    • Ensure that the source/destination check function is disabled.

      On the ECS details page, click NICs and disable Source/Destination Check.

      +

      By default, the source/destination check is enabled, and the system checks whether source IP addresses contained in the packets sent by ECSs are correct. If the IP addresses are incorrect, the system does not allow the ECSs to send the packets. This mechanism prevents packet spoofing, thereby improving system security. However, this mechanism prevents the packet sender from receiving returned packets. Therefore, disable the source/destination check.

      +
    +
    +
    1. Log in to Linux ECS 1.

      1. Run the following command to modify the configuration file:

        vi /etc/sysctl.conf

        +
      2. Add net.ipv4.ip_forward = 1 to the file.
      3. Run the following command to complete the modification:

        sysctl -p /etc/sysctl.conf

        +
      +

    2. Run the following commands to add rules to the nat table in iptables so that the access to port 1080 on ECS 1 can be redirected to port 22 on ECS 2:

      iptables -t nat -A PREROUTING -d 192.168.72.10 -p tcp --dport 1080 -j DNAT --to-destination 192.168.72.20:22

      +

      iptables -t nat -A POSTROUTING -d 192.168.72.20 -p tcp --dport 22 -j SNAT --to 192.168.72.10

      +

    3. Run the following command to log in to port 1080 on ECS 1 for check:

      ssh -p 1080 123.xxx.xxx.456

      +
      Figure 2 Port redirections on Linux
      +

      Enter the password to log in to ECS 2 with hostname ecs-inner.

      +
      Figure 3 Logging in to ECS 2
      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0101604508.html b/ecs/umn/en-us_topic_0101604508.html new file mode 100644 index 000000000..0b6552e66 --- /dev/null +++ b/ecs/umn/en-us_topic_0101604508.html @@ -0,0 +1,17 @@ + + +

    Creating an Image

    +

    Scenarios

    You can use an existing ECS to create a system disk image, data disk image, and full-ECS image.

    +
    • System disk image: contains an OS and application software for running services. You can use a system disk image to create ECSs and migrate your services to the cloud.
    • Data disk image: contains only service data. You can create a data disk image from an ECS data disk. You can also use a data disk image to create EVS disks and migrate your service data to the cloud.
    • Full-ECS image: contains all the data of an ECS, including the data on the data disks attached to the ECS. A full-ECS image can be used to rapidly create ECSs with service data.
    +

    You can use a private image to change the OS. For instructions about how to create a private image, see Image Management Service User Guide.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Locate the row that contains the target ECS. Click More in the Operation column and select Manage Image/Disk > Create Image.
    5. Configure image information as prompted.
      • Source: ECS
      • ECS: Retain default settings.
      • Name: Customize your image name.
      +
    6. Click Create Now.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0101604511.html b/ecs/umn/en-us_topic_0101604511.html new file mode 100644 index 000000000..e7f5f43f2 --- /dev/null +++ b/ecs/umn/en-us_topic_0101604511.html @@ -0,0 +1,12 @@ + + +

    How Long Does It Take to Change an ECS OS?

    +

    Typically, the process of changing the OS of an ECS takes about 1 to 2 minutes. Stop the ECS, click More in the Operation column, and select Change OS from the drop-down list.

    +

    During this process, the ECS is in Changing OS state.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0101604512.html b/ecs/umn/en-us_topic_0101604512.html new file mode 100644 index 000000000..34ad2ad18 --- /dev/null +++ b/ecs/umn/en-us_topic_0101604512.html @@ -0,0 +1,13 @@ + + +

    How Long Does It Take to Reinstall an ECS OS?

    +

    Typically, the process of reinstalling the OS of an ECS takes about 1 to 2 minutes. Stop the ECS, click More in the Operation column, and select Reinstall OS in the drop-down list.

    +

    During this process, the ECS is in Reinstalling OS state.

    +

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0102391480.html b/ecs/umn/en-us_topic_0102391480.html new file mode 100644 index 000000000..936af6840 --- /dev/null +++ b/ecs/umn/en-us_topic_0102391480.html @@ -0,0 +1,36 @@ + + +

    Why Does It Take Longer to Create ECSs When I Use a Full-ECS Image?

    +

    Symptom

    When you use a full-ECS image that was created using a CSBS backup to create ECSs, the process is time-consuming or the system displays a message indicating that the image cannot be used to rapidly create ECSs.

    +
    +

    Cause Analysis

    If your full-ECS image is in the old backup format provided by CSBS, this issue occurs.

    +
    +
    • CSBS has a new backup format. You can rapidly create ECSs if the full-ECS image is in this format
    • This issue does not occur if a full-ECS image is created using a CBR backup.
    +
    +

    Solution Using CBR

    If you want to use a full-ECS image to rapidly create ECSs, ensure that the full-ECS image is created using a CSBS backup in the new format. The procedure is as follows:

    +
    • Scenario 1: The ECS based on which the target CSBS backup is created is available.

      In such a case, use the ECS to create a CBR backup and use this backup to create a full-ECS image. You can use this full-ECS image to rapidly create ECSs.

      +
      • For instructions about how to back up an ECS, see Cloud Backup and Recovery User Guide.
      • For instructions about how create a full-ECS image, see Image Management Service User Guide.
      +
    +
    • Scenario 2: The ECS based on which the target CSBS backup is created is unavailable.
      1. Use the full-ECS image to create a new ECS.
      2. Use an ECS to create a CBR backup.

        For details, see Cloud Backup and Recovery User Guide.

        +
      3. Use the CBR backup to create a full-ECS image.

        For details, see Image Management Service User Guide.

        +

        You can use the full-ECS image to rapidly create ECSs.

        +
      +
    +
    +

    Solution( Using CSBS)

    If you want to use a full-ECS image to rapidly create ECSs, ensure that the full-ECS image is created using a CSBS backup in the new format. The procedure is as follows:

    +
    • Scenario 1: The ECS based on which the target CSBS backup is created is available.

      Back up the original ECS on the Cloud Server Backup Service page and use the new format to create a full-ECS image. You can use this full-ECS image to rapidly create ECSs.

      +
      • For instructions about how to back up an ECS, see Cloud Server Backup Service User Guide.
      • For instructions about how create a full-ECS image, see Image Management Service User Guide.
      +
    +
    • Scenario 2: The ECS based on which the target CSBS backup is created is unavailable.
      1. Use the full-ECS image to create a new ECS.
      2. Back up the ECS.

        For details, see Cloud Server Backup Service User Guide.

        +
      3. Use the CSBS backup to create a full-ECS image.

        For details, see Image Management Service User Guide.

        +

        You can use the full-ECS image to rapidly create ECSs.

        +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0103285575.html b/ecs/umn/en-us_topic_0103285575.html new file mode 100644 index 000000000..ed37cc22e --- /dev/null +++ b/ecs/umn/en-us_topic_0103285575.html @@ -0,0 +1,98 @@ + + +

    How Do I Obtain My Disk Name in the ECS OS Using the Device Identifier Provided on the Console?

    +

    Scenarios

    You find that the disk name displayed on the ECS OS is different from that displayed on the management console and you cannot determine which disk name is correct. This section describes how to obtain the disk name used on an ECS OS according to the device identifier on the console.

    +
    +

    Obtaining the Disk ID of an ECS on the Console

    1. Log in to the management console.
    2. Under Computing, click Elastic Cloud Server.
    3. Click the target ECS name in the ECS list.

      The page providing details about the ECS is displayed.

      +
    4. Click the Disks tab and then to expand the disk information.
    5. Check the device type and ID of the disk.

      If Device Identifier is not displayed on the web page, stop the ECS and restart it.

      +
      + +
    +
    +

    Using a Serial Number to Obtain the Disk Name (Windows)

    If a serial number is displayed on the console, use either of the following methods to obtain the disk name.

    +

    cmd

    +
    1. Start cmd in a Windows OS as an administrator and run either of the following commands:

      wmic diskdrive get serialnumber

      +

      wmic path win32_physicalmedia get SerialNumber

      +

      wmic path Win32_DiskDrive get SerialNumber

      +

      A serial number is the first 20 digits of a disk UUID.

      +
      +

      For example, if the serial number of a VBD disk on the console is 97c876c0-54b3-460a-b, run either of the following commands to obtain the serial number of the disk on the ECS OS:

      +

      wmic diskdrive get serialnumber

      +

      wmic path win32_physicalmedia get SerialNumber

      +

      wmic path Win32_DiskDrive get SerialNumber

      +

      Information similar to the following is displayed:

      +
      Figure 1 Obtaining the disk serial number
      +
    2. Run the following command to check the disk corresponding to the serial number:

      wmic diskdrive get Name, SerialNumber

      +
      Figure 2 Checking the disk corresponding to the serial number
      +
    +

    PowerShell

    +
    1. Start PowerShell as an administrator in a Windows OS.
    2. Run the following command to check the disk on which the logical disk is created:
      • Windows Server 2012 or later
        1. Run the following command to check the disk on which the logical disk is created:

          Get-CimInstance -ClassName Win32_LogicalDiskToPartition |select Antecedent, Dependent |fl

          +

          As shown in Figure 3, the disk is Disk 0.

          +
        2. Run the following command to view the mapping between the serial number and the disk:

          Get-Disk |select Number, SerialNumber

          +

          As shown in Figure 3, the disk is Disk 0.

          +
          Figure 3 Viewing the disk on which the logical disk is created
          +
        +
      • Versions earlier than Windows 2012
        1. Run the following command to check the disk on which the logical disk is created:

          Get-WmiObject -Class Win32_PhysicalMedia |select Tag, Serialnumber

          +
        2. Run the following command to view the mapping between the serial number and the disk:

          Get-WmiObject -Class Win32_LogicalDiskToPartition |select Antecedent, Dependent |fl

          +
        +
      +
    +
    +

    Using a Serial Number to Obtain a Disk Device Name (Linux)

    If a serial number is displayed on the console, run either of the following commands to obtain the device name.

    +

    # udevadm info --query=all --name=/dev/xxx | grep ID_SERIAL

    +

    # ll /dev/disk/by-id/*

    +

    A serial number is the first 20 digits of a disk UUID.

    +
    +

    For example, if the serial number of the VBD disk is 62f0d06b-808d-480d-8, run either of the following commands:

    +

    # udevadm info --query=all --name=/dev/vdb | grep ID_SERIAL

    +

    # ll /dev/disk/by-id/*

    +

    The following information is displayed:

    +
    [root@ecs-ab63 ~]# udevadm info --query=all --name=/dev/vdb | grep ID_SERIAL
    +E: ID_SERIAL=62f0d06b-808d-480d-8
    +[root@ecs-ab63 ~]# ll /dev/disk/by-id/*
    +lrwxrwxrwx 1 root root  9 Dec 30 15:56 /dev/disk/by-id/virtio-128d5bfd-f215-487f-9 -> ../../vda
    +lrwxrwxrwx 1 root root 10 Dec 30 15:56 /dev/disk/by-id/virtio-128d5bfd-f215-487f-9-part1 -> ../../vda1
    +lrwxrwxrwx 1 root root  9 Dec 30 15:56 /dev/disk/by-id/virtio-62f0d06b-808d-480d-8 -> ../../vdb
    +

    /dev/vdb is the disk device name.

    +
    +

    Using a VBD to Obtain a Disk Device Name (Linux)

    1. Run the following command to use a BDF to obtain the device name:

      ll /sys/bus/pci/devices/BDF disk ID/virtio*/block

      +

      For example, if the BDF disk ID of the VBD disk is 0000:02:02.0, run the following command to obtain the device name:

      +

      ll /sys/bus/pci/devices/0000:02:02.0/virtio*/block

      +

      The following information is displayed:

      +
      [root@ecs-ab63 ~]# ll /sys/bus/pci/devices/0000:02:02.0/virtio*/block
      +total 0
      +drwxr-xr-x 8 root root 0 Dec 30 15:56 vdb
      +

      /dev/vdb is the disk device name.

      +
    +
    +

    Using a WWN to Obtain the Disk Name (Windows)

    1. Obtain the device identifier on the console by referring to Obtaining the Disk ID of an ECS on the Console.
    2. Manually convert the WWN.

      For example, the obtained WWN (device identifier) is 688860300003252ffa16520d39517815.

      +
      1. Obtain the 21st to 17th digits that are counted backwards (3252f).
      2. Convert a hexadecimal (3252f) to a decimal (206127).
      +
    3. Start PowerShell as an administrator in a Windows OS.
    4. Run the following command:

      Get-CimInstance Win32_DiskDrive | Select-Object DeviceID, SerialNumber

      +
    5. In the command output, the disk whose serial number ends with 206127 is the disk corresponding to the WWN.
      Figure 4 Disk with the serial number ending with 206127
      +
    +
    +

    Using a WWN to Obtain a Disk Device Name (Linux)

    1. Log in to the ECS as user root.
    2. Run the following command to view the disk device name:

      ll /dev/disk/by-id |grep WWN|grep scsi-3

      +

      For example, if the WWN obtained on the console is 6888603000008b32fa16688d09368506, run the following command:

      +

      ll /dev/disk/by-id |grep 6888603000008b32fa16688d09368506|grep scsi-3

      +

      The following information is displayed:

      +
      [root@host-192-168-133-148 block]# ll /dev/disk/by-id/ |grep 6888603000008b32fa16688d09368506 |grep scsi-3
      +lrwxrwxrwx 1 root root  9 May 21 20:22 scsi-36888603000008b32fa16688d09368506 -> ../../sda
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0105130172.html b/ecs/umn/en-us_topic_0105130172.html new file mode 100644 index 000000000..219c1b38e --- /dev/null +++ b/ecs/umn/en-us_topic_0105130172.html @@ -0,0 +1,146 @@ + + +

    Why Can't an EIP Be Pinged?

    +

    Symptom

    After you purchase an EIP and bind it to an ECS, the ping operation to the EIP fails, or the ECS fails to access the Internet.

    +
    +

    Fault Locating

    The following fault causes are sequenced based on their occurrence probability.

    +

    If the fault persists after you have ruled out a cause, check other causes.

    +
    Figure 1 Method of locating the failure to ping an EIP
    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Method of locating the failure to ping an EIP

    Possible Cause

    +

    Solution

    +

    ICMP access rules are not added to the security group.

    +

    Add ICMP access rules to the security group. For details, see Checking Security Group Rules.

    +

    Ping operations are prohibited on the firewall.

    +

    Allow ping operations on the firewall. For details, see Checking Firewall Settings.

    +

    Ping operations are prohibited on the ECS.

    +

    Allow ping operations on the ECS. For details, see Checking Whether Ping Operations Have Been Disabled on the ECS.

    +

    Network ACL is associated.

    +

    If the VPC is associated with a network ACL, check the network ACL rules. For details, see Checking ACL Rules.

    +

    A network exception occurred.

    +

    Use another ECS in the same region to check whether the local network is functional. For details, see Checking Whether the Network Is Functional.

    +

    Routes are incorrectly configured if multiple NICs are used.

    +

    If the network is inaccessible due to an extension NIC, the fault is generally caused by incorrect route configurations. To resolve this issue, see Checking the ECS Route Configuration If Multiple NICs Are Used.

    +
    +
    +
    +

    Checking Security Group Rules

    The ping operations use the ICMP protocol. Check whether the security group accommodating the ECS allows ICMP traffic in the inbound direction.

    +
    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the Security Groups tab, expand the information of the security group, and view security group rules.
    6. Click the security group ID.

      The system automatically switches to the Security Group page.

      +
    7. On the Inbound Rules tab, click Add Rule. In the displayed dialog box, set required parameters to add an inbound rule. +
      + + + + + + + + + + + +
      Table 2 Security group rules

      Transfer Direction

      +

      Type

      +

      Protocol/Port Range

      +

      Source

      +

      Inbound

      +

      IPv4

      +

      ICMP/Any

      +

      0.0.0.0/0

      +

      0.0.0.0/0 indicates all IP addresses.

      +
      +
      +
    8. Click OK to complete the security rule configuration.
    +
    +

    Checking Firewall Settings

    If a firewall is enabled on the ECS, check whether the firewall blocks the ping operations.

    +
    Linux
    1. Consider CentOS 7 as an example. Run the following command to check the firewall status:

      firewall-cmd --state

      +

      If running is displayed in the command output, the firewall has been enabled.

      +
    1. Check whether there is any ICMP rule blocking the ping operations.

      iptables -L

      +

      If the command output shown in Figure 2 is displayed, there is no ICMP rule blocking the ping operations.

      +
      Figure 2 Checking firewall rules
      +

      If the ping operations are blocked by an ICMP rule, run the following commands to modify the rule for unblocking:

      +

      iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

      +

      iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

      +
    +
    +
    Windows
    1. Log in to the Windows ECS, click the Windows icon in the lower left corner of the desktop, and choose Control Panel > Windows Firewall.
    2. Click Turn Windows Firewall on or off.

      View and set the firewall status.

      +
    3. If the firewall is On, go to 4.
    4. Check the ICMP rule statuses in the firewall.
      1. In the navigation pane on the Windows Firewall page, click Advanced settings.
      2. Enable the following rules:

        Inbound Rules: File and Printer Sharing (Echo Request - ICMPv4-In)

        +

        Outbound Rules: File and Printer Sharing (Echo Request - ICMPv4-Out)

        +

        If IPv6 is enabled, enable the following rules:

        +

        Inbound Rules: File and Printer Sharing (Echo Request - ICMPv6-In)

        +

        Outbound Rules: File and Printer Sharing (Echo Request - ICMPv6-Out)

        +
        Figure 3 Inbound Rules
        +
        Figure 4 Outbound Rules
        +
      +
    +
    +
    +

    Checking Whether Ping Operations Have Been Disabled on the ECS

    Windows

    +

    Enable ping operations using the CLI.

    +
    1. Start the Run dialog box. Enter cmd and press Enter.
    2. Run the following command to enable ping operations:

      netsh firewall set icmpsetting 8

      +
    +

    Linux

    +
    Check the ECS kernel parameters.
    1. Check the net.ipv4.icmp_echo_ignore_all value in the /etc/sysctl.conf file. Value 0 indicates that ping operations are allowed, and value 1 indicates that ping operations are prohibited.
    2. Allow ping operations.
      • Run the following command to temporarily allow the ping operations:

        #echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

        +
      • Run the following command to permanently allow the ping operations:

        net.ipv4.icmp_echo_ignore_all=0

        +
      +
    +
    +
    +

    Checking ACL Rules

    By default, no ACL is configured for a VPC. If a network ACL is associated with a VPC, check the ACL rules.

    +
    1. Check whether the subnet of the ECS has been associated with a network ACL.

      If an ACL name is displayed, the network ACL has been associated with the ECS.

      +
    2. Click the ACL name to view its status.
    3. If the network ACL is enabled, add an ICMP rule to allow traffic.

      The default network ACL rule denies all incoming and outgoing packets. If a network ACL is disabled, the default rule is still effective.

      +
      +
    +
    +

    Checking Whether the Network Is Functional

    1. Use another ECS in the same region to check whether the local network is functional.

      Use another ECS in the same region to ping the affected EIP. If the EIP can be pinged, the VPC is functional. In such a case, rectify the local network fault and ping the affected EIP again.

      +
    2. Check whether the link is accessible.

      A ping failure is caused by packet loss or long delay, which may be caused by link congestion, link node faults, or heavy load on the ECS.

      +
    +
    +

    Checking the ECS Route Configuration If Multiple NICs Are Used

    Generally, the default route of an OS will preferentially select the primary NIC. If an extension NIC is selected in a route and the network malfunctions, this issue is typically caused by incorrect route configuration.

    +
    • If the ECS has multiple NICs, check whether the default route is available.
      1. Log in to the ECS and run the following command to check whether the default route is available:

        ip route

        +
        Figure 5 Default route
        +
      2. If the route is unavailable, run the following command to add it:

        ip route add default via XXXX dev eth0

        +

        In the preceding command, XXXX specifies a gateway IP address.

        +
        +
      +
    +
    +
    • If the ECS has multiple NICs and the EIP is bound to an extension NIC, configure policy routing on the ECS for network communication with the extension NIC.
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0105130173.html b/ecs/umn/en-us_topic_0105130173.html new file mode 100644 index 000000000..028271f12 --- /dev/null +++ b/ecs/umn/en-us_topic_0105130173.html @@ -0,0 +1,40 @@ + + +

    Why Can't I Use DHCP to Obtain a Private IP Address?

    +

    Symptom

    You attempt to use DHCP to obtain a private IP address, but you cannot obtain the IP address.

    +
    • For Linux, a private IP address cannot be assigned.
    • For Windows, a private IP address is changed to an IP address in the 169.254 network segment, which is different from the private IP address displayed on the ECS console.
    +
    +

    Solution

    1. Check whether dhclient is running in the ECS.

      1. Log in to the ECS and run the following command:

        ps -ef | grep dhclient

        +
      2. If the process is not running, log in to the ECS, and restart the ECS NIC or initiate a DHCP request.
        • Linux

          Run the dhclient eth0, ifdown eth0 + ifup eth0, or dhcpcd eth0 command.

          +
        • Windows

          Right-click a local area connection and choose Disable from the shortcut menu. Then, choose Enable.

          +

          +
        +
      +

    2. Handle the issue if the DHCP client fails to work for a long time (for example, the issue recurs after the NIC is restarted).

      1. Configure a static IP address.
        • Windows
          1. Right-click Local Area Connection and choose Properties from the shortcut menu.
          2. In the displayed dialog box, select Internet Protocol Version 4 (TCP/IPv4), click Properties, and modify parameter settings.

            +
          +
        • Linux
          1. Log in to the ECS and run the following command to modify parameter settings:

            vi /etc/sysconfig/network-scripts/ifcfg-eth0

            +
            BOOTPROTO=static
            +IPADDR=192.168.1.100 #IP address (modified)
            +NETMASK=255.255.255.0 #Mask (modified)
            +GATEWAY=192.168.1.1 #Gateway IP address (modified)
            +
          2. Restart the ECS to make the network settings take effect.
          +
        +
      2. Select an image in which DHCP runs stably.

        Use the public images, which support DHCP, provided on the management console.

        +

        DHCP needs to be configured only when Network is used for network management. DHCP does not need to be configured when NetworkManager is used for network management.

        +
      +

    3. If the fault persists, obtain the messages in /var/log/messages on the affected ECS, use the MAC address of the affected NIC to filter the desired log, and check whether there is any process that prevents DHCP from obtaining an IP address.
    4. If the fault persists, contact customer service for technical support.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0105215483.html b/ecs/umn/en-us_topic_0105215483.html new file mode 100644 index 000000000..f17f9c6de --- /dev/null +++ b/ecs/umn/en-us_topic_0105215483.html @@ -0,0 +1,28 @@ + + +

    Passwords and Key Pairs

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0107412162.html b/ecs/umn/en-us_topic_0107412162.html new file mode 100644 index 000000000..e87cf9a7f --- /dev/null +++ b/ecs/umn/en-us_topic_0107412162.html @@ -0,0 +1,32 @@ + + +

    What Should I Do If Error "command ´gcc´ failed with exit status 1" Occurs During PIP-based Software Installation

    +

    Symptom

    When installing the Python library software, you need to configure the PIP source. Take the official image source as an example:
    [root@test home]# cat /root/.pip/pip.conf 
    +[global]
    +index-url = https://pypi.python.org/simple
    +trusted-host = pypi.python.org
    +
    +

    During the installation, the system displays the message "command ´gcc´ failed with exit status 1". However, GCC has been installed by running the yum command before the Python library software is installed using the PIP.

    +
    Figure 1 Installation error
    +
    +

    Possible Causes

    openssl-devel is not supported.

    +
    +

    Solution

    The following operations use psutil as an example:

    +
    1. Run the following command to install openssl-devel:

      yum install gcc libffi-devel python-devel openssl-devel -y

      +
    2. Use PIP to install the Python library software again. The error message is cleared.
      Figure 2 Successful installation
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0107490388.html b/ecs/umn/en-us_topic_0107490388.html new file mode 100644 index 000000000..21ac7230c --- /dev/null +++ b/ecs/umn/en-us_topic_0107490388.html @@ -0,0 +1,25 @@ + + +

    What Should I Do If Packages Are Downloaded Using PIP or wget at a Low Rate?

    +

    Symptom

    When a user runs the wget command to download software packages, the download rate is far less than the bandwidth.

    +
    Figure 1 wget-based package downloading
    +
    +

    Possible Causes

    The official PIP website is accessed using HTTPS. Each time PIP is used to install a third-party Python module, the source code package must be downloaded at the official PIP website. Therefore, openssl packages are required.

    +
    +

    Solution

    Run the following command to install openssl packages:

    +

    yum install openssl openssl-devel

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0107659745.html b/ecs/umn/en-us_topic_0107659745.html new file mode 100644 index 000000000..69a2dfa68 --- /dev/null +++ b/ecs/umn/en-us_topic_0107659745.html @@ -0,0 +1,243 @@ + + +

    How Can I View and Modify Kernel Parameters of a Linux ECS?

    +

    Modify the kernel parameters only if the parameter settings affect your services. Kernel parameters vary depending on OS versions. If the parameter settings must be modified,

    +
    • Ensure that the target parameter settings meet service requirements.
    • Modify the correct kernel parameters. For details about common kernel parameters, see Table 1.
    • Back up key ECS data before modifying kernel parameter settings.
    +

    Background

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Common Linux kernel parameters

    Parameter

    +

    Description

    +

    net.core.rmem_default

    +

    Specifies the default size (in bytes) of the window for receiving TCP data.

    +

    net.core.rmem_max

    +

    Specifies the maximum size (in bytes) of the window for receiving TCP data.

    +

    net.core.wmem_default

    +

    Specifies the default size (in bytes) of the window for transmitting TCP data.

    +

    net.core.wmem_max

    +

    Specifies the maximum size (in bytes) of the window for transmitting TCP data.

    +

    net.core.netdev_max_backlog

    +

    Specifies the maximum number of packets that can be sent to a queue when the rate at which each network port receives packets is faster than the rate at which the kernel processes these packets.

    +

    net.core.somaxconn

    +

    Defines the maximum length of the listening queue for each port in the system. This parameter applies globally.

    +

    net.core.optmem_max

    +

    Specifies the maximum size of the buffer allowed by each socket.

    +

    net.ipv4.tcp_mem

    +

    Uses the TCP stack to show memory usage in memory pages (4 KB generally).

    +

    The first value is the lower limit of memory usage.

    +

    The second value is the upper limit of the load added to the buffer when the memory is overloaded.

    +

    The third value is the upper limit of memory usage. When this value is reached, packets can be discarded to reduce memory usage. For a large BDP, increase the parameter value as needed. The unit of this parameter is memory page but not byte.

    +

    net.ipv4.tcp_rmem

    +

    Specifies the memory used by sockets for automatic optimization.

    +

    The first value is the minimum number of bytes allocated to the socket buffer for receiving data.

    +

    The second value is the default value, which is overwritten by rmem_default. The buffer size can increase to this value when the system load is not heavy.

    +

    The third value is the maximum number of bytes allocated to the socket buffer for receiving data. This value is overwritten by rmem_max.

    +

    net.ipv4.tcp_wmem

    +

    Specifies the memory used by sockets for automatic optimization.

    +

    The first value is the minimum number of bytes allocated to the socket buffer for transmitting data.

    +

    The second value is the default value, which is overwritten by wmem_default. The buffer size can increase to this value when the system load is not heavy.

    +

    The third value is the maximum number of bytes allocated to the socket buffer for transmitting data. This value is overwritten by wmem_max.

    +

    net.ipv4.tcp_keepalive_time

    +

    Specifies the interval at which keepalive detection messages are sent in seconds for checking TCP connections.

    +

    net.ipv4.tcp_keepalive_intvl

    +

    Specifies the interval at which keepalive detection messages are resent in seconds when no response is received.

    +

    net.ipv4.tcp_keepalive_probes

    +

    Specifies the maximum number of keepalive detection messages that are sent to determine a TCP connection failure.

    +

    net.ipv4.tcp_sack

    +

    Enables selective acknowledgment (value 1 indicates enabled). This configuration allows the transmitter to resend only lost packets, thereby improving system performance. However, this configuration will increase the CPU usage. You are suggested to enable selective acknowledgment for WAN communication.

    +

    net.ipv4.tcp_fack

    +

    Enables forwarding acknowledgment for selective acknowledgment (SACK), thereby reducing congestion. You are suggested to enable forwarding acknowledgment.

    +

    net.ipv4.tcp_timestamps

    +

    Specifies a TCP timestamp, which will add 12 bytes in the TCP packet header. This configuration calculates RTT using RFC1323, a more precise retransmission method upon timeout than retransmission. You are suggested to use this configuration for higher system performance.

    +

    net.ipv4.tcp_window_scaling

    +

    Enables RFC1323-based window scaling by setting the parameter value to 1 if the TCP window is larger than 64 KB. The maximum TCP window is 1 GB. This parameter takes effect only when window scaling is enabled on both ends of the TCP connection.

    +

    net.ipv4.tcp_syncookies

    +

    Specifies whether to enable TCP synchronization (syncookie). This configuration prevents socket overloading when a large number of connections are attempted to set up. CONFIG_SYN_COOKIES must be enabled in the kernel for compilation. The default value is 0, indicating that TCP synchronization is disabled.

    +

    net.ipv4.tcp_tw_reuse

    +

    Specifies whether a TIME-WAIT socket (TIME-WAIT port) can be used for new TCP connections.

    +
    NOTE:

    This parameter cannot be set to 1 if NAT is enabled. Otherwise, an error will occur in remote ECS logins.

    +
    +

    net.ipv4.tcp_tw_recycle

    +

    Allows fast recycle of TIME-WAIT sockets.

    +
    NOTE:

    Do not set this parameter to 1 if NAT is enabled. Otherwise, an error will occur during remote ECS logins.

    +
    +

    net.ipv4.tcp_fin_timeout

    +

    Specifies the time (in seconds) during which a socket TCP connection that is disconnected from the local end remains in the FIN-WAIT-2 state. Process suspension may be caused by the disconnection from the peer end, continuous connection from the peer end, or other reasons.

    +

    net.ipv4.ip_local_port_range

    +

    Specifies local port numbers allowed by TCP/UDP.

    +

    net.ipv4.tcp_max_syn_backlog

    +

    Specifies the maximum number of connection requests that are not acknowledged by the peer end and that can be stored in the queue. The default value is 1024. If the server is frequently overloaded, try to increase the value.

    +

    net.ipv4.tcp_low_latency

    +

    This option should be disabled if the TCP/IP stack is used for high throughput, low latency.

    +

    net.ipv4.tcp_westwood

    +

    Enables the congestion control algorithm on the transmitter end to evaluate throughput and improve the overall bandwidth utilization. You are suggested to enable the congestion control algorithm for WAN communication.

    +

    net.ipv4.tcp_bic

    +

    Enables binary increase congestion for fast long-distance networks so that the connections with operations being performed at a rate of Gbit/s can be functional. You are suggested to enable binary increase congestion for WAN communication.

    +

    net.ipv4.tcp_max_tw_buckets

    +

    Specifies the number of TIME_WAIT buckets, which defaults to 180000. If the number of buckets exceeds the default value, extra ones will be cleared.

    +

    net.ipv4.tcp_synack_retries

    +

    Specifies the number of times that SYN+ACK packets are retransmitted in SYN_RECV state.

    +

    net.ipv4.tcp_abort_on_overflow

    +

    When this parameter is set to 1, if the system receives a large number of requests within a short period of time but fails to process them, the system will send reset packets to terminate the connections. It is recommended that you improve system processing capabilities by optimizing the application efficiency instead of performing reset operations.

    +

    Default value: 0

    +

    net.ipv4.route.max_size

    +

    Specifies the maximum number of routes allowed by the kernel.

    +

    net.ipv4.ip_forward

    +

    Forward packets between interfaces.

    +

    net.ipv4.ip_default_ttl

    +

    Specifies the maximum number of hops that a packet can pass through.

    +

    net.netfilter.nf_conntrack_tcp_timeout_established

    +

    Clears iptables connections that are inactive for a specific period of time.

    +

    net.netfilter.nf_conntrack_max

    +

    Specifies the maximum value of hash entries.

    +
    +
    +
    +

    Viewing Kernel Parameters

    • Method 1: Run the cat command in /proc/sys to view file content.

      /proc/sys/ is a pseudo directory generated after the Linux kernel is started. The net folder in this directory stores all kernel parameters that have taken effect in the system. The directory tree structure is determined based on complete parameter names. For example, net.ipv4.tcp_tw_recycle corresponds to the /proc/sys/net/ipv4/tcp_tw_recycle file, and the content of the file is the parameter value.

      +

      Example:

      +

      To view the net.ipv4.tcp_tw_recycle value, run the following command:

      +

      cat /proc/sys/net/ipv4/tcp_tw_recycle

      +
    • Method 2: Use the /etc/sysctl.conf file.

      Run the following command to view all parameters that have taken effect in the system:

      +

      /usr/sbin/sysctl -a

      +
      net.ipv4.tcp_syncookies = 1
      +net.ipv4.tcp_max_tw_buckets = 4096
      +net.ipv4.tcp_tw_reuse = 1
      +net.ipv4.tcp_tw_recycle = 1
      +net.ipv4.tcp_keepalive_time = 1800
      +net.ipv4.tcp_fin_timeout = 30
      +......
      +net.ipv4.tcp_keepalive_time = 1200
      +net.ipv4.ip_local_port_range = 1024 65000
      +net.ipv4.tcp_max_syn_backlog = 8192
      +net.ipv4.tcp_rmem = 16384 174760 349520
      +net.ipv4.tcp_wmem = 16384 131072 262144
      +net.ipv4.tcp_mem = 262144 524288 1048576
      +......
      +
    +
    +

    Modifying Kernel Parameter Settings

    • Method 1: Run the echo command in /proc/sys to modify the file for the target kernel parameters.

      The parameter values changed using this method take effect only during the current running and will be reset after the system is restarted. To make the modification take effect permanently, see method 2.

      +

      /proc/sys/ is a pseudo directory generated after the Linux kernel is started. The net folder in this directory stores all kernel parameters that have taken effect in the system. The directory tree structure is determined based on complete parameter names. For example, net.ipv4.tcp_tw_recycle corresponds to the /proc/sys/net/ipv4/tcp_tw_recycle file, and the content of the file is the parameter value.

      +

      Example:

      +

      To change the net.ipv4.tcp_tw_recycle value to 0, run the following command:

      +

      echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle

      +
    • Method 2: Use the /etc/sysctl.conf file.
      The parameter values changed using this method take effect permanently.
      1. Run the following command to change the value of a specified parameter:

        /sbin/sysctl -w kernel.domainname="example.com"

        +

        Example:

        +

        sysctl -w net.ipv4.tcp_tw_recycle="0"

        +
      2. Run the following command to change the parameter value in the /etc/sysctl.conf file:

        vi /etc/sysctl.conf

        +
      3. Run the following command for the configuration to take effect:

        /sbin/sysctl -p

        +
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0108255889.html b/ecs/umn/en-us_topic_0108255889.html new file mode 100644 index 000000000..e04e268e5 --- /dev/null +++ b/ecs/umn/en-us_topic_0108255889.html @@ -0,0 +1,46 @@ + + +

    Viewing Failures

    +

    Scenarios

    The Failures area shows the tasks that failed to process due to an error, including the task name and status. Failures is displayed on the management console if a task failed. This section describes how to view failures.

    +
    +

    Failure Types

    Table 1 lists the types of failures that can be recorded in the Failures area.

    + +
    + + + + + + + + + + +
    Table 1 Failure types

    Failure Type

    +

    Description

    +

    Creation failures

    +

    A task failed to process. For a failed task, the system rolls back and displays an error code, for example, Ecs.0013 Insufficient EIP quota. See How Do I Handle Error Messages Displayed on the Management Console? for troubleshooting.

    +

    Operation failures

    +
    • Modifying ECS specifications

      If an ECS specifications modification failed, this operation is recorded in Failures.

      +
    +
    +
    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. View Failures on the right side of common operations.
      Figure 1 Failures
      +
    5. Click the number displayed in the Failures area to view details about the tasks.
      • Creation Failures: show the tasks that are being created and those failed to create.
      • Operation Failures: show the tasks with errors, including the operations performed on the tasks and error codes. Such information can be used for rapid fault locating.
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0114225937.html b/ecs/umn/en-us_topic_0114225937.html new file mode 100644 index 000000000..8d3fe2f67 --- /dev/null +++ b/ecs/umn/en-us_topic_0114225937.html @@ -0,0 +1,56 @@ + + +

    Why Does a Disk Attached to a Windows ECS Go Offline?

    +

    Symptom

    A disk attached to a Windows ECS goes offline, and the system displays the message "The disk is offline because of policy set by an administrator."

    +
    Figure 1 Offline disk
    +
    +

    Possible Causes

    Windows has three types of SAN policies: OnlineAll, OfflineShared, and OfflineInternal.

    + +
    + + + + + + + + + + + + + +
    Table 1 SAN policies

    SAN Policy

    +

    Description

    +

    OnlineAll

    +

    Indicates that all newly detected disks are automatically brought online.

    +

    OfflineShared

    +

    Indicates that all newly detected disks on sharable buses, such as FC or iSCSI, are offline by default, whereas disks on non-sharable buses are online.

    +

    OfflineInternal

    +

    Indicates that all newly detected disks are offline.

    +
    +
    +

    The SAN policy of certain Windows OSs, such as Windows Server 2008/2012 Enterprise Edition and Data Center Edition, is OfflineShared by default.

    +
    +

    Solution

    Use the disk partition management tool DiskPart to obtain and set the SAN policy on the ECS to OnlineAll.

    +
    1. Log in to the Windows ECS.
    2. Press Win+R to run cmd.exe.
    3. Run the following command to access DiskPart:

      diskpart

      +
    4. Run the following command to view the SAN policy on the ECS:
      san
      • If the SAN policy is OnlineAll, run the exit command to exit DiskPart.
      +
      • If the SAN policy is not OnlineAll, go to step 5.
      +
      +
    5. Run the following command to change the SAN policy to OnlineAll:

      san policy=onlineall

      +
    6. (Optional) Use the ECS with the SAN policy changed to create a private image so that the configuration takes effect permanently. After an ECS is created using this private image, the disks attached to the ECS are online by default. You only need to initialize them.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0115820205.html b/ecs/umn/en-us_topic_0115820205.html new file mode 100644 index 000000000..996a7292f --- /dev/null +++ b/ecs/umn/en-us_topic_0115820205.html @@ -0,0 +1,393 @@ + + +

    How Can I Test Network Performance?

    +

    Use netperf and iperf3 to test network performance between ECSs. The test operations include preparations, TCP bandwidth test, UDP PPS test, and latency test.

    +

    Background

    • Tested ECS: an ECS that is tested for network performance. Such an ECS functions as the client (TX end) or server (RX end) in netperf tests.
    • Auxiliary ECS: an ECS that is used to exchange test data with the tested ECS. The auxiliary ECS functions as the client (TX end) or server (RX end) in netperf tests.
    • Table 1 and Table 2 list the common netperf and iperf3 parameters. +
      + + + + + + + + + + + + + + + + + + + +
      Table 1 Common netperf parameters

      Parameter

      +

      Description

      +

      -p

      +

      Port number

      +

      -H

      +

      IP address of the RX end

      +

      -t

      +

      Protocol used in packet transmitting, the value of which is TCP_STREAM in bandwidth tests

      +

      -l

      +

      Test duration

      +

      -m

      +

      Data packet size, which is suggested to be 1440 in bandwidth tests

      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Common iperf3 parameters

      Parameter

      +

      Description

      +

      -p

      +

      Port number

      +

      -c

      +

      IP address of the RX end

      +

      -u

      +

      UDP packets

      +

      -b

      +

      TX bandwidth

      +

      -t

      +

      Test duration

      +

      -l

      +

      Data packet size, which is suggested to be 16 in PPS tests

      +

      -A

      +

      ID of the vCPU used by iperf3

      +

      In this section, the maximum number of 16 vCPUs is used as an example for each ECS. If an ECS has 8 vCPUs, the -A value ranges from 0 to 7.

      +
      +
      +
    +
    +

    Test Preparations

    1. Prepare ECSs.

      Ensure that both type and specifications of the tested ECS and auxiliary ECSs are the same. In addition, ensure that these ECSs are deployed in the same ECS group with anti-affinity enabled. +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 Preparations

      Category

      +

      Quantity

      +

      Image

      +

      Specifications

      +

      IP Address

      +

      Tested ECS

      +

      1

      +

      CentOS 7.4 64bit (recommended)

      +

      At least eight vCPUs

      +

      192.168.2.10

      +

      Auxiliary ECS

      +

      8

      +

      CentOS 7.4 64bit (recommended)

      +

      At least 8 vCPUs

      +

      192.168.2.11-192.168.2.18

      +
      +
      +
      +

    2. Install the netperf, iperf3, and sar test tools on both the tested ECS and auxiliary ECSs.

      Table 4 lists the procedures for installing these tools.

      + +
      + + + + + + + + + + + + + +
      Table 4 Installing test tools

      Tool

      +

      Procedure

      +

      netperf

      +
      1. Run the following command to install gcc:

        yum -y install unzip gcc gcc-c++

        +
      2. Run the following command to download the netperf installation package:

        wget --no-check-certificate https://github.com/HewlettPackard/netperf/archive/refs/tags/netperf-2.7.0.zip

        +
      3. Run the following commands to decompress the installation package and install netperf:

        unzip netperf-2.7.0.zip

        +

        cd netperf-netperf-2.7.0/

        +

        ./configure && make && make install

        +
      +

      iperf3

      +
      1. Run the following command to download the iperf3 installation package:

        wget --no-check-certificate https://codeload.github.com/esnet/iperf/zip/master -O iperf3.zip

        +
      2. Run the following commands to decompress the installation package and install iperf3:

        unzip iperf3.zip

        +

        cd iperf-master/

        +

        ./configure && make && make install

        +
      +

      sar

      +

      Run the following command to install sar:

      +

      yum -y install sysstat

      +
      +
      +

    3. Enable NIC multi-queue.

      Perform the following operations on both tested ECS and auxiliary ECSs.

      +
      1. Run the following command to check the number of queues supported by the ECSs:

        ethtool -l eth0 | grep -i Pre -A 5 | grep Combined

        +
      2. Run the following command to enable NIC multi-queue:

        ethtool -L eth0 combined X

        +

        In the preceding command, X is the number of queues obtained in 3.a.

        +
      +

    +
    +

    TCP Bandwidth Test (Using netperf)

    Perform the test on multiple flows. This section considers 16 flows that are evenly distributed to eight ECSs, as an example.

    +
    1. Test the TCP TX bandwidth.

      1. Run the following commands on all auxiliary ECSs to start the netserver process:

        netserver -p 12001

        +

        netserver -p 12002

        +

        In the preceding commands, -p specifies the listening port.

        +
      2. Start the netperf process on the tested ECS and specify a netserver port for each auxiliary ECS. For details about common netperf parameters, see Table 1.

        ##The IP address is for the first auxiliary ECS.

        +

        netperf -H 192.168.2.11 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.11 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the second auxiliary ECS.

        +

        netperf -H 192.168.2.12 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.12 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the third auxiliary ECS.

        +

        netperf -H 192.168.2.13 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.13 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the fourth auxiliary ECS.

        +

        netperf -H 192.168.2.14 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.14 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the fifth auxiliary ECS.

        +

        netperf -H 192.168.2.15 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.15 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the sixth auxiliary ECS.

        +

        netperf -H 192.168.2.16 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.16 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the seventh auxiliary ECS.

        +

        netperf -H 192.168.2.17 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.17 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        ##The IP address is for the eighth auxiliary ECS.

        +

        netperf -H 192.168.2.18 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.18 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +
      +

    2. Test the TCP RX bandwidth.

      1. Start the netserver process on the tested ECS.

        ##The port number is for the first auxiliary ECS.

        +

        netserver -p 12001

        +

        netserver -p 12002

        +

        +

        ##The port number is for the second auxiliary ECS.

        +

        netserver -p 12003

        +

        netserver -p 12004

        +

        +

        ##The port number is for the third auxiliary ECS.

        +

        netserver -p 12005

        +

        netserver -p 12006

        +

        +

        ##The port number is for the fourth auxiliary ECS.

        +

        netserver -p 12007

        +

        netserver -p 12008

        +

        +

        ##The port number is for the fifth auxiliary ECS.

        +

        netserver -p 12009

        +

        netserver -p 12010

        +

        +

        ##The port number is for the sixth auxiliary ECS.

        +

        netserver -p 12011

        +

        netserver -p 12012

        +

        +

        ##The port number is for the seventh auxiliary ECS.

        +

        netserver -p 12013

        +

        netserver -p 12014

        +

        +

        ##The port number is for the eighth auxiliary ECS.

        +

        netserver -p 12015

        +

        netserver -p 12016

        +
      2. Start the netperf process on all auxiliary ECSs.

        Log in to auxiliary ECS 1.

        +

        netperf -H 192.168.2.10 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 2.

        +

        netperf -H 192.168.2.10 -p 12003 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12004 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 3.

        +

        netperf -H 192.168.2.10 -p 12005 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12006 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 4.

        +

        netperf -H 192.168.2.10 -p 12007 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12008 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 5.

        +

        netperf -H 192.168.2.10 -p 12009 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12010 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 6.

        +

        netperf -H 192.168.2.10 -p 12011 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12012 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 7.

        +

        netperf -H 192.168.2.10 -p 12013 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12014 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        +

        Log in to auxiliary ECS 8.

        +

        netperf -H 192.168.2.10 -p 12015 -t TCP_STREAM -l 300 -- -m 1440 &

        +

        netperf -H 192.168.2.10 -p 12016 -t TCP_STREAM -l 300 -- -m 1440 &

        +
      +

    3. Analyze the test result.

      After the test is complete, the output of the netperf process on one TX end is shown in Figure 1. The final result is the sum of the test results of the netperf processes on all TX ends.

      +
      Figure 1 Output of the netperf process on one TX end
      +

      There are a large number of netperf processes. To facilitate statistics collection, it is a good practice to run the following command to view test data on the tested ECS using sar:

      +

      sar -n DEV 1 60

      +
      +

    +
    +

    UDP PPS Test (Using iperf3)

    +
    1. Test the UDP TX PPS.

      1. Run the following commands on all auxiliary ECSs to start the server process:

        iperf3 -s -p 12001 &

        +

        iperf3 -s -p 12002 &

        +

        In the preceding commands, -p specifies the listening port.

        +
      2. Start the client process on the tested ECS. For details about common iperf3 parameters, see Table 2.

        ##Auxiliary ECS 1

        +

        iperf3 -c 192.168.2.11 -p 12001 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.11 -p 12002 -u -b 100M -t 300 -l 16 -A 1 &

        +

        +

        ##Auxiliary ECS 2

        +

        iperf3 -c 192.168.2.12 -p 12001 -u -b 100M -t 300 -l 16 -A 2 &

        +

        iperf3 -c 192.168.2.12 -p 12002 -u -b 100M -t 300 -l 16 -A 3 &

        +

        +

        ##Auxiliary ECS 3

        +

        iperf3 -c 192.168.2.13 -p 12001 -u -b 100M -t 300 -l 16 -A 4 &

        +

        iperf3 -c 192.168.2.13 -p 12002 -u -b 100M -t 300 -l 16 -A 5 &

        +

        +

        ##Auxiliary ECS 4

        +

        iperf3 -c 192.168.2.14 -p 12001 -u -b 100M -t 300 -l 16 -A 6 &

        +

        iperf3 -c 192.168.2.14 -p 12002 -u -b 100M -t 300 -l 16 -A 7 &

        +

        +

        ##Auxiliary ECS 5

        +

        iperf3 -c 192.168.2.15 -p 12001 -u -b 100M -t 300 -l 16 -A 8 &

        +

        iperf3 -c 192.168.2.15 -p 12002 -u -b 100M -t 300 -l 16 -A 9 &

        +

        +

        ##Auxiliary ECS 6

        +

        iperf3 -c 192.168.2.16 -p 12001 -u -b 100M -t 300 -l 16 -A 10 &

        +

        iperf3 -c 192.168.2.16 -p 12002 -u -b 100M -t 300 -l 16 -A 11 &

        +

        +

        ##Auxiliary ECS 7

        +

        iperf3 -c 192.168.2.17 -p 12001 -u -b 100M -t 300 -l 16 -A 12 &

        +

        iperf3 -c 192.168.2.17 -p 12002 -u -b 100M -t 300 -l 16 -A 13 &

        +

        +

        ##Auxiliary ECS 8

        +

        iperf3 -c 192.168.2.18 -p 12001 -u -b 100M -t 300 -l 16 -A 14 &

        +

        iperf3 -c 192.168.2.18 -p 12002 -u -b 100M -t 300 -l 16 -A 15 &

        +
      +

    2. Test the UDP RX PPS.

      1. Start the server process on the tested ECS. For details about common iperf3 parameters, see Table 2.

        ##Auxiliary ECS 1

        +

        iperf3 -s -p 12001 -A 0 -i 60 &

        +

        iperf3 -s -p 12002 -A 1 -i 60 &

        +

        +

        ##Auxiliary ECS 2

        +

        iperf3 -s -p 12003 -A 2 -i 60 &

        +

        iperf3 -s -p 12004 -A 3 -i 60 &

        +

        +

        ##Auxiliary ECS 3

        +

        iperf3 -s -p 12005 -A 4 -i 60 &

        +

        iperf3 -s -p 12006 -A 5 -i 60 &

        +

        +

        ##Auxiliary ECS 4

        +

        iperf3 -s -p 12007 -A 6 -i 60 &

        +

        iperf3 -s -p 12008 -A 7 -i 60 &

        +

        +

        ##Auxiliary ECS 5

        +

        iperf3 -s -p 12009 -A 8 -i 60 &

        +

        iperf3 -s -p 12010 -A 9 -i 60 &

        +

        +

        ##Auxiliary ECS 6

        +

        iperf3 -s -p 12011 -A 10 -i 60 &

        +

        iperf3 -s -p 12012 -A 11 -i 60 &

        +

        +

        ##Auxiliary ECS 7

        +

        iperf3 -s -p 12013 -A 12 -i 60 &

        +

        iperf3 -s -p 12014 -A 13 -i 60 &

        +

        +

        ##Auxiliary ECS 8

        +

        iperf3 -s -p 12015 -A 14 -i 60 &

        +

        iperf3 -s -p 12016 -A 15 -i 60 &

        +
      2. Start the client process on all auxiliary ECSs. For details about common iperf3 parameters, see Table 2.

        Log in to auxiliary ECS 1.

        +

        iperf3 -c 192.168.2.10 -p 12001 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12002 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 2.

        +

        iperf3 -c 192.168.2.10 -p 12003 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12004 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 3.

        +

        iperf3 -c 192.168.2.10 -p 12005 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12006 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 4.

        +

        iperf3 -c 192.168.2.10 -p 12007 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12008 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 5.

        +

        iperf3 -c 192.168.2.10 -p 12009 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12010 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 6.

        +

        iperf3 -c 192.168.2.10 -p 12011 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12012 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 7.

        +

        iperf3 -c 192.168.2.10 -p 12013 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12014 -u -b 100M -t 300 -l 16 -A 1 &

        +

        Log in to auxiliary ECS 8.

        +

        iperf3 -c 192.168.2.10 -p 12015 -u -b 100M -t 300 -l 16 -A 0 &

        +

        iperf3 -c 192.168.2.10 -p 12016 -u -b 100M -t 300 -l 16 -A 1 &

        +
      +

    3. Analyze the test result.

      Figure 2 shows an example of the UDP PPS test result.

      +
      Figure 2 UDP PPS test result
      +

      There are a large number of iperf3 processes. To facilitate statistics collection, it is a good practice to run the following command to view test data on the tested ECS using sar:

      +

      sar -n DEV 1 60

      +
      +

    +
    +

    Latency Test

    1. Run the following command to start the qperf process on the tested ECS:

      qperf &

      +

    2. Log in to auxiliary ECS 1 and run the following command to perform a latency test:

      qperf 192.168.2.10 -m 64 -t 60 -vu udp_lat

      +

      After the test is complete, the lat value in the command output is the latency between ECSs.

      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0116266206.html b/ecs/umn/en-us_topic_0116266206.html new file mode 100644 index 000000000..d8e722be7 --- /dev/null +++ b/ecs/umn/en-us_topic_0116266206.html @@ -0,0 +1,12 @@ + + +

    CTS

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0116266207.html b/ecs/umn/en-us_topic_0116266207.html new file mode 100644 index 000000000..237598d0f --- /dev/null +++ b/ecs/umn/en-us_topic_0116266207.html @@ -0,0 +1,29 @@ + + +

    Viewing Tracing Logs

    +

    Scenarios

    CTS starts to record ECS operations after it is provisioned. You can view the operation records of the last seven days on the management console.

    +

    This section describes how to view the operation records.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Click Service List. Under Management & Deployment, click Cloud Trace Service.
    4. In the navigation pane on the left, choose Trace List.
    5. Click Filter and specify filter criteria as needed. The following four filter criteria are available:
      • Trace Source, Resource Type, and Search By

        Select a filter criterion from the drop-down list.

        +

        If you select Trace name for Search By, you need to select a specific trace name.

        +

        If you select Resource ID for Search By, you need to select or enter a specific resource ID.

        +

        When you select Resource name for Search By, you need to select or enter a specific resource name.

        +
      • Operator: Select a specific operator (which is a user rather than the tenant).
      • Trace Status: Available options include All trace statuses, normal, warning, and incident. You can only select one of them.
      • Time Range: You can view traces generated during any time range of the last seven days.
      +
    6. Expand the trace for details.
      Figure 1 Expanding trace details
      +
    7. Click View Trace. A dialog box is displayed, in which the trace structure details are displayed.

      For more information about CTS, see Cloud Trace Service User Guide.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0117006217.html b/ecs/umn/en-us_topic_0117006217.html new file mode 100644 index 000000000..428745bc2 --- /dev/null +++ b/ecs/umn/en-us_topic_0117006217.html @@ -0,0 +1,27 @@ + + +

    How Can I Handle Slow ECS Startup?

    +

    If an ECS requires a long period of time to start, you can change the default timeout to speed up the startup.

    +
    1. Log in to the ECS.
    2. Run the following command to switch to user root:

      sudo su

      +
    3. Run the following command to obtain the grub version:

      rpm -qa | grep grub

      +
      Figure 1 Viewing the grub version
      +
    4. Change the timeout in the grub file to 0s.
      • If the grub version is earlier than 2:

        Open the /boot/grub/grub.cfg or /boot/grub/menu.lst file and change the timeout value to 0.

        +
      +
      • If the grub version is 2:

        Open the /boot/grub2/grub.cfg file and change the timeout value to 0.

        +
      +
      Figure 2 Changing timeout duration
      +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0117490178.html b/ecs/umn/en-us_topic_0117490178.html new file mode 100644 index 000000000..f28913437 --- /dev/null +++ b/ecs/umn/en-us_topic_0117490178.html @@ -0,0 +1,55 @@ + + +

    Initializing a Windows Data Disk (Windows Server 2016)

    +

    Scenarios

    This section uses Windows Server 2016 Standard 64bit to describe how to initialize a data disk attached to a server running Windows.

    +

    The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Therefore, use the GPT partition style if your disk capacity is larger than 2 TB. For details about disk partition styles, see Scenarios and Disk Partitions.

    +

    The method for initializing a disk varies depending on the OS running on the server. This document is used for reference only. For the detailed operations and differences, see the product documents of the corresponding OS.

    +
    +

    Prerequisites

    • A data disk has been attached to a server and has not been initialized.
    • You have logged in to the server.
      • For how to log in to an ECS, see the Elastic Cloud Server User Guide.
      • For how to log in to a BMS, see the Bare Metal Server User Guide.
      +
    +
    +

    Procedure

    1. On the desktop of the server, click the start icon in the lower left corner.

      The Windows Server window is displayed.

      +

    2. Click Server Manager.

      The Server Manager window is displayed.

      +
      Figure 1 Server Manager
      +

    3. In the upper right corner, choose Tools > Computer Management.

      The Computer Management window is displayed.

      +
      Figure 2 Computer Management
      +

    4. Choose Storage > Disk Management.

      Disks are displayed in the right pane. If there is a disk that is not initialized, the system will prompt you with the Initialize Disk dialog box.
      Figure 3 Disk list
      +
      +

    5. In the Initialize Disk dialog box, the to-be-initialized disk is selected. Select a disk partition style and click OK. In this example, GPT (GUID Partition Table) is selected.

      The Computer Management window is displayed.
      Figure 4 Computer Management (Windows Server 2016)
      +
      +

      The maximum disk capacity supported by MBR is 2 TB, and that supported by GPT is 18 EB. Because a data disk currently supports up to 32 TB, use the GPT partition style if your disk capacity is larger than 2 TB.

      +

      If you change the disk partition style after the disk has been used, the data on the disk will be cleared. Therefore, select a proper disk partition style when initializing the disk.

      +
      +
      +

    6. Right-click at the unallocated disk space and choose New Simple Volume from the shortcut menu.

      The New Simple Volume Wizard window is displayed.
      Figure 5 New Simple Volume Wizard (Windows Server 2016)
      +
      +

    7. Follow the prompts and click Next.

      The Specify Volume Size page is displayed.
      Figure 6 Specify Volume Size (Windows Server 2016)
      +
      +

    8. Specify the volume size and click Next. The system selects the maximum volume size by default. You can specify the volume size as required. In this example, the default setting is used.

      The Assign Drive Letter or Path page is displayed.
      Figure 7 Assign Driver Letter or Path (Windows Server 2016)
      +
      +

    9. Assign a drive letter or path to your partition and click Next. The system assigns drive letter D by default. In this example, the default setting is used.

      The Format Partition page is displayed.

      +
      Figure 8 Format Partition (Windows Server 2016)
      +

    10. Specify format settings and click Next. The system selects the NTFS file system by default. You can specify the file system type as required. In this example, the default setting is used.

      The Completing the New Simple Volume Wizard page is displayed.
      Figure 9 Completing the New Simple Volume Wizard (Windows Server 2016)
      +

      The partition sizes supported by file systems vary. Therefore, you are advised to choose an appropriate file system based on your service requirements.

      +
      +
      +

    11. Click Finish.

      Wait for the initialization to complete. When the volume status changes to Healthy, the initialization has finished successfully, as shown in Figure 10.
      Figure 10 Disk initialization succeeded (Windows Server 2016)
      +
      +

    12. After the volume is created, click on the task bar and check whether a new volume appears in This PC. In this example, New Volume (D:) is the new volume.

      If New Volume (D:) appears, the disk is successfully initialized and no further action is required.
      Figure 11 This PC (Windows Server 2016)
      +
      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0118224527.html b/ecs/umn/en-us_topic_0118224527.html new file mode 100644 index 000000000..d3612d28f --- /dev/null +++ b/ecs/umn/en-us_topic_0118224527.html @@ -0,0 +1,26 @@ + + +

    What Should I Do If Cloud-Init Does Not Work After Python Is Upgraded?

    +

    Symptom

    Take an ECS running CentOS 6.8 as an example. After Python was upgraded from 2.6 to 2.7, Cloud-Init did not work. Data, such as the login password, key, and hostname could not be imported to the ECS using Cloud-Init.

    +

    After the cloud-init -v command was executed to view the Cloud-Init version, the system displayed errors, as shown in Figure 1.

    +
    Figure 1 Improper running of Cloud-Init
    +
    +

    Possible Causes

    The Python version used by Cloud-Init was incorrect.

    +
    +

    Solution

    Change the Python version used by Cloud-Init to the source version. To do so, change the environment variable value of /usr/bin/cloud-init from the default value #!/usr/bin/python to #!/usr/bin/python2.6.

    +
    Figure 2 Changing the Python version
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0120795668.html b/ecs/umn/en-us_topic_0120795668.html new file mode 100644 index 000000000..9e32ab90d --- /dev/null +++ b/ecs/umn/en-us_topic_0120795668.html @@ -0,0 +1,22 @@ + + +

    Why Does the System Display Error Code 0x112f When I Log In to a Windows ECS?

    +

    Symptom

    When you log in to a Windows ECS, the system displays error code 0x112f.

    +
    Figure 1 Error message (code: 0x112f)
    +
    +

    Possible Causes

    The ECS memory is insufficient.

    +
    +

    Solution

    • Method 1 (recommended)

      Modify the ECS specifications to increase the vCPUs and memory size. For instructions about how to modify ECS specifications, see General Operations for Modifying Specifications.

      +
    • Method 2

      Enable virtual memory on the ECS to obtain its idle memory.

      +

      For instructions about how to enable virtual memory, see How Can I Enable Virtual Memory on a Windows ECS?

      +

      This method will deteriorate the disk I/O performance. Therefore, use this method only when necessary.

      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0120795802.html b/ecs/umn/en-us_topic_0120795802.html new file mode 100644 index 000000000..c2ba296e0 --- /dev/null +++ b/ecs/umn/en-us_topic_0120795802.html @@ -0,0 +1,30 @@ + + +

    How Can I Enable Virtual Memory on a Windows ECS?

    +

    Enabling ECS virtual memory will deteriorate disk I/O performance. Therefore, the Windows ECSs provided by the platform do not have virtual memory enabled by default. If the memory size of an ECS is insufficient, you are advised to increase its memory size by modifying the ECS specifications. Perform the operations described in this section to enable virtual memory if required.

    +

    If the memory usage is excessively high and the I/O performance is not as good as expected, you are not suggested to enable virtual memory. The reason is as follows: The excessively high memory usage limits the system performance improvement. Furthermore, frequent memory switching requires massive additional I/O operations, which will further deteriorate the I/O performance and the overall system performance.

    +
    +

    The operations described in this section are provided for the ECSs running Windows Server 2008 or later.

    +
    1. Right-click Computer and choose Properties from the shortcut menu.
    2. In the navigation pane on the left, choose Advanced system settings.

      The System Properties dialog box is displayed.

      +
    3. Click the Advanced tab and then Settings in the Performance pane.

      The Performance Options dialog box is displayed.

      +
      Figure 1 Performance Options
      +
    4. Click the Advanced tab and then Background Services in the Processor scheduling pane.
    5. Click Change in the Virtual memory pane.

      The Virtual Memory dialog box is displayed.

      +
    6. Configure virtual memory based on service requirements.
      • Automatically manage paging file size for all drives: Deselect the check box.
      • Drive: Select the drive where the virtual memory file is stored.

        You are advised not to select the system disk to store the virtual memory.

        +
      • Custom size: Select Custom size and set Initial size and Maximum size.

        Considering Memory.dmp caused by blue screen of death (BSOD), you are advised to set Initial size to 16 and Maximum size to 4096.

        +
      +
      Figure 2 Virtual Memory
      +
    7. Click Set and then OK to complete the configuration.
    8. Restart the ECS for the configuration to take effect.
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0122307169.html b/ecs/umn/en-us_topic_0122307169.html new file mode 100644 index 000000000..f203052c1 --- /dev/null +++ b/ecs/umn/en-us_topic_0122307169.html @@ -0,0 +1,18 @@ + + +

    Enabling Advanced Disk

    +

    Scenarios

    +

    This section describes how to enable advanced disk on an ECS.

    +
    +

    Procedure

    1. Log in to management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Click the name of the target ECS. The page providing details about the ECS is displayed.
    5. Click the Disks tab.
    6. View the current number of disks that can be attached to the ECS and enable advanced disk as prompted.

      The Enable Advanced Disk dialog box is displayed.

      +
    7. Click OK.
    8. Stop and then start the target ECS.

      This operation allows advanced disk to take effect.

      +
    9. Switch to the page providing details about the ECS again, click the Disks tab, and check whether the number of disks that can be attached to the ECS has been changed.
      • If yes, advanced disk has been enabled.
      • If no, enabling advanced disk failed. In such a case, try again later or contact customer service.
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0122627689.html b/ecs/umn/en-us_topic_0122627689.html new file mode 100644 index 000000000..50e2bdb2e --- /dev/null +++ b/ecs/umn/en-us_topic_0122627689.html @@ -0,0 +1,51 @@ + + +

    Changing the Login Password on an ECS

    +

    Scenarios

    This section describes how to change the password for logging in to an ECS when the password is about to expire, the password is forgotten, or you are logging in to the ECS for the first time. It is a good practice to change the initial password upon the first login.

    +
    +

    Prerequisites

    The ECS can be logged in.

    +
    +

    Background

    Table 1 shows the ECS password complexity requirements.

    + +
    + + + + + + + + + +
    Table 1 Password complexity requirements

    Parameter

    +

    Requirement

    +

    Example Value

    +

    Password

    +
    • Consists of 8 to 26 characters.
    • Contains at least three of the following character types:
      • Uppercase letters
      • Lowercase letters
      • Digits
      • Special characters: $!@%-_=+[]:./^,{}?
      +
    • Cannot contain the username or the username spelled backwards.
    • Cannot contain more than two consecutive characters in the same sequence as they appear in the username. (This requirement applies only to Windows ECSs.)
    +

    YNbUwp!dUc9MClnv

    +
    NOTE:

    The example password is generated randomly. Do not use it.

    +
    +
    +
    +
    +

    Windows

    1. Log in to the ECS.

      For details, see Login Overview.

      +
    2. Press Win+R to start the Run dialog box.
    3. Enter cmd to open the command-line interface (CLI) window.
    4. Run the following command to change the password (the new password must meet the requirements described in Table 1):

      net user Administrator New password

      +
    +
    +

    Linux

    1. Use the existing key file to log in to the ECS as user root through SSH.

      For details, see Login Using an SSH Key.

      +
    2. Run the following command to reset the password of user root:

      passwd

      +

      To reset the password of another user, replace passwd with passwd username.

      +
    3. Enter the new password as prompted. Ensure that the new password meets the requirements described in Table 1.
      New password:
      +Retype new password:
      +
      If the following information is displayed, the password has been changed:
      passwd: password updated successfully
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0132345719.html b/ecs/umn/en-us_topic_0132345719.html new file mode 100644 index 000000000..3fffb8626 --- /dev/null +++ b/ecs/umn/en-us_topic_0132345719.html @@ -0,0 +1,30 @@ + + +

    ECS Specifications and Types

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0133339807.html b/ecs/umn/en-us_topic_0133339807.html new file mode 100644 index 000000000..d947949d1 --- /dev/null +++ b/ecs/umn/en-us_topic_0133339807.html @@ -0,0 +1,21 @@ + + +

    Modifying a Private IP Address

    +

    Scenarios

    You can modify the private IP address of the primary NIC. If you want to modify the private IP address of an extension NIC, delete the NIC and attach a new NIC.

    +
    +

    Constraints

    • The ECS must be stopped.
    • If a virtual IP address or DNAT rule has been configured for the NIC, cancel the configuration before modifying the private IP address.
    • If the NIC has an IPv6 address, its private IP address (IPv4 or IPv6 address) cannot be modified.
    • Before changing the private IP address of an ELB backend server, delete the backend server group.
    +
    +

    Procedure

    1. Log in to the management console.
    2. Under Computing, click Elastic Cloud Server.
    3. Click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    4. Click the NICs tab. Locate the row containing the primary NIC and click Modify Private IP.

      The Modify Private IP dialog box is displayed.

      +
    5. Change the subnet and private IP address of the primary NIC as required.

      Subnets can be changed only within the same VPC.

      +
      +

      If the target private IP address is not specified, the system will automatically assign one to the primary NIC.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0133365988.html b/ecs/umn/en-us_topic_0133365988.html new file mode 100644 index 000000000..69a3c5377 --- /dev/null +++ b/ecs/umn/en-us_topic_0133365988.html @@ -0,0 +1,19 @@ + + +

    Migrating an ECS

    +

    Scenarios

    ECSs can be migrated between DeHs and public resource pools.

    +
    • An ECS created on a DeH can be migrated to another DeH.
    • An ECS created on a DeH can be migrated to a public resource pool.
    • An ECS deployed in a public resource pool can be migrated to a DeH.
    +
    +

    Notes

    • Only a stopped ECS can be migrated.
    • CBR and CSBS backups are not affected by cold migrations.
    • ECS IDs remain unchanged after a cold migration.
    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, select the target ECS.
    5. Click Migrate ECS in the Operation column.
    6. In the Migrate ECS dialog box, migrate the ECS as prompted.
      • If you want to migrate the ECS to a DeH, select a DeH from the list.
      • If you want to migrate the ECS to another DeH, select Migrated To another DeH.
      • If you want to migrate the ECS from a DeH to a public resource pool, select Migrated Out of DeH.
      +
    7. Click OK.

      The ECS is migrated as required.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0133513874.html b/ecs/umn/en-us_topic_0133513874.html new file mode 100644 index 000000000..1484bbece --- /dev/null +++ b/ecs/umn/en-us_topic_0133513874.html @@ -0,0 +1,22 @@ + + +

    (Optional) Installing a Driver and Toolkit

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0140313879.html b/ecs/umn/en-us_topic_0140313879.html new file mode 100644 index 000000000..fc458fd0b --- /dev/null +++ b/ecs/umn/en-us_topic_0140313879.html @@ -0,0 +1,18 @@ + + +

    Obtaining Metadata and Passing User Data

    +

    +
    +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0140313881.html b/ecs/umn/en-us_topic_0140313881.html new file mode 100644 index 000000000..132ff622e --- /dev/null +++ b/ecs/umn/en-us_topic_0140313881.html @@ -0,0 +1,20 @@ + + +

    Passwords and Key Pairs

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0140313883.html b/ecs/umn/en-us_topic_0140313883.html new file mode 100644 index 000000000..7848b2b80 --- /dev/null +++ b/ecs/umn/en-us_topic_0140313883.html @@ -0,0 +1,16 @@ + + +

    EIPs

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0140323150.html b/ecs/umn/en-us_topic_0140323150.html new file mode 100644 index 000000000..21b5d9136 --- /dev/null +++ b/ecs/umn/en-us_topic_0140323150.html @@ -0,0 +1,143 @@ + + +

    ECS Lifecycle

    +

    The ECS lifecycle refers to the entire journey an ECS goes through, from creation to deletion (or release).

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ECS statuses

    Status

    +

    Status Attribute

    +

    Description

    +

    Creating

    +

    Intermediate

    +

    The ECS is being created but has not been running.

    +

    Starting

    +

    Intermediate

    +

    The ECS is between the Stopped and Running states.

    +

    Running

    +

    Stable

    +

    The ECS is running properly.

    +

    Stopping

    +

    Intermediate

    +

    The ECS is between the Running and Stopped states.

    +

    Stopped

    +

    Stable

    +

    The ECS has been properly stopped.

    +

    Restarting

    +

    Intermediate

    +

    The ECS is being restarted.

    +

    Resizing

    +

    Intermediate

    +

    The ECS has received a resizing request and has started to resize.

    +

    Verifying resizing

    +

    Intermediate

    +

    The ECS is verifying the modified configuration.

    +

    Deleting

    +

    Intermediate

    +

    The ECS is being deleted.

    +

    If the ECS remains in this state for a long time, exceptions may have occurred. In such a case, contact the administrator.

    +

    Deleted

    +

    Intermediate

    +

    The ECS has been deleted. An ECS in this state cannot provide services and will be promptly cleared from the system.

    +

    Faulty

    +

    Stable

    +

    An exception has occurred on the ECS. Contact the administrator.

    +

    Reinstalling OS

    +

    Intermediate

    +

    The ECS has received a request to reinstall the OS and has begun the reinstallation.

    +

    Reinstalling OS failed

    +

    Stable

    +

    The ECS received a request to reinstall the OS, but due to exceptions, the reinstallation failed. Contact the administrator.

    +

    Changing OS

    +

    Intermediate

    +

    The ECS received a request to change the OS and has begun implementing the changes.

    +

    OS change failed

    +

    Stable

    +

    The ECS has received a request to change the OS, but due to exceptions, the change failed to be implemented. Contact the administrator.

    +

    Forcibly restarting

    +

    Intermediate

    +

    The ECS is being forcibly restarted.

    +

    Rolling back resizing

    +

    Intermediate

    +

    The ECS is rolling back a resizing operation.

    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0140323151.html b/ecs/umn/en-us_topic_0140323151.html new file mode 100644 index 000000000..450070bd9 --- /dev/null +++ b/ecs/umn/en-us_topic_0140323151.html @@ -0,0 +1,23 @@ + + +

    Security Groups

    +
    + + diff --git a/ecs/umn/en-us_topic_0140323152.html b/ecs/umn/en-us_topic_0140323152.html new file mode 100644 index 000000000..a511cd703 --- /dev/null +++ b/ecs/umn/en-us_topic_0140323152.html @@ -0,0 +1,244 @@ + + +

    Security Group Configuration Examples

    +

    Common security group configuration examples are as follows: The following examples allow all outgoing data packets by default and only describe how to configure the inbound rules of a security group.

    + +

    Enabling ECSs in Different Security Groups to Communicate with Each Other Through an Internal Network

    • Example scenario:

      Resources on an ECS in a security group need to be copied to an ECS associated with another security group. The two ECSs are in the same VPC. We recommend that you enable private network communication between the ECSs and then copy the resources.

      +
    • Security group configuration:

      Within a given VPC, ECSs in the same security group can communicate with one another by default. However, ECSs in different security groups cannot communicate with each other by default. To enable these ECSs to communicate with each other, you need to add certain security group rules.

      +

      You can add an inbound rule to the security groups containing the ECSs to allow access from ECSs in the other security group. The required rule is as follows.

      + +
      + + + + + + + + + + + +

      Direction

      +

      Protocol/Application

      +

      Port

      +

      Source

      +

      Inbound

      +

      Used for communication through an internal network

      +

      Port or port range

      +

      ID of another security group

      +
      +
      +
    +
    +

    Enabling Specified IP Addresses to Remotely Access ECSs in a Security Group

    • Example scenario:

      To prevent ECSs from being attacked, you can change the port for remote login and configure security group rules that allow only specified IP addresses to remotely access the ECSs.

      +
    • Security group configuration:

      To allow IP address 192.168.20.2 to remotely access Linux ECSs in a security group over the SSH protocol (port 22), you can configure the following security group rule.

      + +
      + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      SSH

      +

      22

      +

      IPv4 CIDR block or ID of another security group

      +

      For example, 192.168.20.2/32

      +
      +
      +
    +
    +

    Remotely Connecting to Linux ECSs Using SSH

    • Example scenario:

      After creating Linux ECSs, you can add a security group rule to enable remote SSH access to the ECSs.

      +
    • Security group rule: +
      + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      SSH

      +

      22

      +

      0.0.0.0/0

      +
      +
      +
    +
    +

    Remotely Connecting to Windows ECSs Using RDP

    • Example scenario:

      After creating Windows ECSs, you can add a security group rule to enable remote RDP access to the ECSs.

      +
    • Security group rule: +
      + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      RDP

      +

      3389

      +

      0.0.0.0/0

      +
      +
      +
    +
    +

    Enabling Communication Between ECSs

    • Example scenario:

      After creating ECSs, you need to add a security group rule so that you can run the ping command to test communication between the ECSs.

      +
    • Security group rule: +
      + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      ICMP

      +

      All

      +

      0.0.0.0/0

      +
      +
      +
    +
    +

    Hosting a Website on ECSs

    • Example scenario:

      If you deploy a website on your ECSs and require that your website be accessed over HTTP or HTTPS, you can add rules to the security group used by the ECSs that function as the web servers.

      +
    • Security group rule: +
      + + + + + + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      HTTP

      +

      80

      +

      0.0.0.0/0

      +

      Inbound

      +

      HTTPS

      +

      443

      +

      0.0.0.0/0

      +
      +
      +
    +
    +

    Enabling an ECS to Function as a DNS Server

    • Example scenario:

      If you need to use an ECS as a DNS server, you must allow TCP and UDP access from port 53 to the DNS server. You can add the following rules to the security group associated with the ECS.

      +
    • Security group rules: +
      + + + + + + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      TCP

      +

      53

      +

      0.0.0.0/0

      +

      Inbound

      +

      UDP

      +

      53

      +

      0.0.0.0/0

      +
      +
      +
    +
    +

    Uploading or Downloading Files Using FTP

    • Example scenario:

      If you want to use File Transfer Protocol (FTP) to upload files to or download files from ECSs, you need to add a security group rule.

      +

      You must first install the FTP server program on the ECSs and check whether ports 20 and 21 are working properly.

      +
      +
    • Security group rule: +
      + + + + + + + + + + + +

      Direction

      +

      Protocol

      +

      Port

      +

      Source

      +

      Inbound

      +

      TCP

      +

      20-21

      +

      0.0.0.0/0

      +
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0140323154.html b/ecs/umn/en-us_topic_0140323154.html new file mode 100644 index 000000000..9daca5e5c --- /dev/null +++ b/ecs/umn/en-us_topic_0140323154.html @@ -0,0 +1,59 @@ + + +

    Default Security Group and Rules

    +

    Your account automatically comes with a default security group. The default security group allows all outbound traffic, denies all inbound traffic, and allows all traffic between cloud resources in the group. Your cloud resources in this security group can communicate with each other already without adding additional rules.

    +

    Figure 1 shows the default security group.

    +
    Figure 1 Default security group
    +

    Table 1 describes the rules for the default security group.

    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 1 Default security group rules

    Direction

    +

    Protocol

    +

    Port/Range

    +

    Source/Destination

    +

    Description

    +

    Outbound

    +

    All

    +

    All

    +

    Destination: 0.0.0.0/0

    +

    Allows all outbound traffic.

    +

    Inbound

    +

    All

    +

    All

    +

    Source: the current security group (for example, sg-xxxxx)

    +

    Allows communications among ECSs within the security group and denies all inbound traffic (incoming data packets).

    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0140323157.html b/ecs/umn/en-us_topic_0140323157.html new file mode 100644 index 000000000..78d828c4e --- /dev/null +++ b/ecs/umn/en-us_topic_0140323157.html @@ -0,0 +1,19 @@ + + +

    Overview

    +

    Security Group

    A security group is a collection of access control rules for ECSs that have the same security protection requirements and that are mutually trusted. After a security group is created, you can create various access rules for the security group, these rules will apply to all ECSs added to this security group.

    +

    You can also customize a security group or use the default one. The system provides a default security group for you, which permits all outbound traffic and denies inbound traffic. ECSs in a security group are accessible to each other. For details about the default security group, see Default Security Group and Rules.

    +
    +

    Security Group Rules

    After a security group is created, you can add rules to the security group. A rule applies either to inbound traffic (ingress) or outbound traffic (egress). After ECSs are added to the security group, they are protected by the rules of that group.

    +

    Each security group has default rules. For details, see Default Security Group and Rules. You can also customize security group rules. For details, see Configuring Security Group Rules.

    +
    +

    Security Group Constraints

    • By default, you can create a maximum of 100 security groups in your cloud account.
    • By default, you can add up to 50 security group rules to a security group.
    • By default, you can add an ECS or an extension NIC to a maximum of five security groups. In such a case, the rules of all the selected security groups are aggregated to take effect.
    • When creating a private network load balancer, you need to select a desired security group. Do not delete the default security group rules or ensure that the following requirements are met:
      • Outbound rules: only allow data packets to the selected security group or only data packets from the peer load balancer.
      • Inbound rules: only allow data packets from the selected security group or only data packets from the peer load balancer.
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0142266317.html b/ecs/umn/en-us_topic_0142266317.html new file mode 100644 index 000000000..05ecb7ca2 --- /dev/null +++ b/ecs/umn/en-us_topic_0142266317.html @@ -0,0 +1,19 @@ + + +

    Changing an ECS Name

    +

    Scenarios

    The name of a created ECS can be changed to meet your service requirements.

    +

    Multiple ECS names can be changed in a batch. After the change, the ECS names are the same.

    +
    +

    Procedure for a Single ECS

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Click the name of the target ECS.
    5. On the page providing details about the ECS, click following the ECS name. Then, change the name as prompted.

      Allow duplicate ECS name: allows ECS names to be duplicate. If Allow duplicate ECS name is not selected and the target name is the same as an existing ECS name, the system displays a message indicating that the name has been used and you need to change another name.

      +
    6. Click OK.
    +
    +

    Procedure for Batch Operations

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Select the target ECSs.
    5. Click More in the upper part of the ECS list and select Change ECS Name from the drop-down list.
    6. Enter the new name.
    7. Click OK.

      If you change ECS names in a batch, the new ECS names are the same, for example, all are ecs-test.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0149470468.html b/ecs/umn/en-us_topic_0149470468.html new file mode 100644 index 000000000..f1e575017 --- /dev/null +++ b/ecs/umn/en-us_topic_0149470468.html @@ -0,0 +1,119 @@ + + +

    Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS

    +

    Scenarios

    Before using a GPU-accelerated ECS, make sure that the desired Tesla driver and CUDA toolkit have been installed on the ECS for computing acceleration.

    +
    • A computing-accelerated (P series) ECS created using a Windows public image has had a Tesla driver of a specified version installed by default.
    • A computing-accelerated (P series) ECS created using a Linux public image does not have a Tesla driver installed by default. After the ECS is created, install a driver on it for computing acceleration.
    • After a GPU-accelerated ECS is created using a private image, it must have a Tesla driver installed. Otherwise, computing acceleration will not take effect.
    +

    This section describes how to install a Tesla driver and CUDA toolkit on a GPU-accelerated ECS.

    +
    +

    Notes

    • The target ECS has an EIP bound.
    • The Tesla driver and CUDA toolkit have not been installed on the ECS.
    +
    • Download the CUDA toolkit from the official NVIDIA website and install it. A Tesla driver matching the CUDA version will be automatically installed then. However, if there are specific requirements or dependencies on the Tesla driver version, download the matching Tesla driver from the official NVIDIA website first and then install the driver before installing the CUDA toolkit.
    • If a Tesla driver has been installed on the ECS, check the driver version. Before installing a new driver version, uninstall the original Tesla driver to prevent an installation failure due to driver conflicts.
    +
    +
    + +

    Installing a Tesla Driver on a Linux ECS

    The following uses Ubuntu 16.04 64bit as an example to describe how to install the Tesla driver matching CUDA 10.1 on a GPU-accelerated ECS.

    +

    The Linux kernel version is compatible with the driver version. If installing the driver failed, check the driver installation log, which is generally stored in /var/log/nvidia-installer.log. If the log shows that the failure was caused by a driver compilation error, for example, the get_user_pages parameter setting is incorrect, the kernel version is incompatible with the driver version. In such a case, select the desired kernel version and driver version and reinstall them. It is recommended that the release time of the kernel version and driver version be the same.

    +
    +
    1. Log in to the ECS.
    2. Update the system software based on the OS.
      • Ubuntu

        Update the software installation source: apt-get -y update

        +

        Install necessary programs: apt-get install gcc g++ make

        +
      • CentOS

        Update the software installation source: yum -y update --exclude=kernel* --exclude=centos-release* --exclude=initscripts*

        +

        Install the desired program: yum install -y kernel-devel-`uname -r` gcc gcc-c++

        +
      +
    3. Download the NVIDIA driver package.

      Select a driver version at NVIDIA Driver Downloads based on the ECS type. Click SEARCH.

      +
      Figure 1 Selecting a NVIDIA driver version
      +
    4. Select a driver version as required. The following uses Tesla 418.67 as an example.
      Figure 2 Selecting a driver version
      +
    5. Click the driver to be downloaded. On the TESLA DRIVER FOR LINUX X64 page that is displayed, click DOWNLOAD.
    6. Copy the download link.
      Figure 3 Copying the download link
      +
    7. Run the following command on the ECS to download the driver:

      wget Copied link

      +

      For example, wget http://us.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run

      +
      Figure 4 Obtaining the installation package
      +
    8. Run the following command to install the driver:

      sh NVIDIA-Linux-x86_64-418.67.run

      +
    9. (Optional) If the following information is displayed after the command for installing the driver is executed, disable the Nouveau driver.
      Figure 5 Disabling the Nouveau driver
      +
      1. Run the following command to check whether the Nouveau driver has been installed:

        lsmod | grep nouveau

        +
        • If the command output contains information about the Nouveau driver, the Nouveau driver has been installed and must be disabled. Then, go to step 9.b.
        • If the command output does not contain information about the Nouveau driver, the Nouveau driver has been disabled. Then, go to step 9.d.
        +
      2. Edit the blacklist.conf file.

        If the /etc/modprobe.d/blacklist.conf file is unavailable, create it.

        +

        vi /etc/modprobe.d/blacklist.conf

        +

        Add the following statement to the end of the file:

        +
        blacklist nouveau
        +options nouveau modeset=0
        +
      1. Run the following command to back up and create an initramfs application:
        • Ubuntu

          sudo update-initramfs -u

          +
        • CentOS:

          mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

          +

          dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

          +
        +
      1. Restart the ECS:

        reboot

        +
      +
    10. Select OK for three consecutive times as prompted to complete the driver installation.
      Figure 6 Completing the NVIDIA driver installation
      +
    11. Run the following command to set systemd:

      systemctl set-default multi-user.target

      +
    12. Run the reboot command to restart the ECS.
    13. Log in to the ECS and run the nvidia-smi command. If the command output contains the installed driver version, the driver has been installed.
      Figure 7 Viewing the NVIDIA driver version
      +
    +
    +

    Installing a Tesla Driver on a Windows ECS

    The following uses Windows Server 2016 Standard 64bit as an example to describe how to install a Tesla driver on a GPU-accelerated ECS.

    +
    1. Log in to the ECS.
    2. Download the NVIDIA driver package.

      Select a driver version at NVIDIA Driver Downloads based on the ECS type.

      +
      Figure 8 Selecting a driver type (Windows)
      +
    3. Select a driver version as required. The following uses Tesla 425.25 as an example.
      Figure 9 Selecting a driver version (Windows)
      +
    4. Click the driver to be downloaded. On the TESLA DRIVER FOR WINDOWS page that is displayed, click DOWNLOAD.
    5. Click Agree & Download to download the installation package.
      Figure 10 Downloading the driver installation package
      +
    6. Double-click the driver and click Run.
      Figure 11 Running the NVIDIA driver installation program
      +
    7. Select an installation path and click OK.
      Figure 12 Selecting an installation path
      +
    8. Install the NVIDIA program as prompted.
      Figure 13 Completing the driver installation
      +
    9. Restart the ECS.
    10. Check whether the NVIDIA driver has been installed.
      1. Switch to Device Manager and click Display adapters.
        Figure 14 Display adapters
        +
      1. Open the cmd window on the ECS and run the following commands:

        cd C:\Program Files\NVIDIA Corporation\NVSMI

        +

        nvidia-smi

        +

        If the command output contains the installed driver version, the driver has been installed.

        +
        Figure 15 Viewing the NVIDIA driver version
        +
      +
    +
    +

    Installing the CUDA Toolkit on a Linux ECS

    The following uses Ubuntu 16.04 64bit as an example to describe how to install the CUDA 10.1 toolkit on a GPU-accelerated ECS.

    +
    1. Log in to the ECS.
    2. Update the system software based on the OS.
      • Ubuntu

        Update the software installation source: apt-get -y update

        +

        Install necessary programs: apt-get install gcc g++ make

        +
      • CentOS

        Update the software installation source: yum -y update --exclude=kernel* --exclude=centos-release* --exclude=initscripts*

        +

        Install the desired program: yum install -y kernel-devel-`uname -r` gcc gcc-c++

        +
      +
    3. On the CUDA download page, set parameters according to the information shown in Obtaining a Tesla Driver and CUDA Toolkit.
      Figure 16 Selecting a CUDA version
      +
    4. Find the link for downloading CUDA 10.1 and copy the link.
      Figure 17 Copying the link for downloading CUDA
      +
    1. Run the following command on the ECS to download CUDA:

      wget Copied link

      +

      For example, wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.105_418.39_linux.run

      +
      Figure 18 Downloading CUDA
      +
    1. Install CUDA.
      Follow the instructions provided on the official NVIDIA website.
      Figure 19 Installing CUDA
      +
      +
    2. Run the following command to install CUDA:

      sh cuda_10.1.243_418.87.00_linux.run

      +
    3. Select accept on the installation page and press Enter.
      Figure 20 Installing CUDA_1
      +
    4. Select Install and press Enter to start the installation.
      Figure 21 Installing CUDA_2
      +
      Figure 22 Completing the installation
      +
    5. Run the following command to switch to /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery:

      cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery

      +
    6. Run the make command to automatically compile the deviceQuery program.
    7. Run the following command to check whether CUDA has been installed:

      ./deviceQuery

      +

      If the command output contains the CUDA version, CUDA has been installed.

      +
      Figure 23 deviceQuery common output
      +
    8. Check the CUDA version.

      /usr/local/cuda/bin/nvcc -V

      +
      Figure 24 Checking the CUDA version
      +
    9. Run the following command to enable the persistent mode:

      sudo nvidia-smi -pm 1

      +

      Enabling the persistent mode optimizes the GPU performance on Linux ECSs.

      +
    +
    +

    Installing the CUDA Toolkit on a Windows ECS

    The following uses Windows Server 2016 Standard 64bit as an example to describe how to install the CUDA 10.1 toolkit on a GPU-accelerated ECS.

    +
    1. Log in to the ECS.
    2. On the CUDA download page, set parameters according to the information shown in Downloading a CUDA Toolkit.
      Figure 25 Selecting a CUDA version
      +
    3. Find the link for downloading CUDA 10.1.
      Figure 26 Finding the link for downloading CUDA
      +
    4. Click Download to download the CUDA toolkit.
    5. Double-click the installation file and click Run to install the CUDA toolkit.
      Figure 27 Installing CUDA
      +
    6. On the CUDA Setup Package page, select an installation path and click OK.
      Figure 28 Selecting an installation path
      +
    7. Install the CUDA toolkit as prompted.
      Figure 29 Completing the installation
      +
    1. Check whether CUDA has been installed

      Open the cmd window and run the following command:

      +

      nvcc -V

      +

      If the command output contains the CUDA version, CUDA has been installed.

      +
      Figure 30 Successful installation
      +
    +
    +
    + + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0149610914.html b/ecs/umn/en-us_topic_0149610914.html new file mode 100644 index 000000000..48087377c --- /dev/null +++ b/ecs/umn/en-us_topic_0149610914.html @@ -0,0 +1,148 @@ + + +

    Installing a GRID Driver on a GPU-accelerated ECS

    +

    Scenarios

    To use graphics acceleration, such as OpenGL, DirectX, or Vulkan, install a GRID driver and separately purchase and configure a GRID license. The GRID driver with a vDWS license also supports CUDA for both computing and graphics acceleration.

    +
    • A graphics-accelerated (G series) ECS created using a Windows public image has had a GRID driver of a specified version installed by default, but the GRID license must be purchased and configured separately.
    • A graphics-accelerated (G series) ECS created using a Linux public image does not have a GRID driver installed by default. You are required to install a GRID driver and purchase and configure a GRID license separately.
    • If a GPU-accelerated ECS is created using a private image, install a GRID driver and separately purchase and configure a GRID license.
    +

    This section describes how to install a GRID driver, purchase or apply for a GRID license, and configure the license server.

    + +
    • NVIDIA allows you to apply for a 90-day trial license.
    • For details about GPU-accelerated ECSs with different specifications and application scenarios, see GPU-accelerated ECSs.
    +
    +
    +

    Purchasing a GRID License

    • Purchase a license.

      To obtain an official license, contact NVIDIA or their NVIDIA agent in your local country or region.

      +
    • Apply for a trial license.

      Log in at the official NVIDIA website and enter desired information.

      +
      For details about how to register an account and apply for a trial license, see official NVIDIA help page.

      The method of using a trial license is the same as that of using an official license. You can use an official license to activate an account with a trial license to prevent repetitive registration. The trial license has a validity period of 90 days. After the trial license expires, it cannot be used anymore. Purchase an official license then.

      +
      +
      +
      Figure 1 Applying for a trial license
      +
      +
    +
    +

    Downloading GRID Driver and Software License Packages

    1. Obtain the driver installation package required for an OS. For details, see Table 1.
      For more information about the GRID driver, see NVIDIA vGPU Software Documentation.

      For a GPU passthrough ECS, select a GRID driver version as required.

      +

      For a GPU virtualization ECS, select a driver version based on the following table.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 GRID driver versions supported by GPU-accelerated ECSs

      ECS Type

      +

      GPU Attachment

      +

      OS

      +

      Driver Version

      +

      CPU Architecture

      +

      G6

      +

      GPU passthrough

      +
      • Windows Server 2016 Standard 64bit
      +

      Select a version as required.

      +

      x86_64

      +

      P2s

      +

      GPU passthrough

      +
      • Windows Server 2019 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 20.04 64bit
      • Ubuntu Server 18.04 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.7 64bit
      • CentOS 7.4 64bit
      • EulerOS 2.5 64bit
      • Oracle Linux 7.6 64bit
      +

      Select a version as required.

      +

      x86_64

      +

      P2v

      +

      GPU passthrough

      +
      • Windows Server 2019 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.7 64bit
      • EulerOS 2.5 64bit
      • Oracle Linux 7.6 64bit
      +

      Select a version as required.

      +

      x86_64

      +

      P2

      +

      GPU passthrough

      +

      Ubuntu Server 16.04 64bit

      +

      Select a version as required.

      +

      x86_64

      +

      P1

      +

      GPU passthrough

      +
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.4 64bit
      • Debian 9.0 64bit
      +

      Select a version as required.

      +

      x86_64

      +

      PI2

      +

      GPU passthrough

      +
      • Windows Server 2019 Standard 64bit
      • Windows Server 2016 Standard 64bit
      • Windows Server 2012 R2 Standard 64bit
      • Ubuntu Server 16.04 64bit
      • CentOS 7.8 64bit
      +

      Select a version as required.

      +

      x86_64

      +
      +
      +
      +
    2. After the registration, log in at the official NVIDIA website and enter the account.
    3. Check whether NVIDIA is used for the first time.
      1. If yes, go to step 4.
      2. If no, go to step 6.
      +
    4. Obtain the Product Activation Key (PAK) from the email indicating successful registration with NVIDIA.
      Figure 2 PAK
      +
    5. Enter the PAK obtained in step 4 on the Redeem Product Activation Keys page and click Redeem.
      Figure 3 Redeem Product Activation Keys
      +
    6. Specify Username and Password and click LOGIN.
      Figure 4 Logging in to the official NVIDIA website
      +
    7. Log in at the official NVIDIA website as prompted and select SOFTWARE DOWNLOADS.
      Figure 5 SOFTWARE DOWNLOADS page
      +
    8. Download the GRID driver of the required version. For details, see Table 1.
    9. Decompress the GRID driver installation package and install the driver that matches your ECS OS.
    10. On the SOFTWARE DOWNLOADS page, click ADDITIONAL SOFTWARE to download the license software package.
      Figure 6 ADDITIONAL SOFTWARE
      +
    +
    +

    Deploying and Configuring the License Server

    The following uses an ECS running CentOS 7.5 as an example to describe how to deploy and configure the license server on the ECS.

    +
    +
    +
    1. Configure the network.
      • If the license server is to be accessed using the VPC, ensure that the license server and the GPU-accelerated ECS with the GRID driver installed are in the same VPC subnet.
      • If the license server is to be accessed using a public IP address, configure the security group to which license server belongs and add inbound rules for TCP 7070 and TCP 8080.
      +
    1. Install the license server.

      For details, see the official NVIDIA documentation for installing the license server.

      +
    2. Obtain the license file.
      1. Log in to the NVIDIA website on a new tab and select LICENSE SERVERS.
        Figure 7 LICENSE SERVERS
        +
      2. Click CREATE SERVER.
      3. Set Server Name, Description, and MAC Address (MAC address of the license server).
      4. Select Feature, enter the number of required licenses in the Licenses text box, and click ADD.

        In active/standby deployment, enter the name of the standby server in Failover License Server and enter the MAC address in Failover MAC Address.

        +
      5. Click CREATE LICENSE SERVER.
        Figure 8 Create License Server
        +
      6. Download the license file.
        Figure 9 Downloading the license file
        +
      +
    3. In the web browser, access the homepage of the license server management page using the link configured during the installation.

      Default URL: http://IP address of the EIP:8080/licserver

      +
    4. Choose License Server > License Management, select the .bin license file to be uploaded, and click Upload.
      Figure 10 Uploading a license file
      +
    +
    +

    Installing the GRID Driver and Configuring the License

    1. Install the GRID driver of a desired version, for example, on a GPU-accelerated Windows ECS.

      Microsoft remote login protocols do not support GPU 3D hardware acceleration. To use this function, install third-party desktop protocol-compliant software, such as VNC, PCoIP, or NICE DCV, and access the ECS through the client.

      +
      +
    2. Open the NVIDIA control panel on the Windows control panel.
    3. Enter the IP address and port number of the deployed license server in the level-1 license server, and then click Apply. If the message indicating that you have obtained a GRID license, the installation is successful. Additionally, the MAC address of the GPU-accelerated ECS with the GRID driver installed is displayed on the Licensed Clients page of the license server management console.
      Figure 11 License server management console
      +
    +
    +
    + + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0152643976.html b/ecs/umn/en-us_topic_0152643976.html new file mode 100644 index 000000000..d6c32ae65 --- /dev/null +++ b/ecs/umn/en-us_topic_0152643976.html @@ -0,0 +1,29 @@ + + +

    How Can I Attach a Snapshot-based System Disk to an ECS as Its Data Disk?

    +

    Scenarios

    To restore data, a system disk snapshot of ECS A is used to create disk A. Then, disk A is attached to ECS B as a data disk. However, after ECS B is restarted, data disk A may be attached as the root file system but not the system disk of ECS B. In such a case, the data of ECS A is contained in the root file system of ECS B.

    +
    +

    Possible Causes

    When Linux ECSs start, the root file systems to be mounted are identified by disk label but not UUID. However, system disk labels are the same, which may lead to a system disk attachment error.

    +
    +

    Solution

    Replace the /dev/disk/by-label/ROOT files in /etc/fstab with the files in /dev/disk/by-id. The new files start with a unique virtio-EVS-ID.

    +

    To do so, perform the following operations:

    +
    1. Check whether the root file system is identified by disk label. If information similar to the following is displayed in the configuration files in /etc/fstab of the target ECS, its root file system is identified by disk label:
      /dev/disk/by-label/ROOT  /  ext4 defaults 1 1
      +
    2. After attaching data disk A to ECS B, run the following command to obtain the disk ID:

      $ ls -l /dev/disk/by-id/

      +
      total 0
      +lrwxrwxrwx. 1 root root 9 Nov 16 19:40 virtio-20211065-0f57-46d4-9 -> ../../vda
      +lrwxrwxrwx. 1 root root 10 Nov 16 19:40 virtio-20211065-0f57-46d4-9-part1 -> ../../vda1
      +lrwxrwxrwx. 1 root root 9 Nov 16 19:40 virtio-842dbfd3-9f2c-4273-9 -> ../../vdb
      +lrwxrwxrwx. 1 root root 10 Nov 16 19:40 virtio-842dbfd3-9f2c-4273-9-part1 -> ../../vdb1
      +
    3. Run the following command to change the disk ID to the desired one in the configuration files in /etc/fstab of ECS B:
      vi /etc/fstab
      /dev/disk/by-id/virtio-20211065-0f57-46d4-9-part1 / ext4 defaults 1 1
      +/dev/disk/by-id/virtio-842dbfd3-9f2c-4273-9-part1 /vdb1-test ext4 defaults 1 1
      +
      +
    4. Press Esc to exit editing mode.
    5. Run the following command to save the configuration and exit:

      :wq

      +
    6. Restart the ECS for the modification to take effect.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0163572588.html b/ecs/umn/en-us_topic_0163572588.html new file mode 100644 index 000000000..3c405fbdd --- /dev/null +++ b/ecs/umn/en-us_topic_0163572588.html @@ -0,0 +1,14 @@ + + +

    Overview

    +

    Scenarios

    ECSs are more cost-effective than physical servers. Within minutes, you can obtain ECS resources from the public cloud. ECS resources are flexible and on-demand. This section describes how to create an ECS on the management console.

    +

    Creation process:

    + +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0163572589.html b/ecs/umn/en-us_topic_0163572589.html new file mode 100644 index 000000000..9a32b45bc --- /dev/null +++ b/ecs/umn/en-us_topic_0163572589.html @@ -0,0 +1,61 @@ + + +

    Step 1: Configure Basic Settings

    +

    Accessing the ECS Creation Page

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Click Create ECS.
      The page for creating ECSs is displayed.

      SAP High-Performance Analytic Appliance (HANA) is a high-performance real-time data computing platform based on memory computing technologies. The public cloud provides high-performance IaaS services that comply with SAP HANA requirements. These services help you rapidly request for SAP HANA resources (such as applying for HANA ECSs and public IP addresses) and install and configure SAP HANA, therefore improving your operation efficiency, reducing operation costs, and enhancing your experience.

      +

      HANA ECSs are dedicated for SAP HANA. If you want to deploy SAP HANA on cloud servers, create HANA ECSs.

      +

      For more information about HANA ECS application scenarios and creation methods, see SAP HANA User Guide.

      +
      +
      +
    +
    +

    Performing Basic Configurations

    1. Select an AZ.

      An AZ is a physical location that uses independent power supply and networks. AZs in the same region can communicate with each other over an intranet.

      +
      • To enhance application availability, create ECSs in different AZs.
      • To shorten network latency, create ECSs in the same AZ.
      +

      Random AZ allocation is available on the console when you create an ECS. The system will use a hash algorithm to select a default AZ based on your universally unique identifier (UUID).

      +

      The released ECS types and flavors vary depending on AZs. To view all supported ECS types and flavors on the cloud service platform, set AZ to Random. Then, the system automatically allocates an AZ according to your selected ECS flavor.

      +

      For example, S3 ECSs are available only in AZ 1; S2 ECSs are available in AZ 2 and AZ 3 and have been sold out in AZ 1. If you set AZ to Random, you can view both S3 and S2 ECSs. If you create an S3 ECS, the system automatically allocates it to AZ 1. If you create an S2 ECS, the system randomly allocates it to AZ 2 or AZ 3.

      +
      +
    2. Set DeH.

      This configuration is optional. This parameter is available only when you click Create ECS on the Dedicated Host page. It is unavailable when you click Create ECS on the Elastic Cloud Server page.

      +

      DeH refers to physical server resources dedicated for a specified user. You can deploy ECSs on DeHs for better isolation, security, and performance of your ECSs. You can continue using your existing server software licenses of ECSs on DeHs to reduce costs. For more details, see Dedicated Host User Guide.

      +

      If you select a SUSE-SAP public image when creating an ECS on a DeH, you will be billed for the license.

      +
      +
    3. Set Specifications.

      The public cloud provides various ECS types for different application scenarios. You can choose from existing ECS types and flavors in the list. Alternatively, you can enter a flavor (such as c3) or specify vCPUs and memory size to search for the flavor suited to your needs.

      +

      Latest generation shows the types and flavors of newly released ECSs, and All generations show the types and flavors of all ECSs provided by the public cloud.

      +
      • Before selecting an ECS type, learn the introduction and notes on each type of ECSs. For details, see ECS Types.
      • Local Disk: specifies the local storage of the physical server where the ECS is deployed. Only Hard Disk Driver (HDD) disks are supported. If the ECS of the selected type (such as Disk-intensive) uses local disks, the system automatically attaches the local disks to the ECS and displays the information of the local disks.

        For example, if Local Disk is 3x1800 GiB (HDD), three HDDs are attached to the ECS and the capacity of each HDD is 1800 GiB.

        +
      +
      +
    4. Select an image.
      • Public image

        A public image is a standard, widely used image. It contains an OS and preinstalled public applications and is available to all users. You can configure the runtime environment or software in the public image as needed.

        +

        If you select a SUSE-SAP public image, you will be billed for the license.

        +

        For more information about public images, see Public Images Introduction.

        +
      +
      • Private image

        A private image is an image available only to the user who created it. It contains an OS, preinstalled public applications, and the user's private applications. Using a customized private image, you can create ECSs tailored to your needs in batches.

        +

        You can also select an encrypted image. For details, see Image Management Service User Guide.

        +
        • If you use a full-ECS image to create an ECS, the EVS disks associated with the full-ECS image do not support the function of creating disks using a data disk image.
        • If a full-ECS image is in Normal state and the system displays message "Available in AZx", the full-ECS image can be used to create ECSs in this AZ only, and the encryption attributes of the system and data disks of the created ECSs are the same as those of the system and data disks specified in the full-ECS image. Additionally, the SCSI, sharing attribute, and data encryption settings of the system and data disks cannot be modified during ECS creation.
        • If a full-ECS image is in Normal state but the system does not display message "Available in AZx", the full-ECS image can be used to create ECSs in the entire region, and the encryption attributes of the system and data disks of the created ECSs are the same as those of the system and data disks specified in the full-ECS image. Additionally, the data encryption settings of the system disk, and the SCSI, sharing attribute, and data encryption settings of data disks can be modified during ECS creation.
        • To ensure that NIC multi-queue is enabled on an ECS created using a private image, configure NIC multi-queue when creating such a private image. NIC multi-queue routes NIC interrupt requests among multiple vCPUs for higher network PPS and bandwidth.

          For details, see "How Do I Set NIC Multi-Queue Feature of an Image?"

          +
        +
        +
      • Shared image

        A shared image is a private image shared by another user.

        +
      +
    5. (Optional) Set License Type.

      Specifies a license type for using an OS or software. This parameter is displayed only when the selected image is billed.

      +
      • Using License from the System

        Allows you to use the license provided by the public cloud platform. Obtaining the authorization of such a license is billed.

        +
      • Bring your own license (BYOL)

        Allows you to use your existing OS license. In such a case, you do not need to apply for a license again.

        +
      +

      For more details, see License Type.

      +
    6. Set System Disk and Data Disk if required.
      • System disk

        For the disk types supported by an ECS, see EVS Disks.

        +
        • If the image based on which an ECS is created is not encrypted, the system disk of the ECS is not encrypted. If the image based on which an ECS is created is encrypted, the system disk of the ECS is automatically encrypted. For details, see (Optional) Encryption-related parameters.
        • Encryption: indicates that the system disk is encrypted if you select this option. For details, see (Optional) Encryption-related parameters.
        • For a P1 or P2 ECS, the system disk must be greater than or equal to 15 GB. It is recommended that the system disk be greater than 40 GB. A disk size must be an integer multiple of 10, for example, 60 GB or 70 GB. Otherwise, the system automatically rounds the value down, for example, 60 GB for value 68.
        +
      • Data disk

        You can create multiple data disks for an ECS and enable required functions for each data disk. When creating an ECS, you can add up to 24 disks with customized sizes to it. After the ECS is created, you can add up to 60 disks to it.

        +

        Click and set the following functions if required:

        +
        • SCSI: indicates that the device type of the data disk is SCSI if you select this option. For more information about SCSI disks and the ECSs that can be attached with SCSI disks, see EVS Disks.
        • Share: indicates that the EVS disk is sharable if you select this option. Such an EVS disk can be attached to multiple ECSs.
        • Encryption: indicates that the data disk is encrypted if you select this option. For details, see (Optional) Encryption-related parameters.
        • Create Disk from Data Disk Image: If you have created a data disk image on the Image Management Service page, when using a Windows or Linux image to create an ECS, you can use the data disk image to create data disks for the ECS.

          Click Create Disk from Data Disk Image. In the dialog box that is displayed, select your data disk image.

          +
          • One data disk image can be used for one data disk only.
          • When you use a data disk image to create a disk, SCSI, Encryption, and Share are unavailable.
          • For instructions about how to create a data disk image, see Image Management Service User Guide.
          +
          +
        +
      • (Optional) Encryption-related parameters

        To enable encryption, click Create Xrole to assign KMS access permissions to EVS. If you have rights granting permission, assign the KMS access permissions to EVS. If you do not have the permission, contact the user having the security administrator rights to assign the KMS access permissions. For more details, see Can All Users Use the Encryption Feature?

        +
        • Encryption: indicates that the EVS disk has been encrypted.
        • Create Xrole: assigns KMS access permissions to EVS to obtain KMS keys. After the permissions are assigned, follow-up operations do not require assigning permissions again.
        • KMS Key Name: specifies the name of the key used by the encrypted EVS disk. You can select an existing key, or click Create KMS Key and create a new one on the KMS console. The default value is evs/default.
        • Xrole Name: EVSAccessKMS: specifies that permissions have been assigned to EVS to obtain KMS keys for encrypting or decrypting EVS disks.
        • KMS Key ID: specifies the ID of the key used by the encrypted data disk.
        +
      +
    7. Click Next: Configure Network.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0163572590.html b/ecs/umn/en-us_topic_0163572590.html new file mode 100644 index 000000000..1eafeac71 --- /dev/null +++ b/ecs/umn/en-us_topic_0163572590.html @@ -0,0 +1,37 @@ + + +

    Step 2: Configure Network

    +

    Network Configurations

    1. Set Network by selecting an available VPC and subnet from the drop-down list and specifying a private IP address assignment mode.

      VPC provides a dedicated network for your ECS. A VPC can contain subnets for further isolation. You can configure security groups per subnet to control access to cloud resources.

      +

      You can select an existing VPC or create a new one.

      +

      For more information about VPC, see Virtual Private Cloud User Guide.

      +
      • Ensure that DHCP is enabled in the VPC to which the ECS belongs.
      • When you use VPC for the first time, the system automatically creates a VPC for you, including the security group and NIC.
      +
      +
    2. (Optional) Add an extension NIC. You can add multiple extension NICs to an ECS and specify IP addresses for them (including primary NICs).

      If you specify an IP address for a NIC when creating multiple ECSs in a batch:

      +
      • This IP address serves as the start IP address.
      • Ensure that the IP addresses required by the NICs are within the subnet, consecutive, and available.
      • The subnet with the specified IP address cannot overlap with other subnets.
      +
      +
      • MTU Settings: This parameter is optional.

        If your ECS is of M2 or large-memory type, you can click MTU Settings to configure the maximum transmission unit (MTU) for a to-be-added extension NIC for improving network performance. An MTU can only be a number, ranging from 1280 to 8888.

        +
      +
    3. Set Security Group by selecting an available security group from the drop-down list or creating a new one.

      A security group controls ECS access within or between security groups by defining access rules. This enhances ECS security.

      +

      When creating an ECS, you can select multiple (recommended not more than five) security groups. In such a case, the access rules of all the selected security groups apply on the ECS.

      + +

      Before initializing an ECS, ensure that the security group rules for the outbound direction meet the following requirements:

      +
      • Protocol: TCP
      • Port Range: 80
      • Remote End: 169.254.0.0/16
      +

      If you use the default security group rules for the outbound direction, the preceding requirements are met, and the ECS can be initialized. The default security group rules for the outbound direction are as follows:

      +
      • Protocol: ANY
      • Port Range: ANY
      • Remote End: 0.0.0.0/16
      +
      +
    4. Set EIP.

      An EIP is a static public IP address bound to an ECS in a VPC. Using the EIP, the ECS provides services externally.

      +

      The following options are provided:

      +
      • Do not use

        Without an EIP, the ECS cannot access the Internet and is used in the private network or cluster only.

        +
      • Auto assign

        The system automatically assigns an EIP for the ECS. The EIP provides a dedicated bandwidth that is configurable.

        +
      • Specify

        An existing EIP is assigned for the ECS. When using an existing EIP, you are not allowed to create ECSs in a batch.

        +
      +
    5. Click Next: Configure Advanced Settings.
    +
    +

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0163572591.html b/ecs/umn/en-us_topic_0163572591.html new file mode 100644 index 000000000..d4935d319 --- /dev/null +++ b/ecs/umn/en-us_topic_0163572591.html @@ -0,0 +1,34 @@ + + +

    Step 3: Configure Advanced Settings

    +

    Advanced Settings

    1. Set ECS Name.

      The name can be customized but can contain only letters, digits, underscores (_), hyphens (-), and periods (.).

      +

      If you want to create multiple ECSs at a time, the system automatically sequences these ECSs.

      +

      The ECS Name set in this step will be the initial host name in the ECS OS.

      +

      Consecutive periods (.) or hyphens (-) will be replaced with the first character to prevent unknown issues.

      +
      +
    2. (Optional) Specify the description of the ECS.
    3. Set Login Mode.
      Key pair: allows you to use a key pair for login authentication. You can select an existing key pair, or click Create Key Pair and create a desired one.

      If you use an existing key pair, make sure that you have saved the key file locally. Otherwise, logging in to the ECS will fail.

      +
      +
      +
    4. Set ECS Group.

      An ECS group applies the anti-affinity policy to the ECSs in it so that the ECSs are automatically allocated to different hosts. This configuration is optional. For instructions about how to create an ECS group, see Managing ECS Groups.

      +

      An existing ECS attached with a local disk cannot be added to an ECS group. To use ECS group functions, select an ECS group when creating an ECS.

      +
      +
    5. To use functions listed in Advanced Options, select Configure now. Otherwise, do not select it.
      • User Data

        You can specify the user data. The user data will be automatically passed to the ECS when the ECS starts for the first time. This configuration is optional.

        +

        For example, if you activate user root permission by passing a script, you can log in to the ECS as user root.

        +

        For details, see Passing User Data to ECSs.

        +
      • Tag

        Tagging an ECS to facilitate ECS identification and management. This configuration is optional. You can add up to 10 tags to an ECS.

        +

        Tags added during ECS creation will also be added to the created EIP and EVS disks (including the system disk and data disks) of the ECS. If the ECS uses an existing EIP, the tags will not be added to the EIP.

        +

        After creating the ECS, you can view the tags on the pages providing details about the ECS, EIP, and EVS disks.

        +
        +

        For detailed operations, see Overview.

        +
      • Agency

        This configuration is optional. When your ECS resources need to be shared with other accounts, or your ECS is delegated to professional personnel or team for management, the tenant administrator creates an agency in IAM and grants the ECS management permissions to the personnel or team. The delegated account can log in to the cloud system and switch to your account to manage resources. You do not need to share security credentials (such as passwords) with other accounts, ensuring the security of your account.

        +

        If you have created an agency in IAM, you can select the agency from the drop-down list and obtain specified operation permissions. For instructions about how to create an agency, see Identity and Access Management User Guide.

        +
      +
    6. Click Next: Confirm.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0163572592.html b/ecs/umn/en-us_topic_0163572592.html new file mode 100644 index 000000000..0f85ff5a5 --- /dev/null +++ b/ecs/umn/en-us_topic_0163572592.html @@ -0,0 +1,18 @@ + + +

    Step 4: Confirm

    +

    Confirming the Order

    1. On the Confirm page, view details about the ECS configuration.

      To learn more about the price, click Pricing details.

      +
    2. Set the number of ECSs to be created.

      After the configuration, click Price Calculator to view the ECS configuration fee.

      +
    3. Confirm the configuration and click Create Now.
    +
    +

    Follow-up Procedure

    • After an ECS with an EIP bound is created, the system automatically generates a reverse domain name in the format of "ecs-xx-xx-xx-xx.compute.xxx.com" for each EIP by default. In the format, "xx-xx-xx-xx" indicates the EIP, and "xxx" indicates the domain name of the cloud service provider. You can use the reverse domain name to access the ECS.
      Use one of the following commands to obtain the default reverse domain name of an EIP:
      • ping -a EIP
      • nslookup [-qt=ptr] EIP
      • dig -x EIP
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0166284970.html b/ecs/umn/en-us_topic_0166284970.html new file mode 100644 index 000000000..48b959809 --- /dev/null +++ b/ecs/umn/en-us_topic_0166284970.html @@ -0,0 +1,25 @@ + + +

    How Can I Transfer Files from a Local Windows Computer to a Windows ECS?

    +

    Scenarios

    You want to transfer files from a local Windows computer to a Windows ECS through an MSTSC-based remote desktop connection.

    +
    +

    Prerequisites

    • The target ECS is running.
    • The ECS has an EIP bound. For details, see Binding an EIP.
    + +
    +

    Solution

    1. On the local Windows computer, click Start. In the Search programs and files text box, enter mstsc.

      The Remote Desktop Connection window is displayed.

      +
    2. Click Options.

      +

      +
    3. On the General tab, enter the EIP bound to the ECS and username Administrator for logging in to the ECS.

      +

      +
    4. Click the Local Resources tab and verify that Clipboard is selected in the Local devices and resources pane.

      +
    5. Click More.
    6. In the Drives pane, select the local disk where the file to be transferred to the Windows ECS is located.

      +
    7. Click OK and log in to the Windows ECS.
    8. Choose Start > Computer.

      The local disk is displayed on the Windows ECS.

      +
    9. Double-click the local disk to access it and copy the file to be transferred to the Windows ECS.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0166284971.html b/ecs/umn/en-us_topic_0166284971.html new file mode 100644 index 000000000..4cd7713ef --- /dev/null +++ b/ecs/umn/en-us_topic_0166284971.html @@ -0,0 +1,30 @@ + + +

    How Can I Use WinSCP to Transfer Files from a Local Windows Computer to a Linux ECS?

    +

    Scenarios

    WinSCP can be used to securely copy-paste files across local and remote computers. Compared with FTP, WinSCP allows you to use a username and password to access the destination server without any additional configuration on the server.

    +
    +

    To transfer a file from a local Windows computer to a Linux ECS, WinSCP is commonly used. This section describes how to transfer files from a local Windows computer to a Linux ECS using WinSCP. In this example, the ECS running CentOS 7.2 is used as an example.

    +

    Prerequisites

    • The target ECS is running.
    • The ECS has an EIP bound. For details, see Binding an EIP.
    + +
    +

    Solution

    1. Download WinSCP.
    1. Install WinSCP.
    2. Start WinSCP.

      +

      Set parameters as follows:

      +
      • File protocol: Set this to SFTP or SCP.
      • Host name: Enter the EIP bound to the ECS. Log in to the management console to obtain the EIP.
      • Port number: 22 by default.
      • User Name: Enter the username for logging in to the ECS.
        • If the ECS is logged in using an SSH key pair,
          • The username is core for a CoreOS public image.
          • The username is root for a non-CoreOS public image.
          +
        • If the ECS is logged in using a password, the username is root for a public image.
        +
      • Password: the password set when you created the ECS or converted using a key.
      +
    3. Click Login.
    4. Drag a file from the local computer on the left to the remotely logged in ECS on the right to transfer the file.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0167429328.html b/ecs/umn/en-us_topic_0167429328.html new file mode 100644 index 000000000..af47d78e1 --- /dev/null +++ b/ecs/umn/en-us_topic_0167429328.html @@ -0,0 +1,39 @@ + + +

    Why Is My Windows ECS Running Slowly?

    +

    If your Windows ECS runs slowly or is inaccessible unexpectedly, the bandwidth or vCPU usage of the ECS may be excessively high. If you have created an alarm rule using Cloud Eye, the system automatically sends an alarm to you when the bandwidth or CPU usage reaches the threshold specified in the rule.

    +

    To handle this issue, perform the following operations:

    +
    1. Fault locating

      Identify the processes leading to high bandwidth or CPU usage.

      +

      Windows offer multiple tools to locate faults, including Task Manager, Performance Monitor, Resource Monitor, Process Explorer, Xperf (supported by versions later than Windows Server 2008), and full memory dump analysis.

      +
    1. Troubleshooting
      Check whether the processes are malicious and handle the issue accordingly.
      • If the processes are not malicious, optimize them or modify ECS specifications.
      • If the processes are malicious, stop these processes manually or use a third-party tool to stop them automatically.
      +
      +
    +

    Fault Locating

    1. Log in to the ECS using VNC available on the management console.
    2. Start the Run dialog box, and then enter perfmon -res.
      Figure 1 Starting the Resource Monitor
      +
    3. On the Resource Monitor page, click the CPU or Network tab to view the CPU or bandwidth usage.
      Figure 2 Resource Monitor
      +
    4. Obtain the IDs and names of the processes with high CPU or bandwidth usage.
    5. On the remote login page, click Ctrl+Alt+Del to start the Windows Task Manager.

      Alternatively, start the Run dialog box and enter taskmgr to start the Windows Task Manager.

      +

      The following describes how to display PIDs in Windows Task Manager, locate a process, and check whether it is malicious.

      +
      1. Click the Details tab.
      2. Click PID to sort the data.
      3. Right-click the process with high CPU or bandwidth usage and choose Open File Location from the shortcut menu.
      4. Check whether the process is malicious.
        Figure 3 Checking the process
        +
      +
    +
    +

    Troubleshooting

    Before the troubleshooting, check whether the process leading to the high CPU or bandwidth usage is malicious, and then take measures accordingly.

    +

    Suggestions for non-malicious processes

    +
    1. If your ECS runs Windows Server 2008 or 2012, ensure that the available memory is 2 GB or larger.
    2. Check whether Windows Update is running on the backend.
    3. Check whether the antivirus software is running scan tasks on the backend.
    4. Check whether any applications requiring high CPU or bandwidth are running on the ECS. If so, modify ECS specifications or enlarge bandwidth.
    5. If the ECS configuration meets the application requirements, deploy applications separately. For example, deploy the database and applications separately.
    +

    Suggestions for malicious processes

    +

    If the high CPU or bandwidth usage is caused by viruses or Trojan horses, manually stop the affected processes. You are advised to troubleshoot the issue as follows:

    +
    1. Use the commercial-edition antivirus software or install Microsoft Safety Scanner to scan for viruses in security mode.
    2. Install the latest patches for Windows.
    3. Run MSconfig to disable all drivers that are not delivered with Microsoft and check whether the fault is rectified. For details, see How to perform a clean boot in Windows.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0167429329.html b/ecs/umn/en-us_topic_0167429329.html new file mode 100644 index 000000000..344756e42 --- /dev/null +++ b/ecs/umn/en-us_topic_0167429329.html @@ -0,0 +1,77 @@ + + +

    Why Is My Linux ECS Running Slowly?

    +

    If your Linux ECS runs slowly or is inaccessible unexpectedly, the bandwidth or vCPU usage of the ECS may be excessively high. If you have created an alarm rule using Cloud Eye, the system automatically sends an alarm to you when the bandwidth or CPU usage reaches the threshold specified in the rule.

    +

    To handle this issue, perform the following operations:

    +
    1. Fault locating

      Identify the processes leading to high bandwidth or CPU usage.

      +
    1. Troubleshooting
      Check whether the processes are malicious and handle the issue accordingly.
      • If the processes are not malicious, optimize their programs or modify ECS specifications.
      • If the processes are malicious, use a third-party tool to automatically stop the processes or manually stop them.
      +
      +
    +

    Common Commands

    The following uses the CentOS 7.2 64bit OS as an example to describe common commands. The commands may vary depending on Linux OS editions. For details, see the official documentation for the specific OS edition.

    +

    The common commands for checking Linux ECS performance metrics, such as CPU usage are as follows:

    +
    • ps -aux
    • ps -ef
    • top
    +
    +

    Locating High CPU Usage

    1. Log in to the ECS using VNC.
    2. Run the following command to check the OS running status:

      top

      +

      Information similar to the following is displayed.

      +

      +
    3. View the command output.
      • The first line in the command output is "20:56:02 up 37 days, 1 user, load average: 0.00, 0.01, 0.05", indicating that:

        The current system time is 20:56:02; the ECS has been running for 37 days; there is one login user; the last three values indicate the average CPU load in the last 1 minute, 5 minutes, and 15 minutes, respectively.

        +
      • The third line in the command output shows the overall CPU usage.
      • The fourth line in the command output shows the overall memory usage.
      • The lower part of the command output shows the resource usage of each process.
        1. On the top page, enter q or press Ctrl+C to exit.
        2. Alternatively, click Input Command in the upper right corner of the VNC login page, paste or enter commands in the displayed dialog box, and click Send.
        3. Common parameters in top commands are as follows:

          s: Change the image update frequency.

          +

          l: Show or hide the first line for the top information.

          +

          t: Show or hide the second line for tasks and the third line for CPUs.

          +

          m: Show or hide the fourth line for Mem and the fifth line for Swap.

          +

          N: Sort processes by PID in ascending or descending order.

          +

          P: Sort processes by CPU usage in ascending or descending order.

          +

          M: Sort processes by memory usage in ascending or descending order.

          +

          h: Show help for commands.

          +

          n: Set the number of processes displayed in the process list.

          +
        +
        +
      +
    4. Run the ll /proc/PID/exe command to obtain the program file specified by a PID.

      +
    +
    +

    Troubleshooting High CPU Usage

    If the processes leading to high CPU usage are malicious, run the top command to stop them. If the kswapd0 process leads to high CPU usage, optimize the program for the process or upgrade the ECS specifications for a larger memory capacity.

    +
    kswapd0 is a virtual memory management process. When the physical memory becomes insufficient, kswapd0 runs to allocate disk swap capacity for caching. This uses a large number of CPU resources.
    • For the detected malicious processes

      Quickly stop such processes on the top page. To do so, perform the following operations:

      +
      1. Press the k key during the execution of the top command.
      2. Enter the PID of the process to be stopped.

        The PID of the process is the value in the first column of the top command output. For example, to stop the process with PID 52, enter 52 and press Enter.

        +

        +
      3. After the operation is successful, information similar to the following is displayed. Press Enter.

        +
      +
    • For the kswapd0 process

      To check the memory usage of a process, perform the following operations:

      +
      1. Run the top command to check the resource usage of the kswapd0 process.
      2. If the process remains in non-sleeping state for a long period of time, you can preliminarily determine that the system is consistently paging. In such a case, the high CPU usage is caused by insufficient memory.

        +
      3. Run the vmstat command to check the virtual memory usage of the system.
        If the si and so values are large, the system is frequently paging and the physical memory of the system is insufficient.
        • si: Volume of data written from the swap partition to the memory per second, which is transferred from the disk to the memory.
        • so: Volume of data written from the memory to the swap partition per second, which is transferred from the memory to the disk.
        +
        +
      4. Further identify the causes of high memory usage. Run commands, such as free and ps to check the memory usage of the system and processes in the system.
      5. Restart the application or release the memory when traffic is light.

        To handle this issue, expand the ECS memory. If memory expansion is not allowed, optimize the application and enable hugepage memory.

        +
      +
    +
    +
    +

    Handling High Bandwidth Usage

    If the high bandwidth usage is caused by normal service access of non-malicious processes, enlarge the bandwidth to handle this issue. If the high bandwidth usage is caused by abnormal service access, for example, malicious access from certain IP addresses, CC attacks on the ECS, or malicious processes, use the traffic monitoring tool nethogs to monitor the bandwidth usage of each process in real time and identify faulty processes.

    +
    • Using nethogs for troubleshooting
      1. Run the following command to install nethogs:

        yum install nethogs -y

        +

        After the installation, run the netgos command to check bandwidth usage.

        +
        Parameters in the nethogs command are as follows:
        • -d: Set the update interval in the unit of second. The default value is 1.
        • -t: Enable tracing.
        • -c: Set the number of updates.
        • device: Set the NIC to be monitored. The default value is eth0.
        +
        +
        The following parameters are involved in command execution:
        • q: Exit nethogs.
        • s: Sort processes in the process list by TX traffic in ascending or descending order.
        • r: Sort processes in the process list by RX traffic in ascending or descending order.
        • m: Switch the display unit in the sequence of KB/s, KB, B, and MB.
        +
        +
      2. Run the following command to check the bandwidth usage of each process on the specified NIC:

        nethogs eth1

        +

        +
        The parameters in the command output are as follows:
        • PID: ID of the process.
        • USER: user who runs the process.
        • PROGRAM: IP addresses and port numbers of the process and connection, respectively. The former is for the server and the latter is for the client.
        • DEV: Network port to which the traffic is destined.
        • SENT: Volume of data sent by the process per second.
        • RECEIVED: Volume of data received by the process per second.
        +
        +
      3. Stop malicious programs or blacklist malicious IP addresses.

        To stop a malicious process, run the kill PID command.

        +

        To blacklist a malicious IP address or limit its rate, use iptables.

        +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0170135967.html b/ecs/umn/en-us_topic_0170135967.html new file mode 100644 index 000000000..a589e99e7 --- /dev/null +++ b/ecs/umn/en-us_topic_0170135967.html @@ -0,0 +1,37 @@ + + +

    File Upload/Data Transfer

    +
    +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0170139796.html b/ecs/umn/en-us_topic_0170139796.html new file mode 100644 index 000000000..2a019e269 --- /dev/null +++ b/ecs/umn/en-us_topic_0170139796.html @@ -0,0 +1,53 @@ + + +

    How Can I Use SFTP to Transfer Files Between a Local Linux Computer and a Linux ECS?

    +

    Scenarios

    You want to use SFTP to transfer files between a local Linux computer and a Linux ECS. The following uses CentOS as an example.

    +
    +

    Procedure

    1. Log in to the ECS as user root.
    2. Run the following command to check the OpenSSH version, which is expected to be 4.8p1 or later:

      ssh -V

      +

      Information similar to the following is displayed:

      +
      # OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
      +
    3. Create a user group and a user (for example, user1).

      groupadd sftp

      +

      useradd -g sftp -s /sbin/nologin user1

      +
    4. Set a password for the user.

      passwd user1

      +
      Figure 1 Setting a password
      +
    5. Assign permissions to directories.

      chown root:sftp /home/user1

      +

      chmod 755 -R /home/user1

      +

      mkdir /home/user1/upload

      +

      chown -R user1:sftp /home/user1/upload

      +

      chmod -R 755 /home/user1/upload

      +
    6. Run the following command to edit the sshd_config configuration file:

      vim /etc/ssh/sshd_config

      +
      Comment out the following information:
      #Subsystem sftp /usr/libexec/openssh/sftp-server
      +
      +

      Add the following information:

      +
      Subsystem sftp internal-sftp
      +Match Group sftp
      +ChrootDirectory /home/%u 
      +ForceCommand internal-sftp
      +AllowTcpForwarding no
      +X11Forwarding no
      +
      Figure 2 sshd_config file with the added information
      +
    7. Run the following command to restart the ECS:

      service sshd restart

      +

      Alternatively, run the following command to restart sshd:

      +

      systemctl restart sshd

      +
    8. Run the following command on the local computer to set up the connection:

      sftp root@IP address

      +
    9. Run the sftp command to check the connection.

      +
    10. Transfer files or folders.

      To upload files or folders, run the put -r command.

      +

      +

      To download files or folders, run the get -r command.

      +

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0170139797.html b/ecs/umn/en-us_topic_0170139797.html new file mode 100644 index 000000000..538f781ca --- /dev/null +++ b/ecs/umn/en-us_topic_0170139797.html @@ -0,0 +1,18 @@ + + +

    What Should I Do If the Connection Between the Client and the Server Times Out When I Upload a File Using FTP?

    +

    Symptom

    When I attempted to access the server from the client to upload a file using FTP, the connection timed out.

    +
    +

    Constraints

    The operations described in this section apply to FTP on local Windows only.

    +
    +

    Possible Causes

    Data is intercepted by the firewall or security group on the server.

    +
    +

    Solution

    1. Check the firewall settings on the server.
    2. Disable the firewall or add desired rules to the security group.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0170139798.html b/ecs/umn/en-us_topic_0170139798.html new file mode 100644 index 000000000..eecabdb2d --- /dev/null +++ b/ecs/umn/en-us_topic_0170139798.html @@ -0,0 +1,29 @@ + + +

    What Should I Do If Writing Data Failed When I Upload a File Using FTP?

    +

    Symptom

    When I attempted to upload a file using FTP, writing data failed. As a result, the file transfer failed.

    +
    +

    Constraints

    The operations described in this section apply to FTP on Windows ECSs only.

    +
    +

    Possible Causes

    When NAT is enabled on the FTP server, the FTP client must connect to the FTP server in passive mode. In such a case, the public IP address (EIP) of the server cannot be accessed from the router. Therefore, you need to add the EIP to the public IP address list on the server. Additionally, set the port range to limit the number of ports with data forwarded by the router.

    +
    +

    Solution

    The public IP address must be associated with the private IP address using NAT. Therefore, the server must be configured accordingly.

    +
    1. Configure the public IP address of the server.

      Choose Edit > Settings.

      +
      Figure 1 Setting the public IP address
      +
    2. Choose Passive mode settings, set the port range (for example, 50000-50100) for transmitting data, and enter the target public IP address.
      Figure 2 Setting the range of ports for data transmission
      +
    3. Click OK.
    4. Allow traffic on TCP ports 50000-50100 and 21 in the security group in the inbound direction.
    5. Test the connection on the client.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0174917535.html b/ecs/umn/en-us_topic_0174917535.html new file mode 100644 index 000000000..b01c6771a --- /dev/null +++ b/ecs/umn/en-us_topic_0174917535.html @@ -0,0 +1,17 @@ + + +

    Binding an EIP

    +

    Scenarios

    You can assign an EIP and bind it to an ECS to enable the ECS to access the Internet.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the EIPs tab and then Bind EIP.
    6. Select an EIP and click OK.

      If no EIP is available in the current region, the EIP list is empty. In such a case, allocate an EIP and then bind it.

      +
      +
    7. View the bound EIP on the EIPs tab.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0176502615.html b/ecs/umn/en-us_topic_0176502615.html new file mode 100644 index 000000000..e26948deb --- /dev/null +++ b/ecs/umn/en-us_topic_0176502615.html @@ -0,0 +1,26 @@ + + +

    Managing ECSs

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0177457773.html b/ecs/umn/en-us_topic_0177457773.html new file mode 100644 index 000000000..cd9b9e204 --- /dev/null +++ b/ecs/umn/en-us_topic_0177457773.html @@ -0,0 +1,47 @@ + + +

    Overview

    +

    Image

    An image is an ECS or BMS template that contains an OS or service data and may also contain proprietary software and application software, such as database software. Images can be public, private, or shared.

    +

    Image Management Service (IMS) allows you to easily create and manage images. You can create an ECS using a public image, private image, or shared image. You can also use an existing ECS or external image file to create a private image.

    +
    +

    Public Image

    A public image is a standard, widely used image that contains a common OS, such as Ubuntu, CentOS, or Debian, and preinstalled public applications. This image is available to all users. Select your desired public image. Alternatively, create a private image based on a public image to copy an existing ECS or rapidly create ECSs in a batch. You can customize a public image by configuring the application environment and software.

    +
    +

    Private Image

    A private image contains an OS or service data, preinstalled public applications, and private applications. It is available only to the user who created it.

    + +
    + + + + + + + + + + + + + +
    Table 1 Private image types

    Image Type

    +

    Description

    +

    System disk image

    +

    Contains an OS and application software for running services. You can use a system disk image to create ECSs and migrate your services to the cloud.

    +

    Data disk image

    +

    Contains only service data. You can use a data disk image to create EVS disks and migrate your service data to the cloud.

    +

    Full-ECS image

    +

    Contains an OS, application software, and data for running services. A full-ECS image contains the system disk and all data disks attached to it.

    +
    +
    +

    If you plan to use a private image to change the OS, ensure that the private image is available. For instructions about how to create a private image, see Image Management Service User Guide.

    +
    • If the image of a specified ECS is required, make sure that a private image has been created using this ECS.
    • If a local image file is required, make sure that the image file has been imported to the cloud platform and registered as a private image.
    • If a private image from another region is required, make sure that the image has been copied.
    • If a private image from another user account is required, make sure that the image has been shared with you.
    +
    +

    Shared Image

    A shared image is a private image shared by another user and can be used as your own private image.

    +
    • Images can be shared within a region only.
    • Each image can be shared to a maximum of 128 tenants.
    • You can stop sharing images anytime without notifying the recipient.
    • You can delete shared image anytime without notifying the recipient.
    • Full-ECS images cannot be shared.
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0177457774.html b/ecs/umn/en-us_topic_0177457774.html new file mode 100644 index 000000000..6622e727d --- /dev/null +++ b/ecs/umn/en-us_topic_0177457774.html @@ -0,0 +1,13 @@ + + +

    Images

    +
    + + diff --git a/ecs/umn/en-us_topic_0177512565.html b/ecs/umn/en-us_topic_0177512565.html new file mode 100644 index 000000000..775eb9b16 --- /dev/null +++ b/ecs/umn/en-us_topic_0177512565.html @@ -0,0 +1,2682 @@ + + +

    ECS Specifications

    +

    General-Purpose

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 S3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    s3.medium.1

    +

    1

    +

    1

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6278

    +

    s3.large.1

    +

    2

    +

    2

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.1

    +

    4

    +

    4

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.1

    +

    8

    +

    8

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.1

    +

    16

    +

    16

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.1

    +

    32

    +

    32

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +

    s3.medium.2

    +

    1

    +

    2

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    s3.large.2

    +

    2

    +

    4

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.2

    +

    4

    +

    8

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.2

    +

    8

    +

    16

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.2

    +

    16

    +

    32

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.2

    +

    32

    +

    64

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +

    s3.medium.4

    +

    1

    +

    4

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    s3.large.4

    +

    2

    +

    8

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.4

    +

    4

    +

    16

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.4

    +

    8

    +

    32

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.4

    +

    16

    +

    64

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.4

    +

    32

    +

    128

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +

    s3.medium.8

    +

    1

    +

    8

    +

    0.8/0.15

    +

    10

    +

    1

    +

    2

    +

    KVM

    +

    s3.large.8

    +

    2

    +

    16

    +

    1.5/0.3

    +

    15

    +

    1

    +

    2

    +

    KVM

    +

    s3.xlarge.8

    +

    4

    +

    32

    +

    2/0.5

    +

    25

    +

    1

    +

    2

    +

    KVM

    +

    s3.2xlarge.8

    +

    8

    +

    64

    +

    3/1

    +

    50

    +

    2

    +

    2

    +

    KVM

    +

    s3.4xlarge.8

    +

    16

    +

    128

    +

    6/2

    +

    100

    +

    4

    +

    2

    +

    KVM

    +

    s3.8xlarge.8

    +

    32

    +

    256

    +

    8/2

    +

    200

    +

    8

    +

    4

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 S2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    s2.medium.1

    +

    1

    +

    1

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6161

    +

    s2.large.1

    +

    2

    +

    2

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.1

    +

    4

    +

    4

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.1

    +

    8

    +

    8

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.1

    +

    16

    +

    16

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.1

    +

    32

    +

    32

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +

    s2.medium.2

    +

    1

    +

    2

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    s2.large.2

    +

    2

    +

    4

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.2

    +

    4

    +

    8

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.2

    +

    8

    +

    16

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.2

    +

    16

    +

    32

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.2

    +

    32

    +

    64

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +

    s2.medium.4

    +

    1

    +

    4

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    s2.large.4

    +

    2

    +

    8

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.4

    +

    4

    +

    16

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.4

    +

    8

    +

    32

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.4

    +

    16

    +

    64

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.4

    +

    32

    +

    128

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +

    s2.medium.8

    +

    1

    +

    8

    +

    0.5/0.1

    +

    5

    +

    1

    +

    12

    +

    KVM

    +

    s2.large.8

    +

    2

    +

    16

    +

    0.8/0.2

    +

    10

    +

    1

    +

    12

    +

    KVM

    +

    s2.xlarge.8

    +

    4

    +

    32

    +

    1.5/0.4

    +

    15

    +

    1

    +

    12

    +

    KVM

    +

    s2.2xlarge.8

    +

    8

    +

    64

    +

    3/0.8

    +

    20

    +

    2

    +

    12

    +

    KVM

    +

    s2.4xlarge.8

    +

    16

    +

    128

    +

    4/1.5

    +

    30

    +

    4

    +

    12

    +

    KVM

    +

    s2.8xlarge.8

    +

    32

    +

    256

    +

    6/3

    +

    50

    +

    8

    +

    12

    +

    KVM

    +
    +
    +
    +

    Dedicated General-Purpose

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 C4 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    c4.large.2

    +

    2

    +

    4

    +

    4/1.2

    +

    40

    +

    2

    +

    2

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6266

    +

    c4.xlarge.2

    +

    4

    +

    8

    +

    8/2.4

    +

    80

    +

    2

    +

    3

    +

    KVM

    +

    c4.2xlarge.2

    +

    8

    +

    16

    +

    15/4.5

    +

    150

    +

    4

    +

    4

    +

    KVM

    +

    c4.3xlarge.2

    +

    12

    +

    24

    +

    17/7

    +

    200

    +

    4

    +

    6

    +

    KVM

    +

    c4.4xlarge.2

    +

    16

    +

    32

    +

    20/9

    +

    280

    +

    8

    +

    8

    +

    KVM

    +

    c4.6xlarge.2

    +

    24

    +

    48

    +

    25/14

    +

    400

    +

    8

    +

    8

    +

    KVM

    +

    c4.8xlarge.2

    +

    32

    +

    64

    +

    30/18

    +

    550

    +

    16

    +

    8

    +

    KVM

    +

    c4.16xlarge.2

    +

    64

    +

    128

    +

    40/36

    +

    1000

    +

    32

    +

    8

    +

    KVM

    +

    c4.large.4

    +

    2

    +

    8

    +

    4/1.2

    +

    40

    +

    2

    +

    2

    +

    KVM

    +

    c4.xlarge.4

    +

    4

    +

    16

    +

    8/2.4

    +

    80

    +

    2

    +

    3

    +

    KVM

    +

    c4.2xlarge.4

    +

    8

    +

    32

    +

    15/4.5

    +

    150

    +

    4

    +

    4

    +

    KVM

    +

    c4.3xlarge.4

    +

    12

    +

    48

    +

    17/7

    +

    200

    +

    4

    +

    6

    +

    KVM

    +

    c4.4xlarge.4

    +

    16

    +

    64

    +

    20/9

    +

    280

    +

    8

    +

    8

    +

    KVM

    +

    c4.6xlarge.4

    +

    24

    +

    96

    +

    25/14

    +

    400

    +

    8

    +

    8

    +

    KVM

    +

    c4.8xlarge.4

    +

    32

    +

    128

    +

    30/18

    +

    550

    +

    16

    +

    8

    +

    KVM

    +

    c4.16xlarge.4

    +

    64

    +

    256

    +

    40/36

    +

    1000

    +

    32

    +

    8

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 C3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    c3.large.2

    +

    2

    +

    4

    +

    1.5/0.6

    +

    30

    +

    2

    +

    12

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151

    +

    c3.xlarge.2

    +

    4

    +

    8

    +

    3/1

    +

    50

    +

    2

    +

    12

    +

    KVM

    +

    c3.2xlarge.2

    +

    8

    +

    16

    +

    5/2

    +

    90

    +

    4

    +

    12

    +

    KVM

    +

    c3.4xlarge.2

    +

    16

    +

    32

    +

    10/4

    +

    130

    +

    4

    +

    12

    +

    KVM

    +

    c3.8xlarge.2

    +

    32

    +

    64

    +

    15/8

    +

    260

    +

    8

    +

    12

    +

    KVM

    +

    c3.15xlarge.2

    +

    60

    +

    128

    +

    17/16

    +

    500

    +

    16

    +

    12

    +

    KVM

    +

    c3.large.4

    +

    2

    +

    8

    +

    1.5/0.6

    +

    30

    +

    2

    +

    12

    +

    KVM

    +

    c3.xlarge.4

    +

    4

    +

    16

    +

    3/1

    +

    50

    +

    2

    +

    12

    +

    KVM

    +

    c3.2xlarge.4

    +

    8

    +

    32

    +

    5/2

    +

    90

    +

    4

    +

    12

    +

    KVM

    +

    c3.4xlarge.4

    +

    16

    +

    64

    +

    10/4

    +

    130

    +

    4

    +

    12

    +

    KVM

    +

    c3.8xlarge.4

    +

    32

    +

    128

    +

    15/8

    +

    260

    +

    8

    +

    12

    +

    KVM

    +

    c3.15xlarge.4

    +

    60

    +

    256

    +

    16/16

    +

    500

    +

    16

    +

    12

    +

    KVM

    +
    +
    +
    +

    Memory-optimized

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 M4 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    m4.large.8

    +

    2

    +

    16

    +

    4/1.2

    +

    40

    +

    2

    +

    2

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6266

    +

    m4.xlarge.8

    +

    4

    +

    32

    +

    8/2.4

    +

    80

    +

    2

    +

    3

    +

    KVM

    +

    m4.2xlarge.8

    +

    8

    +

    64

    +

    15/4.5

    +

    150

    +

    4

    +

    4

    +

    KVM

    +

    m4.3xlarge.8

    +

    12

    +

    96

    +

    17/7

    +

    200

    +

    4

    +

    6

    +

    KVM

    +

    m4.4xlarge.8

    +

    16

    +

    128

    +

    20/9

    +

    280

    +

    8

    +

    8

    +

    KVM

    +

    m4.6xlarge.8

    +

    24

    +

    192

    +

    25/14

    +

    400

    +

    8

    +

    8

    +

    KVM

    +

    m4.8xlarge.8

    +

    32

    +

    256

    +

    30/18

    +

    550

    +

    16

    +

    8

    +

    KVM

    +

    m4.16xlarge.8

    +

    64

    +

    512

    +

    40/36

    +

    1000

    +

    32

    +

    8

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 6 M3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    Virtualization Type

    +

    Hardware

    +

    m3.large.8

    +

    2

    +

    16

    +

    1.5/0.6

    +

    30

    +

    2

    +

    12

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151

    +

    m3.xlarge.8

    +

    4

    +

    32

    +

    3/1.1

    +

    50

    +

    2

    +

    12

    +

    KVM

    +

    m3.2xlarge.8

    +

    8

    +

    64

    +

    5/2

    +

    90

    +

    4

    +

    12

    +

    KVM

    +

    m3.4xlarge.8

    +

    16

    +

    128

    +

    10/4.5

    +

    130

    +

    4

    +

    12

    +

    KVM

    +

    m3.8xlarge.8

    +

    32

    +

    256

    +

    15/9

    +

    260

    +

    8

    +

    12

    +

    KVM

    +

    m3.15xlarge.8

    +

    60

    +

    512

    +

    17/17

    +

    500

    +

    16

    +

    12

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 7 M2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Hardware

    +

    m2.4xlarge.8

    +

    16

    +

    128

    +

    8/5

    +

    40

    +

    4

    +

    KVM

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +

    +

    m2.8xlarge.8

    +

    32

    +

    256

    +

    13/8

    +

    60

    +

    8

    +

    KVM

    +
    +
    +
    +

    Large-Memory

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 8 E3 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Hardware

    +

    e3.7xlarge.12

    +

    28

    +

    348

    +

    25/12

    +

    280

    +

    8

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151

    +

    e3.14xlarge.12

    +

    56

    +

    696

    +

    25/25

    +

    500

    +

    16

    +

    KVM

    +
    +
    +
    +

    Disk-intensive

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 9 D2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Maximum PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Local Disks (GiB)

    +

    Hardware

    +

    d2.xlarge.8

    +

    4

    +

    32

    +

    4/1.4

    +

    40

    +

    2

    +

    KVM

    +

    2×1675

    +

    CPU: Intel® Xeon® Gold 6151

    +

    d2.2xlarge.8

    +

    8

    +

    64

    +

    6/2.8

    +

    80

    +

    4

    +

    KVM

    +

    4×1675

    +

    d2.4xlarge.8

    +

    16

    +

    128

    +

    10/5.6

    +

    160

    +

    6

    +

    KVM

    +

    8×1675

    +

    d2.6xlarge.8

    +

    24

    +

    192

    +

    15/8.5

    +

    250

    +

    8

    +

    KVM

    +

    12×1675

    +

    d2.8xlarge.8

    +

    32

    +

    256

    +

    17/11

    +

    320

    +

    8

    +

    KVM

    +

    16×1675

    +

    d2.15xlarge.9

    +

    60

    +

    540

    +

    17/17

    +

    500

    +

    16

    +

    KVM

    +

    24×1675

    +
    +
    +
    +

    High-Performance Computing

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 10 HL1 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Network Type

    +

    Hardware

    +

    hl1.8xlarge.8

    +

    32

    +

    256

    +

    9/9

    +

    90

    +

    8

    +

    KVM

    +

    100 Gbit/s EDR InfiniBand

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 11 H2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Virtualization Type

    +

    Local Disks

    +

    Capacity of One Local Disk (TB)

    +

    Network Type

    +

    Hardware

    +

    h2.3xlarge.10

    +

    16

    +

    128

    +

    13/13

    +

    90

    +

    8

    +

    KVM

    +

    1

    +

    3.2

    +

    100 Gbit/s EDR InfiniBand

    +

    CPU: Intel® Xeon® E5-2667 v4

    +

    h2.3xlarge.20

    +

    16

    +

    256

    +

    13/13

    +

    90

    +

    8

    +

    KVM

    +

    1

    +

    3.2

    +

    100 Gbit/s EDR InfiniBand

    +
    +
    +
    +

    GPU-accelerated

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 12 G6 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    g6.10xlarge.7

    +

    40

    +

    280

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    1 x T4

    +

    16

    +

    KVM

    +

    CPU: Intel® Xeon® Cascade Lake 6266

    +

    g6.20xlarge.7

    +

    80

    +

    560

    +

    30/30

    +

    400

    +

    32

    +

    8

    +

    2 x T4

    +

    32

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 13 P2s ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Connection

    +

    GPU Memory (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    p2s.2xlarge.8

    +

    8

    +

    64

    +

    10/4

    +

    50

    +

    4

    +

    4

    +

    1 x V100

    +

    PCIe Gen3

    +

    1 x 32 GiB

    +

    KVM

    +

    CPU: 2nd Generation Intel® Xeon® Scalable Processor 6278

    +

    +

    +

    +

    +

    p2s.4xlarge.8

    +

    16

    +

    128

    +

    15/8

    +

    100

    +

    8

    +

    8

    +

    2 x V100

    +

    PCIe Gen3

    +

    2 x 32 GiB

    +

    KVM

    +

    p2s.8xlarge.8

    +

    32

    +

    256

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    4 x V100

    +

    PCIe Gen3

    +

    4 x 32 GiB

    +

    KVM

    +

    p2s.16xlarge.8

    +

    64

    +

    512

    +

    30/30

    +

    400

    +

    32

    +

    8

    +

    8 x V100

    +

    PCIe Gen3

    +

    8 x 32 GiB

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 14 P2v ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Connection

    +

    GPU Memory (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    p2v.2xlarge.8

    +

    8

    +

    64

    +

    10/4

    +

    50

    +

    4

    +

    4

    +

    1 x V100

    +

    N/A

    +

    1 × 16 GiB

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake-SP Gold 6151 v5

    +

    p2v.4xlarge.8

    +

    16

    +

    128

    +

    15/8

    +

    100

    +

    8

    +

    8

    +

    2 x V100

    +

    NVLink

    +

    2 × 16 GiB

    +

    KVM

    +

    p2v.8xlarge.8

    +

    32

    +

    256

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    4 x V100

    +

    NVLink

    +

    4 × 16 GiB

    +

    KVM

    +

    p2v.16xlarge.8

    +

    64

    +

    512

    +

    30/30

    +

    400

    +

    32

    +

    8

    +

    8 x V100

    +

    NVLink

    +

    8 × 16 GiB

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 15 P2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Local Disks

    +

    Virtualization Type

    +

    Hardware

    +

    p2.2xlarge.8

    +

    8

    +

    64

    +

    5/1.6

    +

    35

    +

    2

    +

    12

    +

    1 x V100

    +

    1 x 16

    +

    1 × 800 GiB NVMe

    +

    KVM

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +

    p2.4xlarge.8

    +

    16

    +

    128

    +

    8/3.2

    +

    70

    +

    4

    +

    12

    +

    2 x V100

    +

    2 x 16

    +

    2 × 800 GiB NVMe

    +

    KVM

    +

    p2.8xlarge.8

    +

    32

    +

    256

    +

    10/6.5

    +

    140

    +

    8

    +

    12

    +

    4 x V100

    +

    4 x 16

    +

    4 × 800 GiB NVMe

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 16 P1 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Local Disks (GiB)

    +

    Virtualization Type

    +

    Hardware

    +

    p1.2xlarge.8

    +

    8

    +

    64

    +

    5/1.6

    +

    35

    +

    2

    +

    12

    +

    1 x P100

    +

    1 x 16

    +

    1×800

    +

    KVM

    +

    CPU: Intel® Xeon® Processor E5-2690 v4

    +

    p1.4xlarge.8

    +

    16

    +

    128

    +

    8/3.2

    +

    70

    +

    4

    +

    12

    +

    2 x P100

    +

    2 x 16

    +

    2×800

    +

    KVM

    +

    p1.8xlarge.8

    +

    32

    +

    256

    +

    10/6.5

    +

    140

    +

    8

    +

    12

    +

    4 x P100

    +

    4 x 16

    +

    4×800

    +

    KVM

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 17 PI2 ECS specifications

    Flavor

    +

    vCPUs

    +

    Memory (GiB)

    +

    Maximum/Assured Bandwidth (Gbit/s)

    +

    Max. PPS (10,000)

    +

    NIC Multi-Queue

    +

    Maximum NICs

    +

    GPUs

    +

    GPU Memory (GiB)

    +

    Local Disks

    +

    Virtualization Type

    +

    Hardware

    +

    pi2.2xlarge.4

    +

    8

    +

    32

    +

    10/4

    +

    50

    +

    4

    +

    4

    +

    1 x T4

    +

    1 × 16 GiB

    +

    N/A

    +

    KVM

    +

    CPU: Intel® Xeon® Skylake 6151 3.0 GHz or Intel® Xeon® Cascade Lake 6278 2.6 GHz

    +

    pi2.4xlarge.4

    +

    16

    +

    64

    +

    15/8

    +

    100

    +

    8

    +

    8

    +

    2 x T4

    +

    2 × 16 GiB

    +

    N/A

    +

    KVM

    +

    pi2.8xlarge.4

    +

    32

    +

    128

    +

    25/15

    +

    200

    +

    16

    +

    8

    +

    4 x T4

    +

    4 × 16 GiB

    +

    N/A

    +

    KVM

    +
    +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0183016706.html b/ecs/umn/en-us_topic_0183016706.html new file mode 100644 index 000000000..1c59d5a11 --- /dev/null +++ b/ecs/umn/en-us_topic_0183016706.html @@ -0,0 +1,14 @@ + + +

    Resources and Tags

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0183019668.html b/ecs/umn/en-us_topic_0183019668.html new file mode 100644 index 000000000..8024df2cf --- /dev/null +++ b/ecs/umn/en-us_topic_0183019668.html @@ -0,0 +1,22 @@ + + +

    Tag Management

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0183019669.html b/ecs/umn/en-us_topic_0183019669.html new file mode 100644 index 000000000..373edb485 --- /dev/null +++ b/ecs/umn/en-us_topic_0183019669.html @@ -0,0 +1,42 @@ + + +

    Adding Tags

    +

    Tags are used to identify cloud resources, such as ECSs, images, and disks. If you have multiple types of cloud resources which are associated with each other, you can add tags to the resources to classify and manage them easily. For more details, see Overview.

    + +

    For details about how to use predefined tags, see Using Predefined Tags.

    +

    Adding Tags When Creating an ECS

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Click Create ECS.
    5. Configure ECS parameters.

      Select Configure now for Advanced Options. Then, add a tag key and tag value. For the tag key and tag value requirements, see Table 1.

      +
      • For details about other parameters, see "Purchasing an ECS with Customized Configurations".
      +
      +
    +
    +

    Adding Tags on the Page Providing Details About an ECS

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the Tags tab and then Add Tag. In the displayed dialog box, enter the tag key and tag value. For the tag key and tag value requirements, see Table 1.

      You can change the tag value after the tag is added.

      +
    +
    +

    Adding Tags on the TMS Console

    This method is suitable for adding tags with the same tag key to multiple resources.

    +
    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Tag Management Service.
    3. On the displayed Resource Tags page, select the region where the resource is located, select ECS for Resource Type, and click Search.

      All ECSs matching the search criteria are displayed.

      +
    4. In the Search Result area, click Create Key. In the displayed dialog box, enter a key (for example project) and click OK.

      After the tag is created, the tag key is added to the resource list. If the key is not displayed in the resource list, click and select the created key from the drop-down list.

      +

      By default, the value of the tag key is Not tagged. You need to set a value for the tag of each resource to associate the tag with the resource.

      +
    5. Click Edit to make the resource list editable.
    6. Locate the row containing the target ECS, click , and enter a value (for example A).

      After a value is set for a tag key, the number of tags is incremented by 1. Repeat the preceding steps to add tag values for other ECSs.

      +
    +
    +

    Using Predefined Tags

    If you want to add the same tag to multiple ECSs or other resources, you can create a predefined tag on the TMS console and then select the tag for the ECSs or resources. This frees you from having to repeatedly enter tag keys and values. To do so, perform the following operations:

    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Tag Management Service.
    3. In the navigation pane on the left, choose Predefined Tags. In the right pane, click Create Tag enter a key (for example project) and a value (for example A) in the displayed dialog box.
    4. Choose Service List > Computing > Elastic Cloud Server, and select the predefined tag by following the procedure for adding a tag.
    +
    +

    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0183019670.html b/ecs/umn/en-us_topic_0183019670.html new file mode 100644 index 000000000..480e550c4 --- /dev/null +++ b/ecs/umn/en-us_topic_0183019670.html @@ -0,0 +1,28 @@ + + +

    Searching for Resources by Tag

    +

    After tags are added to resources, you can search for resources by tag using either of the following methods.

    +

    Searching for ECSs by Tag

    On the Elastic Cloud Server page, search for ECSs by tag key or value.
    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. Click Search by Tag above the upper right corner of the ECS list to expand the search area.
      Figure 1 Searching for ECSs by tag
      +
    5. Enter the tag of the ECS to be searched for.

      Neither the tag key nor value can be empty. When the tag key or value is matched, the system automatically shows the target ECSs.

      +
    6. Add tags.

      The system supports multiple tags and uses the intersection set of all tags to search for ECSs.

      +
    7. Click Search.

      The system searches for ECSs based on tag keys and values.

      +
    +
    +
    +

    Filtering Resources on the TMS Console

    1. Log in to the management console.
    2. Under Management & Deployment, click Tag Management Service.
    3. On the Resource Tags page, set the search criteria, including Region, Resource Type, and Resource Tag.
    4. Click Search.

      All the resources that meet the search criteria will be displayed in the Search Result area.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0183019671.html b/ecs/umn/en-us_topic_0183019671.html new file mode 100644 index 000000000..93c29004c --- /dev/null +++ b/ecs/umn/en-us_topic_0183019671.html @@ -0,0 +1,24 @@ + + +

    Deleting a Tag

    +

    If you no longer need a tag, delete it in any of the following ways:

    + +

    Deleting a Tag on the Page Providing Details About an ECS

    1. Log in to the management console.
    2. Click in the upper left corner and select your region and project.
    3. Under Computing, click Elastic Cloud Server.
    4. On the Elastic Cloud Server page, click the name of the target ECS.

      The page providing details about the ECS is displayed.

      +
    5. Click the Tags tab. Locate the row containing the tag to be deleted and click Delete in the Operation column. In the Delete Tag dialog box, click Yes.
    +
    +

    Deleting a Tag on the TMS Console

    1. Log in to the management console.
    2. Under Management & Deployment, click Tag Management Service.
    3. In the upper right corner of the page, click the username and select Tag Management from the drop-down list.
    4. On the Resource Tags page, set the search criteria for ECSs and click Search.
    5. In the Search Result area, click Edit to make the resource tag list editable.

      If the key of a tag you want to delete is not contained in the list, click and select the tag key from the drop-down list. It is a good practice to select at most 10 keys to display.

      +
    6. Locate the row containing the target ECS and click .
    7. (Optional) Click in the upper right of the Search Result area.

      The resource list is refreshed and the refresh time is updated.

      +
    +
    +

    Batch Deleting Tags on the TMS Console

    Exercise caution when deleting tags in a batch. After you delete the tags, they will be removed from all the associated ECSs and cannot be recovered.

    +
    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Tag Management Service.
    3. On the Resource Tags page, set the search criteria for ECSs and click Search.
    4. Select the target ECSs.
    5. Click Manage Tag in the upper left corner of the list.
    6. In the displayed Manage Tag dialog box, click Delete in the Operation column. Click OK.
    7. (Optional) Click in the upper right of the Search Result area.

      The resource list is refreshed and the refresh time is updated.

      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0186645877.html b/ecs/umn/en-us_topic_0186645877.html new file mode 100644 index 000000000..d3b587f0f --- /dev/null +++ b/ecs/umn/en-us_topic_0186645877.html @@ -0,0 +1,22 @@ + + +

    Region and AZ

    +

    Concept

    A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.

    +
    • A region is a physical data center, which is completely isolated to improve fault tolerance and stability. The region that is selected during resource creation cannot be changed after the resource is created.
    • An AZ is a physical location where resources use independent power supplies and networks. A region contains one or more AZs that are physically isolated but interconnected through internal networks. Because AZs are isolated from each other, any fault that occurs in one AZ will not affect others.
    +

    Figure 1 shows the relationship between regions and AZs.

    +
    Figure 1 Regions and AZs
    +
    +

    Selecting a Region

    Select a region closest to your target users for lower network latency and quick access.

    +
    +

    Selecting an AZ

    When deploying resources, consider your applications' requirements on disaster recovery (DR) and network latency.

    +
    • For high DR capability, deploy resources in different AZs within the same region.
    • For lower network latency, deploy resources in the same AZ.
    +
    +

    Regions and Endpoints

    Before you use an API to call resources, specify its region and endpoint. For more details, see Regions and Endpoints.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0208808104.html b/ecs/umn/en-us_topic_0208808104.html new file mode 100644 index 000000000..68aa4a2d9 --- /dev/null +++ b/ecs/umn/en-us_topic_0208808104.html @@ -0,0 +1,26 @@ + + +

    ECS Management

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0208809314.html b/ecs/umn/en-us_topic_0208809314.html new file mode 100644 index 000000000..ec4c871d6 --- /dev/null +++ b/ecs/umn/en-us_topic_0208809314.html @@ -0,0 +1,16 @@ + + +

    ECS Migration

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0208809315.html b/ecs/umn/en-us_topic_0208809315.html new file mode 100644 index 000000000..0ef05b7bc --- /dev/null +++ b/ecs/umn/en-us_topic_0208809315.html @@ -0,0 +1,16 @@ + + +

    Resource Management and Tags

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0208809316.html b/ecs/umn/en-us_topic_0208809316.html new file mode 100644 index 000000000..416ec755c --- /dev/null +++ b/ecs/umn/en-us_topic_0208809316.html @@ -0,0 +1,18 @@ + + +

    Resource Monitoring

    +

    +
    + + diff --git a/ecs/umn/en-us_topic_0213874991.html b/ecs/umn/en-us_topic_0213874991.html new file mode 100644 index 000000000..eec9481c7 --- /dev/null +++ b/ecs/umn/en-us_topic_0213874991.html @@ -0,0 +1,403 @@ + + +

    Obtaining a Tesla Driver and CUDA Toolkit

    +

    Scenarios

    Before using a GPU-accelerated ECS, make sure that the desired Tesla driver and CUDA toolkit have been installed on the EIP. Otherwise, computing acceleration will not take effect. This section describes how to obtain a Tesla driver and CUDA toolkit. Select a driver version based on your ECS type.

    +

    For instructions about how to install the Tesla driver and CUDA toolkit, see Installing a Tesla Driver and CUDA Toolkit on a GPU-accelerated ECS.

    +
    +

    Downloading a Tesla Driver

    Download a driver based on your ECS type. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Mapping between Tesla drivers and ECS types

    ECS Type

    +

    Driver

    +

    Product Series

    +

    Product

    +

    P2s

    +

    Tesla

    +

    V

    +

    V100

    +

    P2v

    +

    Tesla

    +

    V

    +

    V100

    +

    P2

    +

    Tesla

    +

    V

    +

    V100

    +

    P1

    +

    Tesla

    +

    P

    +

    P100

    +

    PI2

    +

    Tesla

    +

    T

    +

    T4

    +

    G6

    +

    Tesla

    +

    T

    +

    T4

    +
    +
    +
    +
    +

    Downloading a CUDA Toolkit

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Path in which the CUDA toolkit is downloaded for P2s ECSs

    ECS Type

    +

    OS

    +

    CUDA Version

    +

    How to Obtain

    +

    CPU Architecture

    +

    P2s

    +

    (V100)

    +

    CentOS 7.4 64bit

    +

    9.2 or later

    +

    If the kernel version is 3.10.0-957.5.1.e17.x86_64 or earlier, install the CUDA toolkit of version 9.2.

    +

    Select a CUDA version as required.

    +

    https://developer.nvidia.com/cuda-downloads

    +

    x86_64

    +

    P2s

    +

    (V100)

    +

    Ubuntu 16.04 64bit

    +

    +

    9.2 or later

    +

    If the kernel version is 4.4.0-141-generic or earlier, install the CUDA toolkit of version 9.2.

    +

    x86_64

    +

    P2s

    +

    (V100)

    +

    Windows Server 2016 Standard 64bit

    +

    9.2 or later

    +

    x86_64

    +

    P2s

    +

    (V100)

    +

    Windows Server 2012 R2 Standard 64bit

    +

    9.2 or later

    +

    x86_64

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Path in which the CUDA toolkit is downloaded for P2v ECSs

    ECS Type

    +

    OS

    +

    CUDA Version

    +

    How to Obtain

    +

    CPU Architecture

    +

    P2v

    +

    (V100)

    +

    CentOS 7.7 64bit

    +

    9.2/10.1

    +

    If the kernel version is 3.10.0-957.5.1.e17.x86_64 or earlier, install the CUDA toolkit of version 9.2.

    +

    Version 9.2: https://developer.nvidia.com/cuda-92-download-archive

    +

    +

    Version 10.1:

    +

    https://developer.nvidia.com/cuda-10.1-download-archive-base

    +

    +

    x86_64

    +

    P2v

    +

    (V100)

    +

    EulerOS 2.5 64bit

    +

    9.2

    +

    x86_64

    +

    P2v

    +

    (V100)

    +

    Ubuntu 16.04 64bit

    +

    +

    9.2/10.1

    +

    If the kernel version is 4.4.0-141-generic or earlier, install the CUDA toolkit of version 9.2.

    +

    x86_64

    +

    P2v

    +

    (V100)

    +

    Windows Server 2019 Standard 64bit

    +

    9.2/10.1

    +

    x86_64

    +

    P2v

    +

    (V100)

    +

    Windows Server 2016 Standard 64bit

    +

    9.2/10.1

    +

    x86_64

    +

    P2v

    +

    (V100)

    +

    Windows Server 2012 R2 Standard 64bit

    +

    9.2/10.1

    +

    x86_64

    +
    +
    + +
    + + + + + + + + + + + + + +
    Table 4 Path in which the CUDA toolkit is downloaded for P2 ECSs

    ECS Type

    +

    OS

    +

    CUDA Version

    +

    How to Obtain

    +

    CPU Architecture

    +

    P2

    +

    (V100)

    +

    Ubuntu Server 16.04 64bit

    +

    9

    +

    https://developer.nvidia.com/cuda-90-download-archive

    +

    x86_64

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Table 5 Path in which the CUDA toolkit is downloaded for P1 ECSs

    ECS Type

    +

    OS

    +

    CUDA Version

    +

    How to Obtain

    +

    CPU Architecture

    +

    P1

    +

    (P100)

    +

    CentOS 7.3 64bit

    +

    9

    +

    https://developer.nvidia.com/cuda-90-download-archive

    +

    x86_64

    +

    P1

    +

    (P100)

    +

    Ubuntu 16.04 64bit

    +

    9

    +

    x86_64

    +

    P1

    +

    (P100)

    +

    Windows Server 2012 R2 Standard 64bit

    +

    9

    +

    x86_64

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 6 Path in which the CUDA toolkit is downloaded for PI2 ECSs

    ECS Type

    +

    OS

    +

    CUDA Version

    +

    How to Obtain

    +

    CPU Architecture

    +

    PI2

    +

    (T4)

    +

    CentOS 7.8 64bit

    +

    10.1

    +

    https://developer.nvidia.com/cuda-10.1-download-archive-base

    +

    x86_64

    +

    PI2

    +

    (T4)

    +

    Ubuntu 16.04 64bit

    +

    10.1

    +

    x86_64

    +

    PI2

    +

    (T4)

    +

    Windows Server 2019 Standard 64bit

    +

    10.1

    +

    x86_64

    +

    PI2

    +

    (T4)

    +

    Windows Server 2016 Standard 64bit

    +

    10.1

    +

    x86_64

    +

    PI2

    +

    (T4)

    +

    Windows Server 2012 R2 Standard 64bit

    +

    10.1

    +

    x86_64

    +
    +
    + +
    + + + + + + + + + + + + +
    Table 7 Path in which the CUDA toolkit is downloaded for G6 ECSs

    ECS

    +

    Type

    +

    OS

    +

    CUDA Version

    +

    How to Obtain

    +

    CPU Architecture

    +

    G6

    +

    (T4)

    +

    Windows Server 2016 Standard 64bit

    +

    10.1

    +

    https://developer.nvidia.com/cuda-10.1-download-archive-base

    +

    x86_64

    +
    +
    +
    +
    + + diff --git a/ecs/umn/en-us_topic_0214940105.html b/ecs/umn/en-us_topic_0214940105.html new file mode 100644 index 000000000..d910e054b --- /dev/null +++ b/ecs/umn/en-us_topic_0214940105.html @@ -0,0 +1,34 @@ + + +

    Why Do the Disks of a Windows ECS Go Offline After I Modify the ECS Specifications?

    +

    Scenarios

    After you modify specifications of a Windows ECS, the disks may go offline. Therefore, you need to check the number of disks after you modify the specifications.

    +
    +

    Procedure

    1. Check whether the number of disks displayed on the Computer page after you modified ECS specifications is the same as the number of disks before you modified ECS specifications.
      • If the numbers are the same, the status of the disks is properly. No further action is required.
      • If the numbers are different, the disks are offline. In this case, go to step 2.
      +

      For example:

      +

      An ECS running Windows Server 2008 has one system disk and two data disks attached before you modified the specifications.

      +
      Figure 1 Disks before modifying ECS specifications
      +

      After the specifications are modified, check the number of disks.

      +
      Figure 2 Disks after modifying ECS specifications
      +

      Only one system disk is displayed. The data disks are offline after you modify the specifications.

      +
    2. Bring the disks online.
      1. Click Start in the task bar. In the displayed Start menu, right-click Computer and choose Manage from the shortcut menu.

        The Server Manager page is displayed.

        +
      2. In the navigation pane on the left, choose Storage > Disk Management.

        The Disk Management page is displayed.

        +
      3. In the left pane, the disk list is displayed. Right-click the offline disk and choose Online from the shortcut menu to bring it online.
        Figure 3 Bringing the disk online
        +
      +
    3. On the Computer page, check whether the number of disks after you modified ECS specifications is the same as the number of disks before you modified the ECS specifications.
      • If the numbers are the same, no further action is required.
      • If the numbers are different, contact customer service.
      +
      Figure 4 Disks after you bring the disks online
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0214940106.html b/ecs/umn/en-us_topic_0214940106.html new file mode 100644 index 000000000..db51c6685 --- /dev/null +++ b/ecs/umn/en-us_topic_0214940106.html @@ -0,0 +1,38 @@ + + +

    Why Does the Disk Attachment of a Linux ECS Fail After I Modify the ECS Specifications?

    +

    Scenarios

    After you modify specifications of a Linux ECS, disk attachment may fail. Therefore, you need to check the disk attachment after you modify the specifications.

    +
    +

    Procedure

    1. Log in to the ECS as user root.
    2. Run the following command to view the disks attached before specifications modification:

      fdisk -l | grep 'Disk /dev/'

      +
      Figure 1 Viewing disks attached before specifications modification
      +

      As shown in Figure 1, the ECS has three disks attached: /dev/vda, /dev/vdb, and /dev/vdc.

      +
    3. Run the following command to view disks attached after specifications modification:

      df -h| grep '/dev/'

      +
      Figure 2 Viewing disks attached after specifications modification
      +

      As shown in Figure 2, only one disk /dev/vda is attached to the ECS.

      +
    4. Check whether the number of disks obtained in step 3 is the same as that obtained in step 2.
      • If the numbers are the same, the disk attachment is successful. No further action is required.
      • If the numbers are different, the disk attachment failed. In this case, go to step 5.
      +
    5. Run the mount command to attach the affected disks.

      For example, run the following command:

      +

      mount /dev/vbd1 /mnt/vbd1

      +

      In the preceding command, /dev/vbd1 is the disk to be attached, and /mnt/vbd1 is the path for disk attachment.

      +

      Ensure that /mnt/vbd1 is empty. Otherwise, the attachment will fail.

      +
      +
    6. Run the following commands to check whether the numbers of disks before and after specifications modification are the same:

      fdisk -l | grep 'Disk /dev/'

      +

      df -h| grep '/dev/'

      +
      • If the numbers are the same, no further action is required.
      • If the numbers are different, contact customer service.
      +
      Figure 3 Checking the number of disks attached
      +

      As shown in Figure 3, the numbers of disks before and after specifications modification are the same. The disks are /dev/vda, /dev/vdb, and /dev/vdc.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0234802636.html b/ecs/umn/en-us_topic_0234802636.html new file mode 100644 index 000000000..0c2295d94 --- /dev/null +++ b/ecs/umn/en-us_topic_0234802636.html @@ -0,0 +1,72 @@ + + +

    GPU Driver

    +

    Overview

    Before using a GPU-accelerated ECS, make sure that a GPU driver has been installed on the ECS for GPU acceleration.

    +

    GPU-accelerated ECSs support GRID and Tesla drivers.

    +
    • To use graphics acceleration, such as OpenGL, DirectX, or Vulkan, install a GRID driver and separately purchase and configure a GRID license. The GRID driver with a vDWS license also supports CUDA for both computing and graphics acceleration.
      • A graphics-accelerated (G series) ECS created using a Windows public image has had a GRID driver of a specified version installed by default, but the GRID license must be purchased and configured separately. Before using such an ECS, check whether the desired driver has been installed on it and whether the version of the installed driver meets service requirements.
      • A graphics-accelerated (G series) ECS created using a Linux public image does not have a GRID driver installed by default. To install a GRID driver, see Installing a GRID Driver on a GPU-accelerated ECS.
      • To install a GRID driver on a GPU-accelerated ECS created using a private image, see Installing a GRID Driver on a GPU-accelerated ECS.
      +
    • To use computing acceleration, install a Tesla driver. +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Acceleration supported by GPU drivers

    Driver

    +

    License

    +

    CUDA

    +

    OpenGL

    +

    DirectX

    +

    Vulkan

    +

    Application Scenario

    +

    Description

    +

    GRID

    +

    Required

    +

    Supported

    +

    Supported

    +

    Supported

    +

    Supported

    +

    3D rendering, graphics workstation, and game acceleration

    +

    The GRID driver must be paid and requires a license to accelerate graphics and image applications.

    +

    Tesla

    +

    Not required

    +

    Supported

    +

    Not supported

    +

    Not supported

    +

    Not supported

    +

    Scientific computing, deep learning training, and inference

    +

    The Tesla driver is downloaded free of charge and usually used with NVIDIA CUDA SDKs to accelerate general computing applications.

    +
    +
    +
    +
    + + diff --git a/ecs/umn/en-us_topic_0236302789.html b/ecs/umn/en-us_topic_0236302789.html new file mode 100644 index 000000000..2d8bc66b4 --- /dev/null +++ b/ecs/umn/en-us_topic_0236302789.html @@ -0,0 +1,27 @@ + + +

    How Do I Upload Files to My ECS?

    +

    Windows

    +
    +

    Linux

    +
    +

    Does an ECS Support FTP-based File Transferring by Default?

    No. You need to install and configure FTP so that the ECS supports FTP-based file transfer.

    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0236308363.html b/ecs/umn/en-us_topic_0236308363.html new file mode 100644 index 000000000..b99106725 --- /dev/null +++ b/ecs/umn/en-us_topic_0236308363.html @@ -0,0 +1,11 @@ + + +

    Can I Migrate an ECS to Another Region or Account?

    +

    Yes.

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0240708482.html b/ecs/umn/en-us_topic_0240708482.html new file mode 100644 index 000000000..8253cb0c1 --- /dev/null +++ b/ecs/umn/en-us_topic_0240708482.html @@ -0,0 +1,43 @@ + + +

    Why Am I Seeing the Error Message "Module is unknown" When I Remotely Log In to a Linux ECS?

    +

    Symptom

    When you attempt to remotely log in to a Linux ECS, the system displays the error message "Module is unknown".

    +
    Figure 1 Module is unknown
    +
    +
    • To resolve this issue, restart the ECS and enter the rescue mode.
    • Restarting the ECS may interrupt services. Exercise caution when performing this operation.
    +
    +

    Root Cause

    The file in the /etc/pam.d/ directory was modified by mistake.

    +
    +

    Solution

    1. Enter the single-user mode.
      The following uses CentOS 7 as an example:
      1. Restart the ECS and click Remote Login.
      2. Click Ctrl+Alt+Del in the upper part of the remote login panel to restart the ECS.
      3. Press the up arrow key to prevent automatic system startup. When the kernels are displayed, press e to enter the editing mode.
        Figure 2 Entering the kernel editing mode
        +

        The grub file is encrypted by Euler images by default. Before entering the edit mode, you need to contact customer service to obtain username and password.

        +
        +
      4. Locate the row containing linux16 and delete the parameters you do not require.
      5. Change ro to rw for mounting the root partition with read-write permissions.
      6. Add rd.break and press Ctrl+X.
        Figure 3 Before the modification
        +
        Figure 4 After the modification
        +
      7. Run the following command to go to the /sysroot directory:

        # chroot /sysroot

        +
      +
      +
    2. Run the following command to view the system log for error files:
      grep Module /var/log/messages
      Figure 5 System log
      +
      +
    3. Comment out or modify the error line in the error files displayed in the system log.
      vi /etc/pam.d/login
      Figure 6 Modifying the error information
      +
      +
    4. Restart the ECS and try to log in to it again.
      • To view the modification records and check whether the modification is caused by misoperations, run the following command:

        vi /root/.bash_history

        +

        Search for the keyword vi or login.

        +
      • Do not modify the files in the /etc/pam.d/ directory. Run the following command for details about pam:

        man pam.d

        +
      +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0240708483.html b/ecs/umn/en-us_topic_0240708483.html new file mode 100644 index 000000000..eadeb7bd3 --- /dev/null +++ b/ecs/umn/en-us_topic_0240708483.html @@ -0,0 +1,39 @@ + + +

    What Should I Do If Error Message "Permission denied" Is Displayed When I Remotely Log In to a Linux ECS?

    +

    Symptom

    When I attempted to remotely log in to a Linux ECS, the system displayed error Message "Permission denied".

    +
    Figure 1 Permission denied
    +
    • To resolve this issue, you are required to restart the ECS and enter the rescue mode.
    • Restarting the ECS may interrupt services. Exercise caution when performing this operation.
    +
    +
    +

    Root Cause

    The nofile parameter in /etc/security/limits.conf is used to set the maximum number of files that can be opened in the system. If the value is greater than the fs.nr_open value (1048576 by default) set in PermissionDenied.png, a login verification error will occur, leading to "Permission denied".

    +
    +

    Solution

    1. Enter the single-user mode.
      The following uses CentOS 7 as an example:
      1. Restart the ECS and click Remote Login.
      2. Click Ctrl+Alt+Del in the upper part of the remote login panel to restart the ECS.
      3. Press the up arrow key to prevent automatic system startup. When the kernels are displayed, press e to enter the editing mode.
        Figure 2 Entering the kernel editing mode
        +

        The grub file is encrypted by Euler images by default. Before entering the edit mode, you need to contact customer service to obtain username and password.

        +
        +
      4. Locate the row containing linux16 and delete the parameters you do not require.
      5. Change ro to rw for mounting the root partition with read-write permissions.
      6. Add rd.break and press Ctrl+X.
        Figure 3 Before the modification
        +
        Figure 4 After the modification
        +
      7. Run the following command to go to the /sysroot directory:

        # chroot /sysroot

        +
      +
      +
    1. Run the following command to view the fs.nr_open value:

      sysctl fs.nr_open

      +
    2. Change the nofile value in /etc/security/limits.conf so that the value is smaller than the fs.nr_open value obtained in 2.
      vi /etc/security/limits.conf

      limits.conf is the pam_limits.so configuration file of Linux Pluggable Authentication Module (PAM). For more details, run the following command:

      +

      man limits.conf

      +
      +
      +
    3. Restart the ECS and try to log in to it again.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0240714337.html b/ecs/umn/en-us_topic_0240714337.html new file mode 100644 index 000000000..70f82804a --- /dev/null +++ b/ecs/umn/en-us_topic_0240714337.html @@ -0,0 +1,42 @@ + + +

    What Should I Do If Error Message "read: Connection reset by peer" Is Displayed When I Remotely Log In to a Linux ECS?

    +

    Symptom

    When I attempted to remotely log in to a Linux ECS, the system displayed error message "read: Connection reset by peer".

    +
    Figure 1 read: Connection reset by peer
    +
    +

    Possible Causes

    • The remote login port is not permitted in the security group.
    • The firewall is enabled on the ECS, but the remote login port is blocked by the firewall.
    +
    +

    Solution

    Perform the following operations for troubleshooting:

    +
    • Check security group rules.
      • Inbound: Add the remote login port. The default port 22 is used as an example.
      +
      • Outbound: Outbound rules allow network traffic to be out of specified ports.
      +
    • Add a port to the ECS firewall exception.

      The following uses Ubuntu as an example:

      +
      1. Run the following command to view the firewall status:

        sudo ufw status

        +

        The following information is displayed:

        +
        Status: active
        +
      2. Add a port to the firewall exception, taking the default port 22 as an example.

        ufw allow 22

        +

        Rule added

        +

        Rule added (v6)

        +
      3. Run following command to check the firewall status again:

        sudo ufw status

        +
        Status: active
        +To                         Action      From
        +--                         ------      ----
        +22                         ALLOW       Anywhere
        +22 (v6)                    ALLOW       Anywhere (v6)
        +

        Try to remotely log in to the ECS again.

        +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0240831198.html b/ecs/umn/en-us_topic_0240831198.html new file mode 100644 index 000000000..fa4582a71 --- /dev/null +++ b/ecs/umn/en-us_topic_0240831198.html @@ -0,0 +1,36 @@ + + +

    Why Does the Disk Drive Letter Change After the ECS Is Restarted?

    +

    Symptom

    For a Linux ECS, the drive letter may change after an EVS disk is detached and then attached again, or after an EVS disk is detached and then the ECS is restarted. This is a normal phenomenon due to the drive letter allocation mechanism of the Linux system.

    +

    For example, an ECS has three disks attached: /dev/vda1, /dev/vdb1, and /dev/vdc1. The mounting parameters in /etc/fstab are as follows:

    +

    cat /etc/fstab

    +
    UUID=b9a07b7b-9322-4e05-ab9b-14b8050bdc8a  /  ext4  defaults  0  1 
    +/dev/vdb1                       /data1   ext4  defaults  0  0 
    +/dev/vdc1                       /data2   ext4  defaults  0  0
    +

    If /dev/vdb1 is detached, /dev/vdc1 becomes /dev/vdb1 and is mounted to /data1 after the ECS is restarted. In such a case, no disk is mounted to /data2.

    +
    +

    Solution

    To prevent this issue, use a UUID, a unique character string provided by the Linux system for disk partitions, to replace the /dev/vdx device.

    +
    1. Run the following command to obtain the partition UUID:

      blkid Disk partition

      +

      In this example, run the following command to obtain the UUID of the /dev/vdb1 partition:

      +

      blkid /dev/vdb1

      +

      Information similar to the following is displayed:

      +
      [root@ecs-test-0001 ~]# blkid /dev/vdb1 
      +/dev/vdb1: UUID="b9a07b7b-9322-4e05-ab9b-14b8050cd8cc" TYPE="ext4"
      +

      The UUID of the /dev/vdb1 partition is displayed.

      +
    2. Run the following command to open the fstab file using the vi editor:

      vi /etc/fstab

      +
    3. Press i to enter the editing mode.
    4. Move the cursor to the end of the file and press Enter. Then, add the following information:
      UUID=b9a07b7b-9322-4e05-ab9b-14b8050cd8cc /mnt/sdc                ext4    defaults        0 0
      +

      Repeat the preceding operations to add the UUID of the /dev/vdc1 partition and run the following command to check the disk mounting parameters:

      +

      cat /etc/fstab

      +

      The following information is displayed:

      +
      UUID=b9a07b7b-9322-4e05-ab9b-14b8050bdc8a  /  ext4  defaults  0  1 
      +UUID=b9a07b7b-9322-4e05-ab9b-14b8050cd8cc   /data1   ext4  defaults  0  0 
      +UUID=b9a07b7b-9322-4e05-ab9b-14b8050ab6bb   /data2   ext4  defaults  0  0
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0244854543.html b/ecs/umn/en-us_topic_0244854543.html new file mode 100644 index 000000000..b8da5a36e --- /dev/null +++ b/ecs/umn/en-us_topic_0244854543.html @@ -0,0 +1,52 @@ + + +

    How Can I Change a Remote Login Port?

    +

    Scenarios

    This section describes how to change a port for remote logins.

    +
    +

    Windows

    The following procedure uses an ECS running Windows Server 2012 as an example. The default login port of a Windows ECS is 3389. To change it to port 2020, for example, do as follows:

    +
    1. In the Run dialog box, enter regedit to access the registry editor.
    2. In Registry Editor, choose HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Terminal Server > Wds > rdpwd > Tds > tcp and double-click PortNumber.
      1. In the dialog box that is displayed, set Base to Decimal.
      2. Change the value in Value data to the new port number, which is 2020 in this example.
        Figure 1 Changing the port number to 2020
        +
      +
    3. In Registry Editor, choose HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Terminal Server > WinStations > RDP-Tcp and double-click PortNumber.
      1. In the dialog box that is displayed, set Base to Decimal.
      2. Change the value in Value data to the new port number, which is 2020 in this example.
        Figure 2 Changing the port number to 2020
        +
      +
    4. Open the Windows search box, enter services, and select Services.
      Figure 3 Services
      +
    5. (Skip this step if the firewall is disabled.) Modify the inbound rules of the firewall.

      Choose Control Panel > Windows Firewall > Advanced Settings > Inbound Rules > New Rule.

      +
      • Rule Type: Port
      • Protocol in Protocol and Ports: TCP
      • Port in Protocol and Ports: Specific local ports, 2020 in this example
      • Action: Allow the connection
      • Profile: Default settings
      • Name: RDP-2020
      +

      After the configuration, refresh the page to view the new rule.

      +
    6. Modify the security group rule.

      Add an inbound rule in which Protocol is set to TCP and Port Range is set to 2020.

      +

      Use port 2020 to remotely log in to the ECS.

      +
    7. In the Services window, restart Remote Desktop Services or the ECS.
    +
    +

    Linux

    The following procedure uses an ECS running CentOS 7.3 as an example. The default login port of a Linux ECS is 22. To change it to port 2020, for example, do as follows:

    +
    1. Run the following command to edit the sshd configuration file:

      vi /etc/ssh/sshd_config

      +
    2. Delete the comment tag (#) from the #port 22 line and change 22 to 2020.
      Figure 4 Changing the port number to 2020
      +
    3. Press Esc to exit the editing mode. Enter :wq! to save and exit the configuration.
    4. Run either of the following commands to restart sshd:

      service sshd restart

      +

      Or

      +

      systemctl restart sshd

      +
    5. Skip this step if the firewall is disabled. Configure the firewall.

      The firewall varies depending on the CentOS version. CentOS 7 uses firewalld, and CentOS 6 uses iptables. The following operations use CentOS 7 as an example.

      +

      Run the firewall-cmd --state command to check the firewall status.

      +
      • (Recommended) Method 1: Add information about a new port to firewalld.
        1. Run the following commands to add a rule for port 2020:

          firewall-cmd --zone=public --add-port=2020/tcp --permanent

          +

          firewall-cmd --reload

          +
        2. View the added port. The TCP connection of port 2020 will have been added.

          firewall-cmd --list-all

          +
        3. Restart firewalld.

          systemctl restart firewalld.service

          +
        +
      • Method 2: Disable the firewall and the function of automatically enabling the firewall upon ECS startup.

        systemctl stop firewalld

        +

        systemctl disable firewalld

        +
      +
    6. Modify the security group rule.

      Add an inbound rule in which Protocol is set to TCP and Port Range is set to 2020.

      +

      Use port 2020 to remotely log in to the ECS.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0247282819.html b/ecs/umn/en-us_topic_0247282819.html new file mode 100644 index 000000000..91defe3f9 --- /dev/null +++ b/ecs/umn/en-us_topic_0247282819.html @@ -0,0 +1,26 @@ + + +

    Why Am I Seeing an FTP Folder Error When I Open a Folder on an FTP Server?

    +

    Symptom

    An error occurs when you open a folder on an FTP server. The system displays a message asking you to check permissions.

    +
    Figure 1 FTP Folder Error
    +
    +

    Possible Causes

    The FTP firewall configured for the browser does not allow you to open the folder.

    +
    +

    Solution

    The following uses Internet Explorer as an example.

    +
    1. Open the Internet Explorer and choose Tools > Internet options.
    2. Click the Advanced tab.
    3. Deselect Use Passive FTP (for firewall and DSL modem compatibility).
      Figure 2 Internet Options
      +
    4. Click OK, restart Internet Explorer, and open the folder on the FTP server again.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0251012483.html b/ecs/umn/en-us_topic_0251012483.html new file mode 100644 index 000000000..fbfb79600 --- /dev/null +++ b/ecs/umn/en-us_topic_0251012483.html @@ -0,0 +1,32 @@ + + +

    What Should I Do If the Data Disk Attached a Windows ECS Is Unavailable?

    +

    Symptom

    After logging in to my Windows ECS, I cannot find the attached data disk.

    +

    Formatting a disk will cause data loss. Therefore, before formatting a disk, create a backup for it.

    +
    +
    +

    Possible Causes

    • A newly added data disk has not been partitioned or initialized.
    • The disk becomes offline after the ECS OS is changed or the ECS specifications are modified.
    +
    +

    Newly Added Data Disk Has Not Been Partitioned or Initialized

    A new data disk does not have partitions and file systems by default. That is why it is unavailable in My Computer. To resolve this issue, manually initialize the disk.

    +
    +

    Disk Becomes Offline After the ECS OS Is Changed or the ECS Specifications Are Modified

    After the ECS OS is changed, data disks may become unavailable due to file system inconsistency. After the specifications of a Windows ECS are modified, data disks may be offline.

    +
    1. Log in to the ECS, open the cmd window, and enter diskmgmt.msc to switch to the Disk Management page.

      Check whether the affected disk is offline.

      +
    2. Set the affected disk to be online.
      In the disk list, right-click the affected disk and choose Online from the shortcut menu to make it online.
      Figure 1 Setting disk online
      +
      +
    3. In My Computer, check whether the data disk is displayed properly.

      If the fault persists, initialize and partition the disk again. Before initializing the disk, create a backup for it.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0263796591.html b/ecs/umn/en-us_topic_0263796591.html new file mode 100644 index 000000000..34c655558 --- /dev/null +++ b/ecs/umn/en-us_topic_0263796591.html @@ -0,0 +1,35 @@ + + +

    How Can I Use SCP to Transfer Files Between a Local Linux Computer and a Linux ECS?

    +

    Scenarios

    You want to use SCP to transfer files between a local Linux computer and a Linux ECS.

    +
    +

    Procedure

    Log in to the management console. On the Elastic Cloud Server page, obtain the EIP bound to the target ECS in the IP Address column.

    +
    • Uploading files

      Run the following command on the local Linux computer to upload files to the Linux ECS:

      +

      scp Path in which the files are stored on the local computer Username@EIP:Path in which the files are to be stored on the Linux ECS

      +

      For example, to transfer the /home/test.txt file on the local computer to the /home directory on the ECS whose EIP is 139.x.x.x, run the following command:

      +

      scp /home/test.txt root@139.x.x.x:/home

      +

      Enter the login password as prompted.

      +
      Figure 1 Setting file uploading
      +
    +
    • Downloading files

      Run the following command on the local Linux computer to download files from the Linux ECS:

      +

      scp Username@EIP:Path in which the files are stored on the Linux ECS Path in which the files are to be stored on the local computer

      +

      For example, to download the /home/test.txt file on the ECS whose EIP is 139.x.x.x to the /home directory on the local computer, run the following command:

      +

      scp root@139.x.x.x:/home/test.txt /home/

      +

      Enter the login password as prompted.

      +
      Figure 2 Setting file downloading
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0263806053.html b/ecs/umn/en-us_topic_0263806053.html new file mode 100644 index 000000000..d31a1c30c --- /dev/null +++ b/ecs/umn/en-us_topic_0263806053.html @@ -0,0 +1,26 @@ + + +

    How Can I Use FTP to Transfer Files from a Local Windows Computer to a Windows or Linux ECS?

    +

    Scenarios

    You want to use FTP to transfer files from a local Windows computer to an ECS.

    +
    +

    Prerequisites

    You have enabled FTP on the target ECS. If you have not enabled FTP, check the following links to know how to set up an FTP site:

    + +
    +

    Procedure

    1. Download FileZilla and install it on the local Windows computer.
    2. On the local Windows computer, open FileZilla, enter the information about the target ECS, and click Quickconnect.
      • Host: EIP bound to the ECS
      • Username: username set when the FTP site was set up
      • Password: password of the username
      • Port: FTP access port, which is port 21 by default
      +
      Figure 1 Setting connection parameters
      +
    3. Drag files from the local computer on the left to the target ECS on the right to transfer them.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0263806054.html b/ecs/umn/en-us_topic_0263806054.html new file mode 100644 index 000000000..9ea1fbb64 --- /dev/null +++ b/ecs/umn/en-us_topic_0263806054.html @@ -0,0 +1,30 @@ + + +

    How Can I Use FTP to Transfer Files Between a Local Linux Computer and a Linux ECS?

    +

    Scenarios

    You want to use FTP on a local Linux computer to transfer files between the computer and a Linux ECS.

    +
    +

    Prerequisites

    You have enabled FTP on the target ECS. If you have not enabled FTP, check the following links to know how to set up an FTP site:

    + +
    +

    Procedure

    1. Install FTP on the local Linux computer.

      Take CentOS 7.6 as an example. Run the following command to install FTP:

      +

      yum -y install ftp

      +
    2. Run the following command to access the ECS:

      ftp EIP bound to the ECS

      +
      Enter the username and password as prompted for login.
      • Uploading files

        Run the following command to upload local files to the ECS:

        +

        put Path in which files are stored on the local computer

        +

        For example, to upload the /home/test.txt file on the local Linux computer to the ECS, run the following command:

        +

        put /home/test.txt

        +
      • Downloading files

        Run the following command to download files on the ECS to the local computer:

        +

        get Path in which the files are stored on the ECS Path in which the files are to be stored on the local computer

        +

        For example, to download the test.txt file on the ECS to the local Linux computer, run the following command:

        +

        get /home/test.txt

        +
      +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0264235939.html b/ecs/umn/en-us_topic_0264235939.html new file mode 100644 index 000000000..c6ba16ddc --- /dev/null +++ b/ecs/umn/en-us_topic_0264235939.html @@ -0,0 +1,51 @@ + + +

    Why Can't I Use the Local Computer to Connect to My Windows ECS?

    +

    Symptom

    An error message is displayed indicating that your local computer cannot connect to the remote computer.

    +
    Figure 1 Cannot connect to the remote computer
    +
    +

    Possible Causes

    +
    +

    Checking Port Configuration on the ECS

    Check whether port 3389 (used by default) on the ECS is accessible.

    +

    Ensure that port 3389 has been added in the inbound rule.

    +

    On the page providing details about the ECS, click the Security Groups tab and view port 3389 in the inbound rule of the security group.

    +
    +

    Checking Whether the Firewall Is Correctly Configured

    Check whether the firewall is enabled on the ECS.

    +
    1. Log in to the ECS using VNC available on the management console.
    2. Click the Windows icon in the lower left corner of the desktop and choose Control Panel > Windows Firewall.
      Figure 2 Windows Firewall
      +
    3. Click Turn Windows Firewall on or off.

      View and set the firewall status.

      +
      Figure 3 Checking firewall status
      +

      To enable Windows firewall, perform the following steps:

      +
    4. Click Advanced settings.
    5. Check Inbound Rules and ensure that the following rules are enabled:
      • Remote Desktop - User Mode (TCP-In), Public
      • Remote Desktop - User Mode (TCP-In), Domain, Private
      +
      Figure 4 Inbound Rules
      +

      If the port configured in the inbound rule of the firewall is different from that configured on the remote server, the remote login will fail. If this occurs, add the port configured on the remote server in the inbound rule of the firewall.

      +

      +
    +

    The default port is 3389. If you use another port, add that port in the inbound rule of the firewall.

    +
    +

    After you perform the preceding operations, try to remotely log in to the ECS again.

    +
    +

    Checking Remote Desktop Connection Settings

    Modify the remote desktop connection settings on the Windows ECS:

    +
    1. Log in to the ECS.
    2. Click Start in the lower left corner, right-click Computer, and choose Properties from the shortcut menu.
    3. In the left navigation pane, choose Remote settings.
    4. Click the Remote tab. In the Remote Desktop pane, select Allow connections from computers running any version of Remote Desktop (less secure).
      Figure 5 Remote settings
      +
    5. Click OK.
    +
    +

    Checking Remote Desktop Services

    1. Open the Windows search box, enter services, and select Services.
    2. In the Services window, restart Remote Desktop Services. Ensure that Remote Desktop Services is in the Running status.
      Figure 6 Remote Desktop Services
      +
    +
    +

    Checking Remote Desktop Session Host Configuration

    1. Open the cmd window and enter gpedit.msc.
    2. Click OK to start Local Group Policy Editor.
    3. Choose Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services.
    4. Choose Remote Desktop Session Host > Security > Require use of specific security layer for remote (RDP) connections.
      Figure 7 Require use of specific security layer for remote (RDP) connections
      +
    5. Set Require use of specific security layer for remote (RDP) connections to Enabled and Security layer to RDP.
      Figure 8 Setting security layer to RDP
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235940.html b/ecs/umn/en-us_topic_0264235940.html new file mode 100644 index 000000000..1696ba41b --- /dev/null +++ b/ecs/umn/en-us_topic_0264235940.html @@ -0,0 +1,25 @@ + + +

    How Can I Obtain the Permission to Remotely Log In to a Windows ECS?

    +

    Symptom

    When you connect a remote desktop to a Windows ECS, the system prompts that you need to be granted the right to sign in through Remote Desktop Services.

    +
    Figure 1 Remote login right missing.
    +
    +

    Solution

    1. Open the cmd window and enter gpedit.msc.
    2. Click OK to start Local Group Policy Editor.
    3. Choose Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment.
      1. Locate and double-click Allow log on through Remote Desktop Services. Ensure that Administrators and Remote Desktop Users have been added.
        Figure 2 Allow log on through Remote Desktop Services properties
        +
      2. Locate and double-click Deny log on through Remote Desktop Services. If the administrator account exists, delete it.
        Figure 3 Deny log on through Remote Desktop Services properties
        +
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235941.html b/ecs/umn/en-us_topic_0264235941.html new file mode 100644 index 000000000..2258a2814 --- /dev/null +++ b/ecs/umn/en-us_topic_0264235941.html @@ -0,0 +1,33 @@ + + +

    Why Does the System Display No Remote Desktop License Servers Available to Provide a License When I Log In to a Windows ECS?

    +

    Symptom

    An error message is displayed indicating that there are no Remote Desktop License Servers available to provide a license and asks you to contact the administrator.

    +
    Figure 1 No Remote Desktop License Servers available to provide a license
    +
    +

    Possible Causes

    You have installed the Remote Desktop Session Host.

    +

    The grace period for Remote Desktop Services is 120 days. If you do not pay for it when the period expires, the service will stop. Windows allows a maximum of two users (including the local user) in remote desktop connections. To allow the access of more users, install the Remote Desktop Session Host and configure the desired number of authorized users. However, installing the Remote Desktop Session Host will automatically revoke the original two free connections. This leads to the preceding fault if desired number of authorized users has not been configured.

    +
    +

    Precautions

    • The operations described in this section apply to the ECSs running a Windows Server 2008 or Windows Server 2012.
    • The ECS must be restarted during the operation, which may interrupt services. Back up data before restarting the ECS.
    +
    +

    Windows Server 2008

    1. Log in to the Windows ECS using VNC available on the management console.
    2. Open Server Manager, right-click Remote Desktop Services under Roles, and choose Remove Roles from the shortcut menu.
      Figure 2 Deleting roles
      +
    3. In the displayed dialog box, deselect Remote Desktop Session Host and keep clicking Next till you finish the operation.
      Figure 3 Deselecting Remote Desktop Session Host
      +
    4. Click Delete.
    5. Restart the ECS.
    +
    +

    Windows Server 2012

    1. Log in to the Windows ECS using VNC available on the management console.
    2. Open Server Manager, choose Manage > Remove Roles and Features, and click Next.
      Figure 4 Deleting roles and features
      +
    3. Select the destination server and click Next.
    4. Deselect Remote Desktop Services.
      Figure 5 Deselecting Remote Desktop Services
      +
    5. Click Delete.
    6. Restart the ECS.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235942.html b/ecs/umn/en-us_topic_0264235942.html new file mode 100644 index 000000000..8d23ac264 --- /dev/null +++ b/ecs/umn/en-us_topic_0264235942.html @@ -0,0 +1,42 @@ + + +

    Why Does the System Display Error Code 0x1104 When I Log In to a Windows ECS?

    +

    Symptom

    The system displays an error message indicating that a protocol error (code: 0x1104) is detected when you use MSTSC to access an ECS running Windows Server 2008.

    +
    Figure 1 Protocol error (code: 0x1104)
    +
    +

    Possible Causes

    • Port 3389 of the security group on the ECS is disabled.
    • The firewall on the ECS is disabled.
    • Port 3389 on the ECS is used by other processes.
    • The Remote Desktop Session Host is incorrectly configured.
    +
    +

    Solution

    1. Check security group settings.

      Check whether port 3389 is allowed in inbound direction. If it is allowed, go to 2.

      +

    2. Check whether the firewall is disabled:

      1. Log in to the Windows ECS.
      2. Click the Windows icon in the lower left corner of the desktop and choose Control Panel > Windows Firewall.

        +
      3. Click Turn Windows Firewall on or off.

        View and set the firewall status.

        +

        +
      +

      If the firewall is enabled, go to 3.

      +

    3. Log in to the ECS using VNC and check the port.

      1. Open the cmd window and run the following command:

        netstat -ano |findstr: 3389

        +
        Figure 2 Checking port 3389
        +

        As shown in Figure 2, port 3389 is used by the process with ID of 4.

        +
      2. Open Task Manager and find the process with ID of 4 is the System process.
      3. Generally, the IIS and SQL Server run as the System process. Run the following HTTP command for further check.

        netsh http show servicestate

        +
        Figure 3 Checking System process
        +
      4. If port 3389 is used by HTTP protocols, it indicates that the port is used by IIS.
      5. Enter http://127.0.0.1:3389 in the address box of the browser and press Enter. Check whether the website can be visited normally.
      6. Change the port used by IIS and restart IIS.
      +

    4. If no error occurs during the preceding steps, go to step 5 to check whether error 0x1104 is caused by the configuration of Remote Desktop Session Host.
    5. Check the remote desktop session host configuration.

      1. Log in to the ECS using VNC.
      2. Open the cmd window and enter gpedit.msc.
      3. Click OK to start Local Group Policy Editor.
      4. Choose Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services.
        Figure 4 Remote Desktop Services
        +
      5. Remote Desktop Session Host > Security.
        Figure 5 Remote (RDP) Connection requires the use of the specified security layer
        +
      6. Set Require use of specific security layer for remote (RDP) connections to Enabled and Security layer to RDP.
        Figure 6 Setting security layer
        +
      7. Click OK.
      8. After the configuration is complete, open the cmd window.
      9. Run the following command to update the group policy:

        gpupdate

        +
        Figure 7 Updating the group policy
        +
      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235943.html b/ecs/umn/en-us_topic_0264235943.html new file mode 100644 index 000000000..ee78467fc --- /dev/null +++ b/ecs/umn/en-us_topic_0264235943.html @@ -0,0 +1,28 @@ + + +

    Why Does the System Display Error Code 122.112.. When I Log In to a Windows ECS?

    +

    Symptom

    The system displays error 122.112... when you use RDC to locally access an ECS running Windows Server 2012. The ECS is frequently disconnected and the Windows login process is unexpectedly interrupted.

    +
    +

    Possible Causes

    1. System resources are insufficient or unavailable.
    2. The services cannot be started.
    +
    +

    Solution

    1. Check system logs.

      1. Log in to the ECS using VNC.
      2. Click to start the service manager and choose Administrative Tools > Event Viewer > Windows Logs > System > Filter Current Logs.
        Figure 1 Event viewer
        +
      3. In the Event Level pane, select event levels.
        Figure 2 Filtering logs
        +
      4. Search for login logs.
      +

    2. Check the usage of host resources.

      1. Choose Start > Task Manager > Performance.
      2. Check usage of CPU and memory.
      +

    3. Check whether the purchased Windows ECS is with 1 vCPU and 1 GB of memory.

      If it is, change the flavor or stop unnecessary processes.

      +

    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235944.html b/ecs/umn/en-us_topic_0264235944.html new file mode 100644 index 000000000..ecc1545da --- /dev/null +++ b/ecs/umn/en-us_topic_0264235944.html @@ -0,0 +1,32 @@ + + +

    Why Does the System Display Invalid Certificate or Associated Chain When I Log In to a Windows ECS from a Mac?

    +

    Symptom

    When you use Microsoft Remote Desktop for Mac to remotely access a Windows ECS, the system displays invalid certificate or associated chain.

    +
    Figure 1 Microsoft Remote Desktop for Mac
    +

    Due to the particularity of the Mac system, you need to perform internal configurations on Mac and the Windows ECS to ensure successful remote connection. When you log in to the Windows ECS using Microsoft Remote Desktop for Mac, the system displays an error message indicating that the certificate or associated chain is invalid.

    +
    Figure 2 Invalid certificate or associated chain
    +
    +

    Possible Causes

    The group policy setting is incorrect on the ECS.

    +
    +

    Procedure

    1. On the menu bar in the upper left corner, choose RDC > Preferences to open the preference setting page of the Microsoft Remote Desktop.
      Figure 3 Preferences setting
      +
    2. Select Security and modify the parameter settings according the following figure.
      Figure 4 Security setting
      +
    3. Remotely connect to the Windows ECS again. If the error message Invalid certificate or associated chain is still displayed, go to 4.
    4. Log in to the Windows ECS using VNC.
    5. Press Win+R to start the Open text box.
    6. Enter gpedit.msc to access the Local Group Policy Editor.
    7. In the left navigation pane, choose Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security.
      Figure 5 Remote Desktop Session Host
      +
    8. Modify the following parameters as prompted:
      • Enable Require use of specific security layer for remote (RDP) connections.
        Figure 6 Require use of specific security layer for remote (RDP) connections
        +
      • Disable Require user authentication for remote connections by using Network Level Authentication.
        Figure 7 Remote connection authentication
        +
      +
    9. Close the group policy editor and restart the ECS.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235945.html b/ecs/umn/en-us_topic_0264235945.html new file mode 100644 index 000000000..87e143083 --- /dev/null +++ b/ecs/umn/en-us_topic_0264235945.html @@ -0,0 +1,28 @@ + + +

    Why Is My Remote Session Interrupted by a Protocol Error?

    +

    Symptom

    An error message is displayed indicating that the remote session will be disconnected because of a protocol error.

    +
    Figure 1 Protocol error
    +
    +

    Possible Causes

    The registry subkey Certificate is damaged.

    +
    +

    Solution

    1. In the Run dialog box, enter regedit and click OK to open the registry editor.
      Figure 2 Opening the registry editor
      +
    2. Choose HKEY_LOCAL_MACHINE > SYSTEM > ControlSet001 > Control > Terminal Server > RCM.
    3. Delete Certificate.
      Figure 3 Deleting Certificate
      +
    4. Restart the ECS.
    5. Choose Start > Administrative Tools > Remote Desktop Services > Remote Desktop Session Host Configuration.
      Figure 4 Opening Remote Desktop Session Host Configuration
      +
    6. Right-click RDP-Tcp and choose Properties. In the displayed dialog box, click General and set Security layer to RDP Security Layer.
      Figure 5 RDP-Tcp properties
      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235946.html b/ecs/umn/en-us_topic_0264235946.html new file mode 100644 index 000000000..e7c16d5e8 --- /dev/null +++ b/ecs/umn/en-us_topic_0264235946.html @@ -0,0 +1,18 @@ + + +

    Why Am I Seeing an Error Message That Says Identity of Remote Computer Cannot be Verified When I Log In to a Windows ECS?

    +

    Symptom

    An error message is displayed indicating that the identity of the remote computer cannot be verified. You are required to enter the password and log in again.

    +
    Figure 1 Protocol error
    +
    +

    Possible Causes

    Security software installed on the ECS prevents logins from unknown IP addresses.

    +
    +

    Solution

    • Uninstall the security software.
    • Open the security software and enable the default login mode.
    +
    +

    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0264235947.html b/ecs/umn/en-us_topic_0264235947.html new file mode 100644 index 000000000..6999fa3dd --- /dev/null +++ b/ecs/umn/en-us_topic_0264235947.html @@ -0,0 +1,22 @@ + + +

    Why Am I Seeing An Error Message That Says The Two Computers Couldn't Be Connected in the Amount of Time Allotted When I Log In to a Windows ECS?

    +

    Symptom

    An error message is displayed indicating that the computer cannot connect to the remote computer in the amount of time allotted.

    +
    Figure 1 Error message
    +
    +

    Solution

    1. On the local computer, click on the Start icon, type cmd into the box, and run the command as an administrator.
    2. Run the netsh winsock reset command.
    3. Restart the local computer as prompted and reconnect to the ECS.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235948.html b/ecs/umn/en-us_topic_0264235948.html new file mode 100644 index 000000000..20e699cc2 --- /dev/null +++ b/ecs/umn/en-us_topic_0264235948.html @@ -0,0 +1,36 @@ + + +

    Why Am I Seeing an Error Message That Says User Account is not Authorized for Remote Login When I Log In to a Windows ECS?

    +

    Symptom

    An error message is displayed indicating that the connection is denied because the user account is not authorized for remote login.

    +
    Figure 1 Error message
    +
    +

    Possible Causes

    The remote desktop connection permissions have been incorrectly configured.

    +
    +

    Solution

    1. Check remote desktop permissions on the ECS.

      1. In the Run dialog box, enter secpol.msc and click OK to open Local Security Policy.
      2. Choose Local Policies > User Rights Assignment > Allow log on through Remote Desktop Services.
        Figure 2 Local security policy
        +
      3. Check whether there are user groups or users that have been granted the remote login permission.

        If not, add required users or groups.

        +
        Figure 3 Allow log on through Remote Desktop Services properties
        +
      +

    2. Check the target user group.

      1. Open the Run dialog box, enter lusrmgr.msc, and click OK to open Local Users and Groups.
      2. Double-click Users on the left.
      3. Double-click the name of the user to whom the login error message was displayed.
      4. In the displayed dialog box, click the Member Of tab. Ensure that the user belongs to the user group that is assigned with the remote login permission in 2.b.
        Figure 4 Checking the target user group
        +
      +

    3. Check the remote desktop session host configuration.

      1. In the Run dialog box, enter tsconfig.msc and click OK to open Remote Desktop Session Host Configuration.
      2. Double-click RDP-Tcp or other connections added by a user under Connections and click the Security tab.
        Figure 5 Security
        +
      3. Check whether there are user groups or users that have been granted the remote login permission under Group or user names.

        If not, add required users or groups.

        +
      4. Restart the ECS or run the following commands in the CLI to restart the Remote Desktop Services:

        net stop TermService

        +

        net start TermService

        +
      +

    +
    +

    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0264235950.html b/ecs/umn/en-us_topic_0264235950.html new file mode 100644 index 000000000..20033e13d --- /dev/null +++ b/ecs/umn/en-us_topic_0264235950.html @@ -0,0 +1,28 @@ + + +

    Why Does My Remote Desktop Session End Because Another User Logs In When I Log In to a Windows ECS?

    +

    Symptom

    An error message is displayed indicating that your remote desktop session has ended because another user has connected to the remote computer.

    +
    Figure 1 Ended remote desktop session
    +
    +

    Windows Server 2008

    1. Choose Start > Administrative Tools > Remote Desktop Services > Remote Desktop Session Host Configuration.
      Figure 2 Remote Desktop Session Host Configuration
      +
    2. Double-click Restrict each user to a single session and deselect Restrict each user to a single session, and click OK.
      Figure 3 Modifying the configuration
      +
    +
    +

    Windows Server 2012

    1. Choose Start > Run. In the Run dialog box, enter gpedit.msc and click OK to start Local Group Policy Editor.
    2. Choose Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections.
      Figure 4 Connections
      +
    3. Double-click Restrict Remote Desktop Services users to a single Remote Desktop Services session, change the value to Disabled, and click OK.
      Figure 5 Modifying the configuration
      +
    4. Run gpupdate/force to update the group policy.
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0271001300.html b/ecs/umn/en-us_topic_0271001300.html new file mode 100644 index 000000000..42a899a1d --- /dev/null +++ b/ecs/umn/en-us_topic_0271001300.html @@ -0,0 +1,23 @@ + + + +

    Instances

    + +

    +
    + +
    + + + +
    + diff --git a/ecs/umn/en-us_topic_0275383051.html b/ecs/umn/en-us_topic_0275383051.html new file mode 100644 index 000000000..32106f1ce --- /dev/null +++ b/ecs/umn/en-us_topic_0275383051.html @@ -0,0 +1,72 @@ + + +

    Logging In to a Windows ECS from a Linux Computer

    +

    Scenarios

    This section describes how to log in to a Windows ECS from a Linux computer.

    +
    +

    Prerequisites

    • The target ECS is running.
    • You have bound an EIP to the ECS.
    +
    • Access to port 3389 is allowed in the inbound direction of the security group to which the ECS belongs.
    • Data can be exchanged between the login tool and the target ECS. For example, the default port 3389 is not blocked by the firewall.
    • RDP has been enabled on the target ECS. By default, RDP has been enabled on the ECSs created using a public image. For instructions about how to enable RDP, see Enabling RDP.
    +
    +

    Procedure

    To log in to a Windows ECS from a local Linux computer, use a remote access tool, such as rdesktop.

    +
    1. Run the following command to check whether rdesktop has been installed on the ECS:

      rdesktop

      +

      If the message "command not found" is displayed, rdesktop is not installed. In such a case, obtain the rdesktop installation package at the official rdesktop website.

      +
    2. Run the following command to log in to the ECS:

      rdesktop -u Username -p Password -g Resolution EIP

      +

      For example, run rdesktop -u administrator -p password -g 1024*720 121.xx.xx.xx.

      + +
      + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters in the remote login command

      Parameter

      +

      Description

      +

      -u

      +

      Username, which defaults to Administrator for Windows ECSs

      +

      -p

      +

      Password for logging in to the Windows ECS

      +

      -f

      +

      Full screen by default, which can be switched using Ctrl+Alt+Enter

      +

      -g

      +

      Resolution, which uses an asterisk (*) to separate numbers. This parameter is optional. If it is not specified, the remote desktop is displayed in full screen by default, for example, 1024*720.

      +

      EIP

      +

      EIP of the Windows ECS to be remotely logged in. Replace it with the EIP bound to your Windows ECS.

      +
      +
      +
    +
    +

    Enabling RDP

    When you log in to an ECS for the first time, log in to it using VNC, enable RDP, and access the ECS using MSTSC.

    By default, RDP has been enabled on the ECSs created using a public image.

    +
    +
    1. Log in to the Windows ECS using VNC.

      For details, see Login Using VNC.

      +
    2. Click Start in the task bar and choose Control Panel > System and Security > System > Remote settings.

      The System Properties dialog box is displayed.

      +
      Figure 1 System Properties
      +
    3. Click the Remote tab and select Allow remote connections to this computer.
    4. Click OK.
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0277097520.html b/ecs/umn/en-us_topic_0277097520.html new file mode 100644 index 000000000..e64020a47 --- /dev/null +++ b/ecs/umn/en-us_topic_0277097520.html @@ -0,0 +1,22 @@ + + +

    Why Am I Seeing the Error Message "Access denied" When I Remotely Log In to a Linux ECS?

    +

    Symptom

    When you attempt to remotely log in to a Linux ECS, the system displays the error message "Access denied".

    +
    +

    Possible Causes

    • Incorrect username or password.
    • A policy that denies logins from user root is enabled on the SSH server.
    +
    +

    Solution

    • If the username or password is incorrect

      Check the username and password.

      +
    • If a policy that denies logins from user root is enabled on the SSH server,
      1. Edit the /etc/ssh/sshd_config file and check the following settings to ensure that the SSH logins from user root are allowed:
        PermitRootLogin yes
        +
      2. Restart SSH.
        • CentOS 6

          service sshd restart

          +
        • CentOS 7

          systemctl restart sshd

          +
        +
      +
    +
    +
    +
    + +
    + diff --git a/ecs/umn/en-us_topic_0277132844.html b/ecs/umn/en-us_topic_0277132844.html new file mode 100644 index 000000000..7f476904d --- /dev/null +++ b/ecs/umn/en-us_topic_0277132844.html @@ -0,0 +1,32 @@ + + +

    What Should I Do If Error Message "Disconnected: No supported authentication methods available" Is Displayed When I Remotely Log In to a Linux ECS?

    +

    Symptom

    When I attempted to remotely log in to a Linux ECS, the system displayed error message "Disconnected: No supported authentication methods available".

    +
    Figure 1 No supported authentication methods available
    +
    +

    Possible Causes

    A policy that denies password-authenticated logins is enabled on the SSH server.

    +
    +

    Solution

    1. Open the /etc/ssh/sshd_config file and check the following settings:

      vi /etc/ssh/sshd_config

      +
    +
    +
    1. Modify the following settings:

      Change PasswordAuthentication no to PasswordAuthentication yes.

      +

      Alternatively, delete the comment tag (#) before PasswordAuthentication yes.

      +
    2. Restart SSH.
      • CentOS 6

        service sshd restart

        +
      +
      • CentOS 7

        systemctl restart sshd

        +
      +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/en-us_topic_0295091738.html b/ecs/umn/en-us_topic_0295091738.html new file mode 100644 index 000000000..47ce61161 --- /dev/null +++ b/ecs/umn/en-us_topic_0295091738.html @@ -0,0 +1,37 @@ + + +

    How Can I Transfer Files from a Local Mac to a Windows ECS?

    +

    Scenarios

    This section describes how to use Microsoft Remote Desktop for Mac to transfer files from a local Mac to a Windows ECS.

    +
    +

    Prerequisites

    • The remote access tool supported by Mac has been installed on the local Mac. This section uses Microsoft Remote Desktop for Mac as an example. Download Microsoft Remote Desktop for Mac.
    • The target ECS has had an EIP bound.
    • When you log in to the ECS for the first time, ensure that RDP has been enabled on it. To do so, use VNC to log in to the ECS, enable RDP, and access the ECS using MSTSC.

      By default, RDP has been enabled on the ECSs created using a public image.

      +
      +
    +
    +

    Procedure

    1. Start Microsoft Remote Desktop.
    2. Click Add Desktop.
      Figure 1 Add Desktop
      +
    3. Set login parameters.
      • PC name: Enter the EIP bound to the target Windows ECS.
      • User account: Select Add User Account from the drop-down list.
        The Add a User Account dialog box is displayed.
        1. Enter username administrator and password for logging in to the Windows ECS and click Add.
          Figure 2 Add user account
          +
          Figure 3 Add PC
          +
        +
        +
      +
    4. Select the folder to be uploaded.

      +
      1. Click Folders and switch to the folder list.
      2. Click in the lower left corner, select the folder to be uploaded, and click Add.
      +
    5. On the Remote Desktop page, double-click the icon of the target Windows ECS.
      Figure 4 Double-click for login
      +
    6. Confirm the information and click Continue.

      You have connected to the Windows ECS.

      +

      View the shared folder on the ECS.

      +

      Copy the files to be uploaded to the ECS. Alternatively, download the files from the ECS to your local Mac.

      +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/ExpandCollapse.js b/ecs/umn/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..3f1b7db00 --- /dev/null +++ b/ecs/umn/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";var href="";function ExpandorCollapseNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseClassName}else{a.className=expandClassName}}function ExpandorCollapseTableNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseTableClassName}else{a.className=expandClassName}}function ExpandorCollapseAllNodes(g,h,c){var a=g.getAttribute("title");var b=g.parentNode;if(a=="collapse"){g.setAttribute("title","expand");g.className="dropdownAllButtonexpand";g.innerHTML=h}else{g.setAttribute("title","collapse");g.className="dropdownAllButtoncollapse";g.innerHTML=c}var f=b.getElementsByTagName("*");for(var d=0;d-1){ExpandForHref(href.substring(href.lastIndexOf("#")+1))}}catch(a){}}; \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/caution_3.0-en-us.png b/ecs/umn/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 000000000..60f607621 Binary files /dev/null and b/ecs/umn/public_sys-resources/caution_3.0-en-us.png differ diff --git a/ecs/umn/public_sys-resources/commonltr.css b/ecs/umn/public_sys-resources/commonltr.css new file mode 100644 index 000000000..c5480b0ab --- /dev/null +++ b/ecs/umn/public_sys-resources/commonltr.css @@ -0,0 +1 @@ +body{font-size:10pt;font-family:Arial;margin:1.5em;border-top:2pt;padding-top:1em;padding-bottom:2em}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:.6em;margin-bottom:.6em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.figcap{font-size:10pt}img{margin-top:.3em}.figdesc{font-style:normal}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.fignone{font-size:10pt;margin-top:8pt;margin-bottom:8pt}.familylinks{margin-top:1.5em;margin-bottom:1em}.ullinks{list-style-type:none}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-top:.6em;margin-bottom:.6em}.reltasks{margin-top:.6em;margin-bottom:.6em}.relref{margin-top:.6em;margin-bottom:.6em}.relinfo{margin-top:.6em;margin-bottom:.6em}.breadcrumb{font-size:smaller;margin-bottom:.6em}.prereq{margin-left:20px}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.topictitle1{margin-top:0;margin-bottom:1em;font-size:14pt;color:#007af4}.topictitle2{margin-top:1pc;margin-bottom:.45em;font-size:1.17em;color:#007af4}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-size:1.17em;font-weight:bold;color:#007af4}.topictitle4{margin-top:.83em;font-size:1.17em;font-weight:bold}.topictitle5{font-size:1.17em;font-weight:bold}.topictitle6{font-size:1.17em;font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:1em;color:black;font-size:10.5pt;font-weight:bold;color:#007af4;overflow:auto}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}.sectiontitle2contents:link{color:#007af4}.sectiontitle2contents:visited{color:#800080}.note{margin-top:1em;margin-bottom:1em;background-color:#ffc}.notetitle{font-weight:bold}.notelisttitle{font-weight:bold}.tip{margin-top:1em;margin-bottom:1em;background-color:#ffc}.tiptitle{font-weight:bold}.fastpath{margin-top:1em;margin-bottom:1em;background-color:#ffc}.fastpathtitle{font-weight:bold}.important{margin-top:1em;margin-bottom:1em;background-color:#ffc}.importanttitle{font-weight:bold}.remember{margin-top:1em;margin-bottom:1em;background-color:#ffc}.remembertitle{font-weight:bold}.restriction{margin-top:1em;margin-bottom:1em;background-color:#ffc}.restrictiontitle{font-weight:bold}.attention{margin-top:1em;margin-bottom:1em;background-color:#ffc}.attentiontitle{font-weight:bold}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;background-color:#ffc}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;background-color:#ffc}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;background-color:#ffc}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;background-color:#ffc}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}ol{margin-top:1em;margin-bottom:1em;margin-left:2.4em;padding-left:0}ul{margin-top:1em;margin-bottom:1em;margin-left:2.0em;padding-left:0}ol ul{list-style:disc}ul ul{list-style:square}ol ul ul{list-style:square}ol ul{list-style-type:disc}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}.firstcol{font-weight:bold}th{background-color:#cfcfcf}table{margin-top:8pt;margin-bottom:12pt;width:100%}table caption{margin-top:8pt;text-align:left}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:.3em;margin-bottom:.3em}.substepexpand{margin-top:.3em;margin-bottom:.3em}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}.hrcopyright{color:#3f4e5d;margin-top:18pt}.hwcopyright{text-align:center}.comment{margin:2px 2px 2px 2px;font-family:Arial;font-size:10pt;background-color:#bfb;color:#000}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowncontext{display:none}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdowncollapsetable{border:0}.dropdowncollapsetable .dropdowncontext{display:none}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}pre{font-size:10pt;font-weight:normal;margin-left:9;margin-top:2;margin-bottom:2}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0} \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/commonltr_print.css b/ecs/umn/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/ecs/umn/public_sys-resources/commonltr_print.css @@ -0,0 +1 @@ +body{font-size:12.0pt;margin:1.5em;margin-left:1.6cm}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:1em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.covertable{border:0;width:100% cellpadding:8pt;cellspacing:8pt}.cover_productname{font-size:15.0pt;font-family:"Arial"}.cover_manualtitle{font-size:24.0pt;font-weight:bold;font-family:"Arial"}.cover_manualsubtitle{font-size:18.0pt;font-weight:bold;font-family:"Arial"}.cover_heading{font-size:12.0pt;font-weight:bold;font-family:"Arial"}.cover_text{font-size:9.0pt;font-family:"Arial"}.tocheading,.heading1,.topictitle1{margin-top:40.0pt;margin-right:0;margin-bottom:20.0pt;margin-left:-1cm;text-align:left;border:0;border-bottom:solid windowtext .5pt;font-size:22.0pt;font-family:"Arial";font-weight:bold}.topictitlenumber1{font-size:72.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle2{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Arial";font-weight:bold}.topictitle3{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:16.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle4{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:14.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle5{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.blocklabel,.topictitle6{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.sectiontitle{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:-1cm;text-indent:0;font-size:13.0pt;font-family:"Arial";font-weight:bold}.tocentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Book Antiqua";font-weight:bold}.tocentry2{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry3{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry4{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry5{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tofentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.totentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.indexheading{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.indexentry1{margin-top:4pt;margin-right:0;margin-bottom:0;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Times New Roman"}.indexentry2{margin-top:0;margin-right:0;margin-bottom:0;margin-left:24.0pt;line-height:12.0pt;font-size:12.0pt}.indexentry3{margin-top:0;margin-right:0;margin-bottom:0;margin-left:48pt;line-height:12.0pt;font-size:12.0pt}.figurenumber{font-weight:bold}.tablenumber{font-weight:bold}.familylinks{margin-top:1.5em;margin-bottom:1em}.figcap{font-size:11.0pt}.tablecap{font-size:11.0pt}.figdesc{font-style:normal}.fignone{margin-top:8.0pt}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.ullinks{margin-left:0;list-style-type:none}.ulchildlink{margin-top:1em;margin-bottom:1em}.olchildlink{margin-top:1em;margin-bottom:1em;margin-left:1em}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-left:1cm;margin-top:1em;margin-bottom:1em}.reltasks{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relref{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relinfo{margin-top:1em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-left:0}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}table .note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.notetitle{font-weight:bold;font-size:11.0pt}.notelisttitle{font-weight:bold}table .tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.tiptitle{font-weight:bold;font-size:11.0pt}table .fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.fastpathtitle{font-weight:bold;font-size:11.0pt}table .important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.importanttitle{font-weight:bold;font-size:11.0pt}table .remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.remembertitle{font-weight:bold;font-size:11.0pt}table .restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.restrictiontitle{font-weight:bold;font-size:11.0pt}table .attention{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.attention{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}.attentiontitle{font-weight:bold}table .danger{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .notice{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .warning{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .caution{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}table caption{margin-top:8pt;text-align:left;font-weight:bold}.tablenoborder{margin-top:8pt}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}.firstcol{font-weight:bold}th{background-color:#cfcfcf}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:1em;margin-bottom:1em}.substepexpand{margin-top:1em;margin-bottom:1em}table{margin-top:8pt;margin-bottom:10.0pt;width:100%}thead{font-size:10.0pt;font-family:"Book Antiqua";font-weight:bold}tbody{font-size:11.0pt}ol{margin-top:1em;margin-bottom:1em;margin-left:1.7em;-webkit-padding-start:0}ul{margin-top:1em;margin-bottom:1em;margin-left:1.2em;-webkit-padding-start:0}ol ul{list-style:disc}ul ul{list-style:square}ol ol{list-style-type:lower-alpha}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre{font-size:10.0pt;border-width:2px;padding:2px;margin-top:5px;margin-bottom:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.prefacesectiontitle1{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Book Antiqua";font-weight:bold;overflow:auto}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0}.hrcopyright{color:#3f4e5d;margin-top:18pt;margin-left:-1cm}.hwcopyright{text-align:center;font-family:Arial;margin-left:-1cm} \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/commonrtl.css b/ecs/umn/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..947a9a033 --- /dev/null +++ b/ecs/umn/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +.msgph{font-family:Courier New}.unresolved{background-color:#87ceeb}.noTemplate{background-color:#ff0}.base{background-color:#fff}/*! Add space for top level topics */.nested0,.p{margin-top:1em}/*! div with class=p is used for paragraphs that contain blocks, to keep the XHTML valid *//*! Default of italics to set apart figure captions */.figcap,.italic,.var{font-style:italic}.figdesc{font-style:normal}/*! Use @frame to create frames on figures */.figborder{padding-left:3px;padding-right:3px;margin-top:1em;border:2px solid Silver}.figsides{margin-top:1em;padding-left:3px;padding-right:3px;border-left:2px solid Silver;border-right:2px solid Silver}.figtop{border-top:2px solid Silver;margin-top:1em}.figbottom{border-bottom:2px solid Silver}.figtopbot{border-top:2px solid Silver;border-bottom:2px solid Silver;margin-top:1em}/*! Most link groups are created with
    . Ensure they have space before and after. */.ullinks,ul.simple{list-style-type:none}.attention,.danger,.ddexpand,.dlexpand,.example,.fastpath,.important,.liexpand,.linklist,.note,.notice,.olchildlink,.relconcepts,.relinfo,.relref,.reltasks,.remember,.restriction,.section,.sliexpand,.stepexpand,.substepexpand,.tip,.ulchildlink,.warning{margin-top:1em;margin-bottom:1em}.linklistwithchild,.sublinklist{margin-top:1em;margin-right:1.5em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-right:20px}/*! Set heading sizes, getting smaller for deeper nesting */.topictitle1{font-size:1.34em;margin-top:0;margin-bottom:.1em}.topictitle2,.topictitle3,.topictitle4,.topictitle5,.topictitle6,.sectiontitle{font-size:1.17em}.topictitle2{margin-top:1pc;margin-bottom:.45em}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-weight:700}.topictitle4{margin-top:.83em;font-weight:700}.topictitle5{font-weight:700}.topictitle6{font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:0;color:#000;font-weight:700}/*! All note formats have the same default presentation */.attentiontitle,.bold,.cautiontitle,.dangertitle,.dlterm,.fastpathtitle,.firstcol,.importanttitle,.notelisttitle,.notetitle,.noticetitle,.parmname,.remembertitle,.restrictiontitle,.tiptitle,.uicontrol,.warningtitle{font-weight:700}.caution{font-weight:700;margin-bottom:1em}/*! Simple lists do not get a bullet *//*! Used on the first column of a table, when rowheader="firstcol" is used *//*! Various basic phrase styles */.boldItalic{font-weight:700;font-style:italic}.shortcut,.underlined{text-decoration:underline}/*! 2008-10-27 keyword采用跟随上下文的样式 +*//*! Default of bold for definition list terms *//*! Use CSS to expand lists with @compact="no" */.dltermexpand{font-weight:700;margin-top:1em}[compact="yes"]>li{margin-top:0}[compact="no"]>li{margin-top:.53em}/*! Align images based on @align on topic/image */div.imageleft,.text-align-left{text-align:left}div.imagecenter,.text-align-center{text-align:center}div.imageright,.text-align-right{text-align:right}div.imagejustify,.text-align-justify{text-align:justify}.cellrowborder{border-right:0;border-top:0;border-left:1px solid;border-bottom:1px solid}.row-nocellborder{border-left:hidden;border-right:0;border-top:0;border-bottom:1px solid}.cell-norowborder{border-top:0;border-bottom:hidden;border-right:0;border-left:1px solid}.nocellnorowborder{border:0;border-left:hidden;border-bottom:hidden}pre.codeblock,pre.screen{padding:5px;border:outset;background-color:#ccc;margin-top:2px;margin-bottom:2px;white-space:pre} \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/danger_3.0-en-us.png b/ecs/umn/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 000000000..47a9c7235 Binary files /dev/null and b/ecs/umn/public_sys-resources/danger_3.0-en-us.png differ diff --git a/ecs/umn/public_sys-resources/delta.gif b/ecs/umn/public_sys-resources/delta.gif new file mode 100644 index 000000000..0d1b1f674 Binary files /dev/null and b/ecs/umn/public_sys-resources/delta.gif differ diff --git a/ecs/umn/public_sys-resources/deltaend.gif b/ecs/umn/public_sys-resources/deltaend.gif new file mode 100644 index 000000000..cc7da0fc8 Binary files /dev/null and b/ecs/umn/public_sys-resources/deltaend.gif differ diff --git a/ecs/umn/public_sys-resources/icon-arrowdn.gif b/ecs/umn/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 000000000..84eec9be2 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-arrowdn.gif differ diff --git a/ecs/umn/public_sys-resources/icon-arrowrt.gif b/ecs/umn/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 000000000..39583d168 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-arrowrt.gif differ diff --git a/ecs/umn/public_sys-resources/icon-caution.gif b/ecs/umn/public_sys-resources/icon-caution.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-caution.gif differ diff --git a/ecs/umn/public_sys-resources/icon-danger.gif b/ecs/umn/public_sys-resources/icon-danger.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-danger.gif differ diff --git a/ecs/umn/public_sys-resources/icon-huawei.gif b/ecs/umn/public_sys-resources/icon-huawei.gif new file mode 100644 index 000000000..a31d60f89 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-huawei.gif differ diff --git a/ecs/umn/public_sys-resources/icon-note.gif b/ecs/umn/public_sys-resources/icon-note.gif new file mode 100644 index 000000000..31be2b039 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-note.gif differ diff --git a/ecs/umn/public_sys-resources/icon-notice.gif b/ecs/umn/public_sys-resources/icon-notice.gif new file mode 100644 index 000000000..409070650 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-notice.gif differ diff --git a/ecs/umn/public_sys-resources/icon-tip.gif b/ecs/umn/public_sys-resources/icon-tip.gif new file mode 100644 index 000000000..c47bae05c Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-tip.gif differ diff --git a/ecs/umn/public_sys-resources/icon-warning.gif b/ecs/umn/public_sys-resources/icon-warning.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/ecs/umn/public_sys-resources/icon-warning.gif differ diff --git a/ecs/umn/public_sys-resources/imageResize.js b/ecs/umn/public_sys-resources/imageResize.js new file mode 100644 index 000000000..e4c520739 --- /dev/null +++ b/ecs/umn/public_sys-resources/imageResize.js @@ -0,0 +1,4 @@ +/** IDP renames $ to $$$,jQueryHW2 */ +var $$$,jQueryHW2; +jQueryHW2 = $$$ = $; +function image_size(a){$$$(window).on('load',function(){$$$(a).each(function(){var e=$$$(this);var f=e.width();var d=e.height();var b=f;var c=d;e.click(function(){tb_show("",this.src,false)})})})}; \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/imageclose.gif b/ecs/umn/public_sys-resources/imageclose.gif new file mode 100644 index 000000000..56818c26b Binary files /dev/null and b/ecs/umn/public_sys-resources/imageclose.gif differ diff --git a/ecs/umn/public_sys-resources/imageclosehover.gif b/ecs/umn/public_sys-resources/imageclosehover.gif new file mode 100644 index 000000000..3bcf231f1 Binary files /dev/null and b/ecs/umn/public_sys-resources/imageclosehover.gif differ diff --git a/ecs/umn/public_sys-resources/imagemax.gif b/ecs/umn/public_sys-resources/imagemax.gif new file mode 100644 index 000000000..49fe390b1 Binary files /dev/null and b/ecs/umn/public_sys-resources/imagemax.gif differ diff --git a/ecs/umn/public_sys-resources/imagemaxhover.gif b/ecs/umn/public_sys-resources/imagemaxhover.gif new file mode 100644 index 000000000..387b0a981 Binary files /dev/null and b/ecs/umn/public_sys-resources/imagemaxhover.gif differ diff --git a/ecs/umn/public_sys-resources/jquery-migrate-1.2.1.min.js b/ecs/umn/public_sys-resources/jquery-migrate-1.2.1.min.js new file mode 100644 index 000000000..fc18734e9 --- /dev/null +++ b/ecs/umn/public_sys-resources/jquery-migrate-1.2.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */ +jQueryHW2.migrateMute===void 0&&(jQueryHW2.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQueryHW2 is not compatible with Quirks Mode");var o=e("",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQueryHW2.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQueryHW2.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQueryHW2.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQueryHW2.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQueryHW2.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQueryHW2.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQueryHW2.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQueryHW2.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQueryHW2.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQueryHW2.fn.andSelf() replaced by jQueryHW2.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQueryHW2.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQueryHW2.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQueryHW2.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQueryHW2.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQueryHW2.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQueryHW2.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQueryHW2,window); \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/jquery-ui.min.js b/ecs/umn/public_sys-resources/jquery-ui.min.js new file mode 100644 index 000000000..ba0b043dc --- /dev/null +++ b/ecs/umn/public_sys-resources/jquery-ui.min.js @@ -0,0 +1,12 @@ +/*! jQuery UI - v1.12.1 - 2016-10-02 +* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js +* Copyright jQueryHW2 Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQueryHW2)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("
    "))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(p.inline?p.dpDiv.parent()[0]:p.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var c=!1;t(document).on("mouseup",function(){c=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!c){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),c=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,c=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
    ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0) +},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&u(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var u=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&u(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=u(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0}; +t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQueryHW2(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQueryHW2(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQueryHW2:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons")) +},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
      ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
      ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var d=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
      ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(d,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon) +},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),p===n&&(p=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))}},_updateDatepicker:function(e){this.maxRows=4,p=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$$$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$$$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$$$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
      "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
      ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="
      "}for(T+="
      "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"
      "+"",P=u?"":"",w=0;7>w;w++)M=(w+c)%7,P+="";for(T+=P+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="",W=u?"":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}Z++,Z>11&&(Z=0,te++),T+="
      "+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[M]+"
      "+this._get(t,"calculateWeek")(A)+""+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"
      "+(X?"
      "+(U[0]>0&&C===U[1]-1?"
      ":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
      ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
      "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
      ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
      "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
      "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
      ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
      ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
      ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
      ").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
      ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
      ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQueryHW2 UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
      ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("
      ").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e] +}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
      ").attr("role","tooltip"),s=t("
      ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip;var f="ui-effects-",g="ui-effects-style",m="ui-effects-animated",_=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

      ")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(_),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(_.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(m)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(f+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(f+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

      ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(g,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(g)||"",t.removeData(g)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(f+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=f+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(m),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(m,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
      ").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var v=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
      ").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var v;t.uiBackCompat!==!1&&(v=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)}))}); \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/jquery.min.js b/ecs/umn/public_sys-resources/jquery.min.js new file mode 100644 index 000000000..b0614034a --- /dev/null +++ b/ecs/umn/public_sys-resources/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="
      ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/macFFBgHack.png b/ecs/umn/public_sys-resources/macFFBgHack.png new file mode 100644 index 000000000..c6473b324 Binary files /dev/null and b/ecs/umn/public_sys-resources/macFFBgHack.png differ diff --git a/ecs/umn/public_sys-resources/note_3.0-en-us.png b/ecs/umn/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 000000000..57a0e1f53 Binary files /dev/null and b/ecs/umn/public_sys-resources/note_3.0-en-us.png differ diff --git a/ecs/umn/public_sys-resources/notice_3.0-en-us.png b/ecs/umn/public_sys-resources/notice_3.0-en-us.png new file mode 100644 index 000000000..fa4b64990 Binary files /dev/null and b/ecs/umn/public_sys-resources/notice_3.0-en-us.png differ diff --git a/ecs/umn/public_sys-resources/popup.js b/ecs/umn/public_sys-resources/popup.js new file mode 100644 index 000000000..a550862ed --- /dev/null +++ b/ecs/umn/public_sys-resources/popup.js @@ -0,0 +1 @@ +var i=0;var dhtmlgoodies_tooltipFlag=false;var dhtmlgoodies_tooltip="";var dhtmlgoodies_tooltipShadow="";var dhtmlgoodies_shadowSize=3;var dhtmlgoodies_tooltipMaxWidth=500;var dhtmlgoodies_tooltipMinWidth=100;var dhtmlgoodies_iframe=false;var timeId;var clickFlag=false;var tooltip_is_msie=(navigator.userAgent.indexOf("MSIE")>=0&&navigator.userAgent.indexOf("opera")==-1&&document.all)?true:false;var xPos;var yPos;window.document.onmousemove=function(a){a=a||window.event;if(a.pageX){xPos=a.pageX;yPos=a.pageY}else{if(document.body!==null&&typeof document.body!=="undefined"){xPos=a.clientX+document.body.scrollLeft-document.body.clientLeft;yPos=a.clientY+document.body.scrollTop-document.body.clientTop}}};function showTooltip(e){if(document.body===null||typeof document.body==="undefined"){return}if(i==0){return}clickFlag=true;var f=Json.parse("jsonData."+e);var a=Math.max(document.body.clientWidth,document.documentElement.clientWidth)-20;if(!dhtmlgoodies_tooltipFlag){dhtmlgoodies_tooltip=document.createElement("DIV");dhtmlgoodies_tooltip.id="dhtmlgoodies_tooltip";dhtmlgoodies_tooltipShadow=document.createElement("DIV");dhtmlgoodies_tooltipShadow.id="dhtmlgoodies_tooltipShadow";document.body.appendChild(dhtmlgoodies_tooltip);document.body.appendChild(dhtmlgoodies_tooltipShadow);if(tooltip_is_msie){dhtmlgoodies_iframe=document.createElement("IFRAME");dhtmlgoodies_iframe.frameborder="5";dhtmlgoodies_iframe.style.backgroundColor="#FFFFFF";dhtmlgoodies_iframe.src="#";dhtmlgoodies_iframe.style.zIndex=100;dhtmlgoodies_iframe.style.position="absolute";document.body.appendChild(dhtmlgoodies_iframe)}}dhtmlgoodies_tooltip.style.display="block";dhtmlgoodies_tooltipShadow.style.display="block";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="block"}var b=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(navigator.userAgent.toLowerCase().indexOf("safari")>=0){b=0}var c=xPos+10;dhtmlgoodies_tooltip.style.width=null;dhtmlgoodies_tooltip.innerHTML=f;dhtmlgoodies_tooltip.style.left=c+"px";if(tooltip_is_msie){dhtmlgoodies_tooltip.style.top=yPos+20+b+"px"}else{dhtmlgoodies_tooltip.style.top=yPos+20+"px"}dhtmlgoodies_tooltipShadow.style.left=c+dhtmlgoodies_shadowSize+"px";if(tooltip_is_msie){dhtmlgoodies_tooltipShadow.style.top=yPos+20+b+dhtmlgoodies_shadowSize+"px"}else{dhtmlgoodies_tooltipShadow.style.top=yPos+20+dhtmlgoodies_shadowSize+"px"}if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){dhtmlgoodies_tooltip.style.width=dhtmlgoodies_tooltipMaxWidth+"px"}var d=dhtmlgoodies_tooltip.offsetWidth;if(da){dhtmlgoodies_tooltip.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((c+d)-a))+"px";dhtmlgoodies_tooltipShadow.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((c+d)-a)+dhtmlgoodies_shadowSize)+"px"}if(tooltip_is_msie){dhtmlgoodies_iframe.style.left=dhtmlgoodies_tooltip.style.left;dhtmlgoodies_iframe.style.top=dhtmlgoodies_tooltip.style.top;dhtmlgoodies_iframe.style.width=dhtmlgoodies_tooltip.offsetWidth+"px";dhtmlgoodies_iframe.style.height=dhtmlgoodies_tooltip.offsetHeight+"px"}}function hideTooltip(){i=0;clickFlag=false;if((dhtmlgoodies_tooltip!==null&&typeof dhtmlgoodies_tooltip!=="undefined")&&+(dhtmlgoodies_tooltip.style!==null&&typeof dhtmlgoodies_tooltip.style!=="undefined")){dhtmlgoodies_tooltip.style.display="none";dhtmlgoodies_tooltipShadow.style.display="none";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="none"}}if(timeId!==null&&typeof timeId!=="undefined"&&timeId!=""){clearTimeout(timeId)}}function showText(a){i=1;timeId=setTimeout(function(){showTooltip(a)},500)}function showText2(a){if(!clickFlag){i=1;showTooltip(a);i=0;if(timeId!==null&&typeof timeId!=="undefined"&&timeId!=""){clearTimeout(timeId)}}}function anchorScroll(b){var d=document.getElementsByName(b);if(d!=null&&d.length>0){var c=d[0];var a=c.getBoundingClientRect().left+(document.body.scrollLeft||(document.documentElement&&document.documentElement.scrollLeft));var e=c.getBoundingClientRect().top+(document.body.scrollTop||(document.documentElement&&document.documentElement.scrollTop));window.scrollTo(a,e-30)}}; \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/thickbox.css b/ecs/umn/public_sys-resources/thickbox.css new file mode 100644 index 000000000..aa0cf3743 --- /dev/null +++ b/ecs/umn/public_sys-resources/thickbox.css @@ -0,0 +1 @@ +#TB_window{font:12px Arial,Helvetica,sans-serif;color:#333333;}#TB_secondLine{font:10px Arial,Helvetica,sans-serif;color:#666666;}#TB_window a:link{color:#666666;}#TB_window a:visited{color:#666666;}#TB_window a:hover{color:#000;}#TB_window a:active{color:#666666;}#TB_window a:focus{color:#666666;}#TB_overlay{position:fixed;z-index:100;top:0;left:0;height:100%;width:100%;}.TB_overlayMacFFBGHack{background:url(macFFBgHack.png) repeat;}.TB_overlayBG{background-color:#000;filter:alpha(opacity=30);-moz-opacity:.75;opacity:.75;}* html #TB_overlay{position:absolute;height:expression(document.body.scrollHeight>document.body.offsetHeight ? document.body.scrollHeight:document.body.offsetHeight+'px');}#TB_window{position:fixed;background:#ffffff;z-index:102;color:#000000;display:none;border:2px solid #525252;text-align:left;top:50%;left:50%;}* html #TB_window{position:absolute;margin-top:expression(0 - parseInt(this.offsetHeight / 2)+(TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop)+'px');}#TB_window img#TB_Image{display:block;margin:0 auto;border-right:1px solid #ccc;border-bottom:1px solid #ccc;border-top:1px solid #666;border-left:1px solid #666;cursor:pointer;}#TB_caption{padding:7px 30px 10px 25px;float:left;}#TB_closeWindow{color:#999999;padding:8px 0 25px;font-size:12px;}#TB_closeWindow a{float:left;height:17px;line-height:100px;margin-left:10px;overflow:hidden;width:17px;}#TB_closeWindow a:hover{float:left;height:17px;line-height:100px;margin-left:10px;overflow:hidden;width:17px;}#TB_closeWindow a.imgadjust{background:url(imagemax.gif) no-repeat 0 top;}#TB_closeWindow a.imgclose{background:url(imageclose.gif) no-repeat 0 top;}#TB_closeWindow a.imgadjust:hover{background:url(imagemaxhover.gif) no-repeat 0 top;}#TB_closeWindow a.imgclose:hover{background:url(imageclosehover.gif) no-repeat 0 top;}.TB_padding{padding:5px 10px 10px;}#TB_closeAjaxWindow{padding:7px 10px 5px 0;margin-bottom:1px;text-align:right;float:right;}#TB_ajaxWindowTitle{float:left;padding:7px 0 5px 10px;margin-bottom:1px;}#TB_title{background-color:#e8e8e8;height:27px;}#TB_ajaxContent{clear:both;padding:2px 15px 15px 15px;overflow:auto;text-align:left;line-height:1.4em;}#TB_ajaxContent.TB_modal{padding:15px;}#TB_ajaxContent p{padding:5px 0 5px 0;}#TB_load{position:fixed;display:none;height:13px;width:208px;z-index:103;top:50%;left:50%;margin:-6px 0 0 -104px;}* html #TB_load{position:absolute;margin-top:expression(0 - parseInt(this.offsetHeight / 2)+(TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop)+'px');}#TB_HideSelect{z-index:99;position:fixed;top:0;left:0;background-color:#fff;border:none;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;height:100%;width:100%;}* html #TB_HideSelect{position:absolute;height:expression(document.body.scrollHeight>document.body.offsetHeight ? document.body.scrollHeight:document.body.offsetHeight+'px');}#TB_iframeContent{clear:both;border:none;margin-bottom:-1px;margin-top:1px;_margin-bottom:1px;} \ No newline at end of file diff --git a/ecs/umn/public_sys-resources/thickbox.js b/ecs/umn/public_sys-resources/thickbox.js new file mode 100644 index 000000000..2b294b4a5 --- /dev/null +++ b/ecs/umn/public_sys-resources/thickbox.js @@ -0,0 +1,8 @@ +/* + * Thickbox 3.1 - One Box To Rule Them All. + * By Cody Lindley (http://www.codylindley.com) + * Copyright (c) 2007 cody lindley + * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php +*/ +$$$(document).ready(function(){tb_init("a.thickbox, area.thickbox, input.thickbox");imgLoader=new Image();});function tb_init(a){$$$(a).click(function(){var c=this.title||this.name||null;var b=this.href||this.alt;var d=this.rel||false;tb_show(c,b,d);this.blur();return false})}function tb_show(j,b,h){try{if(typeof document.body.style.maxHeight==="undefined"){$$$("body","html").css({height:"100%",width:"100%"});$$$("html").css("overflow","hidden");if(document.getElementById("TB_HideSelect")===null){$$$("body").append("
      ");$$$("#TB_overlay").click(tb_remove)}}else{if(document.getElementById("TB_overlay")===null){$$$("body").append("
      ");$$$("#TB_overlay").click(tb_remove)}}if(tb_detectMacXFF()){$$$("#TB_overlay").addClass("TB_overlayMacFFBGHack")}else{$$$("#TB_overlay").addClass("TB_overlayBG")}if(j===null){j=""}$$$("body").append("
      ");$$$("#TB_load").show();var c;if(b.indexOf("?")!==-1){c=b.substr(0,b.indexOf("?"))}else{c=b}var f=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var k=c.toLowerCase().match(f);if(k==".jpg"||k==".jpeg"||k==".png"||k==".gif"||k==".bmp"){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(h){TB_TempArray=$$$("a[@rel="+h+"]").get();for(TB_Counter=0;((TB_Counter  Next >"}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="  < Prev"}}else{TB_FoundURL=true;TB_imageCount="Image "+(TB_Counter+1)+" of "+(TB_TempArray.length)}}}imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var e=tb_getPageSize();var v=e[0]-150;var s=e[1]-150;var r=imgPreloader.width;var o=imgPreloader.height;var t=r;var l=o;if(r>v){o=o*(v/r);r=v;if(o>s){r=r*(s/o);o=s}}else{if(o>s){r=r*(s/o);o=s;if(r>v){o=o*(v/r);r=v}}}var m=r;var n=o;$$$("#TB_window").bind("mousewheel",function(y,A){var x=Math.abs(A);var w=m;var z=n;if(A>0){m*=(x/10+1);n*=(x/10+1)}else{m*=(1-x/10);n*=(1-x/10);if(t<=v){}else{if(m<=r){n=l*(m/t)}}}if(m<210){m=w;n=z}$$$("#TB_Image").attr("width",m).attr("height",n);TB_WIDTH=m+30;TB_HEIGHT=o+60;tb_position();return false});TB_WIDTH=r+30;TB_HEIGHT=o+60;var q="
      ";$$$("#TB_window").append(q+""+j+"
      "+j+"
      "+TB_imageCount+TB_PrevHTML+TB_NextHTML+"
      ");$$$("#TB_window").addClass("ui-draggable");$$$("#TB_closeWindowButton").click(tb_remove);$$$(".imgadjust").click(function(){$$$("#TB_Image").attr("width",t).attr("height",l);TB_WIDTH=t+30;m=t;n=l;tb_position();return false});$$$("#TB_window").draggable();if(!(TB_PrevHTML==="")){function p(){if($$$(document).unbind("click",p)){$$$(document).unbind("click",p)}$$$("#TB_window").remove();$$$("body").append("
      ");tb_show(TB_PrevCaption,TB_PrevURL,h);return false}$$$("#TB_prev").click(p)}if(!(TB_NextHTML==="")){function u(){$$$("#TB_window").remove();$$$("body").append("
      ");tb_show(TB_NextCaption,TB_NextURL,h);return false}$$$("#TB_next").click(u)}document.onkeydown=function(w){if(w==null){keycode=event.keyCode}else{keycode=w.which}if(keycode==27){tb_remove()}else{if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";u()}}else{if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";p()}}}}};tb_position();$$$("#TB_load").remove();$$$("#TB_ImageOff").click(tb_remove);$$$("#TB_window").css({display:"block"})};imgPreloader.src=b}else{var a=b.replace(/^[^\?]+\??/,"");var d=tb_parseQuery(a);TB_WIDTH=(d.width*1)+30||630;TB_HEIGHT=(d.height*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(b.indexOf("TB_iframe")!=-1){urlNoQuery=b.split("TB_");$$$("#TB_iframeContent").remove();if(d.modal!="true"){$$$("#TB_window").append("
      "+j+"
      close or Esc Key
      ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("")}}else{if($$$("#TB_window").css("display")!="block"){if(d.modal!="true"){$$$("#TB_window").append("
      "+j+"
      close or Esc Key
      ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("
      ")}}else{$$$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$$$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$$$("#TB_ajaxContent")[0].scrollTop=0;$$$("#TB_ajaxWindowTitle").html(j)}}$$$("#TB_closeWindowButton").click(tb_remove);if(b.indexOf("TB_inline")!=-1){$$$("#TB_ajaxContent").append($$$("#"+d.inlineId).children());$$$("#TB_window").unload(function(){$$$("#"+d.inlineId).append($$$("#TB_ajaxContent").children())});tb_position();$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}else{if(b.indexOf("TB_iframe")!=-1){tb_position();if($$$.browser.safari){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}}else{$$$("#TB_ajaxContent").load(b+="&random="+(new Date().getTime()),function(){tb_position();$$$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$$$("#TB_window").css({display:"block"})})}}}if(!d.modal){document.onkeyup=function(l){if(l==null){keycode=event.keyCode}else{keycode=l.which}if(keycode==27){tb_remove()}}}}catch(i){}}function tb_showIframe(){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}function tb_remove(){$$$("#TB_imageOff").unbind("click");$$$("#TB_closeWindowButton").unbind("click");$$$("#TB_window").fadeOut("fast",function(){$$$("#TB_window,#TB_overlay,#TB_HideSelect").trigger("unload").unbind().remove()});$$$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$$$("body","html").css({height:"auto",width:"auto"});$$$("html").css("overflow","")}document.onkeydown="";document.onkeyup="";return false}function tb_position(){if(TB_WIDTH<210){TB_WIDTH=210}$$$("#TB_window").css({marginLeft:"-"+parseInt((TB_WIDTH/2),10)+"px",width:TB_WIDTH+"px"});if(!(jQueryHW2.browser.msie&&jQueryHW2.browser.version<7)){$$$("#TB_window").css({marginTop:"-"+parseInt((TB_HEIGHT/2),10)+"px"})}}function tb_parseQuery(d){var e={};if(!d){return e}var a=d.split(/[;&]/);for(var c=0;c
      ");$$$("#TB_overlay").click(tb_remove)}}else{if(document.getElementById("TB_overlay")===null){$$$("body").append("
      ");$$$("#TB_overlay").click(tb_remove)}}if(tb_detectMacXFF()){$$$("#TB_overlay").addClass("TB_overlayMacFFBGHack")}else{$$$("#TB_overlay").addClass("TB_overlayBG")}if(j===null){j=""}$$$("body").append("
      ");$$$("#TB_load").show();var c;if(b.indexOf("?")!==-1){c=b.substr(0,b.indexOf("?"))}else{c=b}var f=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var k=c.toLowerCase().match(f);if(k==".jpg"||k==".jpeg"||k==".png"||k==".gif"||k==".bmp"){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(h){TB_TempArray=$$$("a[@rel="+h+"]").get();for(TB_Counter=0;((TB_Counter  Next >"}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="  < Prev"}}else{TB_FoundURL=true;TB_imageCount="Image "+(TB_Counter+1)+" of "+(TB_TempArray.length)}}}imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var e=tb_getPageSize();var v=e[0]-150;var s=e[1]-150;var r=imgPreloader.width;var o=imgPreloader.height;var t=r;var l=o;if(r>v){o=o*(v/r);r=v;if(o>s){r=r*(s/o);o=s}}else{if(o>s){r=r*(s/o);o=s;if(r>v){o=o*(v/r);r=v}}}var m=r;var n=o;$$$("#TB_window").bind("mousewheel",function(y,A){var x=Math.abs(A);var w=m;var z=n;if(A>0){m*=(x/10+1);n*=(x/10+1)}else{m*=(1-x/10);n*=(1-x/10);if(t<=v){}else{if(m<=r){n=l*(m/t)}}}if(m<210){m=w;n=z}$$$("#TB_Image").attr("width",m).attr("height",n);TB_WIDTH=m+30;TB_HEIGHT=o+60;tb_position();return false});TB_WIDTH=r+30;TB_HEIGHT=o+60;var q="
      ";$$$("#TB_window").append(q+""+j+"
      "+j+"
      "+TB_imageCount+TB_PrevHTML+TB_NextHTML+"
      ");$$$("#TB_window").addClass("ui-draggable");$$$("#TB_closeWindowButton").click(tb_remove);$$$(".imgadjust").click(function(){$$$("#TB_Image").attr("width",t).attr("height",l);TB_WIDTH=t+30;m=t;n=l;tb_position();return false});$$$("#TB_window").draggable();if(!(TB_PrevHTML==="")){function p(){if($$$(document).unbind("click",p)){$$$(document).unbind("click",p)}$$$("#TB_window").remove();$$$("body").append("
      ");tb_show(TB_PrevCaption,TB_PrevURL,h);return false}$$$("#TB_prev").click(p)}if(!(TB_NextHTML==="")){function u(){$$$("#TB_window").remove();$$$("body").append("
      ");tb_show(TB_NextCaption,TB_NextURL,h);return false}$$$("#TB_next").click(u)}document.onkeydown=function(w){if(w==null){keycode=event.keyCode}else{keycode=w.which}if(keycode==27){tb_remove()}else{if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";u()}}else{if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";p()}}}}};tb_position();$$$("#TB_load").remove();$$$("#TB_ImageOff").click(tb_remove);$$$("#TB_window").css({display:"block"})};imgPreloader.src=b}else{var a=b.replace(/^[^\?]+\??/,"");var d=tb_parseQuery(a);TB_WIDTH=(d.width*1)+30||630;TB_HEIGHT=(d.height*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(b.indexOf("TB_iframe")!=-1){urlNoQuery=b.split("TB_");$$$("#TB_iframeContent").remove();if(d.modal!="true"){$$$("#TB_window").append("
      "+j+"
      close or Esc Key
      ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("")}}else{if($$$("#TB_window").css("display")!="block"){if(d.modal!="true"){$$$("#TB_window").append("
      "+j+"
      close or Esc Key
      ")}else{$$$("#TB_overlay").unbind();$$$("#TB_window").append("
      ")}}else{$$$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$$$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$$$("#TB_ajaxContent")[0].scrollTop=0;$$$("#TB_ajaxWindowTitle").html(j)}}$$$("#TB_closeWindowButton").click(tb_remove);if(b.indexOf("TB_inline")!=-1){$$$("#TB_ajaxContent").append($$$("#"+d.inlineId).children());$$$("#TB_window").unload(function(){$$$("#"+d.inlineId).append($$$("#TB_ajaxContent").children())});tb_position();$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}else{if(b.indexOf("TB_iframe")!=-1){tb_position();if($$$.browser.safari){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}}else{$$$("#TB_ajaxContent").load(b+="&random="+(new Date().getTime()),function(){tb_position();$$$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$$$("#TB_window").css({display:"block"})})}}}if(!d.modal){document.onkeyup=function(l){if(l==null){keycode=event.keyCode}else{keycode=l.which}if(keycode==27){tb_remove()}}}}catch(i){}}function tb_showIframe(){$$$("#TB_load").remove();$$$("#TB_window").css({display:"block"})}function tb_remove(){$$$("#TB_imageOff").unbind("click");$$$("#TB_closeWindowButton").unbind("click");$$$("#TB_window").fadeOut("fast",function(){$$$("#TB_window,#TB_overlay,#TB_HideSelect").trigger("unload").unbind().remove()});$$$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$$$("body","html").css({height:"auto",width:"auto"});$$$("html").css("overflow","")}document.onkeydown="";document.onkeyup="";return false}function tb_position(){if(TB_WIDTH<210){TB_WIDTH=210}$$$("#TB_window").css({marginLeft:"-"+parseInt((TB_WIDTH/2),10)+"px",width:TB_WIDTH+"px"});if(!(jQueryHW2.browser.msie&&jQueryHW2.browser.version<7)){$$$("#TB_window").css({marginTop:"-"+parseInt((TB_HEIGHT/2),10)+"px"})}}function tb_parseQuery(d){var e={};if(!d){return e}var a=d.split(/[;&]/);for(var c=0;c + + + + + \ No newline at end of file diff --git a/elb/api-ref/.idea/modules.xml b/elb/api-ref/.idea/modules.xml new file mode 100644 index 000000000..1a5d1ddcc --- /dev/null +++ b/elb/api-ref/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/elb/api-ref/.idea/runConfigurations.xml b/elb/api-ref/.idea/runConfigurations.xml new file mode 100644 index 000000000..797acea53 --- /dev/null +++ b/elb/api-ref/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/elb/api-ref/ALL_META.TXT.json b/elb/api-ref/ALL_META.TXT.json new file mode 100644 index 000000000..7c98f3bdc --- /dev/null +++ b/elb/api-ref/ALL_META.TXT.json @@ -0,0 +1,1852 @@ +[ + { + "uri":"en-us_topic_0022480177.html", + "product_code":"elb", + "code":"1", + "des":"Public cloud APIs comply with the RESTful API design principles. REST-based web services are organized into resources. Each resource is identified by one or more Uniform ", + "doc_type":"api", + "kw":"API Usage Guidelines,API Reference", + "title":"API Usage Guidelines", + "githuburl":"" + }, + { + "uri":"elb_jd_0000.html", + "product_code":"elb", + "code":"2", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Classic Load Balancer APIs", + "title":"Classic Load Balancer APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001124568811.html", + "product_code":"elb", + "code":"3", + "des":"Classic load balancers are not supported in the eu-nl region.", + "doc_type":"api", + "kw":"API Call Precaution,Classic Load Balancer APIs,API Reference", + "title":"API Call Precaution", + "githuburl":"" + }, + { + "uri":"elb_jd_fz_0000.html", + "product_code":"elb", + "code":"4", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Load Balancer", + "title":"Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_jd_fz_0001.html", + "product_code":"elb", + "code":"5", + "des":"This API is used to create a load balancer.POST /v1.0/{project_id}/elbaas/loadbalancersRequest parametersParameter descriptionParameterMandatoryTypeDescriptionnameYesStri", + "doc_type":"api", + "kw":"Creating a Load Balancer,Load Balancer,API Reference", + "title":"Creating a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_jd_fz_0002.html", + "product_code":"elb", + "code":"6", + "des":"This API is used to delete a load balancer. If the load balancer is a public network load balancer, this API deletes the EIP bound to the load balancer.For a public netwo", + "doc_type":"api", + "kw":"Deleting a Load Balancer,Load Balancer,API Reference", + "title":"Deleting a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_jd_fz_0003.html", + "product_code":"elb", + "code":"7", + "des":"This API is used to delete a public network load balancer. The EIP bound to the load balancer will not be deleted. If you need to delete this IP address, refer to Deletin", + "doc_type":"api", + "kw":"Deleting a Public Network Load Balancer,Load Balancer,API Reference", + "title":"Deleting a Public Network Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_jd_fz_0004.html", + "product_code":"elb", + "code":"8", + "des":"This API is used to modify the name, description, bandwidth, and administrative status of a load balancer.PUT /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}Req", + "doc_type":"api", + "kw":"Modifying a Load Balancer,Load Balancer,API Reference", + "title":"Modifying a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_jd_fz_0005.html", + "product_code":"elb", + "code":"9", + "des":"This API is used to query details about a load balancer.GET /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}Request parametersNoneNoneExample requestNoneNoneResp", + "doc_type":"api", + "kw":"Querying Details of a Load Balancer,Load Balancer,API Reference", + "title":"Querying Details of a Load Balancer", + "githuburl":"" + }, + { + "uri":"en-us_topic_0096561504.html", + "product_code":"elb", + "code":"10", + "des":"This API is used to query load balancers and display them in a list.GET /v1.0/{project_id}/elbaas/loadbalancersRequest parametersNoneNoneExample requestNoneNoneResponse p", + "doc_type":"api", + "kw":"Querying Load Balancers,Load Balancer,API Reference", + "title":"Querying Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_jd_jt_0000.html", + "product_code":"elb", + "code":"11", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Listener", + "title":"Listener", + "githuburl":"" + }, + { + "uri":"elb_jd_jt_0001.html", + "product_code":"elb", + "code":"12", + "des":"This API is used to add a listener to a load balancer.POST /v1.0/{project_id}/elbaas/listenersRequest parametersNoneNoneExample request{\n \"name\": \"listener1\",\n \"des", + "doc_type":"api", + "kw":"Adding a Listener,Listener,API Reference", + "title":"Adding a Listener", + "githuburl":"" + }, + { + "uri":"elb_jd_jt_0002.html", + "product_code":"elb", + "code":"13", + "des":"This API is used to delete a listener.DELETE /v1.0/{project_id}/elbaas/listeners/{listener_id}Request parametersNoneNoneExample requestNoneNoneResponse parametersNoneNone", + "doc_type":"api", + "kw":"Deleting a Listener,Listener,API Reference", + "title":"Deleting a Listener", + "githuburl":"" + }, + { + "uri":"elb_jd_jt_0003.html", + "product_code":"elb", + "code":"14", + "des":"This API is used to modify the listener information, including the listener name, description, and status.PUT /v1.0/{project_id}/elbaas/listeners/{listener_id}Request par", + "doc_type":"api", + "kw":"Modifying a Listener,Listener,API Reference", + "title":"Modifying a Listener", + "githuburl":"" + }, + { + "uri":"elb_jd_jt_0004.html", + "product_code":"elb", + "code":"15", + "des":"This API is used to query details about a listener.GET /v1.0/{project_id}/elbaas/listeners/{listener_id}Request parametersNoneNoneExample requestNoneNoneResponse paramete", + "doc_type":"api", + "kw":"Querying Details of a Listener,Listener,API Reference", + "title":"Querying Details of a Listener", + "githuburl":"" + }, + { + "uri":"elb_jd_jt_0005.html", + "product_code":"elb", + "code":"16", + "des":"This API is used to query listeners using search criteria and display them in a list.GET /v1.0/{project_id}/elbaas/listeners?loadbalancer_id={loadbalancer_id}Enter a ques", + "doc_type":"api", + "kw":"Querying Listeners,Listener,API Reference", + "title":"Querying Listeners", + "githuburl":"" + }, + { + "uri":"elb_jd_jk_0000.html", + "product_code":"elb", + "code":"17", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Health Check", + "title":"Health Check", + "githuburl":"" + }, + { + "uri":"elb_jd_jk_0001.html", + "product_code":"elb", + "code":"18", + "des":"This API is used to configure a health check for backend ECSs.POST /v1.0/{project_id}/elbaas/healthcheckRequest parametersNoneNoneExample request 1: Configuring an HTTP h", + "doc_type":"api", + "kw":"Configuring a Health Check,Health Check,API Reference", + "title":"Configuring a Health Check", + "githuburl":"" + }, + { + "uri":"elb_jd_jk_0002.html", + "product_code":"elb", + "code":"19", + "des":"This API is used to delete a health check.DELETE /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}Request parametersNoneNoneExample requestNoneNoneResponse parameter", + "doc_type":"api", + "kw":"Deleting a Health Check,Health Check,API Reference", + "title":"Deleting a Health Check", + "githuburl":"" + }, + { + "uri":"elb_jd_jk_0003.html", + "product_code":"elb", + "code":"20", + "des":"This API is used to modify information about a health check.PUT /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}Request parametersNoneNoneExample request{\n \"heal", + "doc_type":"api", + "kw":"Modifying a Health Check,Health Check,API Reference", + "title":"Modifying a Health Check", + "githuburl":"" + }, + { + "uri":"elb_jd_jk_0004.html", + "product_code":"elb", + "code":"21", + "des":"This API is used to query details about a health check.GET /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}Request parametersNoneNoneExample requestNoneNoneResponse", + "doc_type":"api", + "kw":"Querying Details of a Health Check,Health Check,API Reference", + "title":"Querying Details of a Health Check", + "githuburl":"" + }, + { + "uri":"elb_jd_hd_0000.html", + "product_code":"elb", + "code":"22", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Backend ECS", + "title":"Backend ECS", + "githuburl":"" + }, + { + "uri":"elb_jd_hd_0001.html", + "product_code":"elb", + "code":"23", + "des":"This API is used to add backend ECSs to a listener for monitoring.To add backend ECSs to a UDP listener, IP addresses can be pinged and UDP services must be enabled.POST ", + "doc_type":"api", + "kw":"Adding Backend ECSs,Backend ECS,API Reference", + "title":"Adding Backend ECSs", + "githuburl":"" + }, + { + "uri":"elb_jd_hd_0002.html", + "product_code":"elb", + "code":"24", + "des":"This API is used to remove backend ECSs from a listener. Multiple backend ECSs can be removed concurrently.POST /v1.0/{project_id}/elbaas/listeners/{listener_id}/members/", + "doc_type":"api", + "kw":"Removing Backend ECSs,Backend ECS,API Reference", + "title":"Removing Backend ECSs", + "githuburl":"" + }, + { + "uri":"elb_jd_hd_0003.html", + "product_code":"elb", + "code":"25", + "des":"This API is used to query backend ECSs added to a listener. If you are the administrator, the backend ECS list will be empty.GET /v1.0/{project_id}/elbaas/listeners/{list", + "doc_type":"api", + "kw":"Querying Backend ECSs,Backend ECS,API Reference", + "title":"Querying Backend ECSs", + "githuburl":"" + }, + { + "uri":"elb_jd_pe_0000.html", + "product_code":"elb", + "code":"26", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Quota", + "title":"Quota", + "githuburl":"" + }, + { + "uri":"elb_jd_pe_0001.html", + "product_code":"elb", + "code":"27", + "des":"This API is used to query the load balancer or listener quotas.GET /v1.0/{project_id}/elbaas/quotasRequest parametersNoneNoneExample requestNoneNoneResponse parametersPar", + "doc_type":"api", + "kw":"Querying Load Balancer or Listener Quotas,Quota,API Reference", + "title":"Querying Load Balancer or Listener Quotas", + "githuburl":"" + }, + { + "uri":"elb_jd_zs_0000.html", + "product_code":"elb", + "code":"28", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Certificate", + "title":"Certificate", + "githuburl":"" + }, + { + "uri":"elb_jd_zs_0001.html", + "product_code":"elb", + "code":"29", + "des":"This API is used to create a certificate for an HTTPS listener.POST /v1.0/{project_id}/elbaas/certificateRequest parametersNoneNoneExample request{\n \"name\": \"cert-bky\"", + "doc_type":"api", + "kw":"Creating a Certificate,Certificate,API Reference", + "title":"Creating a Certificate", + "githuburl":"" + }, + { + "uri":"elb_jd_zs_0002.html", + "product_code":"elb", + "code":"30", + "des":"This API is used to delete a certificate.DELETE /v1.0/{project_id}/elbaas/certificate/{certificate_id}Request parametersNoneNoneExample requestNoneNoneResponse parameters", + "doc_type":"api", + "kw":"Deleting a Certificate,Certificate,API Reference", + "title":"Deleting a Certificate", + "githuburl":"" + }, + { + "uri":"elb_jd_zs_0003.html", + "product_code":"elb", + "code":"31", + "des":"This API is used to modify the name and description of a certificate.PUT /v1.0/{project_id}/elbaas/certificate/{certificate_id}Request parametersNoneNoneExample request{\n", + "doc_type":"api", + "kw":"Modifying a Certificate,Certificate,API Reference", + "title":"Modifying a Certificate", + "githuburl":"" + }, + { + "uri":"elb_jd_zs_0004.html", + "product_code":"elb", + "code":"32", + "des":"This API is used to query all the certificates.GET /v1.0/{project_id}/elbaas/certificateRequest parametersNoneNoneExample requestNoneNoneResponse parametersResponse param", + "doc_type":"api", + "kw":"Querying Certificates,Certificate,API Reference", + "title":"Querying Certificates", + "githuburl":"" + }, + { + "uri":"elb_jd_job_0000.html", + "product_code":"elb", + "code":"33", + "des":"This API is used to query the job status, such as the execution status of creating or deleting a load balancer.GET /v1.0/{project_id}/jobs/{job_id}Request parametersNoneN", + "doc_type":"api", + "kw":"Querying the Job Status,Classic Load Balancer APIs,API Reference", + "title":"Querying the Job Status", + "githuburl":"" + }, + { + "uri":"elb_jd_cj_0000.html", + "product_code":"elb", + "code":"34", + "des":"This API is used to query all metrics at Layer 4 and Layer 7.Only users can query these metrics.GET /v1.0/{project_id}/elbaas/monitorRequest parametersNoneNoneExample req", + "doc_type":"api", + "kw":"Querying Monitoring Metrics,Classic Load Balancer APIs,API Reference", + "title":"Querying Monitoring Metrics", + "githuburl":"" + }, + { + "uri":"elb_jd_bg_0000.html", + "product_code":"elb", + "code":"35", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"API Version", + "title":"API Version", + "githuburl":"" + }, + { + "uri":"elb_jd_bg_0001.html", + "product_code":"elb", + "code":"36", + "des":"This API is used to query all API versions of ELB.GET /Request parametersNoneNoneExample requestNoneNoneResponse parametersParameter descriptionParameterTypeDescriptionve", + "doc_type":"api", + "kw":"Querying All API Versions,API Version,API Reference", + "title":"Querying All API Versions", + "githuburl":"" + }, + { + "uri":"elb_jd_bg_0002.html", + "product_code":"elb", + "code":"37", + "des":"This API is used to query a specific ELB API version.GET /{api_version}Example/v1.0/v1.0Request parametersNoneNoneExample requestNoneNoneResponse parametersResponse param", + "doc_type":"api", + "kw":"Querying a Specific API Version,API Version,API Reference", + "title":"Querying a Specific API Version", + "githuburl":"" + }, + { + "uri":"elb_zq_0000.html", + "product_code":"elb", + "code":"38", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Shared Load Balancer APIs", + "title":"Shared Load Balancer APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001088335195.html", + "product_code":"elb", + "code":"39", + "des":"By default, load balancers created in the eu-de region are shared load balancers. APIs for shared load balancers are only available in this region. Shared load balancers ", + "doc_type":"api", + "kw":"API Call Precaution,Shared Load Balancer APIs,API Reference", + "title":"API Call Precaution", + "githuburl":"" + }, + { + "uri":"elb_zq_fz_0000.html", + "product_code":"elb", + "code":"40", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Load Balancer", + "title":"Load Balancer", + "githuburl":"" + }, + { + "uri":"en-us_topic_0096561535.html", + "product_code":"elb", + "code":"41", + "des":"This API is used to create a private network load balancer. After the load balancer is created, its details, such as load balancer ID, IP address, and subnet ID, are retu", + "doc_type":"api", + "kw":"Creating a Load Balancer,Load Balancer,API Reference", + "title":"Creating a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_fz_0002.html", + "product_code":"elb", + "code":"42", + "des":"This API is used to query load balancers and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.P", + "doc_type":"api", + "kw":"Querying Load Balancers,Load Balancer,API Reference", + "title":"Querying Load Balancers", + "githuburl":"" + }, + { + "uri":"en-us_topic_0141008271.html", + "product_code":"elb", + "code":"43", + "des":"See HTTP Status Codes of Shared Load Balancers.", + "doc_type":"api", + "kw":"Querying Details of a Load Balancer,Load Balancer,API Reference", + "title":"Querying Details of a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_fz_0004.html", + "product_code":"elb", + "code":"44", + "des":"This API is used to query the status tree of a load balancer. You can use this API to query details about the associated listeners, backend server groups, backend servers", + "doc_type":"api", + "kw":"Querying the Status Tree of a Load Balancer,Load Balancer,API Reference", + "title":"Querying the Status Tree of a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_fz_0005.html", + "product_code":"elb", + "code":"45", + "des":"This API is used to update the name or description of a load balancer.PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id}Example request: Modifying the load balancer name and", + "doc_type":"api", + "kw":"Updating a Load Balancer,Load Balancer,API Reference", + "title":"Updating a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_fz_0006.html", + "product_code":"elb", + "code":"46", + "des":"This API is used to delete a specific load balancer.All listeners added to the load balancer must be deleted before the load balancer is deleted.DELETE /v2.0/lbaas/loadba", + "doc_type":"api", + "kw":"Deleting a Load Balancer,Load Balancer,API Reference", + "title":"Deleting a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_jt_0000.html", + "product_code":"elb", + "code":"47", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Listener", + "title":"Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_jt_0001.html", + "product_code":"elb", + "code":"48", + "des":"This API is used to add a listener to a load balancer.When protocol is set to TCP and protocol_port to 0, the listener works in IP mode (DR mode).POST /v2.0/lbaas/listene", + "doc_type":"api", + "kw":"Adding a Listener,Listener,API Reference", + "title":"Adding a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_jt_0002.html", + "product_code":"elb", + "code":"49", + "des":"This API is used to query the listeners and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Yo", + "doc_type":"api", + "kw":"Querying Listeners,Listener,API Reference", + "title":"Querying Listeners", + "githuburl":"" + }, + { + "uri":"elb_zq_jt_0003.html", + "product_code":"elb", + "code":"50", + "des":"This API is used to query details about a listener using its ID.GET /v2.0/lbaas/listeners/{listener_id}NoneExample request: Viewing details of a listenerGET https://{Endp", + "doc_type":"api", + "kw":"Querying Details of a Listener,Listener,API Reference", + "title":"Querying Details of a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_jt_0004.html", + "product_code":"elb", + "code":"51", + "des":"This API is used to update a listener, such as listener name, description, associated backend server groups, and server certificates.If the provisioning status of the ass", + "doc_type":"api", + "kw":"Updating a Listener,Listener,API Reference", + "title":"Updating a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_jt_0005.html", + "product_code":"elb", + "code":"52", + "des":"This API is used to delete a listener by ID.All backend server groups associated with the listener must be deleted before the listener is deleted.DELETE /v2.0/lbaas/liste", + "doc_type":"api", + "kw":"Deleting a Listener,Listener,API Reference", + "title":"Deleting a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_hz_0000.html", + "product_code":"elb", + "code":"53", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Backend Server Group", + "title":"Backend Server Group", + "githuburl":"" + }, + { + "uri":"elb_zq_hz_0001.html", + "product_code":"elb", + "code":"54", + "des":"This API is used to add a backend server group. After multiple backend servers are added to a backend server group, requests are distributed among backend servers based o", + "doc_type":"api", + "kw":"Adding a Backend Server Group,Backend Server Group,API Reference", + "title":"Adding a Backend Server Group", + "githuburl":"" + }, + { + "uri":"en-us_topic_0096561547.html", + "product_code":"elb", + "code":"55", + "des":"Example request 1: Adding a backend server group with the sticky session feature disabledPOST https://{Endpoint}/v2.0/lbaas/pools \n\n{\n \"pool\": {\n \"lb_algorithm\"", + "doc_type":"api", + "kw":"Querying Backend Server Groups,Backend Server Group,API Reference", + "title":"Querying Backend Server Groups", + "githuburl":"" + }, + { + "uri":"elb_zq_hz_0003.html", + "product_code":"elb", + "code":"56", + "des":"This API is used to query details about a backend server group using its ID.GET /v2.0/lbaas/pools/{pool_id}NoneExample request: Querying details of a backend server group", + "doc_type":"api", + "kw":"Querying Details of a Backend Server Group,Backend Server Group,API Reference", + "title":"Querying Details of a Backend Server Group", + "githuburl":"" + }, + { + "uri":"elb_zq_hz_0004.html", + "product_code":"elb", + "code":"57", + "des":"This API is used to update a backend server group.If the provisioning status of the load balancer associated with a backend server group is not ACTIVE, the backend server", + "doc_type":"api", + "kw":"Updating a Backend Server Group,Backend Server Group,API Reference", + "title":"Updating a Backend Server Group", + "githuburl":"" + }, + { + "uri":"elb_zq_hz_0005.html", + "product_code":"elb", + "code":"58", + "des":"This API is used to delete a backend server group.Before deleting a backend server group, remove all backend servers, delete the health check, and disassociate forwarding", + "doc_type":"api", + "kw":"Deleting a Backend Server Group,Backend Server Group,API Reference", + "title":"Deleting a Backend Server Group", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0000.html", + "product_code":"elb", + "code":"59", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Backend Server", + "title":"Backend Server", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0001.html", + "product_code":"elb", + "code":"60", + "des":"This API is used to add a backend server to a specific backend server group. After a backend server group is added to a listener, traffic is distributed to backend server", + "doc_type":"api", + "kw":"Adding a Backend Server,Backend Server,API Reference", + "title":"Adding a Backend Server", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0002.html", + "product_code":"elb", + "code":"61", + "des":"This API is used to query backend servers in a specific backend server group. Filter query and pagination query are supported. Unless otherwise specified, exact match is ", + "doc_type":"api", + "kw":"Querying Backend Servers,Backend Server,API Reference", + "title":"Querying Backend Servers", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0003.html", + "product_code":"elb", + "code":"62", + "des":"This API is used to query details about a backend server.GET /v2.0/lbaas/pools/{pool_id}/members/{member_id}NoneExample request: Querying details of a backend serverGET h", + "doc_type":"api", + "kw":"Querying Details of a Backend Server,Backend Server,API Reference", + "title":"Querying Details of a Backend Server", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0004.html", + "product_code":"elb", + "code":"63", + "des":"This API is used to update a backend server. You can modify its name and weight. You can set a larger weight for backend servers that can receive more traffic.If the prov", + "doc_type":"api", + "kw":"Updating a Backend Server,Backend Server,API Reference", + "title":"Updating a Backend Server", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0005.html", + "product_code":"elb", + "code":"64", + "des":"This API is used to remove a backend server by its ID.After you remove a backend server, new connections to this server will not be established. However, long connections", + "doc_type":"api", + "kw":"Removing a Backend Server,Backend Server,API Reference", + "title":"Removing a Backend Server", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0006.html", + "product_code":"elb", + "code":"65", + "des":"This API is used to query all backend servers. Filter query and pagination query are supported.Parameters marker, limit, and page_reverse are used for pagination query. P", + "doc_type":"api", + "kw":"Querying All Backend Servers (Extension API),Backend Server,API Reference", + "title":"Querying All Backend Servers (Extension API)", + "githuburl":"" + }, + { + "uri":"elb_zq_hd_0007.html", + "product_code":"elb", + "code":"66", + "des":"This API is used to update backend servers in batches.A maximum of 200 backend servers can be modified at a time.Two backend servers a backend server group cannot have th", + "doc_type":"api", + "kw":"Batch Updating Backend Servers,Backend Server,API Reference", + "title":"Batch Updating Backend Servers", + "githuburl":"" + }, + { + "uri":"elb_zq_jk_0000.html", + "product_code":"elb", + "code":"67", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Health Check", + "title":"Health Check", + "githuburl":"" + }, + { + "uri":"elb_zq_jk_0001.html", + "product_code":"elb", + "code":"68", + "des":"This API is used to configure a health check for a backend server group to check the status of backend servers. If the health check result is OFFLINE, backend servers are", + "doc_type":"api", + "kw":"Configuring a Health Check,Health Check,API Reference", + "title":"Configuring a Health Check", + "githuburl":"" + }, + { + "uri":"elb_zq_jk_0002.html", + "product_code":"elb", + "code":"69", + "des":"This API is used to query the health checks. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.GET /v2.0/lbaas/healthmon", + "doc_type":"api", + "kw":"Querying Health Checks,Health Check,API Reference", + "title":"Querying Health Checks", + "githuburl":"" + }, + { + "uri":"elb_zq_jk_0003.html", + "product_code":"elb", + "code":"70", + "des":"This API is used to query details about a health check using its iD.GET /v2.0/lbaas/healthmonitors/{healthmonitor_id}NoneExample request: Querying details of a health che", + "doc_type":"api", + "kw":"Querying Details of a Health Check,Health Check,API Reference", + "title":"Querying Details of a Health Check", + "githuburl":"" + }, + { + "uri":"elb_zq_jk_0004.html", + "product_code":"elb", + "code":"71", + "des":"This API is used to update a health check.If provisioning_status of the load balancer for which the health check is configured is not ACTIVE, the health check cannot be u", + "doc_type":"api", + "kw":"Updating a Health Check,Health Check,API Reference", + "title":"Updating a Health Check", + "githuburl":"" + }, + { + "uri":"elb_zq_jk_0005.html", + "product_code":"elb", + "code":"72", + "des":"This API is used to delete a health check.If provisioning_status of the load balancer for which the health check is configured is not ACTIVE, the health check cannot be d", + "doc_type":"api", + "kw":"Deleting a Health Check,Health Check,API Reference", + "title":"Deleting a Health Check", + "githuburl":"" + }, + { + "uri":"elb_zq_zf_0000.html", + "product_code":"elb", + "code":"73", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Forwarding Policy", + "title":"Forwarding Policy", + "githuburl":"" + }, + { + "uri":"elb_zq_zf_0001.html", + "product_code":"elb", + "code":"74", + "des":"This API is used to add a forwarding policy. The listener and forwarding policy determine how traffic is forwarded to backend servers.By matching the URL or domain name s", + "doc_type":"api", + "kw":"Adding a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Adding a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"elb_zq_zf_0002.html", + "product_code":"elb", + "code":"75", + "des":"This API is used to query the forwarding policies. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, ", + "doc_type":"api", + "kw":"Querying Forwarding Policies,Forwarding Policy,API Reference", + "title":"Querying Forwarding Policies", + "githuburl":"" + }, + { + "uri":"elb_zq_zf_0003.html", + "product_code":"elb", + "code":"76", + "des":"This API is used to query details about a forwarding policy.GET /v2.0/lbaas/l7policies/{l7policy_id}NoneExample request: Querying details of a forwarding policyGET https:", + "doc_type":"api", + "kw":"Querying Details of a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Querying Details of a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"elb_zq_zf_0004.html", + "product_code":"elb", + "code":"77", + "des":"This API is used to update a forwarding policy. You can select another backend server group or redirect to another HTTPS listener.PUT /v2.0/lbaas/l7policies/{l7policy_id}", + "doc_type":"api", + "kw":"Updating a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Updating a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"elb_zq_zf_0005.html", + "product_code":"elb", + "code":"78", + "des":"This API is used to delete a specific forwarding policy.DELETE /v2.0/lbaas/l7policies/{l7policy_id}NoneNoneExample request: Deleting a forwarding policyDELETE https://{En", + "doc_type":"api", + "kw":"Deleting a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Deleting a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"elb_zq_zg_0000.html", + "product_code":"elb", + "code":"79", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Forwarding Rule", + "title":"Forwarding Rule", + "githuburl":"" + }, + { + "uri":"elb_zq_zg_0001.html", + "product_code":"elb", + "code":"80", + "des":"This API is used to add a forwarding rule. After you add a forwarding rule, the load balancer matches the domain name and path in the request and distributes the traffic ", + "doc_type":"api", + "kw":"Adding a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Adding a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"elb_zq_zg_0002.html", + "product_code":"elb", + "code":"81", + "des":"This API is used to query forwarding rules. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, limit, ", + "doc_type":"api", + "kw":"Querying Forwarding Rules,Forwarding Rule,API Reference", + "title":"Querying Forwarding Rules", + "githuburl":"" + }, + { + "uri":"elb_zq_zg_0003.html", + "product_code":"elb", + "code":"82", + "des":"This API is used to query details about a forwarding rule using its ID.GET /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}NoneExample request: Querying details of ", + "doc_type":"api", + "kw":"Querying Details of a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Querying Details of a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"elb_zq_zg_0004.html", + "product_code":"elb", + "code":"83", + "des":"This API is used to update a forwarding rule. You can change the mode that how traffic is distributed by updating the forwarding rule.PUT /v2.0/lbaas/l7policies/{l7policy", + "doc_type":"api", + "kw":"Updating a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Updating a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"elb_zq_zg_0005.html", + "product_code":"elb", + "code":"84", + "des":"This API is used to delete a specific forwarding rule.DELETE /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}NoneNoneExample request: Deleting a forwarding ruleDELE", + "doc_type":"api", + "kw":"Deleting a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Deleting a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"elb_zq_bm_0000.html", + "product_code":"elb", + "code":"85", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Whitelist", + "title":"Whitelist", + "githuburl":"" + }, + { + "uri":"elb_zq_bm_0001.html", + "product_code":"elb", + "code":"86", + "des":"This API is used to add a whitelist to control access to a specific listener. After a whitelist is added, only IP addresses in the whitelist can access the listener.POST ", + "doc_type":"api", + "kw":"Adding a Whitelist,Whitelist,API Reference", + "title":"Adding a Whitelist", + "githuburl":"" + }, + { + "uri":"elb_zq_bm_0002.html", + "product_code":"elb", + "code":"87", + "des":"This API is used to query the whitelists. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, limit, an", + "doc_type":"api", + "kw":"Querying Whitelists,Whitelist,API Reference", + "title":"Querying Whitelists", + "githuburl":"" + }, + { + "uri":"elb_zq_bm_0003.html", + "product_code":"elb", + "code":"88", + "des":"This API is used to query details about a whitelist using its ID.GET /v2.0/lbaas/whitelists/{whitelist_id}NoneExample request: Querying details of a whitelistGET https://", + "doc_type":"api", + "kw":"Querying Details of a Whitelist,Whitelist,API Reference", + "title":"Querying Details of a Whitelist", + "githuburl":"" + }, + { + "uri":"elb_zq_bm_0004.html", + "product_code":"elb", + "code":"89", + "des":"This API is used to update a whitelist. You can enable or disable the whitelist function or change IP addresses in the whitelist. If you change IP addresses in the whitel", + "doc_type":"api", + "kw":"Updating a Whitelist,Whitelist,API Reference", + "title":"Updating a Whitelist", + "githuburl":"" + }, + { + "uri":"elb_zq_bm_0005.html", + "product_code":"elb", + "code":"90", + "des":"This API is used to delete a specific whitelist.DELETE /v2.0/lbaas/whitelists/{whitelist_id}NoneNoneExample request: Deleting a whitelistDELETE https://{Endpoint}/v2.0/lb", + "doc_type":"api", + "kw":"Deleting a Whitelist,Whitelist,API Reference", + "title":"Deleting a Whitelist", + "githuburl":"" + }, + { + "uri":"elb_zq_zs_0000.html", + "product_code":"elb", + "code":"91", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Certificate", + "title":"Certificate", + "githuburl":"" + }, + { + "uri":"elb_zq_zs_0001.html", + "product_code":"elb", + "code":"92", + "des":"This API is used to create a certificate. After a certificate is bound to a listener, the load balancer authenticates the client using this certificate, and backend serve", + "doc_type":"api", + "kw":"Creating a Certificate,Certificate,API Reference", + "title":"Creating a Certificate", + "githuburl":"" + }, + { + "uri":"elb_zq_zs_0002.html", + "product_code":"elb", + "code":"93", + "des":"This API is used to query all the certificates. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, lim", + "doc_type":"api", + "kw":"Querying Certificates,Certificate,API Reference", + "title":"Querying Certificates", + "githuburl":"" + }, + { + "uri":"elb_zq_zs_0003.html", + "product_code":"elb", + "code":"94", + "des":"This API is used to query details about a certificate.GET /v2.0/lbaas/certificates/{certificate_id}NoneExample request: Querying details of a certificateGET https://{Endp", + "doc_type":"api", + "kw":"Querying Details of a Certificate,Certificate,API Reference", + "title":"Querying Details of a Certificate", + "githuburl":"" + }, + { + "uri":"elb_zq_zs_0004.html", + "product_code":"elb", + "code":"95", + "des":"This API is used to update a certificate.PUT /v2.0/lbaas/certificates/{certificate_id}Example request: Updating a certificatePUT https://{Endpoint}/v2.0/lbaas/certificate", + "doc_type":"api", + "kw":"Updating a Certificate,Certificate,API Reference", + "title":"Updating a Certificate", + "githuburl":"" + }, + { + "uri":"elb_zq_zs_0005.html", + "product_code":"elb", + "code":"96", + "des":"This API is used to delete a specific certificate.If the target certificate is used by a listener, the certificate cannot be deleted, and 409 code will be displayed.DELET", + "doc_type":"api", + "kw":"Deleting a Certificate,Certificate,API Reference", + "title":"Deleting a Certificate", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0000.html", + "product_code":"elb", + "code":"97", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Tag", + "title":"Tag", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0001.html", + "product_code":"elb", + "code":"98", + "des":"This API is used to add a tag to a specific load balancer for easier management.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added t", + "doc_type":"api", + "kw":"Adding a Tag to a Load Balancer,Tag,API Reference", + "title":"Adding a Tag to a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0002.html", + "product_code":"elb", + "code":"99", + "des":"This API is used to batch add tags to or delete tags from a load balancer.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added to a lo", + "doc_type":"api", + "kw":"Batch Adding or Deleting Load Balancer Tags,Tag,API Reference", + "title":"Batch Adding or Deleting Load Balancer Tags", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0003.html", + "product_code":"elb", + "code":"100", + "des":"This API is used to query all the tags of one load balancer.You can also use this API for dedicated load balancers.GET /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/", + "doc_type":"api", + "kw":"Querying All Tags of a Load Balancer,Tag,API Reference", + "title":"Querying All Tags of a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0004.html", + "product_code":"elb", + "code":"101", + "des":"This API is used to query the tags of all the load balancers.You can also use this API for dedicated load balancers.GET /v2.0/{project_id}/loadbalancers/tagsNoneExample r", + "doc_type":"api", + "kw":"Querying the Tags of All Load Balancers,Tag,API Reference", + "title":"Querying the Tags of All Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0005.html", + "product_code":"elb", + "code":"102", + "des":"This API is used to query load balancers using tags.You can also use this API for dedicated load balancers.NonePOST /v2.0/{project_id}/loadbalancers/resource_instances/ac", + "doc_type":"api", + "kw":"Querying Load Balancers by Tag,Tag,API Reference", + "title":"Querying Load Balancers by Tag", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0006.html", + "product_code":"elb", + "code":"103", + "des":"This API is used to delete a tag with a specific key from a load balancer.You can also use this API for dedicated load balancers.NoneDELETE /v2.0/{project_id}/loadbalance", + "doc_type":"api", + "kw":"Deleting a Tag from a Load Balancer,Tag,API Reference", + "title":"Deleting a Tag from a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0007.html", + "product_code":"elb", + "code":"104", + "des":"This API is used to add a tag to a specific listener.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added to a listener.Note the follo", + "doc_type":"api", + "kw":"Adding a Tag to a Listener,Tag,API Reference", + "title":"Adding a Tag to a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0008.html", + "product_code":"elb", + "code":"105", + "des":"This API is used to batch add tags to or delete tags from a listener.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added to a listene", + "doc_type":"api", + "kw":"Batch Adding or Deleting Listener Tags,Tag,API Reference", + "title":"Batch Adding or Deleting Listener Tags", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0009.html", + "product_code":"elb", + "code":"106", + "des":"This API is used to query all tags of one listener.You can also use this API for dedicated load balancers.NoneGET /v2.0/{project_id}/listeners/{listener_id}/tagsNoneExamp", + "doc_type":"api", + "kw":"Querying All Tags of a Listener,Tag,API Reference", + "title":"Querying All Tags of a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0010.html", + "product_code":"elb", + "code":"107", + "des":"This API is used to query the tags of all listeners.You can also use this API for dedicated load balancers.NoneGET /v2.0/{project_id}/listeners/tagsNoneExample requestGET", + "doc_type":"api", + "kw":"Querying the Tags of All Listeners,Tag,API Reference", + "title":"Querying the Tags of All Listeners", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0011.html", + "product_code":"elb", + "code":"108", + "des":"This API is used to query listeners by tag.You can also use this API for dedicated load balancers.NonePOST /v2.0/{project_id}/listeners/resource_instances/actionExample r", + "doc_type":"api", + "kw":"Querying Listeners by Tag,Tag,API Reference", + "title":"Querying Listeners by Tag", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0012.html", + "product_code":"elb", + "code":"109", + "des":"This API is used to delete a tag with a specific key from a listener.You can also use this API for dedicated load balancers.NoneDELETE /v2.0/{project_id}/listeners/{liste", + "doc_type":"api", + "kw":"Deleting a Tag from a Listener,Tag,API Reference", + "title":"Deleting a Tag from a Listener", + "githuburl":"" + }, + { + "uri":"elb_zq_bq_0013.html", + "product_code":"elb", + "code":"110", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Status Codes,Tag,API Reference", + "title":"Status Codes", + "githuburl":"" + }, + { + "uri":"elb_dx_0000.html", + "product_code":"elb", + "code":"111", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Dedicated Load Balancer APIs", + "title":"Dedicated Load Balancer APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001088310753.html", + "product_code":"elb", + "code":"112", + "des":"By default, load balancers created in the eu-nl region are dedicated load balancers. APIs for dedicated load balancers are only available in this region. Shared load bala", + "doc_type":"api", + "kw":"API Call Precaution,Dedicated Load Balancer APIs,API Reference", + "title":"API Call Precaution", + "githuburl":"" + }, + { + "uri":"topic_300000000.html", + "product_code":"elb", + "code":"113", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Quota", + "title":"Quota", + "githuburl":"" + }, + { + "uri":"ShowQuota.html", + "product_code":"elb", + "code":"114", + "des":"This API is used to query resource quotas of a specific user.GET /v3/{project_id}/elb/quotasStatus code: 200Status code: 200Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Querying Quotas,Quota,API Reference", + "title":"Querying Quotas", + "githuburl":"" + }, + { + "uri":"topic_300000001.html", + "product_code":"elb", + "code":"115", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"AZ", + "title":"AZ", + "githuburl":"" + }, + { + "uri":"ListAvailabilityZones.html", + "product_code":"elb", + "code":"116", + "des":"This API is used to query all available AZs when you create a dedicated load balancer.One set of AZs is returned. When you create a dedicated load balancer, you can selec", + "doc_type":"api", + "kw":"Querying AZs,AZ,API Reference", + "title":"Querying AZs", + "githuburl":"" + }, + { + "uri":"topic_300000002.html", + "product_code":"elb", + "code":"117", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Load Balancer Flavor", + "title":"Load Balancer Flavor", + "githuburl":"" + }, + { + "uri":"ListFlavors.html", + "product_code":"elb", + "code":"118", + "des":"This API is used to query all load balancer flavors that are available to a specific user in a specific region.Parameters marker, limit, and page_reverse are used for pag", + "doc_type":"api", + "kw":"Querying Flavors,Load Balancer Flavor,API Reference", + "title":"Querying Flavors", + "githuburl":"" + }, + { + "uri":"ShowFlavor.html", + "product_code":"elb", + "code":"119", + "des":"This API is used to view details of a flavor.This API can only be used to view the details of a flavor.GET /v3/{project_id}/elb/flavors/{flavor_id}Status code: 200Status ", + "doc_type":"api", + "kw":"Viewing Details of a Flavor,Load Balancer Flavor,API Reference", + "title":"Viewing Details of a Flavor", + "githuburl":"" + }, + { + "uri":"topic_300000003.html", + "product_code":"elb", + "code":"120", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Load Balancer", + "title":"Load Balancer", + "githuburl":"" + }, + { + "uri":"CreateLoadBalancer.html", + "product_code":"elb", + "code":"121", + "des":"This API is used to create a dedicated load balancer. When you create the load balancer, note the following:Specify both vip_subnet_cidr_id and vip_address if you want to", + "doc_type":"api", + "kw":"Creating a Load Balancer,Load Balancer,API Reference", + "title":"Creating a Load Balancer", + "githuburl":"" + }, + { + "uri":"ListLoadBalancers.html", + "product_code":"elb", + "code":"122", + "des":"This API is used to query all load balancers. Both filtered query and pagination query are supported.Parameters marker, limit, and page_reverse are used for pagination qu", + "doc_type":"api", + "kw":"Querying Load Balancers,Load Balancer,API Reference", + "title":"Querying Load Balancers", + "githuburl":"" + }, + { + "uri":"ShowLoadBalancer.html", + "product_code":"elb", + "code":"123", + "des":"This API is used to view details of a load balancer.GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}Status code: 200Viewing details of a load balancerStatus code:", + "doc_type":"api", + "kw":"Viewing Details of a Load Balancer,Load Balancer,API Reference", + "title":"Viewing Details of a Load Balancer", + "githuburl":"" + }, + { + "uri":"UpdateLoadBalancer.html", + "product_code":"elb", + "code":"124", + "des":"This API is used to update a load balancer.PUT /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Updating a Load Balancer,Load Balancer,API Reference", + "title":"Updating a Load Balancer", + "githuburl":"" + }, + { + "uri":"DeleteLoadBalancer.html", + "product_code":"elb", + "code":"125", + "des":"This API is used to delete a load balancer.All listeners added to the load balancer must be deleted before the load balancer is deleted.DELETE /v3/{project_id}/elb/loadba", + "doc_type":"api", + "kw":"Deleting a Load Balancer,Load Balancer,API Reference", + "title":"Deleting a Load Balancer", + "githuburl":"" + }, + { + "uri":"ShowLoadBalancerStatus.html", + "product_code":"elb", + "code":"126", + "des":"This API is used to query the status tree of a load balancer and show information about all resources associated with the load balancer.When admin_state_up is set to fals", + "doc_type":"api", + "kw":"Querying the Status Tree of a Load Balancer,Load Balancer,API Reference", + "title":"Querying the Status Tree of a Load Balancer", + "githuburl":"" + }, + { + "uri":"topic_300000004.html", + "product_code":"elb", + "code":"127", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Certificate", + "title":"Certificate", + "githuburl":"" + }, + { + "uri":"CreateCertificate.html", + "product_code":"elb", + "code":"128", + "des":"This API is used to create an SSL certificate.POST /v3/{project_id}/elb/certificatesStatus code: 201Status code: 201Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Creating a Certificate,Certificate,API Reference", + "title":"Creating a Certificate", + "githuburl":"" + }, + { + "uri":"ListCertificates.html", + "product_code":"elb", + "code":"129", + "des":"This API is used to query all SSL certificates.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect onl", + "doc_type":"api", + "kw":"Querying Certificates,Certificate,API Reference", + "title":"Querying Certificates", + "githuburl":"" + }, + { + "uri":"ShowCertificate.html", + "product_code":"elb", + "code":"130", + "des":"This API is used to view details of an SSL certificate.GET /v3/{project_id}/elb/certificates/{certificate_id}Status code: 200Status code: 200Successful request.See Error ", + "doc_type":"api", + "kw":"Viewing Details of a Certificate,Certificate,API Reference", + "title":"Viewing Details of a Certificate", + "githuburl":"" + }, + { + "uri":"UpdateCertificate.html", + "product_code":"elb", + "code":"131", + "des":"This API is used to update an SSL certificate.PUT /v3/{project_id}/elb/certificates/{certificate_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Updating a Certificate,Certificate,API Reference", + "title":"Updating a Certificate", + "githuburl":"" + }, + { + "uri":"DeleteCertificate.html", + "product_code":"elb", + "code":"132", + "des":"This API is used to delete an SSL certificate.If the certificate is used by a listener, the certificate cannot be deleted, and the 409 Conflict error code will be display", + "doc_type":"api", + "kw":"Deleting a Certificate,Certificate,API Reference", + "title":"Deleting a Certificate", + "githuburl":"" + }, + { + "uri":"topic_300000005.html", + "product_code":"elb", + "code":"133", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Listener", + "title":"Listener", + "githuburl":"" + }, + { + "uri":"CreateListener.html", + "product_code":"elb", + "code":"134", + "des":"This API is used to add a listener to a load balancer.Only the administrator can specify connection_limit.The listener protocol can be TCP, HTTP, UDP, or HTTPS.The listen", + "doc_type":"api", + "kw":"Adding a Listener,Listener,API Reference", + "title":"Adding a Listener", + "githuburl":"" + }, + { + "uri":"ListListeners.html", + "product_code":"elb", + "code":"135", + "des":"This API is used to query listeners.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect only when they", + "doc_type":"api", + "kw":"Querying Listeners,Listener,API Reference", + "title":"Querying Listeners", + "githuburl":"" + }, + { + "uri":"ShowListener.html", + "product_code":"elb", + "code":"136", + "des":"This API is used to view details of a listener.GET /v3/{project_id}/elb/listeners/{listener_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Viewing Details of a Listener,Listener,API Reference", + "title":"Viewing Details of a Listener", + "githuburl":"" + }, + { + "uri":"UpdateListener.html", + "product_code":"elb", + "code":"137", + "des":"This API is used to update a listener.If the provisioning status of the load balancer that the listener is added to is not ACTIVE, the listener cannot be updated. Only th", + "doc_type":"api", + "kw":"Updating a Listener,Listener,API Reference", + "title":"Updating a Listener", + "githuburl":"" + }, + { + "uri":"DeleteListener.html", + "product_code":"elb", + "code":"138", + "des":"This API is used to delete a listener.Before you delete a listener, delete the associated backend server group or disassociate the backend server group from the listener,", + "doc_type":"api", + "kw":"Deleting a Listener,Listener,API Reference", + "title":"Deleting a Listener", + "githuburl":"" + }, + { + "uri":"topic_300000006.html", + "product_code":"elb", + "code":"139", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Backend Server Group", + "title":"Backend Server Group", + "githuburl":"" + }, + { + "uri":"CreatePool.html", + "product_code":"elb", + "code":"140", + "des":"This API is used to create a backend server group.If session-persistence is specified, cookie_name is available only when type is set to APP_COOKIE.If listener_id is spec", + "doc_type":"api", + "kw":"Creating a Backend Server Group,Backend Server Group,API Reference", + "title":"Creating a Backend Server Group", + "githuburl":"" + }, + { + "uri":"ListPools.html", + "product_code":"elb", + "code":"141", + "des":"This API is used to query all backend server groups.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effec", + "doc_type":"api", + "kw":"Querying Backend Server Groups,Backend Server Group,API Reference", + "title":"Querying Backend Server Groups", + "githuburl":"" + }, + { + "uri":"ShowPool.html", + "product_code":"elb", + "code":"142", + "des":"This API is used to view details of a backend server group.GET /v3/{project_id}/elb/pools/{pool_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Viewing Details of a Backend Server Group,Backend Server Group,API Reference", + "title":"Viewing Details of a Backend Server Group", + "githuburl":"" + }, + { + "uri":"UpdatePool.html", + "product_code":"elb", + "code":"143", + "des":"This API is used to update a backend server group.The backend server group can be updated only when the provisioning status of the associated load balancer is ACTIVE.PUT ", + "doc_type":"api", + "kw":"Updating a Backend Server Group,Backend Server Group,API Reference", + "title":"Updating a Backend Server Group", + "githuburl":"" + }, + { + "uri":"DeletePool.html", + "product_code":"elb", + "code":"144", + "des":"This API is used to delete a backend server group.A backend server group can be deleted only after all servers are removed from the group, the health check configured for", + "doc_type":"api", + "kw":"Deleting a Backend Server Group,Backend Server Group,API Reference", + "title":"Deleting a Backend Server Group", + "githuburl":"" + }, + { + "uri":"topic_300000007.html", + "product_code":"elb", + "code":"145", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Backend Server", + "title":"Backend Server", + "githuburl":"" + }, + { + "uri":"CreateMember.html", + "product_code":"elb", + "code":"146", + "des":"This API is used to add a backend server.When you add backend servers, note the following:Two backend servers in the same backend server group must have different IP addr", + "doc_type":"api", + "kw":"Adding a Backend Server,Backend Server,API Reference", + "title":"Adding a Backend Server", + "githuburl":"" + }, + { + "uri":"ListMembers.html", + "product_code":"elb", + "code":"147", + "des":"This API is used to query all backend servers.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect only", + "doc_type":"api", + "kw":"Querying Backend Servers,Backend Server,API Reference", + "title":"Querying Backend Servers", + "githuburl":"" + }, + { + "uri":"ShowMember.html", + "product_code":"elb", + "code":"148", + "des":"This API is used to view details of a backend server.GET /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}Status code: 200Status code: 200Successful request.See Er", + "doc_type":"api", + "kw":"Viewing Details of a Backend Server,Backend Server,API Reference", + "title":"Viewing Details of a Backend Server", + "githuburl":"" + }, + { + "uri":"UpdateMember.html", + "product_code":"elb", + "code":"149", + "des":"The backend server can be updated only when the provisioning status of the associated load balancer is ACTIVE.PUT /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}", + "doc_type":"api", + "kw":"Updating a Backend Server,Backend Server,API Reference", + "title":"Updating a Backend Server", + "githuburl":"" + }, + { + "uri":"DeleteMember.html", + "product_code":"elb", + "code":"150", + "des":"This API is used to remove a backend server.When you remove backend servers, note the following:After you remove a backend server, new connections to this server will not", + "doc_type":"api", + "kw":"Removing a Backend Server,Backend Server,API Reference", + "title":"Removing a Backend Server", + "githuburl":"" + }, + { + "uri":"topic_300000008.html", + "product_code":"elb", + "code":"151", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Health Check", + "title":"Health Check", + "githuburl":"" + }, + { + "uri":"CreateHealthMonitor.html", + "product_code":"elb", + "code":"152", + "des":"This API is used to configure a health check.The security groups must have rules that allow access from 100.125.0.0/16. If you want to use UDP for health checks, ensure t", + "doc_type":"api", + "kw":"Configuring a Health Check,Health Check,API Reference", + "title":"Configuring a Health Check", + "githuburl":"" + }, + { + "uri":"ListHealthMonitors.html", + "product_code":"elb", + "code":"153", + "des":"This API is used to query all health checks.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect only w", + "doc_type":"api", + "kw":"Querying Health Checks,Health Check,API Reference", + "title":"Querying Health Checks", + "githuburl":"" + }, + { + "uri":"ShowHealthMonitor.html", + "product_code":"elb", + "code":"154", + "des":"This API is used to view details of a health check.GET /v3/{project_id}/elb/healthmonitors/{healthmonitor_id}Status code: 200Status code: 200Successful request.See Error ", + "doc_type":"api", + "kw":"Viewing Details of a Health Check,Health Check,API Reference", + "title":"Viewing Details of a Health Check", + "githuburl":"" + }, + { + "uri":"UpdateHealthMonitor.html", + "product_code":"elb", + "code":"155", + "des":"This API is used to update a health check.The health check can be updated only when the provisioning status of the associated load balancer is ACTIVE.PUT /v3/{project_id}", + "doc_type":"api", + "kw":"Updating a Health Check,Health Check,API Reference", + "title":"Updating a Health Check", + "githuburl":"" + }, + { + "uri":"DeleteHealthMonitor.html", + "product_code":"elb", + "code":"156", + "des":"This API is used to delete a health check.The health check can be deleted only when the provisioning status of the associated load balancer is ACTIVE.DELETE /v3/{project_", + "doc_type":"api", + "kw":"Deleting a Health Check,Health Check,API Reference", + "title":"Deleting a Health Check", + "githuburl":"" + }, + { + "uri":"topic_300000009.html", + "product_code":"elb", + "code":"157", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Forwarding Policy", + "title":"Forwarding Policy", + "githuburl":"" + }, + { + "uri":"CreateL7Policy.html", + "product_code":"elb", + "code":"158", + "des":"This API is used to add a forwarding policy.The protocol of the listener to which requests are redirected can only be HTTPS.The listener associated with the forwarding po", + "doc_type":"api", + "kw":"Adding a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Adding a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"ListL7Policies.html", + "product_code":"elb", + "code":"159", + "des":"This API is used to query all forwarding policies.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect ", + "doc_type":"api", + "kw":"Querying Forwarding Policies,Forwarding Policy,API Reference", + "title":"Querying Forwarding Policies", + "githuburl":"" + }, + { + "uri":"ShowL7Policy.html", + "product_code":"elb", + "code":"160", + "des":"This API is used to view details of a forwarding policy.GET /v3/{project_id}/elb/l7policies/{l7policy_id}Status code: 200Status code: 200Successful request.See Error Code", + "doc_type":"api", + "kw":"Viewing Details of a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Viewing Details of a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"UpdateL7Policy.html", + "product_code":"elb", + "code":"161", + "des":"This API is used to update a forwarding policy.PUT /v3/{project_id}/elb/l7policies/{l7policy_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Updating a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Updating a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"DeleteL7Policy.html", + "product_code":"elb", + "code":"162", + "des":"This API is used to delete a forwarding policy.DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}NoneNoneSee Error Codes.", + "doc_type":"api", + "kw":"Deleting a Forwarding Policy,Forwarding Policy,API Reference", + "title":"Deleting a Forwarding Policy", + "githuburl":"" + }, + { + "uri":"topic_300000010.html", + "product_code":"elb", + "code":"163", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Forwarding Rule", + "title":"Forwarding Rule", + "githuburl":"" + }, + { + "uri":"CreateL7Rule.html", + "product_code":"elb", + "code":"164", + "des":"This API is used to add a forwarding rule.POST /v3/{project_id}/elb/l7policies/{l7policy_id}/rulesStatus code: 201Status code: 201Successful request.See Error Codes.", + "doc_type":"api", + "kw":"Adding a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Adding a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"ListL7Rules.html", + "product_code":"elb", + "code":"165", + "des":"This API is used to query all forwarding rules.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect onl", + "doc_type":"api", + "kw":"Querying Forwarding Rules,Forwarding Rule,API Reference", + "title":"Querying Forwarding Rules", + "githuburl":"" + }, + { + "uri":"ShowL7Rule.html", + "product_code":"elb", + "code":"166", + "des":"This API is used to view details of a forwarding rule.GET /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}Status code: 200Status code: 200Successful reques", + "doc_type":"api", + "kw":"Viewing Details of a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Viewing Details of a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"UpdateL7Rule.html", + "product_code":"elb", + "code":"167", + "des":"This API is used to update a forwarding rule.PUT /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}Status code: 200Status code: 200Successful request.See Err", + "doc_type":"api", + "kw":"Updating a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Updating a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"DeleteL7Rule.html", + "product_code":"elb", + "code":"168", + "des":"This API is used to delete a forwarding rule.DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}NoneNoneSee Error Codes.", + "doc_type":"api", + "kw":"Deleting a Forwarding Rule,Forwarding Rule,API Reference", + "title":"Deleting a Forwarding Rule", + "githuburl":"" + }, + { + "uri":"elb_fl_0006.html", + "product_code":"elb", + "code":"169", + "des":"Queries all available versions.If there is no version added to the URL, all available versions are returned.GET /NoneNoneExample requestGET /Example response{\n \"version", + "doc_type":"api", + "kw":"Querying Versions,API Reference", + "title":"Querying Versions", + "githuburl":"" + }, + { + "uri":"elb_eg_v3_0000.html", + "product_code":"elb", + "code":"170", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Examples", + "title":"Examples", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000001127879251.html", + "product_code":"elb", + "code":"171", + "des":"Call APIs to create a dedicated load balancer and bind a new EIP to it.You have created a VPC and a subnet.Query the subnet you have created.Send GET https://{vpc_endpoin", + "doc_type":"api", + "kw":"Creating a Dedicated Load Balancer and Binding a New EIP to It,Examples,API Reference", + "title":"Creating a Dedicated Load Balancer and Binding a New EIP to It", + "githuburl":"" + }, + { + "uri":"elb_eg_v3_0002.html", + "product_code":"elb", + "code":"172", + "des":"Call the API to add a listener to a dedicated load balancer.You have created a dedicated load balancer.You have obtained the ID of the dedicated load balancer.Add a liste", + "doc_type":"api", + "kw":"Adding a Listener to a Dedicated Load Balancer,Examples,API Reference", + "title":"Adding a Listener to a Dedicated Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_eg_v3_0003.html", + "product_code":"elb", + "code":"173", + "des":"Call APIs to delete a dedicated load balancer.Before you delete a dedicated load balancer, delete all resources associated with it. Figure 1 shows the associated resource", + "doc_type":"api", + "kw":"Deleting a Dedicated Load Balancer,Examples,API Reference", + "title":"Deleting a Dedicated Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_gc_0000.html", + "product_code":"elb", + "code":"174", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Common Parameters", + "title":"Common Parameters", + "githuburl":"" + }, + { + "uri":"elb_gc_0001.html", + "product_code":"elb", + "code":"175", + "des":"The following error code descriptions are only suitable for classic load balancers.If an error occurs when using an API, an error response will be returned, which contain", + "doc_type":"api", + "kw":"Error Codes,Common Parameters,API Reference", + "title":"Error Codes", + "githuburl":"" + }, + { + "uri":"elb_gc_0002.html", + "product_code":"elb", + "code":"176", + "des":"The following code descriptions are only suitable for shared load balancers.", + "doc_type":"api", + "kw":"HTTP Status Codes of Shared Load Balancers,Common Parameters,API Reference", + "title":"HTTP Status Codes of Shared Load Balancers", + "githuburl":"" + }, + { + "uri":"errorcode.html", + "product_code":"elb", + "code":"177", + "des":"The following code descriptions are only suitable for dedicated load balancers.", + "doc_type":"api", + "kw":"HTTP Status Codes for Dedicated Load Balancers,Common Parameters,API Reference", + "title":"HTTP Status Codes for Dedicated Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_fl_0000.html", + "product_code":"elb", + "code":"178", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Appendix", + "title":"Appendix", + "githuburl":"" + }, + { + "uri":"elb_gc_1102.html", + "product_code":"elb", + "code":"179", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Status Codes,Appendix,API Reference", + "title":"Status Codes", + "githuburl":"" + }, + { + "uri":"elb_fl_0002.html", + "product_code":"elb", + "code":"180", + "des":"This section describes the metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metr", + "doc_type":"api", + "kw":"ELB Metrics,Appendix,API Reference", + "title":"ELB Metrics", + "githuburl":"" + }, + { + "uri":"elb_fl_0003.html", + "product_code":"elb", + "code":"181", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"General Information About Shared Load Balancers", + "title":"General Information About Shared Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_fl_0004.html", + "product_code":"elb", + "code":"182", + "des":"APIs v2.0 allow users to query data in pages by adding the limit and marker parameters to the URL of the list request. The query results are displayed in the ascending or", + "doc_type":"api", + "kw":"Querying Data in Pages,General Information About Shared Load Balancers,API Reference", + "title":"Querying Data in Pages", + "githuburl":"" + }, + { + "uri":"elb_fl_0005.html", + "product_code":"elb", + "code":"183", + "des":"APIs v2.0 enable the system to sort queried results based on customized keys by adding the sort_key and sort_dir parameters to the URL of the list request. sort_key speci", + "doc_type":"api", + "kw":"Sequencing Query Results,General Information About Shared Load Balancers,API Reference", + "title":"Sequencing Query Results", + "githuburl":"" + }, + { + "uri":"elb_fl_0007.html", + "product_code":"elb", + "code":"184", + "des":"The basic workflow of elastic load balancers contains the following: creating a load balancer, adding a listener to a specified load balancer, adding a backend server gro", + "doc_type":"api", + "kw":"Basic Workflow,General Information About Shared Load Balancers,API Reference", + "title":"Basic Workflow", + "githuburl":"" + }, + { + "uri":"elb_xd_0000.html", + "product_code":"elb", + "code":"185", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Change History,API Reference", + "title":"Change History", + "githuburl":"" + } +] diff --git a/elb/api-ref/CLASS.TXT.json b/elb/api-ref/CLASS.TXT.json new file mode 100644 index 000000000..b20406813 --- /dev/null +++ b/elb/api-ref/CLASS.TXT.json @@ -0,0 +1,1667 @@ +[ + { + "desc":"Public cloud APIs comply with the RESTful API design principles. REST-based web services are organized into resources. Each resource is identified by one or more Uniform ", + "product_code":"elb", + "title":"API Usage Guidelines", + "uri":"en-us_topic_0022480177.html", + "doc_type":"api", + "p_code":"", + "code":"1" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Classic Load Balancer APIs", + "uri":"elb_jd_0000.html", + "doc_type":"api", + "p_code":"", + "code":"2" + }, + { + "desc":"Classic load balancers are not supported in the eu-nl region.", + "product_code":"elb", + "title":"API Call Precaution", + "uri":"en-us_topic_0000001124568811.html", + "doc_type":"api", + "p_code":"2", + "code":"3" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer", + "uri":"elb_jd_fz_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"4" + }, + { + "desc":"This API is used to create a load balancer.POST /v1.0/{project_id}/elbaas/loadbalancersRequest parametersParameter descriptionParameterMandatoryTypeDescriptionnameYesStri", + "product_code":"elb", + "title":"Creating a Load Balancer", + "uri":"elb_jd_fz_0001.html", + "doc_type":"api", + "p_code":"4", + "code":"5" + }, + { + "desc":"This API is used to delete a load balancer. If the load balancer is a public network load balancer, this API deletes the EIP bound to the load balancer.For a public netwo", + "product_code":"elb", + "title":"Deleting a Load Balancer", + "uri":"elb_jd_fz_0002.html", + "doc_type":"api", + "p_code":"4", + "code":"6" + }, + { + "desc":"This API is used to delete a public network load balancer. The EIP bound to the load balancer will not be deleted. If you need to delete this IP address, refer to Deletin", + "product_code":"elb", + "title":"Deleting a Public Network Load Balancer", + "uri":"elb_jd_fz_0003.html", + "doc_type":"api", + "p_code":"4", + "code":"7" + }, + { + "desc":"This API is used to modify the name, description, bandwidth, and administrative status of a load balancer.PUT /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}Req", + "product_code":"elb", + "title":"Modifying a Load Balancer", + "uri":"elb_jd_fz_0004.html", + "doc_type":"api", + "p_code":"4", + "code":"8" + }, + { + "desc":"This API is used to query details about a load balancer.GET /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}Request parametersNoneNoneExample requestNoneNoneResp", + "product_code":"elb", + "title":"Querying Details of a Load Balancer", + "uri":"elb_jd_fz_0005.html", + "doc_type":"api", + "p_code":"4", + "code":"9" + }, + { + "desc":"This API is used to query load balancers and display them in a list.GET /v1.0/{project_id}/elbaas/loadbalancersRequest parametersNoneNoneExample requestNoneNoneResponse p", + "product_code":"elb", + "title":"Querying Load Balancers", + "uri":"en-us_topic_0096561504.html", + "doc_type":"api", + "p_code":"4", + "code":"10" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Listener", + "uri":"elb_jd_jt_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"11" + }, + { + "desc":"This API is used to add a listener to a load balancer.POST /v1.0/{project_id}/elbaas/listenersRequest parametersNoneNoneExample request{\n \"name\": \"listener1\",\n \"des", + "product_code":"elb", + "title":"Adding a Listener", + "uri":"elb_jd_jt_0001.html", + "doc_type":"api", + "p_code":"11", + "code":"12" + }, + { + "desc":"This API is used to delete a listener.DELETE /v1.0/{project_id}/elbaas/listeners/{listener_id}Request parametersNoneNoneExample requestNoneNoneResponse parametersNoneNone", + "product_code":"elb", + "title":"Deleting a Listener", + "uri":"elb_jd_jt_0002.html", + "doc_type":"api", + "p_code":"11", + "code":"13" + }, + { + "desc":"This API is used to modify the listener information, including the listener name, description, and status.PUT /v1.0/{project_id}/elbaas/listeners/{listener_id}Request par", + "product_code":"elb", + "title":"Modifying a Listener", + "uri":"elb_jd_jt_0003.html", + "doc_type":"api", + "p_code":"11", + "code":"14" + }, + { + "desc":"This API is used to query details about a listener.GET /v1.0/{project_id}/elbaas/listeners/{listener_id}Request parametersNoneNoneExample requestNoneNoneResponse paramete", + "product_code":"elb", + "title":"Querying Details of a Listener", + "uri":"elb_jd_jt_0004.html", + "doc_type":"api", + "p_code":"11", + "code":"15" + }, + { + "desc":"This API is used to query listeners using search criteria and display them in a list.GET /v1.0/{project_id}/elbaas/listeners?loadbalancer_id={loadbalancer_id}Enter a ques", + "product_code":"elb", + "title":"Querying Listeners", + "uri":"elb_jd_jt_0005.html", + "doc_type":"api", + "p_code":"11", + "code":"16" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Health Check", + "uri":"elb_jd_jk_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"17" + }, + { + "desc":"This API is used to configure a health check for backend ECSs.POST /v1.0/{project_id}/elbaas/healthcheckRequest parametersNoneNoneExample request 1: Configuring an HTTP h", + "product_code":"elb", + "title":"Configuring a Health Check", + "uri":"elb_jd_jk_0001.html", + "doc_type":"api", + "p_code":"17", + "code":"18" + }, + { + "desc":"This API is used to delete a health check.DELETE /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}Request parametersNoneNoneExample requestNoneNoneResponse parameter", + "product_code":"elb", + "title":"Deleting a Health Check", + "uri":"elb_jd_jk_0002.html", + "doc_type":"api", + "p_code":"17", + "code":"19" + }, + { + "desc":"This API is used to modify information about a health check.PUT /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}Request parametersNoneNoneExample request{\n \"heal", + "product_code":"elb", + "title":"Modifying a Health Check", + "uri":"elb_jd_jk_0003.html", + "doc_type":"api", + "p_code":"17", + "code":"20" + }, + { + "desc":"This API is used to query details about a health check.GET /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}Request parametersNoneNoneExample requestNoneNoneResponse", + "product_code":"elb", + "title":"Querying Details of a Health Check", + "uri":"elb_jd_jk_0004.html", + "doc_type":"api", + "p_code":"17", + "code":"21" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend ECS", + "uri":"elb_jd_hd_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"22" + }, + { + "desc":"This API is used to add backend ECSs to a listener for monitoring.To add backend ECSs to a UDP listener, IP addresses can be pinged and UDP services must be enabled.POST ", + "product_code":"elb", + "title":"Adding Backend ECSs", + "uri":"elb_jd_hd_0001.html", + "doc_type":"api", + "p_code":"22", + "code":"23" + }, + { + "desc":"This API is used to remove backend ECSs from a listener. Multiple backend ECSs can be removed concurrently.POST /v1.0/{project_id}/elbaas/listeners/{listener_id}/members/", + "product_code":"elb", + "title":"Removing Backend ECSs", + "uri":"elb_jd_hd_0002.html", + "doc_type":"api", + "p_code":"22", + "code":"24" + }, + { + "desc":"This API is used to query backend ECSs added to a listener. If you are the administrator, the backend ECS list will be empty.GET /v1.0/{project_id}/elbaas/listeners/{list", + "product_code":"elb", + "title":"Querying Backend ECSs", + "uri":"elb_jd_hd_0003.html", + "doc_type":"api", + "p_code":"22", + "code":"25" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Quota", + "uri":"elb_jd_pe_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"26" + }, + { + "desc":"This API is used to query the load balancer or listener quotas.GET /v1.0/{project_id}/elbaas/quotasRequest parametersNoneNoneExample requestNoneNoneResponse parametersPar", + "product_code":"elb", + "title":"Querying Load Balancer or Listener Quotas", + "uri":"elb_jd_pe_0001.html", + "doc_type":"api", + "p_code":"26", + "code":"27" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Certificate", + "uri":"elb_jd_zs_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"28" + }, + { + "desc":"This API is used to create a certificate for an HTTPS listener.POST /v1.0/{project_id}/elbaas/certificateRequest parametersNoneNoneExample request{\n \"name\": \"cert-bky\"", + "product_code":"elb", + "title":"Creating a Certificate", + "uri":"elb_jd_zs_0001.html", + "doc_type":"api", + "p_code":"28", + "code":"29" + }, + { + "desc":"This API is used to delete a certificate.DELETE /v1.0/{project_id}/elbaas/certificate/{certificate_id}Request parametersNoneNoneExample requestNoneNoneResponse parameters", + "product_code":"elb", + "title":"Deleting a Certificate", + "uri":"elb_jd_zs_0002.html", + "doc_type":"api", + "p_code":"28", + "code":"30" + }, + { + "desc":"This API is used to modify the name and description of a certificate.PUT /v1.0/{project_id}/elbaas/certificate/{certificate_id}Request parametersNoneNoneExample request{\n", + "product_code":"elb", + "title":"Modifying a Certificate", + "uri":"elb_jd_zs_0003.html", + "doc_type":"api", + "p_code":"28", + "code":"31" + }, + { + "desc":"This API is used to query all the certificates.GET /v1.0/{project_id}/elbaas/certificateRequest parametersNoneNoneExample requestNoneNoneResponse parametersResponse param", + "product_code":"elb", + "title":"Querying Certificates", + "uri":"elb_jd_zs_0004.html", + "doc_type":"api", + "p_code":"28", + "code":"32" + }, + { + "desc":"This API is used to query the job status, such as the execution status of creating or deleting a load balancer.GET /v1.0/{project_id}/jobs/{job_id}Request parametersNoneN", + "product_code":"elb", + "title":"Querying the Job Status", + "uri":"elb_jd_job_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"33" + }, + { + "desc":"This API is used to query all metrics at Layer 4 and Layer 7.Only users can query these metrics.GET /v1.0/{project_id}/elbaas/monitorRequest parametersNoneNoneExample req", + "product_code":"elb", + "title":"Querying Monitoring Metrics", + "uri":"elb_jd_cj_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"34" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"API Version", + "uri":"elb_jd_bg_0000.html", + "doc_type":"api", + "p_code":"2", + "code":"35" + }, + { + "desc":"This API is used to query all API versions of ELB.GET /Request parametersNoneNoneExample requestNoneNoneResponse parametersParameter descriptionParameterTypeDescriptionve", + "product_code":"elb", + "title":"Querying All API Versions", + "uri":"elb_jd_bg_0001.html", + "doc_type":"api", + "p_code":"35", + "code":"36" + }, + { + "desc":"This API is used to query a specific ELB API version.GET /{api_version}Example/v1.0/v1.0Request parametersNoneNoneExample requestNoneNoneResponse parametersResponse param", + "product_code":"elb", + "title":"Querying a Specific API Version", + "uri":"elb_jd_bg_0002.html", + "doc_type":"api", + "p_code":"35", + "code":"37" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Shared Load Balancer APIs", + "uri":"elb_zq_0000.html", + "doc_type":"api", + "p_code":"", + "code":"38" + }, + { + "desc":"By default, load balancers created in the eu-de region are shared load balancers. APIs for shared load balancers are only available in this region. Shared load balancers ", + "product_code":"elb", + "title":"API Call Precaution", + "uri":"en-us_topic_0000001088335195.html", + "doc_type":"api", + "p_code":"38", + "code":"39" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer", + "uri":"elb_zq_fz_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"40" + }, + { + "desc":"This API is used to create a private network load balancer. After the load balancer is created, its details, such as load balancer ID, IP address, and subnet ID, are retu", + "product_code":"elb", + "title":"Creating a Load Balancer", + "uri":"en-us_topic_0096561535.html", + "doc_type":"api", + "p_code":"40", + "code":"41" + }, + { + "desc":"This API is used to query load balancers and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.P", + "product_code":"elb", + "title":"Querying Load Balancers", + "uri":"elb_zq_fz_0002.html", + "doc_type":"api", + "p_code":"40", + "code":"42" + }, + { + "desc":"See HTTP Status Codes of Shared Load Balancers.", + "product_code":"elb", + "title":"Querying Details of a Load Balancer", + "uri":"en-us_topic_0141008271.html", + "doc_type":"api", + "p_code":"40", + "code":"43" + }, + { + "desc":"This API is used to query the status tree of a load balancer. You can use this API to query details about the associated listeners, backend server groups, backend servers", + "product_code":"elb", + "title":"Querying the Status Tree of a Load Balancer", + "uri":"elb_zq_fz_0004.html", + "doc_type":"api", + "p_code":"40", + "code":"44" + }, + { + "desc":"This API is used to update the name or description of a load balancer.PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id}Example request: Modifying the load balancer name and", + "product_code":"elb", + "title":"Updating a Load Balancer", + "uri":"elb_zq_fz_0005.html", + "doc_type":"api", + "p_code":"40", + "code":"45" + }, + { + "desc":"This API is used to delete a specific load balancer.All listeners added to the load balancer must be deleted before the load balancer is deleted.DELETE /v2.0/lbaas/loadba", + "product_code":"elb", + "title":"Deleting a Load Balancer", + "uri":"elb_zq_fz_0006.html", + "doc_type":"api", + "p_code":"40", + "code":"46" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Listener", + "uri":"elb_zq_jt_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"47" + }, + { + "desc":"This API is used to add a listener to a load balancer.When protocol is set to TCP and protocol_port to 0, the listener works in IP mode (DR mode).POST /v2.0/lbaas/listene", + "product_code":"elb", + "title":"Adding a Listener", + "uri":"elb_zq_jt_0001.html", + "doc_type":"api", + "p_code":"47", + "code":"48" + }, + { + "desc":"This API is used to query the listeners and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Yo", + "product_code":"elb", + "title":"Querying Listeners", + "uri":"elb_zq_jt_0002.html", + "doc_type":"api", + "p_code":"47", + "code":"49" + }, + { + "desc":"This API is used to query details about a listener using its ID.GET /v2.0/lbaas/listeners/{listener_id}NoneExample request: Viewing details of a listenerGET https://{Endp", + "product_code":"elb", + "title":"Querying Details of a Listener", + "uri":"elb_zq_jt_0003.html", + "doc_type":"api", + "p_code":"47", + "code":"50" + }, + { + "desc":"This API is used to update a listener, such as listener name, description, associated backend server groups, and server certificates.If the provisioning status of the ass", + "product_code":"elb", + "title":"Updating a Listener", + "uri":"elb_zq_jt_0004.html", + "doc_type":"api", + "p_code":"47", + "code":"51" + }, + { + "desc":"This API is used to delete a listener by ID.All backend server groups associated with the listener must be deleted before the listener is deleted.DELETE /v2.0/lbaas/liste", + "product_code":"elb", + "title":"Deleting a Listener", + "uri":"elb_zq_jt_0005.html", + "doc_type":"api", + "p_code":"47", + "code":"52" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend Server Group", + "uri":"elb_zq_hz_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"53" + }, + { + "desc":"This API is used to add a backend server group. After multiple backend servers are added to a backend server group, requests are distributed among backend servers based o", + "product_code":"elb", + "title":"Adding a Backend Server Group", + "uri":"elb_zq_hz_0001.html", + "doc_type":"api", + "p_code":"53", + "code":"54" + }, + { + "desc":"Example request 1: Adding a backend server group with the sticky session feature disabledPOST https://{Endpoint}/v2.0/lbaas/pools \n\n{\n \"pool\": {\n \"lb_algorithm\"", + "product_code":"elb", + "title":"Querying Backend Server Groups", + "uri":"en-us_topic_0096561547.html", + "doc_type":"api", + "p_code":"53", + "code":"55" + }, + { + "desc":"This API is used to query details about a backend server group using its ID.GET /v2.0/lbaas/pools/{pool_id}NoneExample request: Querying details of a backend server group", + "product_code":"elb", + "title":"Querying Details of a Backend Server Group", + "uri":"elb_zq_hz_0003.html", + "doc_type":"api", + "p_code":"53", + "code":"56" + }, + { + "desc":"This API is used to update a backend server group.If the provisioning status of the load balancer associated with a backend server group is not ACTIVE, the backend server", + "product_code":"elb", + "title":"Updating a Backend Server Group", + "uri":"elb_zq_hz_0004.html", + "doc_type":"api", + "p_code":"53", + "code":"57" + }, + { + "desc":"This API is used to delete a backend server group.Before deleting a backend server group, remove all backend servers, delete the health check, and disassociate forwarding", + "product_code":"elb", + "title":"Deleting a Backend Server Group", + "uri":"elb_zq_hz_0005.html", + "doc_type":"api", + "p_code":"53", + "code":"58" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend Server", + "uri":"elb_zq_hd_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"59" + }, + { + "desc":"This API is used to add a backend server to a specific backend server group. After a backend server group is added to a listener, traffic is distributed to backend server", + "product_code":"elb", + "title":"Adding a Backend Server", + "uri":"elb_zq_hd_0001.html", + "doc_type":"api", + "p_code":"59", + "code":"60" + }, + { + "desc":"This API is used to query backend servers in a specific backend server group. Filter query and pagination query are supported. Unless otherwise specified, exact match is ", + "product_code":"elb", + "title":"Querying Backend Servers", + "uri":"elb_zq_hd_0002.html", + "doc_type":"api", + "p_code":"59", + "code":"61" + }, + { + "desc":"This API is used to query details about a backend server.GET /v2.0/lbaas/pools/{pool_id}/members/{member_id}NoneExample request: Querying details of a backend serverGET h", + "product_code":"elb", + "title":"Querying Details of a Backend Server", + "uri":"elb_zq_hd_0003.html", + "doc_type":"api", + "p_code":"59", + "code":"62" + }, + { + "desc":"This API is used to update a backend server. You can modify its name and weight. You can set a larger weight for backend servers that can receive more traffic.If the prov", + "product_code":"elb", + "title":"Updating a Backend Server", + "uri":"elb_zq_hd_0004.html", + "doc_type":"api", + "p_code":"59", + "code":"63" + }, + { + "desc":"This API is used to remove a backend server by its ID.After you remove a backend server, new connections to this server will not be established. However, long connections", + "product_code":"elb", + "title":"Removing a Backend Server", + "uri":"elb_zq_hd_0005.html", + "doc_type":"api", + "p_code":"59", + "code":"64" + }, + { + "desc":"This API is used to query all backend servers. Filter query and pagination query are supported.Parameters marker, limit, and page_reverse are used for pagination query. P", + "product_code":"elb", + "title":"Querying All Backend Servers (Extension API)", + "uri":"elb_zq_hd_0006.html", + "doc_type":"api", + "p_code":"59", + "code":"65" + }, + { + "desc":"This API is used to update backend servers in batches.A maximum of 200 backend servers can be modified at a time.Two backend servers a backend server group cannot have th", + "product_code":"elb", + "title":"Batch Updating Backend Servers", + "uri":"elb_zq_hd_0007.html", + "doc_type":"api", + "p_code":"59", + "code":"66" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Health Check", + "uri":"elb_zq_jk_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"67" + }, + { + "desc":"This API is used to configure a health check for a backend server group to check the status of backend servers. If the health check result is OFFLINE, backend servers are", + "product_code":"elb", + "title":"Configuring a Health Check", + "uri":"elb_zq_jk_0001.html", + "doc_type":"api", + "p_code":"67", + "code":"68" + }, + { + "desc":"This API is used to query the health checks. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.GET /v2.0/lbaas/healthmon", + "product_code":"elb", + "title":"Querying Health Checks", + "uri":"elb_zq_jk_0002.html", + "doc_type":"api", + "p_code":"67", + "code":"69" + }, + { + "desc":"This API is used to query details about a health check using its iD.GET /v2.0/lbaas/healthmonitors/{healthmonitor_id}NoneExample request: Querying details of a health che", + "product_code":"elb", + "title":"Querying Details of a Health Check", + "uri":"elb_zq_jk_0003.html", + "doc_type":"api", + "p_code":"67", + "code":"70" + }, + { + "desc":"This API is used to update a health check.If provisioning_status of the load balancer for which the health check is configured is not ACTIVE, the health check cannot be u", + "product_code":"elb", + "title":"Updating a Health Check", + "uri":"elb_zq_jk_0004.html", + "doc_type":"api", + "p_code":"67", + "code":"71" + }, + { + "desc":"This API is used to delete a health check.If provisioning_status of the load balancer for which the health check is configured is not ACTIVE, the health check cannot be d", + "product_code":"elb", + "title":"Deleting a Health Check", + "uri":"elb_zq_jk_0005.html", + "doc_type":"api", + "p_code":"67", + "code":"72" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Forwarding Policy", + "uri":"elb_zq_zf_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"73" + }, + { + "desc":"This API is used to add a forwarding policy. The listener and forwarding policy determine how traffic is forwarded to backend servers.By matching the URL or domain name s", + "product_code":"elb", + "title":"Adding a Forwarding Policy", + "uri":"elb_zq_zf_0001.html", + "doc_type":"api", + "p_code":"73", + "code":"74" + }, + { + "desc":"This API is used to query the forwarding policies. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, ", + "product_code":"elb", + "title":"Querying Forwarding Policies", + "uri":"elb_zq_zf_0002.html", + "doc_type":"api", + "p_code":"73", + "code":"75" + }, + { + "desc":"This API is used to query details about a forwarding policy.GET /v2.0/lbaas/l7policies/{l7policy_id}NoneExample request: Querying details of a forwarding policyGET https:", + "product_code":"elb", + "title":"Querying Details of a Forwarding Policy", + "uri":"elb_zq_zf_0003.html", + "doc_type":"api", + "p_code":"73", + "code":"76" + }, + { + "desc":"This API is used to update a forwarding policy. You can select another backend server group or redirect to another HTTPS listener.PUT /v2.0/lbaas/l7policies/{l7policy_id}", + "product_code":"elb", + "title":"Updating a Forwarding Policy", + "uri":"elb_zq_zf_0004.html", + "doc_type":"api", + "p_code":"73", + "code":"77" + }, + { + "desc":"This API is used to delete a specific forwarding policy.DELETE /v2.0/lbaas/l7policies/{l7policy_id}NoneNoneExample request: Deleting a forwarding policyDELETE https://{En", + "product_code":"elb", + "title":"Deleting a Forwarding Policy", + "uri":"elb_zq_zf_0005.html", + "doc_type":"api", + "p_code":"73", + "code":"78" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Forwarding Rule", + "uri":"elb_zq_zg_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"79" + }, + { + "desc":"This API is used to add a forwarding rule. After you add a forwarding rule, the load balancer matches the domain name and path in the request and distributes the traffic ", + "product_code":"elb", + "title":"Adding a Forwarding Rule", + "uri":"elb_zq_zg_0001.html", + "doc_type":"api", + "p_code":"79", + "code":"80" + }, + { + "desc":"This API is used to query forwarding rules. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, limit, ", + "product_code":"elb", + "title":"Querying Forwarding Rules", + "uri":"elb_zq_zg_0002.html", + "doc_type":"api", + "p_code":"79", + "code":"81" + }, + { + "desc":"This API is used to query details about a forwarding rule using its ID.GET /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}NoneExample request: Querying details of ", + "product_code":"elb", + "title":"Querying Details of a Forwarding Rule", + "uri":"elb_zq_zg_0003.html", + "doc_type":"api", + "p_code":"79", + "code":"82" + }, + { + "desc":"This API is used to update a forwarding rule. You can change the mode that how traffic is distributed by updating the forwarding rule.PUT /v2.0/lbaas/l7policies/{l7policy", + "product_code":"elb", + "title":"Updating a Forwarding Rule", + "uri":"elb_zq_zg_0004.html", + "doc_type":"api", + "p_code":"79", + "code":"83" + }, + { + "desc":"This API is used to delete a specific forwarding rule.DELETE /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}NoneNoneExample request: Deleting a forwarding ruleDELE", + "product_code":"elb", + "title":"Deleting a Forwarding Rule", + "uri":"elb_zq_zg_0005.html", + "doc_type":"api", + "p_code":"79", + "code":"84" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Whitelist", + "uri":"elb_zq_bm_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"85" + }, + { + "desc":"This API is used to add a whitelist to control access to a specific listener. After a whitelist is added, only IP addresses in the whitelist can access the listener.POST ", + "product_code":"elb", + "title":"Adding a Whitelist", + "uri":"elb_zq_bm_0001.html", + "doc_type":"api", + "p_code":"85", + "code":"86" + }, + { + "desc":"This API is used to query the whitelists. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, limit, an", + "product_code":"elb", + "title":"Querying Whitelists", + "uri":"elb_zq_bm_0002.html", + "doc_type":"api", + "p_code":"85", + "code":"87" + }, + { + "desc":"This API is used to query details about a whitelist using its ID.GET /v2.0/lbaas/whitelists/{whitelist_id}NoneExample request: Querying details of a whitelistGET https://", + "product_code":"elb", + "title":"Querying Details of a Whitelist", + "uri":"elb_zq_bm_0003.html", + "doc_type":"api", + "p_code":"85", + "code":"88" + }, + { + "desc":"This API is used to update a whitelist. You can enable or disable the whitelist function or change IP addresses in the whitelist. If you change IP addresses in the whitel", + "product_code":"elb", + "title":"Updating a Whitelist", + "uri":"elb_zq_bm_0004.html", + "doc_type":"api", + "p_code":"85", + "code":"89" + }, + { + "desc":"This API is used to delete a specific whitelist.DELETE /v2.0/lbaas/whitelists/{whitelist_id}NoneNoneExample request: Deleting a whitelistDELETE https://{Endpoint}/v2.0/lb", + "product_code":"elb", + "title":"Deleting a Whitelist", + "uri":"elb_zq_bm_0005.html", + "doc_type":"api", + "p_code":"85", + "code":"90" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Certificate", + "uri":"elb_zq_zs_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"91" + }, + { + "desc":"This API is used to create a certificate. After a certificate is bound to a listener, the load balancer authenticates the client using this certificate, and backend serve", + "product_code":"elb", + "title":"Creating a Certificate", + "uri":"elb_zq_zs_0001.html", + "doc_type":"api", + "p_code":"91", + "code":"92" + }, + { + "desc":"This API is used to query all the certificates. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.Parameters marker, lim", + "product_code":"elb", + "title":"Querying Certificates", + "uri":"elb_zq_zs_0002.html", + "doc_type":"api", + "p_code":"91", + "code":"93" + }, + { + "desc":"This API is used to query details about a certificate.GET /v2.0/lbaas/certificates/{certificate_id}NoneExample request: Querying details of a certificateGET https://{Endp", + "product_code":"elb", + "title":"Querying Details of a Certificate", + "uri":"elb_zq_zs_0003.html", + "doc_type":"api", + "p_code":"91", + "code":"94" + }, + { + "desc":"This API is used to update a certificate.PUT /v2.0/lbaas/certificates/{certificate_id}Example request: Updating a certificatePUT https://{Endpoint}/v2.0/lbaas/certificate", + "product_code":"elb", + "title":"Updating a Certificate", + "uri":"elb_zq_zs_0004.html", + "doc_type":"api", + "p_code":"91", + "code":"95" + }, + { + "desc":"This API is used to delete a specific certificate.If the target certificate is used by a listener, the certificate cannot be deleted, and 409 code will be displayed.DELET", + "product_code":"elb", + "title":"Deleting a Certificate", + "uri":"elb_zq_zs_0005.html", + "doc_type":"api", + "p_code":"91", + "code":"96" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Tag", + "uri":"elb_zq_bq_0000.html", + "doc_type":"api", + "p_code":"38", + "code":"97" + }, + { + "desc":"This API is used to add a tag to a specific load balancer for easier management.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added t", + "product_code":"elb", + "title":"Adding a Tag to a Load Balancer", + "uri":"elb_zq_bq_0001.html", + "doc_type":"api", + "p_code":"97", + "code":"98" + }, + { + "desc":"This API is used to batch add tags to or delete tags from a load balancer.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added to a lo", + "product_code":"elb", + "title":"Batch Adding or Deleting Load Balancer Tags", + "uri":"elb_zq_bq_0002.html", + "doc_type":"api", + "p_code":"97", + "code":"99" + }, + { + "desc":"This API is used to query all the tags of one load balancer.You can also use this API for dedicated load balancers.GET /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/", + "product_code":"elb", + "title":"Querying All Tags of a Load Balancer", + "uri":"elb_zq_bq_0003.html", + "doc_type":"api", + "p_code":"97", + "code":"100" + }, + { + "desc":"This API is used to query the tags of all the load balancers.You can also use this API for dedicated load balancers.GET /v2.0/{project_id}/loadbalancers/tagsNoneExample r", + "product_code":"elb", + "title":"Querying the Tags of All Load Balancers", + "uri":"elb_zq_bq_0004.html", + "doc_type":"api", + "p_code":"97", + "code":"101" + }, + { + "desc":"This API is used to query load balancers using tags.You can also use this API for dedicated load balancers.NonePOST /v2.0/{project_id}/loadbalancers/resource_instances/ac", + "product_code":"elb", + "title":"Querying Load Balancers by Tag", + "uri":"elb_zq_bq_0005.html", + "doc_type":"api", + "p_code":"97", + "code":"102" + }, + { + "desc":"This API is used to delete a tag with a specific key from a load balancer.You can also use this API for dedicated load balancers.NoneDELETE /v2.0/{project_id}/loadbalance", + "product_code":"elb", + "title":"Deleting a Tag from a Load Balancer", + "uri":"elb_zq_bq_0006.html", + "doc_type":"api", + "p_code":"97", + "code":"103" + }, + { + "desc":"This API is used to add a tag to a specific listener.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added to a listener.Note the follo", + "product_code":"elb", + "title":"Adding a Tag to a Listener", + "uri":"elb_zq_bq_0007.html", + "doc_type":"api", + "p_code":"97", + "code":"104" + }, + { + "desc":"This API is used to batch add tags to or delete tags from a listener.You can also use this API for dedicated load balancers.A maximum of 20 tags can be added to a listene", + "product_code":"elb", + "title":"Batch Adding or Deleting Listener Tags", + "uri":"elb_zq_bq_0008.html", + "doc_type":"api", + "p_code":"97", + "code":"105" + }, + { + "desc":"This API is used to query all tags of one listener.You can also use this API for dedicated load balancers.NoneGET /v2.0/{project_id}/listeners/{listener_id}/tagsNoneExamp", + "product_code":"elb", + "title":"Querying All Tags of a Listener", + "uri":"elb_zq_bq_0009.html", + "doc_type":"api", + "p_code":"97", + "code":"106" + }, + { + "desc":"This API is used to query the tags of all listeners.You can also use this API for dedicated load balancers.NoneGET /v2.0/{project_id}/listeners/tagsNoneExample requestGET", + "product_code":"elb", + "title":"Querying the Tags of All Listeners", + "uri":"elb_zq_bq_0010.html", + "doc_type":"api", + "p_code":"97", + "code":"107" + }, + { + "desc":"This API is used to query listeners by tag.You can also use this API for dedicated load balancers.NonePOST /v2.0/{project_id}/listeners/resource_instances/actionExample r", + "product_code":"elb", + "title":"Querying Listeners by Tag", + "uri":"elb_zq_bq_0011.html", + "doc_type":"api", + "p_code":"97", + "code":"108" + }, + { + "desc":"This API is used to delete a tag with a specific key from a listener.You can also use this API for dedicated load balancers.NoneDELETE /v2.0/{project_id}/listeners/{liste", + "product_code":"elb", + "title":"Deleting a Tag from a Listener", + "uri":"elb_zq_bq_0012.html", + "doc_type":"api", + "p_code":"97", + "code":"109" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Status Codes", + "uri":"elb_zq_bq_0013.html", + "doc_type":"api", + "p_code":"97", + "code":"110" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Dedicated Load Balancer APIs", + "uri":"elb_dx_0000.html", + "doc_type":"api", + "p_code":"", + "code":"111" + }, + { + "desc":"By default, load balancers created in the eu-nl region are dedicated load balancers. APIs for dedicated load balancers are only available in this region. Shared load bala", + "product_code":"elb", + "title":"API Call Precaution", + "uri":"en-us_topic_0000001088310753.html", + "doc_type":"api", + "p_code":"111", + "code":"112" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Quota", + "uri":"topic_300000000.html", + "doc_type":"api", + "p_code":"111", + "code":"113" + }, + { + "desc":"This API is used to query resource quotas of a specific user.GET /v3/{project_id}/elb/quotasStatus code: 200Status code: 200Successful request.See Error Codes.", + "product_code":"elb", + "title":"Querying Quotas", + "uri":"ShowQuota.html", + "doc_type":"api", + "p_code":"113", + "code":"114" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"AZ", + "uri":"topic_300000001.html", + "doc_type":"api", + "p_code":"111", + "code":"115" + }, + { + "desc":"This API is used to query all available AZs when you create a dedicated load balancer.One set of AZs is returned. When you create a dedicated load balancer, you can selec", + "product_code":"elb", + "title":"Querying AZs", + "uri":"ListAvailabilityZones.html", + "doc_type":"api", + "p_code":"115", + "code":"116" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer Flavor", + "uri":"topic_300000002.html", + "doc_type":"api", + "p_code":"111", + "code":"117" + }, + { + "desc":"This API is used to query all load balancer flavors that are available to a specific user in a specific region.Parameters marker, limit, and page_reverse are used for pag", + "product_code":"elb", + "title":"Querying Flavors", + "uri":"ListFlavors.html", + "doc_type":"api", + "p_code":"117", + "code":"118" + }, + { + "desc":"This API is used to view details of a flavor.This API can only be used to view the details of a flavor.GET /v3/{project_id}/elb/flavors/{flavor_id}Status code: 200Status ", + "product_code":"elb", + "title":"Viewing Details of a Flavor", + "uri":"ShowFlavor.html", + "doc_type":"api", + "p_code":"117", + "code":"119" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer", + "uri":"topic_300000003.html", + "doc_type":"api", + "p_code":"111", + "code":"120" + }, + { + "desc":"This API is used to create a dedicated load balancer. When you create the load balancer, note the following:Specify both vip_subnet_cidr_id and vip_address if you want to", + "product_code":"elb", + "title":"Creating a Load Balancer", + "uri":"CreateLoadBalancer.html", + "doc_type":"api", + "p_code":"120", + "code":"121" + }, + { + "desc":"This API is used to query all load balancers. Both filtered query and pagination query are supported.Parameters marker, limit, and page_reverse are used for pagination qu", + "product_code":"elb", + "title":"Querying Load Balancers", + "uri":"ListLoadBalancers.html", + "doc_type":"api", + "p_code":"120", + "code":"122" + }, + { + "desc":"This API is used to view details of a load balancer.GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}Status code: 200Viewing details of a load balancerStatus code:", + "product_code":"elb", + "title":"Viewing Details of a Load Balancer", + "uri":"ShowLoadBalancer.html", + "doc_type":"api", + "p_code":"120", + "code":"123" + }, + { + "desc":"This API is used to update a load balancer.PUT /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "product_code":"elb", + "title":"Updating a Load Balancer", + "uri":"UpdateLoadBalancer.html", + "doc_type":"api", + "p_code":"120", + "code":"124" + }, + { + "desc":"This API is used to delete a load balancer.All listeners added to the load balancer must be deleted before the load balancer is deleted.DELETE /v3/{project_id}/elb/loadba", + "product_code":"elb", + "title":"Deleting a Load Balancer", + "uri":"DeleteLoadBalancer.html", + "doc_type":"api", + "p_code":"120", + "code":"125" + }, + { + "desc":"This API is used to query the status tree of a load balancer and show information about all resources associated with the load balancer.When admin_state_up is set to fals", + "product_code":"elb", + "title":"Querying the Status Tree of a Load Balancer", + "uri":"ShowLoadBalancerStatus.html", + "doc_type":"api", + "p_code":"120", + "code":"126" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Certificate", + "uri":"topic_300000004.html", + "doc_type":"api", + "p_code":"111", + "code":"127" + }, + { + "desc":"This API is used to create an SSL certificate.POST /v3/{project_id}/elb/certificatesStatus code: 201Status code: 201Successful request.See Error Codes.", + "product_code":"elb", + "title":"Creating a Certificate", + "uri":"CreateCertificate.html", + "doc_type":"api", + "p_code":"127", + "code":"128" + }, + { + "desc":"This API is used to query all SSL certificates.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect onl", + "product_code":"elb", + "title":"Querying Certificates", + "uri":"ListCertificates.html", + "doc_type":"api", + "p_code":"127", + "code":"129" + }, + { + "desc":"This API is used to view details of an SSL certificate.GET /v3/{project_id}/elb/certificates/{certificate_id}Status code: 200Status code: 200Successful request.See Error ", + "product_code":"elb", + "title":"Viewing Details of a Certificate", + "uri":"ShowCertificate.html", + "doc_type":"api", + "p_code":"127", + "code":"130" + }, + { + "desc":"This API is used to update an SSL certificate.PUT /v3/{project_id}/elb/certificates/{certificate_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "product_code":"elb", + "title":"Updating a Certificate", + "uri":"UpdateCertificate.html", + "doc_type":"api", + "p_code":"127", + "code":"131" + }, + { + "desc":"This API is used to delete an SSL certificate.If the certificate is used by a listener, the certificate cannot be deleted, and the 409 Conflict error code will be display", + "product_code":"elb", + "title":"Deleting a Certificate", + "uri":"DeleteCertificate.html", + "doc_type":"api", + "p_code":"127", + "code":"132" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Listener", + "uri":"topic_300000005.html", + "doc_type":"api", + "p_code":"111", + "code":"133" + }, + { + "desc":"This API is used to add a listener to a load balancer.Only the administrator can specify connection_limit.The listener protocol can be TCP, HTTP, UDP, or HTTPS.The listen", + "product_code":"elb", + "title":"Adding a Listener", + "uri":"CreateListener.html", + "doc_type":"api", + "p_code":"133", + "code":"134" + }, + { + "desc":"This API is used to query listeners.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect only when they", + "product_code":"elb", + "title":"Querying Listeners", + "uri":"ListListeners.html", + "doc_type":"api", + "p_code":"133", + "code":"135" + }, + { + "desc":"This API is used to view details of a listener.GET /v3/{project_id}/elb/listeners/{listener_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "product_code":"elb", + "title":"Viewing Details of a Listener", + "uri":"ShowListener.html", + "doc_type":"api", + "p_code":"133", + "code":"136" + }, + { + "desc":"This API is used to update a listener.If the provisioning status of the load balancer that the listener is added to is not ACTIVE, the listener cannot be updated. Only th", + "product_code":"elb", + "title":"Updating a Listener", + "uri":"UpdateListener.html", + "doc_type":"api", + "p_code":"133", + "code":"137" + }, + { + "desc":"This API is used to delete a listener.Before you delete a listener, delete the associated backend server group or disassociate the backend server group from the listener,", + "product_code":"elb", + "title":"Deleting a Listener", + "uri":"DeleteListener.html", + "doc_type":"api", + "p_code":"133", + "code":"138" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend Server Group", + "uri":"topic_300000006.html", + "doc_type":"api", + "p_code":"111", + "code":"139" + }, + { + "desc":"This API is used to create a backend server group.If session-persistence is specified, cookie_name is available only when type is set to APP_COOKIE.If listener_id is spec", + "product_code":"elb", + "title":"Creating a Backend Server Group", + "uri":"CreatePool.html", + "doc_type":"api", + "p_code":"139", + "code":"140" + }, + { + "desc":"This API is used to query all backend server groups.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effec", + "product_code":"elb", + "title":"Querying Backend Server Groups", + "uri":"ListPools.html", + "doc_type":"api", + "p_code":"139", + "code":"141" + }, + { + "desc":"This API is used to view details of a backend server group.GET /v3/{project_id}/elb/pools/{pool_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "product_code":"elb", + "title":"Viewing Details of a Backend Server Group", + "uri":"ShowPool.html", + "doc_type":"api", + "p_code":"139", + "code":"142" + }, + { + "desc":"This API is used to update a backend server group.The backend server group can be updated only when the provisioning status of the associated load balancer is ACTIVE.PUT ", + "product_code":"elb", + "title":"Updating a Backend Server Group", + "uri":"UpdatePool.html", + "doc_type":"api", + "p_code":"139", + "code":"143" + }, + { + "desc":"This API is used to delete a backend server group.A backend server group can be deleted only after all servers are removed from the group, the health check configured for", + "product_code":"elb", + "title":"Deleting a Backend Server Group", + "uri":"DeletePool.html", + "doc_type":"api", + "p_code":"139", + "code":"144" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend Server", + "uri":"topic_300000007.html", + "doc_type":"api", + "p_code":"111", + "code":"145" + }, + { + "desc":"This API is used to add a backend server.When you add backend servers, note the following:Two backend servers in the same backend server group must have different IP addr", + "product_code":"elb", + "title":"Adding a Backend Server", + "uri":"CreateMember.html", + "doc_type":"api", + "p_code":"145", + "code":"146" + }, + { + "desc":"This API is used to query all backend servers.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect only", + "product_code":"elb", + "title":"Querying Backend Servers", + "uri":"ListMembers.html", + "doc_type":"api", + "p_code":"145", + "code":"147" + }, + { + "desc":"This API is used to view details of a backend server.GET /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}Status code: 200Status code: 200Successful request.See Er", + "product_code":"elb", + "title":"Viewing Details of a Backend Server", + "uri":"ShowMember.html", + "doc_type":"api", + "p_code":"145", + "code":"148" + }, + { + "desc":"The backend server can be updated only when the provisioning status of the associated load balancer is ACTIVE.PUT /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}", + "product_code":"elb", + "title":"Updating a Backend Server", + "uri":"UpdateMember.html", + "doc_type":"api", + "p_code":"145", + "code":"149" + }, + { + "desc":"This API is used to remove a backend server.When you remove backend servers, note the following:After you remove a backend server, new connections to this server will not", + "product_code":"elb", + "title":"Removing a Backend Server", + "uri":"DeleteMember.html", + "doc_type":"api", + "p_code":"145", + "code":"150" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Health Check", + "uri":"topic_300000008.html", + "doc_type":"api", + "p_code":"111", + "code":"151" + }, + { + "desc":"This API is used to configure a health check.The security groups must have rules that allow access from 100.125.0.0/16. If you want to use UDP for health checks, ensure t", + "product_code":"elb", + "title":"Configuring a Health Check", + "uri":"CreateHealthMonitor.html", + "doc_type":"api", + "p_code":"151", + "code":"152" + }, + { + "desc":"This API is used to query all health checks.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect only w", + "product_code":"elb", + "title":"Querying Health Checks", + "uri":"ListHealthMonitors.html", + "doc_type":"api", + "p_code":"151", + "code":"153" + }, + { + "desc":"This API is used to view details of a health check.GET /v3/{project_id}/elb/healthmonitors/{healthmonitor_id}Status code: 200Status code: 200Successful request.See Error ", + "product_code":"elb", + "title":"Viewing Details of a Health Check", + "uri":"ShowHealthMonitor.html", + "doc_type":"api", + "p_code":"151", + "code":"154" + }, + { + "desc":"This API is used to update a health check.The health check can be updated only when the provisioning status of the associated load balancer is ACTIVE.PUT /v3/{project_id}", + "product_code":"elb", + "title":"Updating a Health Check", + "uri":"UpdateHealthMonitor.html", + "doc_type":"api", + "p_code":"151", + "code":"155" + }, + { + "desc":"This API is used to delete a health check.The health check can be deleted only when the provisioning status of the associated load balancer is ACTIVE.DELETE /v3/{project_", + "product_code":"elb", + "title":"Deleting a Health Check", + "uri":"DeleteHealthMonitor.html", + "doc_type":"api", + "p_code":"151", + "code":"156" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Forwarding Policy", + "uri":"topic_300000009.html", + "doc_type":"api", + "p_code":"111", + "code":"157" + }, + { + "desc":"This API is used to add a forwarding policy.The protocol of the listener to which requests are redirected can only be HTTPS.The listener associated with the forwarding po", + "product_code":"elb", + "title":"Adding a Forwarding Policy", + "uri":"CreateL7Policy.html", + "doc_type":"api", + "p_code":"157", + "code":"158" + }, + { + "desc":"This API is used to query all forwarding policies.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect ", + "product_code":"elb", + "title":"Querying Forwarding Policies", + "uri":"ListL7Policies.html", + "doc_type":"api", + "p_code":"157", + "code":"159" + }, + { + "desc":"This API is used to view details of a forwarding policy.GET /v3/{project_id}/elb/l7policies/{l7policy_id}Status code: 200Status code: 200Successful request.See Error Code", + "product_code":"elb", + "title":"Viewing Details of a Forwarding Policy", + "uri":"ShowL7Policy.html", + "doc_type":"api", + "p_code":"157", + "code":"160" + }, + { + "desc":"This API is used to update a forwarding policy.PUT /v3/{project_id}/elb/l7policies/{l7policy_id}Status code: 200Status code: 200Successful request.See Error Codes.", + "product_code":"elb", + "title":"Updating a Forwarding Policy", + "uri":"UpdateL7Policy.html", + "doc_type":"api", + "p_code":"157", + "code":"161" + }, + { + "desc":"This API is used to delete a forwarding policy.DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}NoneNoneSee Error Codes.", + "product_code":"elb", + "title":"Deleting a Forwarding Policy", + "uri":"DeleteL7Policy.html", + "doc_type":"api", + "p_code":"157", + "code":"162" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Forwarding Rule", + "uri":"topic_300000010.html", + "doc_type":"api", + "p_code":"111", + "code":"163" + }, + { + "desc":"This API is used to add a forwarding rule.POST /v3/{project_id}/elb/l7policies/{l7policy_id}/rulesStatus code: 201Status code: 201Successful request.See Error Codes.", + "product_code":"elb", + "title":"Adding a Forwarding Rule", + "uri":"CreateL7Rule.html", + "doc_type":"api", + "p_code":"163", + "code":"164" + }, + { + "desc":"This API is used to query all forwarding rules.Parameters marker, limit, and page_reverse are used for pagination query.Parameters marker and page_reverse take effect onl", + "product_code":"elb", + "title":"Querying Forwarding Rules", + "uri":"ListL7Rules.html", + "doc_type":"api", + "p_code":"163", + "code":"165" + }, + { + "desc":"This API is used to view details of a forwarding rule.GET /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}Status code: 200Status code: 200Successful reques", + "product_code":"elb", + "title":"Viewing Details of a Forwarding Rule", + "uri":"ShowL7Rule.html", + "doc_type":"api", + "p_code":"163", + "code":"166" + }, + { + "desc":"This API is used to update a forwarding rule.PUT /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}Status code: 200Status code: 200Successful request.See Err", + "product_code":"elb", + "title":"Updating a Forwarding Rule", + "uri":"UpdateL7Rule.html", + "doc_type":"api", + "p_code":"163", + "code":"167" + }, + { + "desc":"This API is used to delete a forwarding rule.DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}NoneNoneSee Error Codes.", + "product_code":"elb", + "title":"Deleting a Forwarding Rule", + "uri":"DeleteL7Rule.html", + "doc_type":"api", + "p_code":"163", + "code":"168" + }, + { + "desc":"Queries all available versions.If there is no version added to the URL, all available versions are returned.GET /NoneNoneExample requestGET /Example response{\n \"version", + "product_code":"elb", + "title":"Querying Versions", + "uri":"elb_fl_0006.html", + "doc_type":"api", + "p_code":"", + "code":"169" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Examples", + "uri":"elb_eg_v3_0000.html", + "doc_type":"api", + "p_code":"", + "code":"170" + }, + { + "desc":"Call APIs to create a dedicated load balancer and bind a new EIP to it.You have created a VPC and a subnet.Query the subnet you have created.Send GET https://{vpc_endpoin", + "product_code":"elb", + "title":"Creating a Dedicated Load Balancer and Binding a New EIP to It", + "uri":"en-us_topic_0000001127879251.html", + "doc_type":"api", + "p_code":"170", + "code":"171" + }, + { + "desc":"Call the API to add a listener to a dedicated load balancer.You have created a dedicated load balancer.You have obtained the ID of the dedicated load balancer.Add a liste", + "product_code":"elb", + "title":"Adding a Listener to a Dedicated Load Balancer", + "uri":"elb_eg_v3_0002.html", + "doc_type":"api", + "p_code":"170", + "code":"172" + }, + { + "desc":"Call APIs to delete a dedicated load balancer.Before you delete a dedicated load balancer, delete all resources associated with it. Figure 1 shows the associated resource", + "product_code":"elb", + "title":"Deleting a Dedicated Load Balancer", + "uri":"elb_eg_v3_0003.html", + "doc_type":"api", + "p_code":"170", + "code":"173" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Common Parameters", + "uri":"elb_gc_0000.html", + "doc_type":"api", + "p_code":"", + "code":"174" + }, + { + "desc":"The following error code descriptions are only suitable for classic load balancers.If an error occurs when using an API, an error response will be returned, which contain", + "product_code":"elb", + "title":"Error Codes", + "uri":"elb_gc_0001.html", + "doc_type":"api", + "p_code":"174", + "code":"175" + }, + { + "desc":"The following code descriptions are only suitable for shared load balancers.", + "product_code":"elb", + "title":"HTTP Status Codes of Shared Load Balancers", + "uri":"elb_gc_0002.html", + "doc_type":"api", + "p_code":"174", + "code":"176" + }, + { + "desc":"The following code descriptions are only suitable for dedicated load balancers.", + "product_code":"elb", + "title":"HTTP Status Codes for Dedicated Load Balancers", + "uri":"errorcode.html", + "doc_type":"api", + "p_code":"174", + "code":"177" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Appendix", + "uri":"elb_fl_0000.html", + "doc_type":"api", + "p_code":"", + "code":"178" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Status Codes", + "uri":"elb_gc_1102.html", + "doc_type":"api", + "p_code":"178", + "code":"179" + }, + { + "desc":"This section describes the metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metr", + "product_code":"elb", + "title":"ELB Metrics", + "uri":"elb_fl_0002.html", + "doc_type":"api", + "p_code":"178", + "code":"180" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"General Information About Shared Load Balancers", + "uri":"elb_fl_0003.html", + "doc_type":"api", + "p_code":"178", + "code":"181" + }, + { + "desc":"APIs v2.0 allow users to query data in pages by adding the limit and marker parameters to the URL of the list request. The query results are displayed in the ascending or", + "product_code":"elb", + "title":"Querying Data in Pages", + "uri":"elb_fl_0004.html", + "doc_type":"api", + "p_code":"181", + "code":"182" + }, + { + "desc":"APIs v2.0 enable the system to sort queried results based on customized keys by adding the sort_key and sort_dir parameters to the URL of the list request. sort_key speci", + "product_code":"elb", + "title":"Sequencing Query Results", + "uri":"elb_fl_0005.html", + "doc_type":"api", + "p_code":"181", + "code":"183" + }, + { + "desc":"The basic workflow of elastic load balancers contains the following: creating a load balancer, adding a listener to a specified load balancer, adding a backend server gro", + "product_code":"elb", + "title":"Basic Workflow", + "uri":"elb_fl_0007.html", + "doc_type":"api", + "p_code":"181", + "code":"184" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Change History", + "uri":"elb_xd_0000.html", + "doc_type":"api", + "p_code":"", + "code":"185" + } +] \ No newline at end of file diff --git a/elb/api-ref/CreateCertificate.html b/elb/api-ref/CreateCertificate.html new file mode 100644 index 000000000..e68036c22 --- /dev/null +++ b/elb/api-ref/CreateCertificate.html @@ -0,0 +1,388 @@ + + +

      Creating a Certificate

      +

      Function

      This API is used to create an SSL certificate.

      + +

      URI

      POST /v3/{project_id}/elb/certificates

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID of the certificate.

      +
      + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate

      +

      Yes

      +

      CreateCertificateOption object

      +

      Specifies the certificate.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateCertificateOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      certificate

      +

      Yes

      +

      String

      +

      Specifies the private key of the certificate. The value must be PEM encoded.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      domain

      +

      No

      +

      String

      +

      Specifies the domain names used by the server certificate.

      +
      • This parameter will take effect only when type is set to server, and its default value is "".

        +
      • This parameter will not take effect even if it is passed and type is set to client. However, domain names will still be verified.

        +
      +

      Note:

      +
      • The value can contain 0 to 1024 characters and consists of multiple common domain names or wildcard domain names separated by commas. A maximum of 30 domain names are allowed.

        +
      • A common domain name consists of several labels separated by periods (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit. Example: www.test.com

        +
      • A wildcard domain name is a domain name starts with an asterisk (*). Example: *.test.com

        +
      +

      name

      +

      No

      +

      String

      +

      Specifies the certificate name. Only letters, digits, underscores, and hyphens are allowed.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      private_key

      +

      No

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.

        +
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.

        +
      +

      project_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the certificate is used.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      type

      +

      No

      +

      String

      +

      Specifies the certificate type.

      +

      The value can be server or client. server indicates server certificates, and client indicates CA certificates. The default value is server.

      +

      enterprise_project_id

      +

      No

      +

      String

      +

      Specifies the enterprise project ID. The value cannot be "", "0", or the ID of an enterprise project that does not exist.

      +

      If this parameter is not passed during resource creation, the resource belongs to the default enterprise project.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 5 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      certificate

      +

      CertificateInfo object

      +

      Specifies the certificate.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 CertificateInfo

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is unsupported. Please do not use it.

      +

      certificate

      +

      String

      +

      Specifies the private key of the certificate. The value must be PEM encoded.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      domain

      +

      String

      +

      Specifies the domain names used by the server certificate.

      +
      • This parameter will take effect only when type is set to server, and its default value is "".

        +
      • This parameter will not take effect even if it is passed and type is set to client. However, domain names will still be verified.

        +
      +

      Note:

      +
      • The value can contain 0 to 1024 characters and consists of multiple common domain names or wildcard domain names separated by commas. A maximum of 30 domain names are allowed.

        +
      • A common domain name consists of several labels separated by periods (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit. Example: www.test.com

        +
      • A wildcard domain name is a domain name starts with an asterisk (*). Example: *.test.com

        +
      +

      Minimum: 1

      +

      Maximum: 1024

      +

      id

      +

      String

      +

      Specifies a certificate ID.

      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.

        +
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.

        +
      +

      type

      +

      String

      +

      Specifies the certificate type. The value can be server or client. server indicates server certificates, and client indicates CA certificates. The default value is server.

      +

      created_at

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      updated_at

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Example Requests

      POST https://{elb_endponit}/v3/{project_id}/elb/certificates
      +
      +{
      +  "certificate" : {
      +    "name" : "My Certificate",
      +    "type" : "server",
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----"
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "certificate" : {
      +    "id" : "233a325e5e3e4ce8beeb320aa714cc12",
      +    "name" : "My Certificate",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "updated_at" : "2019-03-31T23:26:49Z",
      +    "type" : "server",
      +    "created_at" : "2019-03-31T22:23:51Z",
      +    "expire_time" : "2045-11-17T13:25:47Z",
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----"
      +  },
      +  "request_id" : "98414965-856c-4be3-8a33-3e08432a222e"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Certificate + diff --git a/elb/api-ref/CreateCertificate.rst b/elb/api-ref/CreateCertificate.rst new file mode 100644 index 000000000..d4e18d862 --- /dev/null +++ b/elb/api-ref/CreateCertificate.rst @@ -0,0 +1,365 @@ +Creating a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to create an SSL certificate. + +URI +^^^ + +POST /v3/{project_id}/elb/certificates + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================ + Parameter Mandatory Type Description + ========== ========= ====== ============================================ + project_id Yes String Specifies the project ID of the certificate. + ========== ========= ====== ============================================ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-------------+-----------+--------------------------------------------+----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============+===========+============================================+============================+ + | certificate | Yes | `CreateCertificateOption <#CreateCertif | Specifies the certificate. | + | | | icate__request_CreateCertificateOption>`__ | | + | | | object | | + +-------------+-----------+--------------------------------------------+----------------------------+ + +.. table:: **Table 4** CreateCertificateOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the certificate. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate | Yes | String | Specifies the private key | + | | | | of the certificate. The | + | | | | value must be PEM encoded. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | String | Specifies the domain names | + | | | | used by the server | + | | | | certificate. | + | | | | | + | | | | - This parameter will take | + | | | | effect only when | + | | | | **type** is set to | + | | | | **server**, and its | + | | | | default value is **""**. | + | | | | | + | | | | - This parameter will not | + | | | | take effect even if it | + | | | | is passed and **type** | + | | | | is set to **client**. | + | | | | However, domain names | + | | | | will still be verified. | + | | | | | + | | | | Note: | + | | | | | + | | | | - The value can contain 0 | + | | | | to 1024 characters and | + | | | | consists of multiple | + | | | | common domain names or | + | | | | wildcard domain names | + | | | | separated by commas. A | + | | | | maximum of 30 domain | + | | | | names are allowed. | + | | | | | + | | | | - A common domain name | + | | | | consists of several | + | | | | labels separated by | + | | | | periods (.). Each label | + | | | | can contain a maximum of | + | | | | 63 characters, including | + | | | | letters, digits, and | + | | | | hyphens (-), and must | + | | | | start and end with a | + | | | | letter or digit. | + | | | | Example: www.test.com | + | | | | | + | | | | - A wildcard domain name | + | | | | is a domain name starts | + | | | | with an asterisk (*). | + | | | | Example: \*.test.com | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the certificate | + | | | | name. Only letters, digits, | + | | | | underscores, and hyphens | + | | | | are allowed. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | private_key | No | String | Specifies the private key | + | | | | of the server certificate. | + | | | | The value must be PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter will be | + | | | | ignored if **type** is | + | | | | set to **client**. A CA | + | | | | server can still be | + | | | | created and used | + | | | | normally. This parameter | + | | | | will be left blank even | + | | | | if you enter a private | + | | | | key that is not PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter is valid | + | | | | and mandatory only when | + | | | | **type** is set to | + | | | | **server**. If you enter | + | | | | an invalid private key, | + | | | | an error is returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | certificate is used. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **32** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the certificate | + | | | | type. | + | | | | | + | | | | The value can be **server** | + | | | | or **client**. **server** | + | | | | indicates server | + | | | | certificates, and | + | | | | **client** indicates CA | + | | | | certificates. The default | + | | | | value is **server**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | String | Specifies the enterprise | + | | | | project ID. The value | + | | | | cannot be **""**, **"0"**, | + | | | | or the ID of an enterprise | + | | | | project that does not | + | | | | exist. | + | | | | | + | | | | If this parameter is not | + | | | | passed during resource | + | | | | creation, the resource | + | | | | belongs to the default | + | | | | enterprise project. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 5** Response body parameters + + +-------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +=============+==================================================+==================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +-------------+--------------------------------------------------+--------------------------------------------------+ + | certificate | `CertificateInfo < | Specifies the certificate. | + | | #CreateCertificate__response_CertificateInfo>`__ | | + | | object | | + +-------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 6** CertificateInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the private key of the | + | | | certificate. The value must be PEM | + | | | encoded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain names used by | + | | | the server certificate. | + | | | | + | | | - This parameter will take effect | + | | | only when **type** is set to | + | | | **server**, and its default value | + | | | is **""**. | + | | | | + | | | - This parameter will not take | + | | | effect even if it is passed and | + | | | **type** is set to **client**. | + | | | However, domain names will still | + | | | be verified. | + | | | | + | | | Note: | + | | | | + | | | - The value can contain 0 to 1024 | + | | | characters and consists of | + | | | multiple common domain names or | + | | | wildcard domain names separated by | + | | | commas. A maximum of 30 domain | + | | | names are allowed. | + | | | | + | | | - A common domain name consists of | + | | | several labels separated by | + | | | periods (.). Each label can | + | | | contain a maximum of 63 | + | | | characters, including letters, | + | | | digits, and hyphens (-), and must | + | | | start and end with a letter or | + | | | digit. Example: www.test.com | + | | | | + | | | - A wildcard domain name is a domain | + | | | name starts with an asterisk (*). | + | | | Example: \*.test.com | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies a certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate. The value must be | + | | | PEM encoded. | + | | | | + | | | - This parameter will be ignored if | + | | | **type** is set to **client**. A | + | | | CA server can still be created and | + | | | used normally. This parameter will | + | | | be left blank even if you enter a | + | | | private key that is not PEM | + | | | encoded. | + | | | | + | | | - This parameter is valid and | + | | | mandatory only when **type** is | + | | | set to **server**. If you enter an | + | | | invalid private key, an error is | + | | | returned. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. The | + | | | value can be **server** or | + | | | **client**. **server** indicates | + | | | server certificates, and **client** | + | | | indicates CA certificates. The | + | | | default value is **server**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the | + | | | certificate was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the | + | | | certificate was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + POST https://{elb_endponit}/v3/{project_id}/elb/certificates + + { + "certificate" : { + "name" : "My Certificate", + "type" : "server", + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "certificate" : { + "id" : "233a325e5e3e4ce8beeb320aa714cc12", + "name" : "My Certificate", + "description" : "", + "admin_state_up" : true, + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "updated_at" : "2019-03-31T23:26:49Z", + "type" : "server", + "created_at" : "2019-03-31T22:23:51Z", + "expire_time" : "2045-11-17T13:25:47Z", + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----" + }, + "request_id" : "98414965-856c-4be3-8a33-3e08432a222e" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/CreateHealthMonitor.html b/elb/api-ref/CreateHealthMonitor.html new file mode 100644 index 000000000..108578182 --- /dev/null +++ b/elb/api-ref/CreateHealthMonitor.html @@ -0,0 +1,511 @@ + + +

      Configuring a Health Check

      +

      Function

      This API is used to configure a health check.

      + +

      Constraints

      The security groups must have rules that allow access from 100.125.0.0/16. If you want to use UDP for health checks, ensure that the protocol of the backend server group is UDP.

      + +

      URI

      POST /v3/{project_id}/elb/healthmonitors

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Yes

      +

      CreateHealthMonitorOption object

      +

      Specifies the health check.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateHealthMonitorOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the health check. Two value options are available. true indicates that the health check is enabled, and false indicates that the health check is disabled.

      +

      Default: true

      +

      delay

      +

      Yes

      +

      Integer

      +

      Specifies the interval between health checks, in seconds.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      domain_name

      +

      No

      +

      String

      +

      Specifies the domain name that HTTP requests are sent to during the health check.

      +

      This parameter is available only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      expected_codes

      +

      No

      +

      String

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 200

      +

      Minimum: 1

      +

      Maximum: 64

      +

      http_method

      +

      No

      +

      String

      +

      Specifies the HTTP method.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH.

      +

      This parameter will take effect only when type is set to HTTP.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: GET

      +

      Minimum: 1

      +

      Maximum: 16

      +

      max_retries

      +

      Yes

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      max_retries_down

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      Default: 3

      +

      monitor_port

      +

      No

      +

      Integer

      +

      Specifies the port used for the health check. If this parameter is left blank, the port of the backend server group will be used by default.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      name

      +

      No

      +

      String

      +

      Specifies the health check name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group for which the health check is configured.

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      timeout

      +

      Yes

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, HTTP, HTTPS, or PING.

      +

      url_path

      +

      No

      +

      String

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Default: /

      +

      Minimum: 1

      +

      Maximum: 255

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 5 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      healthmonitor

      +

      HealthMonitor object

      +

      Specifies the health check.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 HealthMonitor

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check. Two value options are available. true indicates that the health check is enabled, and false indicates that the health check is disabled.

      +

      Default: true

      +

      delay

      +

      Integer

      +

      Specifies the interval between health checks, in seconds.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      domain_name

      +

      String

      +

      Specifies the domain name that HTTP requests are sent to during the health check.

      +

      This parameter is available only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 200

      +

      http_method

      +

      String

      +

      Specifies the HTTP method. This parameter will take effect only when type is set to HTTP.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: GET

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      Default: 3

      +

      monitor_port

      +

      Integer

      +

      Specifies the port used for the health check. If this parameter is left blank, the port of the backend server group will be used by default.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups for which the health check is configured.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      timeout

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Default: /

      +
      + + + + + + + + + + + + +
      Table 7 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Example Requests

      POST
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors
      +
      +{
      +  "healthmonitor" : {
      +    "name" : "My Healthmonitor",
      +    "max_retries" : 3,
      +    "pool_id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0",
      +    "type" : "HTTP",
      +    "timeout" : 30,
      +    "delay" : 1
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "request_id" : "0e837340-f1bd-4037-8f61-9923d0f0b19e",
      +  "healthmonitor" : {
      +    "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "My Healthmonitor",
      +    "delay" : 1,
      +    "max_retries" : 3,
      +    "pools" : [ {
      +      "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0"
      +    } ],
      +    "admin_state_up" : true,
      +    "timeout" : 30,
      +    "type" : "HTTP",
      +    "expected_codes" : "200",
      +    "url_path" : "/",
      +    "http_method" : "GET"
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/CreateHealthMonitor.rst b/elb/api-ref/CreateHealthMonitor.rst new file mode 100644 index 000000000..3b135b455 --- /dev/null +++ b/elb/api-ref/CreateHealthMonitor.rst @@ -0,0 +1,468 @@ +Configuring a Health Check +========================== + +Function +^^^^^^^^ + +This API is used to configure a health check. + +Constraints +^^^^^^^^^^^ + +The security groups must have rules that allow access from 100.125.0.0/16. If you want to use UDP for health checks, ensure that the protocol of the backend server group is UDP. + +URI +^^^ + +POST /v3/{project_id}/elb/healthmonitors + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +---------------+-----------+-------------------------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +===============+===========+===========================================+=============================+ + | healthmonitor | Yes | `Crea | Specifies the health check. | + | | | teHealthMonitorOption <#CreateHealthMonit | | + | | | or__request_CreateHealthMonitorOption>`__ | | + | | | object | | + +---------------+-----------+-------------------------------------------+-----------------------------+ + +.. table:: **Table 4** CreateHealthMonitorOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the health check. Two value | + | | | | options are available. | + | | | | **true** indicates that the | + | | | | health check is enabled, | + | | | | and **false** indicates | + | | | | that the health check is | + | | | | disabled. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | delay | Yes | Integer | Specifies the interval | + | | | | between health checks, in | + | | | | seconds. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **50** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain_name | No | String | Specifies the domain name | + | | | | that HTTP requests are sent | + | | | | to during the health check. | + | | | | | + | | | | This parameter is available | + | | | | only when **type** is set | + | | | | to **HTTP**. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the virtual IP address of | + | | | | the load balancer is used | + | | | | as the destination address | + | | | | of HTTP requests. | + | | | | | + | | | | The value can contain only | + | | | | digits, letters, hyphens | + | | | | (-), and periods (.) and | + | | | | must start with a digit or | + | | | | letter. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **100** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | expected_codes | No | String | Specifies the expected HTTP | + | | | | status code. This parameter | + | | | | will take effect only when | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value options are as | + | | | | follows: | + | | | | | + | | | | - A specific value, for | + | | | | example, 200 | + | | | | | + | | | | - A list of values that | + | | | | are separated with | + | | | | commas (,), for example, | + | | | | 200, 202 | + | | | | | + | | | | - A value range, for | + | | | | example, 200-204 | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **200** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **64** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http_method | No | String | Specifies the HTTP method. | + | | | | | + | | | | The value can be **GET**, | + | | | | **HEAD**, **POST**, | + | | | | **PUT**, **DELETE**, | + | | | | **TRACE**, **OPTIONS**, | + | | | | **CONNECT**, or **PATCH**. | + | | | | | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **HTTP**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **GET** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries | Yes | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **OFFLINE** to | + | | | | **ONLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **10** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries_down | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **ONLINE** to | + | | | | **OFFLINE**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **10** | + | | | | | + | | | | Default: **3** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | monitor_port | No | Integer | Specifies the port used for | + | | | | the health check. If this | + | | | | parameter is left blank, | + | | | | the port of the backend | + | | | | server group will be used | + | | | | by default. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **65535** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the health check | + | | | | name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | pool_id | Yes | String | Specifies the ID of the | + | | | | backend server group for | + | | | | which the health check is | + | | | | configured. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **32** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | timeout | Yes | Integer | Specifies the maximum time | + | | | | required for waiting for a | + | | | | response from the health | + | | | | check, in seconds. It is | + | | | | recommended that you set | + | | | | the value less than that of | + | | | | parameter **delay**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **50** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the health check | + | | | | protocol. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **UDP_CONNECT**, **HTTP**, | + | | | | **HTTPS**, or **PING**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | url_path | No | String | Specifies the HTTP request | + | | | | path for the health check. | + | | | | The value must start with a | + | | | | slash (/), and the default | + | | | | value is /. This parameter | + | | | | is available only when | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | Default: **/** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 5** Response body parameters + + +---------------+-------------------------------------------------+-------------------------------------------------+ + | Parameter | Type | Description | + +===============+=================================================+=================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +---------------+-------------------------------------------------+-------------------------------------------------+ + | healthmonitor | `HealthMonitor <# | Specifies the health check. | + | | CreateHealthMonitor__response_HealthMonitor>`__ | | + | | object | | + +---------------+-------------------------------------------------+-------------------------------------------------+ + +.. table:: **Table 6** HealthMonitor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. Two value | + | | | options are available. **true** | + | | | indicates that the health check is | + | | | enabled, and **false** indicates that | + | | | the health check is disabled. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the interval between health | + | | | checks, in seconds. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name that HTTP | + | | | requests are sent to during the | + | | | health check. | + | | | | + | | | This parameter is available only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the virtual IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. This parameter will take effect | + | | | only when **type** is set to | + | | | **HTTP**. | + | | | | + | | | The value options are as follows: | + | | | | + | | | - A specific value, for example, 200 | + | | | | + | | | - A list of values that are | + | | | separated with commas (,), for | + | | | example, 200, 202 | + | | | | + | | | - A value range, for example, | + | | | 200-204 | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **200** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP method. This | + | | | parameter will take effect only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | or **PATCH**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **GET** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + | | | | + | | | Default: **3** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the port used for the | + | | | health check. If this parameter is | + | | | left blank, the port of the backend | + | | | server group will be used by default. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Crea | groups for which the health check is | + | | teHealthMonitor__response_PoolRef>`__ | configured. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the maximum time required | + | | | for waiting for a response from the | + | | | health check, in seconds. It is | + | | | recommended that you set the value | + | | | less than that of parameter | + | | | **delay**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The value must | + | | | start with a slash (/), and the | + | | | default value is /. This parameter is | + | | | available only when **type** is set | + | | | to **HTTP**. | + | | | | + | | | Default: **/** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + POST + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors + + { + "healthmonitor" : { + "name" : "My Healthmonitor", + "max_retries" : 3, + "pool_id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0", + "type" : "HTTP", + "timeout" : 30, + "delay" : 1 + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "request_id" : "0e837340-f1bd-4037-8f61-9923d0f0b19e", + "healthmonitor" : { + "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "My Healthmonitor", + "delay" : 1, + "max_retries" : 3, + "pools" : [ { + "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0" + } ], + "admin_state_up" : true, + "timeout" : 30, + "type" : "HTTP", + "expected_codes" : "200", + "url_path" : "/", + "http_method" : "GET" + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/CreateL7Policy.html b/elb/api-ref/CreateL7Policy.html new file mode 100644 index 000000000..797fd659f --- /dev/null +++ b/elb/api-ref/CreateL7Policy.html @@ -0,0 +1,948 @@ + + +

      Adding a Forwarding Policy

      +

      Function

      This API is used to add a forwarding policy.

      + +

      Constraints

      The protocol of the listener to which requests are redirected can only be HTTPS.

      +

      The listener associated with the forwarding policy cannot be any listener added to other load balancers.

      + +

      URI

      POST /v3/{project_id}/elb/l7policies

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy

      +

      Yes

      +

      CreateL7PolicyOption object

      +

      Specifies the forwarding policy.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateL7PolicyOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      action

      +

      Yes

      +

      String

      +

      Specifies where requests will be forwarded. The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests will be forwarded to another backend server group.

        +
      • REDIRECT_TO_LISTENER: Requests will be redirected to an HTTPS listener.

        +
      +

      REDIRECT_TO_LISTENER has the highest priority. If requests are to be redirected to an HTTPS listener, other forwarding policies of the listener will become invalid.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • If action is set to REDIRECT_TO_POOL, the forwarding policy can be added to an HTTP or HTTPS listener.

        +
      • If action is set to REDIRECT_TO_LISTENER, the forwarding policy can be added to an HTTP listener.

        +
      +

      name

      +

      No

      +

      String

      +

      Specifies the forwarding policy name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      position

      +

      No

      +

      Integer

      +

      Specifies the forwarding policy priority. The value cannot be updated.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      redirect_listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which requests are redirected. This parameter is mandatory when action is set to REDIRECT_TO_LISTENER.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      redirect_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group that requests are forwarded to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_POOL. The specified backend server group cannot be the default one associated with the listener, or any backend server group associated with the forwarding policies of other listeners.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      redirect_url

      +

      No

      +

      String

      +

      Specifies the URL to which requests are forwarded.

      +

      Format: protocol://host:port/path?query

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      rules

      +

      No

      +

      Array of CreateL7PolicyRuleOption objects

      +

      Lists the forwarding rules in the forwarding policy.

      +

      The list can contain a maximum of 10 forwarding rules (if conditions is specified, a condition is considered as a rule).

      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      The entire list will be replaced if you update it.

      +

      priority

      +

      No

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter is available only for dedicated load balancers and will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      A smaller value indicates a higher priority. The value must be unique for each forwarding policy of the same listener.

      +

      If action is set to REDIRECT_TO_LISTENER, the value can only be 0, indicating that REDIRECT_TO_LISTENER has the highest priority.

      +
      • If enhance_l7policy_enable is set to false, forwarding policies are automatically prioritized based on the original sorting logic. Forwarding policy priorities are independent of each other regardless of domain names. If forwarding policies use the same domain name, their priorities follow the order of exact match (EQUAL_TO), prefix match (STARTS_WITH), and regular expression match (REGEX). If prefix match is used for matching, the longer the path, the higher the priority. If a forwarding policy contains only a domain name without a path specified, the path is /, and prefix match is used by default.

        +
      • If enhance_l7policy_enable is set to true and this parameter is not passed, the priority will set to a sum of 1 and the highest priority of existing forwarding policy in the same listener by default. There will be two cases: a) If the highest priority of existing forwarding policies is the maximum (10,000), the forwarding policy will fail to create because the final priority for creating the forwarding policy is the sum of 1 and 10,000, which exceeds the maximum. In this case, please specify a value or adjust the priorities of existing forwarding policies. b) If no forwarding policies exist, the highest priority of existing forwarding policies will set to 1 by default.

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 0

      +

      Maximum: 10000

      +

      redirect_url_config

      +

      No

      +

      CreateRedirectUrlConfig object

      +

      Specifies the URL to which requests are forwarded.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      For dedicated load balancers, this parameter will take effect only when advanced forwarding is enabled (enhance_l7policy_enable is set to true). If it is passed when enhance_l7policy_enable is set to false, an error will be returned.

      +

      Format: protocol://host:port/path?query

      +

      At least one of the four parameters (protocol, host, port, and path) must be passed, or their values cannot be set to ${xxx} at the same time. (${xxx} indicates that the value in the request will be inherited. For example, ${host} indicates the host in the URL to be redirected.)

      +

      The values of protocol and port cannot be the same as those of the associated listener, and either host or path must be passed or their values cannot be ${xxx} at the same time.

      +

      This parameter is unsupported. Please do not use it.

      +

      fixed_response_config

      +

      No

      +

      CreateFixtedResponseConfig object

      +

      Specifies the configuration of the page that will be returned. This parameter will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 CreateL7PolicyRuleOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The value can be true or false, and the default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the match content. The value can be one of the following:

      +
      • HOST_NAME: A domain name will be used for matching.

        +
      • PATH: A URL will be used for matching.

        +
      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      compare_type

      +

      Yes

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +

      If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO (exact match).

      +

      If type is set to PATH, this parameter can be set to REGEX (regular expression match), STARTS_WITH (prefix match), or EQUAL_TO (exact match).

      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value can be true or false, and the default value is false.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: false

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match item. For example, if an HTTP header is used for matching, key is the name of the HTTP header parameter.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      value

      +

      Yes

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      conditions

      +

      No

      +

      Array of CreateRuleCondition objects

      +

      Specifies the conditions contained in a forwarding rule. This parameter will take effect when enhance_l7policy_enable is set to true.

      +

      If conditions is specified, key and value will not take effect, and the value of this parameter will contain all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 6 CreateRuleCondition

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      Yes

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 CreateRedirectUrlConfig

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      protocol

      +

      No

      +

      String

      +

      Specifies the protocol for redirection. The default value is ${protocol}, indicating that the protocol of the request will be used.

      +

      Value options:

      +
      • HTTP

        +
      • HTTPS

        +
      • ${protocol}

        +
      +

      Default: ${protocol}

      +

      Minimum: 1

      +

      Maximum: 36

      +

      host

      +

      No

      +

      String

      +

      Specifies the host name that requests are redirected to. The value can contain only letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. The default value is ${host}, indicating that the host of the request will be used.

      +

      Default: ${host}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      port

      +

      No

      +

      String

      +

      Specifies the port that requests are redirected to. The default value is ${port}, indicating that the port of the request will be used.

      +

      Default: ${port}

      +

      Minimum: 1

      +

      Maximum: 16

      +

      path

      +

      No

      +

      String

      +

      Specifies the path that requests are redirected to. The default value is ${path}, indicating that the path of the request will be used.

      +

      The value can contain only letters, digits, and special characters _-';@^- %#&$.*+?,=!:|/()[]{} and must start with a slash (/).

      +

      Default: ${path}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      query

      +

      No

      +

      String

      +

      Specifies the query string set in the URL for redirection. The default value is ${query}, indicating that the query string of the request will be used.

      +

      For example, in the URL https://www.xxx.com:8080/elb?type=loadbalancer, ${query} indicates type=loadbalancer. If this parameter is set to ${query}&name=my_name, the URL will be redirected to https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name.

      +

      The value is case-sensitive and can contain only letters, digits, and special characters !$&'()*+,-./:;=?@^_`

      +

      Default: ${query}

      +

      Minimum: 0

      +

      Maximum: 128

      +

      status_code

      +

      Yes

      +

      String

      +

      Specifies the status code returned after the requests are redirected.

      +

      Value options:

      +
      • 301

        +
      • 302

        +
      • 303

        +
      • 307

        +
      • 308

        +
      +

      Minimum: 1

      +

      Maximum: 16

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 CreateFixtedResponseConfig

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      status_code

      +

      Yes

      +

      String

      +

      Specifies the fixed HTTP status code configured in the forwarding rule. The value can be any integer in the range of 200–299, 400–499, or 500–599.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      content_type

      +

      No

      +

      String

      +

      Specifies the format of the response body.

      +

      Value options:

      +
      • text/plain

        +
      • text/css

        +
      • text/html

        +
      • application/javascript

        +
      • application/json

        +
      +

      Minimum: 0

      +

      Maximum: 32

      +

      message_body

      +

      No

      +

      String

      +

      Specifies the content of the response body.

      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 9 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      l7policy

      +

      L7Policy object

      +

      Specifies the forwarding policy.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 10 L7Policy

      Parameter

      +

      Type

      +

      Description

      +

      action

      +

      String

      +

      Specifies where requests will be forwarded. The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests will be forwarded to another backend server group.

        +
      • REDIRECT_TO_LISTENER: Requests will be redirected to an HTTPS listener.

        +
      +

      REDIRECT_TO_LISTENER has the highest priority. If requests are to be redirected to an HTTPS listener, other forwarding policies of the listener will become invalid.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • If action is set to REDIRECT_TO_POOL, the forwarding policy can be added to an HTTP or HTTPS listener.

        +
      • If action is set to REDIRECT_TO_LISTENER, the forwarding policy can be added to an HTTP listener.

        +
      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      position

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter cannot be updated.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      project_id

      +

      String

      +

      Specifies the project ID of the forwarding policy.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding policy.

      +

      The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener that requests are redirected to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_LISTENER.

      +

      Only HTTPS listeners are supported, and the listener cannot be any listener added to other load balancers.

      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group that requests are forwarded to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_POOL.

      +

      The specified backend server group cannot be the default one associated with the listener, or any backend server group associated with the forwarding policies of other listeners.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which requests are forwarded.

      +

      Format: protocol://host:port/path?query

      +

      This parameter is unsupported. Please do not use it.

      +

      rules

      +

      Array of RuleRef objects

      +

      Lists the forwarding rules in the forwarding policy.

      +

      redirect_url_config

      +

      RedirectUrlConfig object

      +

      Specifies the URL to which requests are forwarded.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      For dedicated load balancers, this parameter will take effect only when advanced forwarding is enabled (enhance_l7policy_enable is set to true). If it is passed when enhance_l7policy_enable is set to false, an error will be returned.

      +

      Format: protocol://host:port/path?query

      +

      At least one of the four parameters (protocol, host, port, and path) must be passed, or their values cannot be set to ${xxx} at the same time. (${xxx} indicates that the value in the request will be inherited. For example, ${host} indicates the host in the URL to be redirected.)

      +

      The values of protocol and port cannot be the same as those of the associated listener, and either host or path must be passed or their values cannot be ${xxx} at the same time.

      +

      This parameter is unsupported. Please do not use it.

      +

      fixed_response_config

      +

      FixtedResponseConfig object

      +

      Specifies the configuration of the page that will be returned. This parameter will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      This parameter is unsupported. Please do not use it.

      +

      priority

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter is available only for dedicated load balancers and will take effect when enhance_l7policy_enable is set to true.

      +

      A smaller value indicates a higher priority. The value must be unique for each forwarding policy of the same listener.

      +

      If action is set to REDIRECT_TO_LISTENER, the value can only be 0, indicating that REDIRECT_TO_LISTENER has the highest priority.

      +
      • If enhance_l7policy_enable is set to false, forwarding policies are automatically prioritized based on the original sorting logic. Forwarding policy priorities are independent of each other regardless of domain names. If forwarding policies use the same domain name, their priorities follow the order of exact match (EQUAL_TO), prefix match (STARTS_WITH), and regular expression match (REGEX). If prefix match is used for matching, the longer the path, the higher the priority. If a forwarding policy contains only a domain name without a path specified, the path is /, and prefix match is used by default.

        +
      • If enhance_l7policy_enable is set to true and this parameter is not passed, the priority will set to a sum of 1 and the highest priority of existing forwarding policy in the same listener by default. There will be two cases: a) If the highest priority of existing forwarding policies is the maximum (10,000), the forwarding policy will fail to create because the final priority for creating the forwarding policy is the sum of 1 and 10,000, which exceeds the maximum. In this case, please specify a value or adjust the priorities of existing forwarding policies. b) If no forwarding policies exist, the highest priority of existing forwarding policies will set to 1 by default.

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 0

      +

      Maximum: 10000

      +
      + + + + + + + + + + + + +
      Table 11 RuleRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 12 RedirectUrlConfig

      Parameter

      +

      Type

      +

      Description

      +

      protocol

      +

      String

      +

      Specifies the protocol for redirection. The default value is ${protocol}, indicating that the protocol of the request will be used.

      +

      Value options:

      +
      • HTTP

        +
      • HTTPS

        +
      • ${protocol}

        +
      +

      Minimum: 1

      +

      Maximum: 36

      +

      host

      +

      String

      +

      Specifies the host name that requests are redirected to. The value can contain only letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. The default value is ${host}, indicating that the host of the request will be used.

      +

      Default: ${host}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      port

      +

      String

      +

      Specifies the port that requests are redirected to. The default value is ${port}, indicating that the port of the request will be used.

      +

      Default: ${port}

      +

      Minimum: 1

      +

      Maximum: 16

      +

      path

      +

      String

      +

      Specifies the path that requests are redirected to. The default value is ${path}, indicating that the path of the request will be used. The value can contain only letters, digits, and special characters _-';@^- %#&$.*+?,=!:|/()[]{} and must start with a slash (/).

      +

      Default: ${path}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      query

      +

      String

      +

      Specifies the query string set in the URL for redirection. The default value is ${query}, indicating that the query string of the request will be used.

      +

      For example, in the URL https://www.xxx.com:8080/elb?type=loadbalancer, ${query} indicates type=loadbalancer. If this parameter is set to ${query}&name=my_name, the URL will be redirected to https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name.

      +

      The value is case-sensitive and can contain only letters, digits, and special characters !$&'()*+,-./:;=?@^_`

      +

      Default: ${query}

      +

      Minimum: 0

      +

      Maximum: 128

      +

      status_code

      +

      String

      +

      Specifies the status code returned after the requests are redirected.

      +

      Value options:

      +
      • 301

        +
      • 302

        +
      • 303

        +
      • 307

        +
      • 308

        +
      +

      Minimum: 1

      +

      Maximum: 16

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 13 FixtedResponseConfig

      Parameter

      +

      Type

      +

      Description

      +

      status_code

      +

      String

      +

      Specifies the HTTP status code configured in the forwarding policy. The value can be any integer in the range of 200–299, 400–499, or 500–599.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      content_type

      +

      String

      +

      Specifies the format of the response body.

      +

      Value options:

      +
      • text/plain

        +
      • text/css

        +
      • text/html

        +
      • application/javascript

        +
      • application/json

        +
      +

      Minimum: 0

      +

      Maximum: 32

      +

      message_body

      +

      String

      +

      Specifies the content of the response body.

      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + +

      Example Requests

      Creating a redirection for a listener

      +
      POST
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies   
      +
      +{
      +  "l7policy" : {
      +    "action" : "REDIRECT_TO_LISTENER",
      +    "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab",
      +    "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050"
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "request_id" : "b60d1d9a-5263-45b0-b1d6-2810ac7c52a1",
      +  "l7policy" : {
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "rules" : [ ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab",
      +    "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050",
      +    "action" : "REDIRECT_TO_LISTENER",
      +    "position" : 100,
      +    "provisioning_status" : "ACTIVE",
      +    "id" : "cf4360fd-8631-41ff-a6f5-b72c35da74be",
      +    "name" : ""
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/CreateL7Policy.rst b/elb/api-ref/CreateL7Policy.rst new file mode 100644 index 000000000..9aec8817f --- /dev/null +++ b/elb/api-ref/CreateL7Policy.rst @@ -0,0 +1,1237 @@ +Adding a Forwarding Policy +========================== + +Function +^^^^^^^^ + +This API is used to add a forwarding policy. + +Constraints +^^^^^^^^^^^ + +The protocol of the listener to which requests are redirected can only be HTTPS. + +The listener associated with the forwarding policy cannot be any listener added to other load balancers. + +URI +^^^ + +POST /v3/{project_id}/elb/l7policies + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------+----------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=============================================+==================================+ + | l7policy | Yes | `CreateL7PolicyOption <#Creat | Specifies the forwarding policy. | + | | | eL7Policy__request_CreateL7PolicyOption>`__ | | + | | | object | | + +-----------+-----------+---------------------------------------------+----------------------------------+ + +.. table:: **Table 4** CreateL7PolicyOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | action | Yes | String | Specifies where requests | + | | | | will be forwarded. The | + | | | | value can be one of the | + | | | | following: | + | | | | | + | | | | - **REDIRECT_TO_POOL**: | + | | | | Requests will be | + | | | | forwarded to another | + | | | | backend server group. | + | | | | | + | | | | - | + | | | | **REDIRECT_TO_LISTENER**: | + | | | | Requests will be | + | | | | redirected to an HTTPS | + | | | | listener. | + | | | | | + | | | | **REDIRECT_TO_LISTENER** | + | | | | has the highest priority. | + | | | | If requests are to be | + | | | | redirected to an HTTPS | + | | | | listener, other forwarding | + | | | | policies of the listener | + | | | | will become invalid. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding policy. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | forwarding policy. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | Yes | String | Specifies the ID of the | + | | | | listener to which the | + | | | | forwarding policy is added. | + | | | | | + | | | | - If **action** is set to | + | | | | **REDIRECT_TO_POOL**, | + | | | | the forwarding policy | + | | | | can be added to an HTTP | + | | | | or HTTPS listener. | + | | | | | + | | | | - If **action** is set to | + | | | | | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | the forwarding policy | + | | | | can be added to an HTTP | + | | | | listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the forwarding | + | | | | policy name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | position | No | Integer | Specifies the forwarding | + | | | | policy priority. The value | + | | | | cannot be updated. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **100** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | forwarding policy is used. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **32** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_listener_id | No | String | Specifies the ID of the | + | | | | listener to which requests | + | | | | are redirected. This | + | | | | parameter is mandatory when | + | | | | **action** is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | For shared load balancers, | + | | | | this parameter is not | + | | | | supported. If it is passed, | + | | | | an error will be returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_pool_id | No | String | Specifies the ID of the | + | | | | backend server group that | + | | | | requests are forwarded to. | + | | | | | + | | | | This parameter is valid and | + | | | | mandatory only when | + | | | | **action** is set to | + | | | | **REDIRECT_TO_POOL**. The | + | | | | specified backend server | + | | | | group cannot be the default | + | | | | one associated with the | + | | | | listener, or any backend | + | | | | server group associated | + | | | | with the forwarding | + | | | | policies of other | + | | | | listeners. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_LISTENER**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_url | No | String | Specifies the URL to which | + | | | | requests are forwarded. | + | | | | | + | | | | Format: | + | | | | *proto | + | | | | col://host:port/path?query* | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | rules | No | Array of | Lists the forwarding rules | + | | | `CreateL7PolicyRuleOption | in the forwarding policy. | + | | | <#CreateL7Policy__request_C | | + | | | reateL7PolicyRuleOption>`__ | The list can contain a | + | | | objects | maximum of 10 forwarding | + | | | | rules (if **conditions** is | + | | | | specified, a condition is | + | | | | considered as a rule). | + | | | | | + | | | | If **type** is set to | + | | | | **HOST_NAME**, **PATH**, | + | | | | **METHOD**, or | + | | | | **SOURCE_IP**, only one | + | | | | forwarding rule can be | + | | | | created for each type. | + | | | | | + | | | | The entire list will be | + | | | | replaced if you update it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | priority | No | Integer | Specifies the forwarding | + | | | | policy priority. This | + | | | | parameter is available only | + | | | | for dedicated load | + | | | | balancers and will take | + | | | | effect when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**. If this | + | | | | parameter is passed and | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, an | + | | | | error will be returned. For | + | | | | shared load balancers, this | + | | | | parameter is not supported. | + | | | | If it is passed, an error | + | | | | will be returned. | + | | | | | + | | | | A smaller value indicates a | + | | | | higher priority. The value | + | | | | must be unique for each | + | | | | forwarding policy of the | + | | | | same listener. | + | | | | | + | | | | If **action** is set to | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | the value can only be | + | | | | **0**, indicating that | + | | | | **REDIRECT_TO_LISTENER** | + | | | | has the highest priority. | + | | | | | + | | | | - If | + | | | | | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, | + | | | | forwarding policies are | + | | | | automatically | + | | | | prioritized based on the | + | | | | original sorting logic. | + | | | | Forwarding policy | + | | | | priorities are | + | | | | independent of each | + | | | | other regardless of | + | | | | domain names. If | + | | | | forwarding policies use | + | | | | the same domain name, | + | | | | their priorities follow | + | | | | the order of exact match | + | | | | (**EQUAL_TO**), prefix | + | | | | match (**STARTS_WITH**), | + | | | | and regular expression | + | | | | match (**REGEX**). If | + | | | | prefix match is used for | + | | | | matching, the longer the | + | | | | path, the higher the | + | | | | priority. If a | + | | | | forwarding policy | + | | | | contains only a domain | + | | | | name without a path | + | | | | specified, the path is | + | | | | **/**, and prefix match | + | | | | is used by default. | + | | | | | + | | | | - If | + | | | | | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true** and | + | | | | this parameter is not | + | | | | passed, the priority | + | | | | will set to a sum of 1 | + | | | | and the highest priority | + | | | | of existing forwarding | + | | | | policy in the same | + | | | | listener by default. | + | | | | There will be two cases: | + | | | | a) If the highest | + | | | | priority of existing | + | | | | forwarding policies is | + | | | | the maximum (10,000), | + | | | | the forwarding policy | + | | | | will fail to create | + | | | | because the final | + | | | | priority for creating | + | | | | the forwarding policy is | + | | | | the sum of 1 and 10,000, | + | | | | which exceeds the | + | | | | maximum. In this case, | + | | | | please specify a value | + | | | | or adjust the priorities | + | | | | of existing forwarding | + | | | | policies. b) If no | + | | | | forwarding policies | + | | | | exist, the highest | + | | | | priority of existing | + | | | | forwarding policies will | + | | | | set to 1 by default. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **10000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_url_config | No | `CreateRedirectUrlConfig | Specifies the URL to which | + | | | <#CreateL7Policy__request_ | requests are forwarded. | + | | | CreateRedirectUrlConfig>`__ | | + | | | object | For shared load balancers, | + | | | | this parameter is not | + | | | | supported. If it is passed, | + | | | | an error will be returned. | + | | | | | + | | | | For dedicated load | + | | | | balancers, this parameter | + | | | | will take effect only when | + | | | | advanced forwarding is | + | | | | enabled | + | | | | ( | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**). If it | + | | | | is passed when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, an | + | | | | error will be returned. | + | | | | | + | | | | Format: | + | | | | *proto | + | | | | col://host:port/path?query* | + | | | | | + | | | | At least one of the four | + | | | | parameters (**protocol**, | + | | | | **host**, **port**, and | + | | | | **path**) must be passed, | + | | | | or their values cannot be | + | | | | set to **${xxx}** at the | + | | | | same time. (**${xxx}** | + | | | | indicates that the value in | + | | | | the request will be | + | | | | inherited. For example, | + | | | | **${host}** indicates the | + | | | | host in the URL to be | + | | | | redirected.) | + | | | | | + | | | | The values of **protocol** | + | | | | and **port** cannot be the | + | | | | same as those of the | + | | | | associated listener, and | + | | | | either **host** or **path** | + | | | | must be passed or their | + | | | | values cannot be **${xxx}** | + | | | | at the same time. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | fixed_response_config | No | `Cr | Specifies the configuration | + | | | eateFixtedResponseConfig <# | of the page that will be | + | | | CreateL7Policy__request_Cre | returned. This parameter | + | | | ateFixtedResponseConfig>`__ | will take effect when | + | | | object | **enhance_l7policy_enable** | + | | | | is set to **true**. If this | + | | | | parameter is passed and | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, an | + | | | | error will be returned. For | + | | | | shared load balancers, this | + | | | | parameter is not supported. | + | | | | If it is passed, an error | + | | | | will be returned. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** CreateL7PolicyRuleOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. The | + | | | | value can be **true** or | + | | | | **false**, and the default | + | | | | value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the match | + | | | | content. The value can be | + | | | | one of the following: | + | | | | | + | | | | - **HOST_NAME**: A domain | + | | | | name will be used for | + | | | | matching. | + | | | | | + | | | | - **PATH**: A URL will be | + | | | | used for matching. | + | | | | | + | | | | If **type** is set to | + | | | | **HOST_NAME**, **PATH**, | + | | | | **METHOD**, or | + | | | | **SOURCE_IP**, only one | + | | | | forwarding rule can be | + | | | | created for each type. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | Yes | String | Specifies how requests are | + | | | | matched with the domain | + | | | | name or URL. | + | | | | | + | | | | If **type** is set to | + | | | | **HOST_NAME**, this | + | | | | parameter can only be set | + | | | | to **EQUAL_TO** (exact | + | | | | match). | + | | | | | + | | | | If **type** is set to | + | | | | **PATH**, this parameter | + | | | | can be set to **REGEX** | + | | | | (regular expression match), | + | | | | **STARTS_WITH** (prefix | + | | | | match), or **EQUAL_TO** | + | | | | (exact match). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. The | + | | | | value can be **true** or | + | | | | **false**, and the default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match item. For example, if | + | | | | an HTTP header is used for | + | | | | matching, **key** is the | + | | | | name of the HTTP header | + | | | | parameter. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match item. For example, if | + | | | | a domain name is used for | + | | | | matching, **value** is the | + | | | | domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.) and must | + | | | | start with a letter or | + | | | | digit. If you want to | + | | | | use a wildcard domain | + | | | | name, enter an asterisk | + | | | | (*) as the leftmost | + | | | | label of the domain | + | | | | name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH** and | + | | | | **compare_type** to | + | | | | **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | conditions | No | Array of | Specifies the conditions | + | | | `CreateRuleCondi | contained in a forwarding | + | | | tion <#CreateL7Policy__requ | rule. This parameter will | + | | | est_CreateRuleCondition>`__ | take effect when | + | | | objects | **enhance_l7policy_enable** | + | | | | is set to **true**. | + | | | | | + | | | | If **conditions** is | + | | | | specified, **key** and | + | | | | **value** will not take | + | | | | effect, and the value of | + | | | | this parameter will contain | + | | | | all conditions configured | + | | | | for the forwarding rule. | + | | | | The keys in the list must | + | | | | be the same, whereas each | + | | | | value must be unique. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 6** CreateRuleCondition + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | key | No | String | Specifies the key of match | + | | | | item. This parameter is | + | | | | left blank. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match item. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, **key** | + | | | | is left blank, and | + | | | | **value** indicates the | + | | | | domain name, which can | + | | | | contain 1 to 128 | + | | | | characters, including | + | | | | letters, digits, hyphens | + | | | | (-), periods (.), and | + | | | | asterisks (*), and must | + | | | | start with a letter, | + | | | | digit, or asterisk (*). | + | | | | If you want to use a | + | | | | wildcard domain name, | + | | | | enter an asterisk (*) as | + | | | | the leftmost label of | + | | | | the domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, **key** is | + | | | | left blank, and | + | | | | **value** indicates the | + | | | | request path, which can | + | | | | contain 1 to 128 | + | | | | characters. If | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO** for the | + | | | | forwarding rule, the | + | | | | value must start with a | + | | | | slash (/) and can | + | | | | contain only letters, | + | | | | digits, and special | + | | | | characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 7** CreateRedirectUrlConfig + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | protocol | No | String | Specifies the protocol for | + | | | | redirection. The default | + | | | | value is **${protocol}**, | + | | | | indicating that the | + | | | | protocol of the request | + | | | | will be used. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **HTTP** | + | | | | | + | | | | - **HTTPS** | + | | | | | + | | | | - **${protocol}** | + | | | | | + | | | | Default: **${protocol}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | host | No | String | Specifies the host name | + | | | | that requests are | + | | | | redirected to. The value | + | | | | can contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.) and must start | + | | | | with a letter or digit. The | + | | | | default value is | + | | | | **${host}**, indicating | + | | | | that the host of the | + | | | | request will be used. | + | | | | | + | | | | Default: **${host}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | port | No | String | Specifies the port that | + | | | | requests are redirected to. | + | | | | The default value is | + | | | | **${port}**, indicating | + | | | | that the port of the | + | | | | request will be used. | + | | | | | + | | | | Default: **${port}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | path | No | String | Specifies the path that | + | | | | requests are redirected to. | + | | | | The default value is | + | | | | **${path}**, indicating | + | | | | that the path of the | + | | | | request will be used. | + | | | | | + | | | | The value can contain only | + | | | | letters, digits, and | + | | | | special characters \_-';@^- | + | | | | %#&$.*+?,=!:|/()[]{} and | + | | | | must start with a slash | + | | | | (/). | + | | | | | + | | | | Default: **${path}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | query | No | String | Specifies the query string | + | | | | set in the URL for | + | | | | redirection. The default | + | | | | value is **${query}**, | + | | | | indicating that the query | + | | | | string of the request will | + | | | | be used. | + | | | | | + | | | | For example, in the URL | + | | | | **https://www.xxx.com:80 | + | | | | 80/elb?type=loadbalancer**, | + | | | | **${query}** indicates | + | | | | **type=loadbalancer**. If | + | | | | this parameter is set to | + | | | | **${query}&name=my_name**, | + | | | | the URL will be redirected | + | | | | to | + | | | | **https:// | + | | | | www.xxx.com:8080/elb?type=l | + | | | | oadbalancer&name=my_name**. | + | | | | | + | | | | The value is case-sensitive | + | | | | and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | !$&'()*+,-./:;=?@^_\` | + | | | | | + | | | | Default: **${query}** | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | status_code | Yes | String | Specifies the status code | + | | | | returned after the requests | + | | | | are redirected. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **301** | + | | | | | + | | | | - **302** | + | | | | | + | | | | - **303** | + | | | | | + | | | | - **307** | + | | | | | + | | | | - **308** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 8** CreateFixtedResponseConfig + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | status_code | Yes | String | Specifies the fixed HTTP | + | | | | status code configured in | + | | | | the forwarding rule. The | + | | | | value can be any integer in | + | | | | the range of 200–299, | + | | | | 400–499, or 500–599. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | content_type | No | String | Specifies the format of the | + | | | | response body. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **text/plain** | + | | | | | + | | | | - **text/css** | + | | | | | + | | | | - **text/html** | + | | | | | + | | | | - | + | | | | **application/javascript** | + | | | | | + | | | | - **application/json** | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **32** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | message_body | No | String | Specifies the content of | + | | | | the response body. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **1024** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 9** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | l7policy | `L7Policy <#CreateL7Policy__response_L7Policy>`__ | Specifies the forwarding policy. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 10** L7Policy + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | action | String | Specifies where requests will be | + | | | forwarded. The value can be one of | + | | | the following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests | + | | | will be forwarded to another | + | | | backend server group. | + | | | | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | will be redirected to an HTTPS | + | | | listener. | + | | | | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. If requests are to | + | | | be redirected to an HTTPS listener, | + | | | other forwarding policies of the | + | | | listener will become invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_POOL**, the | + | | | forwarding policy can be added to | + | | | an HTTP or HTTPS listener. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the | + | | | forwarding policy can be added to | + | | | an HTTP listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding policy | + | | | priority. This parameter cannot be | + | | | updated. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **100** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the | + | | | forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding policy. | + | | | | + | | | The value can only be **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener that | + | | | requests are redirected to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + | | | | + | | | Only HTTPS listeners are supported, | + | | | and the listener cannot be any | + | | | listener added to other load | + | | | balancers. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group that requests are | + | | | forwarded to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_POOL**. | + | | | | + | | | The specified backend server group | + | | | cannot be the default one associated | + | | | with the listener, or any backend | + | | | server group associated with the | + | | | forwarding policies of other | + | | | listeners. | + | | | | + | | | This parameter cannot be specified | + | | | when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which requests | + | | | are forwarded. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array of | Lists the forwarding rules in the | + | | `RuleRef < | forwarding policy. | + | | #CreateL7Policy__response_RuleRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url_config | `RedirectUrlConfig <#CreateL7P | Specifies the URL to which requests | + | | olicy__response_RedirectUrlConfig>`__ | are forwarded. | + | | object | | + | | | For shared load balancers, this | + | | | parameter is not supported. If it is | + | | | passed, an error will be returned. | + | | | | + | | | For dedicated load balancers, this | + | | | parameter will take effect only when | + | | | advanced forwarding is enabled | + | | | (**enhance_l7policy_enable** is set | + | | | to **true**). If it is passed when | + | | | **enhance_l7policy_enable** is set to | + | | | **false**, an error will be returned. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | At least one of the four parameters | + | | | (**protocol**, **host**, **port**, | + | | | and **path**) must be passed, or | + | | | their values cannot be set to | + | | | **${xxx}** at the same time. | + | | | (**${xxx}** indicates that the value | + | | | in the request will be inherited. For | + | | | example, **${host}** indicates the | + | | | host in the URL to be redirected.) | + | | | | + | | | The values of **protocol** and | + | | | **port** cannot be the same as those | + | | | of the associated listener, and | + | | | either **host** or **path** must be | + | | | passed or their values cannot be | + | | | **${xxx}** at the same time. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | fixed_response_config | `FixtedResponseConfig <#CreateL7Poli | Specifies the configuration of the | + | | cy__response_FixtedResponseConfig>`__ | page that will be returned. This | + | | object | parameter will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. If this parameter is passed | + | | | and **enhance_l7policy_enable** is | + | | | set to **false**, an error will be | + | | | returned. For shared load balancers, | + | | | this parameter is not supported. If | + | | | it is passed, an error will be | + | | | returned. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | priority | Integer | Specifies the forwarding policy | + | | | priority. This parameter is available | + | | | only for dedicated load balancers and | + | | | will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. | + | | | | + | | | A smaller value indicates a higher | + | | | priority. The value must be unique | + | | | for each forwarding policy of the | + | | | same listener. | + | | | | + | | | If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the value | + | | | can only be **0**, indicating that | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **false**, forwarding | + | | | policies are automatically | + | | | prioritized based on the original | + | | | sorting logic. Forwarding policy | + | | | priorities are independent of each | + | | | other regardless of domain names. | + | | | If forwarding policies use the | + | | | same domain name, their priorities | + | | | follow the order of exact match | + | | | (**EQUAL_TO**), prefix match | + | | | (**STARTS_WITH**), and regular | + | | | expression match (**REGEX**). If | + | | | prefix match is used for matching, | + | | | the longer the path, the higher | + | | | the priority. If a forwarding | + | | | policy contains only a domain name | + | | | without a path specified, the path | + | | | is **/**, and prefix match is used | + | | | by default. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **true** and this parameter | + | | | is not passed, the priority will | + | | | set to a sum of 1 and the highest | + | | | priority of existing forwarding | + | | | policy in the same listener by | + | | | default. There will be two cases: | + | | | a) If the highest priority of | + | | | existing forwarding policies is | + | | | the maximum (10,000), the | + | | | forwarding policy will fail to | + | | | create because the final priority | + | | | for creating the forwarding policy | + | | | is the sum of 1 and 10,000, which | + | | | exceeds the maximum. In this case, | + | | | please specify a value or adjust | + | | | the priorities of existing | + | | | forwarding policies. b) If no | + | | | forwarding policies exist, the | + | | | highest priority of existing | + | | | forwarding policies will set to 1 | + | | | by default. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **10000** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** RuleRef + + ========= ====== ================================= + Parameter Type Description + ========= ====== ================================= + id String Specifies the forwarding rule ID. + ========= ====== ================================= + +.. table:: **Table 12** RedirectUrlConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | protocol | String | Specifies the protocol for | + | | | redirection. The default value is | + | | | **${protocol}**, indicating that the | + | | | protocol of the request will be used. | + | | | | + | | | Value options: | + | | | | + | | | - **HTTP** | + | | | | + | | | - **HTTPS** | + | | | | + | | | - **${protocol}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | host | String | Specifies the host name that requests | + | | | are redirected to. The value can | + | | | contain only letters, digits, hyphens | + | | | (-), and periods (.) and must start | + | | | with a letter or digit. The default | + | | | value is **${host}**, indicating that | + | | | the host of the request will be used. | + | | | | + | | | Default: **${host}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | String | Specifies the port that requests are | + | | | redirected to. The default value is | + | | | **${port}**, indicating that the port | + | | | of the request will be used. | + | | | | + | | | Default: **${port}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | path | String | Specifies the path that requests are | + | | | redirected to. The default value is | + | | | **${path}**, indicating that the path | + | | | of the request will be used. The | + | | | value can contain only letters, | + | | | digits, and special characters | + | | | \_-';@^- %#&$.*+?,=!:|/()[]{} and | + | | | must start with a slash (/). | + | | | | + | | | Default: **${path}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | query | String | Specifies the query string set in the | + | | | URL for redirection. The default | + | | | value is **${query}**, indicating | + | | | that the query string of the request | + | | | will be used. | + | | | | + | | | For example, in the URL | + | | | **https://www. | + | | | xxx.com:8080/elb?type=loadbalancer**, | + | | | **${query}** indicates | + | | | **type=loadbalancer**. If this | + | | | parameter is set to | + | | | **${query}&name=my_name**, the URL | + | | | will be redirected to | + | | | **https://www.xxx.com:8080/ | + | | | elb?type=loadbalancer&name=my_name**. | + | | | | + | | | The value is case-sensitive and can | + | | | contain only letters, digits, and | + | | | special characters | + | | | !$&'()*+,-./:;=?@^_\` | + | | | | + | | | Default: **${query}** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status_code | String | Specifies the status code returned | + | | | after the requests are redirected. | + | | | | + | | | Value options: | + | | | | + | | | - **301** | + | | | | + | | | - **302** | + | | | | + | | | - **303** | + | | | | + | | | - **307** | + | | | | + | | | - **308** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 13** FixtedResponseConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | status_code | String | Specifies the HTTP status code | + | | | configured in the forwarding policy. | + | | | The value can be any integer in the | + | | | range of 200–299, 400–499, or | + | | | 500–599. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | content_type | String | Specifies the format of the response | + | | | body. | + | | | | + | | | Value options: | + | | | | + | | | - **text/plain** | + | | | | + | | | - **text/css** | + | | | | + | | | - **text/html** | + | | | | + | | | - **application/javascript** | + | | | | + | | | - **application/json** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | message_body | String | Specifies the content of the response | + | | | body. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +Creating a redirection for a listener + +.. code:: screen + + POST + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies + + { + "l7policy" : { + "action" : "REDIRECT_TO_LISTENER", + "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab", + "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "request_id" : "b60d1d9a-5263-45b0-b1d6-2810ac7c52a1", + "l7policy" : { + "description" : "", + "admin_state_up" : true, + "rules" : [ ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab", + "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050", + "action" : "REDIRECT_TO_LISTENER", + "position" : 100, + "provisioning_status" : "ACTIVE", + "id" : "cf4360fd-8631-41ff-a6f5-b72c35da74be", + "name" : "" + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/CreateL7Rule.html b/elb/api-ref/CreateL7Rule.html new file mode 100644 index 000000000..aff63aad7 --- /dev/null +++ b/elb/api-ref/CreateL7Rule.html @@ -0,0 +1,448 @@ + + +

      Adding a Forwarding Rule

      +

      Function

      This API is used to add a forwarding rule.

      + +

      URI

      POST /v3/{project_id}/elb/l7policies/{l7policy_id}/rules

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      rule

      +

      Yes

      +

      CreateL7RuleOption object

      +

      Specifies the forwarding rule.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateL7RuleOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      compare_type

      +

      Yes

      +

      String

      +

      Specifies how requests are matched and forwarded.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO. Asterisks (*) can be used as wildcard characters.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match item. For example, if an HTTP header is used for matching, key is the name of the HTTP header parameter.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      value

      +

      Yes

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the match content. The value can be one of the following:

      +
      • HOST_NAME: A domain name will be used for matching.

        +
      • PATH: A URL will be used for matching.

        +
      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value can be true or false, and the default value is false.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: false

      +

      conditions

      +

      No

      +

      Array of CreateRuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule. This parameter will take effect when enhance_l7policy_enable is set to true.

      +

      If conditions is specified, key and value will not take effect, and the value of this parameter will contain all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 5 CreateRuleCondition

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      Yes

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 6 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      rule

      +

      L7Rule object

      +

      Specifies the forwarding rule.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 L7Rule

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      compare_type

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      key

      +

      String

      +

      Specifies the key of the match content. This parameter will not take effect when type is set to HOST_NAME or PATH. It can be updated but will not take effect.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      String

      +

      Specifies the match content. The value can be one of the following:

      +
      • HOST_NAME: A domain name will be used for matching.

        +
      • PATH: A URL will be used for matching.

        +
      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      value

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding rule.

      +

      The value can only be ACTIVE.

      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      Default: false

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      conditions

      +

      Array of RuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule.

      +
      • If conditions is specified, key and value will not take effect, and the value of this parameter will contain all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique.

        +
      • If conditions is not specified, the values of key and value are displayed.

        +
      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + +
      Table 8 RuleCondition

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +
      + + +

      Example Requests

      POST
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules
      +
      +{
      +  "rule" : {
      +    "compare_type" : "EQUAL_TO",
      +    "type" : "PATH",
      +    "value" : "/bbb.html"
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "rule" : {
      +    "compare_type" : "EQUAL_TO",
      +    "provisioning_status" : "ACTIVE",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "invert" : false,
      +    "admin_state_up" : true,
      +    "value" : "/bbb.html",
      +    "type" : "PATH",
      +    "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7"
      +  },
      +  "request_id" : "3639f1b7-f04b-496e-9218-ec5a9e493f69"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/CreateL7Rule.rst b/elb/api-ref/CreateL7Rule.rst new file mode 100644 index 000000000..ef1e6524d --- /dev/null +++ b/elb/api-ref/CreateL7Rule.rst @@ -0,0 +1,467 @@ +Adding a Forwarding Rule +======================== + +Function +^^^^^^^^ + +This API is used to add a forwarding rule. + +URI +^^^ + +POST /v3/{project_id}/elb/l7policies/{l7policy_id}/rules + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + project_id Yes String Specifies the project ID. + =========== ========= ====== =================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------+--------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=============================================+================================+ + | rule | Yes | `CreateL7RuleOption <#C | Specifies the forwarding rule. | + | | | reateL7Rule__request_CreateL7RuleOption>`__ | | + | | | object | | + +-----------+-----------+---------------------------------------------+--------------------------------+ + +.. table:: **Table 4** CreateL7RuleOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | Yes | String | Specifies how requests are | + | | | | matched and forwarded. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, this | + | | | | parameter can only be | + | | | | set to **EQUAL_TO**. | + | | | | Asterisks (*) can be | + | | | | used as wildcard | + | | | | characters. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, this parameter | + | | | | can be set to **REGEX**, | + | | | | **STARTS_WITH**, or | + | | | | **EQUAL_TO**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match item. For example, if | + | | | | an HTTP header is used for | + | | | | matching, **key** is the | + | | | | name of the HTTP header | + | | | | parameter. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match item. For example, if | + | | | | a domain name is used for | + | | | | matching, **value** is the | + | | | | domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.) and must | + | | | | start with a letter or | + | | | | digit. If you want to | + | | | | use a wildcard domain | + | | | | name, enter an asterisk | + | | | | (*) as the leftmost | + | | | | label of the domain | + | | | | name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH** and | + | | | | **compare_type** to | + | | | | **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the match | + | | | | content. The value can be | + | | | | one of the following: | + | | | | | + | | | | - **HOST_NAME**: A domain | + | | | | name will be used for | + | | | | matching. | + | | | | | + | | | | - **PATH**: A URL will be | + | | | | used for matching. | + | | | | | + | | | | If **type** is set to | + | | | | **HOST_NAME**, **PATH**, | + | | | | **METHOD**, or | + | | | | **SOURCE_IP**, only one | + | | | | forwarding rule can be | + | | | | created for each type. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. The | + | | | | value can be **true** or | + | | | | **false**, and the default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | conditions | No | Array of | Specifies the matching | + | | | `CreateRuleCon | conditions of the | + | | | dition <#CreateL7Rule__requ | forwarding rule. This | + | | | est_CreateRuleCondition>`__ | parameter will take effect | + | | | objects | when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**. | + | | | | | + | | | | If **conditions** is | + | | | | specified, **key** and | + | | | | **value** will not take | + | | | | effect, and the value of | + | | | | this parameter will contain | + | | | | all conditions configured | + | | | | for the forwarding rule. | + | | | | The keys in the list must | + | | | | be the same, whereas each | + | | | | value must be unique. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** CreateRuleCondition + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | key | No | String | Specifies the key of match | + | | | | item. This parameter is | + | | | | left blank. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match item. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, **key** | + | | | | is left blank, and | + | | | | **value** indicates the | + | | | | domain name, which can | + | | | | contain 1 to 128 | + | | | | characters, including | + | | | | letters, digits, hyphens | + | | | | (-), periods (.), and | + | | | | asterisks (*), and must | + | | | | start with a letter, | + | | | | digit, or asterisk (*). | + | | | | If you want to use a | + | | | | wildcard domain name, | + | | | | enter an asterisk (*) as | + | | | | the leftmost label of | + | | | | the domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, **key** is | + | | | | left blank, and | + | | | | **value** indicates the | + | | | | request path, which can | + | | | | contain 1 to 128 | + | | | | characters. If | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO** for the | + | | | | forwarding rule, the | + | | | | value must start with a | + | | | | slash (/) and can | + | | | | contain only letters, | + | | | | digits, and special | + | | | | characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 6** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | rule | `L7Rule <#CreateL7Rule__response_L7Rule>`__ | Specifies the forwarding rule. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 7** L7Rule + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies how requests are matched | + | | | with the domain name or URL. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, this parameter can | + | | | only be set to **EQUAL_TO**. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | this parameter can be set to | + | | | **REGEX**, **STARTS_WITH**, or | + | | | **EQUAL_TO**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. This parameter will not take | + | | | effect when **type** is set to | + | | | **HOST_NAME** or **PATH**. It can be | + | | | updated but will not take effect. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match content. The | + | | | value can be one of the following: | + | | | | + | | | - **HOST_NAME**: A domain name will | + | | | be used for matching. | + | | | | + | | | - **PATH**: A URL will be used for | + | | | matching. | + | | | | + | | | If **type** is set to **HOST_NAME**, | + | | | **PATH**, **METHOD**, or | + | | | **SOURCE_IP**, only one forwarding | + | | | rule can be created for each type. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. For example, if a domain name | + | | | is used for matching, **value** is | + | | | the domain name. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain letters, digits, hyphens | + | | | (-), and periods (.) and must | + | | | start with a letter or digit. If | + | | | you want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH** and | + | | | **compare_type** to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding rule. | + | | | | + | | | The value can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. The value is fixed at | + | | | **false**. This parameter can be | + | | | updated but remains invalid. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | conditions | Array of | Specifies the matching conditions of | + | | `RuleCondition <#Cre | the forwarding rule. | + | | ateL7Rule__response_RuleCondition>`__ | | + | | objects | - If **conditions** is specified, | + | | | **key** and **value** will not | + | | | take effect, and the value of this | + | | | parameter will contain all | + | | | conditions configured for the | + | | | forwarding rule. The keys in the | + | | | list must be the same, whereas | + | | | each value must be unique. | + | | | | + | | | - If **conditions** is not | + | | | specified, the values of **key** | + | | | and **value** are displayed. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** RuleCondition + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the key of match item. This | + | | | parameter is left blank. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, **key** is left | + | | | blank, and **value** indicates the | + | | | domain name, which can contain 1 | + | | | to 128 characters, including | + | | | letters, digits, hyphens (-), | + | | | periods (.), and asterisks (*), | + | | | and must start with a letter, | + | | | digit, or asterisk (*). If you | + | | | want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | **key** is left blank, and | + | | | **value** indicates the request | + | | | path, which can contain 1 to 128 | + | | | characters. If **compare_type** is | + | | | set to **STARTS_WITH** or | + | | | **EQUAL_TO** for the forwarding | + | | | rule, the value must start with a | + | | | slash (/) and can contain only | + | | | letters, digits, and special | + | | | characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + POST + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules + + { + "rule" : { + "compare_type" : "EQUAL_TO", + "type" : "PATH", + "value" : "/bbb.html" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "rule" : { + "compare_type" : "EQUAL_TO", + "provisioning_status" : "ACTIVE", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "invert" : false, + "admin_state_up" : true, + "value" : "/bbb.html", + "type" : "PATH", + "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7" + }, + "request_id" : "3639f1b7-f04b-496e-9218-ec5a9e493f69" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/CreateListener.html b/elb/api-ref/CreateListener.html new file mode 100644 index 000000000..78f5c55c2 --- /dev/null +++ b/elb/api-ref/CreateListener.html @@ -0,0 +1,975 @@ + + +

      Adding a Listener

      +

      Function

      This API is used to add a listener to a load balancer.

      + +

      Constraints

      Only the administrator can specify connection_limit.

      +
      • The listener protocol can be TCP, HTTP, UDP, or HTTPS.

        +
      • For load balancing at Layer 4, the listener protocol can only be TCP or UDP.

        +
      • For load balancing at Layer 7, the listener protocol can only be HTTP or HTTPS.

        +
      • For load balancing both at Layer 4 and Layer 7, TCP, UDP, HTTP, and HTTPS are supported.

        +
      + +

      URI

      POST /v3/{project_id}/elb/listeners

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener

      +

      Yes

      +

      CreateListenerOption object

      +

      Specifies the listener.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateListenerOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the listener. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      client_ca_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      default_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests are forwarded to the default backend server for processing.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      default_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the listener.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      http2_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      insert_headers

      +

      No

      +

      ListenerInsertHeaders object

      +

      Specifies the HTTP header fields.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the load balancer that the listener is added to.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      No

      +

      String

      +

      Specifies the listener name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      protocol

      +

      Yes

      +

      String

      +

      Specifies the protocol used by the listener. The protocol can be TCP, HTTP, UDP, or HTTPS.

      +

      protocol_port

      +

      Yes

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      sni_container_refs

      +

      No

      +

      Array of strings

      +

      Lists the IDs of SNI certificates (server certificates with domain names) used by the listener.

      +

      Each SNI certificate can have up to 30 domain names, and each domain name in the SNI certificate must be unique.

      +

      This parameter will be ignored and an empty array will be returned if the listener's protocol is not HTTPS.

      +

      tags

      +

      No

      +

      Array of Tag objects

      +

      Lists the tags.

      +

      tls_ciphers_policy

      +

      No

      +

      String

      +

      Specifies the security policy that will be used by the listener.

      +

      This parameter is available only for HTTPS listeners. The default value is tls-1-0.

      +

      An error will be returned if the protocol of the listener is not HTTPS.

      +

      Value options:

      +
      • tls-1-0

        +
      • tls-1-1

        +
      • tls-1-2

        +
      • tls-1-2-strict

        +
      +

      enable_member_retry

      +

      No

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers.

      +

      This parameter is available only for HTTP and HTTPS listeners.

      +

      An error will be returned if you configure this parameter for TCP and UDP listeners.

      +

      Default: true

      +

      keepalive_timeout

      +

      No

      +

      Integer

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter is not available. An error will be returned if you configure this parameter for UDP listeners.

        +
      +

      client_timeout

      +

      No

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      An error will be returned if you configure this parameter for TCP and UDP listeners.

      +

      Minimum: 1

      +

      Maximum: 300

      +

      Default: 60

      +

      member_timeout

      +

      No

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      An error will be returned if you configure this parameter for TCP and UDP listeners.

      +

      ipgroup

      +

      No

      +

      CreateListenerIpGroupOption object

      +

      Specifies the IP address group associated with the listener.

      +

      The value can be null or an empty JSON structure, indicating that no IP address group is associated with the listener.

      +

      ipgroup_id is also required if you want to associate an IP address group with the listener.

      +

      This parameter is unsupported. Please do not use it.

      +

      transparent_client_ip_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +

      enhance_l7policy_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to enable advanced forwarding. The value can be true or false (default).

      +
      • true indicates that advanced forwarding will be enabled.

        +
      • false indicates that advanced forwarding will not be enabled.

        +
      +

      The following parameters will be available only when advanced forwarding is enabled:

      +
      • redirect_url_config

        +
      • fixed_response_config

        +
      • priority

        +
      • conditions

        +
      +

      For details, see the descriptions in the APIs of forwarding policies and forwarding rules.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 ListenerInsertHeaders

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Forwarded-ELB-IP

      +

      No

      +

      Boolean

      +

      Specifies whether to transparently transmit the load balancer EIP to backend servers. If X-Forwarded-ELB-IP is set to true, the load balancer EIP will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Port

      +

      No

      +

      Boolean

      +

      Specifies whether to transparently transmit the listening port of the load balancer to backend servers. If X-Forwarded-Port is set to true, the listening port of the load balancer will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-For-Port

      +

      No

      +

      Boolean

      +

      Specifies whether to transparently transmit the source port of the client to backend servers. If X-Forwarded-For-Port is set to true, the source port of the client will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Host

      +

      Yes

      +

      Boolean

      +

      Specifies whether to rewrite the X-Forwarded-Host header. If X-Forwarded-Host is set to true, X-Forwarded-Host in the request header from the clients can be set to Host in the request header sent from the load balancer to backend servers.

      +

      Default: true

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 6 Tag

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      No

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      No

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 CreateListenerIpGroupOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      ipgroup_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the IP address group associated with the listener.

      +
      • If ip_list is set to [] and type to whitelist, no IP addresses are allowed to access the listener.

        +
      • If ip_list is set to [] and type to blacklist, any IP address is allowed to access the listener.

        +
      • The specified IP address group must exist and this parameter cannot be set to null.

        +
      +

      IP address groups are not supported for now.

      +

      enable_ipgroup

      +

      No

      +

      Boolean

      +

      Specifies whether to enable access control.

      +
      • true (default): Access control will be enabled.

        +
      • false: Access control will be disabled.

        +
      +

      A listener with access control enabled can be directly deleted.

      +

      type

      +

      No

      +

      String

      +

      Specifies how access to the listener is controlled.

      +
      • white (default): A whitelist will be configured. Only IP addresses in the whitelist can access the listener.

        +
      • black: A blacklist will be configured. IP addresses in the blacklist are not allowed to access the listener.

        +
      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 8 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      listener

      +

      Listener object

      +

      Specifies the listener.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 9 Listener

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener. And the value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections. The default value is -1.

      +

      This parameter is unsupported. Please do not use it.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests are forwarded to the default backend server.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      insert_headers

      +

      ListenerInsertHeaders object

      +

      Specifies the HTTP header fields.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Specifies the ID of the load balancer that the listener is added to.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      project_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      sni_container_refs

      +

      Array of strings

      +

      Lists the IDs of SNI certificates (server certificates with domain names) used by the listener.

      +

      Each SNI certificate can have up to 30 domain names, and each domain name in the SNI certificate must be unique.

      +

      This parameter will be ignored and an empty array will be returned if the listener's protocol is not HTTPS.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is available only for HTTPS listeners.

      +

      The value can be tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0.

      +

      enable_member_retry

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers. This parameter is available only for HTTP and HTTPS listeners.

      +

      keepalive_timeout

      +

      Integer

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter does not take effect.

        +
      +

      client_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      member_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      ipgroup

      +

      ListenerIpGroup object

      +

      Specifies the IP address group associated with the listener.

      +

      This parameter is unsupported. Please do not use it.

      +

      transparent_client_ip_enable

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +

      enhance_l7policy_enable

      +

      Boolean

      +

      Specifies whether to enable advanced forwarding. The value can be true or false (default).

      +
      • true indicates that advanced forwarding will be enabled.

        +
      • false indicates that advanced forwarding will not be enabled.

        +
      +

      The following parameters will be available only when advanced forwarding is enabled:

      +
      • redirect_url_config

        +
      • fixed_response_config

        +
      • priority

        +
      • conditions

        +
      +

      For details, see the descriptions in the APIs of forwarding policies and forwarding rules.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 10 ListenerInsertHeaders

      Parameter

      +

      Type

      +

      Description

      +

      X-Forwarded-ELB-IP

      +

      Boolean

      +

      Specifies whether to transparently transmit the load balancer EIP to backend servers. If X-Forwarded-ELB-IP is set to true, the load balancer EIP will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the listening port of the load balancer to backend servers. If X-Forwarded-Port is set to true, the listening port of the load balancer will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-For-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the source port of the client to backend servers. If X-Forwarded-For-Port is set to true, the source port of the client will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Host

      +

      Boolean

      +

      Specifies whether to rewrite the X-Forwarded-Host header. If X-Forwarded-Host is set to true, X-Forwarded-Host in the request header from the clients can be set to Host in the request header sent from the load balancer to backend servers.

      +

      Default: true

      +
      + + + + + + + + + + + + +
      Table 11 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 12 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 13 ListenerIpGroup

      Parameter

      +

      Type

      +

      Description

      +

      ipgroup_id

      +

      String

      +

      Specifies the ID of the IP address group associated with the listener.

      +
      • If ip_list is set to [] and type to whitelist, no IP addresses are allowed to access the listener.

        +
      • If ip_list is set to [] and type to blacklist, any IP address is allowed to access the listener.

        +
      • The specified IP address group must exist and this parameter cannot be set to null.

        +
      +

      enable_ipgroup

      +

      Boolean

      +

      Specifies whether to enable access control.

      +
      • true: Access control is enabled.

        +
      • false: Access control is disabled.

        +
      +

      A listener with access control enabled can be directly deleted.

      +

      type

      +

      String

      +

      Specifies how access to the listener is controlled.

      +
      • white: A whitelist is configured. Only IP addresses in the whitelist can access the listener.

        +
      • black: A blacklist is configured. IP addresses in the blacklist are not allowed to access the listener.

        +
      +
      + + +

      Example Requests

      • Example 1: Adding an HTTPS listener

        +
        POST
        +
        +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/listeners  
        +
        +{
        +  "listener" : {
        +    "protocol_port" : 90,
        +    "protocol" : "HTTPS",
        +    "loadbalancer_id" : "ac82ca77-8be3-4d65-9c4d-155771b463df",
        +    "name" : "My listener",
        +    "admin_state_up" : true,
        +    "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8"
        +  }
        +}
        +
      • Example 2: Adding a TCP listener

        +
        POST
        +
        +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/listeners  
        +
        +{
        +  "listener" : {
        +    "protocol_port" : 80,
        +    "protocol" : "TCP",
        +    "loadbalancer_id" : "098b2f68-af1c-41a9-8efd-69958722af62",
        +    "name" : "My listener",
        +    "admin_state_up" : true,
        +    "insert_headers" : {
        +      "X-Forwarded-ELB-IP" : true
        +    }
        +  }
        +}
        +
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "listener" : {
      +    "id" : "683cf917-3e51-4c41-830c-bc3a57e090f0",
      +    "name" : "My listener",
      +    "protocol_port" : 90,
      +    "protocol" : "HTTPS",
      +    "description" : "",
      +    "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "ac82ca77-8be3-4d65-9c4d-155771b463df"
      +    } ],
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "sni_container_refs" : [ ],
      +    "connection_limit" : -1,
      +    "tls_ciphers_policy" : "tls-1-0",
      +    "tags" : [ ],
      +    "created_at" : "2021-04-02T07:48:38Z",
      +    "updated_at" : "2021-04-02T07:48:38Z",
      +    "http2_enable" : false,
      +    "insert_headers" : {
      +      "X-Forwarded-ELB-IP" : false,
      +      "X-Forwarded-Host" : true,
      +      "X-Forwarded-For-Port" : false,
      +      "X-Forwarded-Port" : false
      +    },
      +    "member_timeout" : 60,
      +    "client_timeout" : 60,
      +    "keepalive_timeout" : 60,
      +    "enable_member_retry" : true,
      +    "transparent_client_ip_enable" : true,
      +    "enhance_l7policy_enable" : false
      +  },
      +  "request_id" : "830de7c7c38232d925db168bfb3cb0e8"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/CreateListener.rst b/elb/api-ref/CreateListener.rst new file mode 100644 index 000000000..c049e7e46 --- /dev/null +++ b/elb/api-ref/CreateListener.rst @@ -0,0 +1,929 @@ +Adding a Listener +================= + +Function +^^^^^^^^ + +This API is used to add a listener to a load balancer. + +Constraints +^^^^^^^^^^^ + +Only the administrator can specify **connection_limit**. + +- The listener protocol can be TCP, HTTP, UDP, or HTTPS. + +- For load balancing at Layer 4, the listener protocol can only be TCP or UDP. + +- For load balancing at Layer 7, the listener protocol can only be HTTP or HTTPS. + +- For load balancing both at Layer 4 and Layer 7, TCP, UDP, HTTP, and HTTPS are supported. + +URI +^^^ + +POST /v3/{project_id}/elb/listeners + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------------------------------------------+-------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=================================================================================+=========================+ + | listener | Yes | `CreateListenerOption <#CreateListener__request_CreateListenerOption>`__ object | Specifies the listener. | + +-----------+-----------+---------------------------------------------------------------------------------+-------------------------+ + +.. table:: **Table 4** CreateListenerOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the listener. The value can | + | | | | only be **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_ca_tls_container_ref | No | String | Specifies the ID of the CA | + | | | | certificate used by the | + | | | | listener. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_pool_id | No | String | Specifies the ID of the | + | | | | default backend server | + | | | | group. If there is no | + | | | | matched forwarding policy, | + | | | | requests are forwarded to | + | | | | the default backend server | + | | | | for processing. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_tls_container_ref | No | String | Specifies the ID of the | + | | | | server certificate used by | + | | | | the listener. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http2_enable | No | Boolean | Specifies whether to use | + | | | | HTTP/2. This parameter is | + | | | | available only for HTTPS | + | | | | listeners. If you configure | + | | | | this parameter for other | + | | | | types of listeners, it will | + | | | | not take effect. | + | | | | | + | | | | Enable HTTP/2 if you want | + | | | | the clients to use HTTP/2 | + | | | | to communicate with the | + | | | | load balancer. However, | + | | | | connections between the | + | | | | load balancer and backend | + | | | | servers use HTTP/1.x by | + | | | | default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | insert_headers | No | `ListenerInsertHeade | Specifies the HTTP header | + | | | rs <#CreateListener__reques | fields. | + | | | t_ListenerInsertHeaders>`__ | | + | | | object | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | Yes | String | Specifies the ID of the | + | | | | load balancer that the | + | | | | listener is added to. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the listener | + | | | | name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **32** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | Yes | String | Specifies the protocol used | + | | | | by the listener. The | + | | | | protocol can be TCP, HTTP, | + | | | | UDP, or HTTPS. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | Yes | Integer | Specifies the port used by | + | | | | the listener. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **65535** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sni_container_refs | No | Array of strings | Lists the IDs of SNI | + | | | | certificates (server | + | | | | certificates with domain | + | | | | names) used by the | + | | | | listener. | + | | | | | + | | | | Each SNI certificate can | + | | | | have up to 30 domain names, | + | | | | and each domain name in the | + | | | | SNI certificate must be | + | | | | unique. | + | | | | | + | | | | This parameter will be | + | | | | ignored and an empty array | + | | | | will be returned if the | + | | | | listener's protocol is not | + | | | | HTTPS. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tags | No | Array of | Lists the tags. | + | | | `Tag <#Crea | | + | | | teListener__request_Tag>`__ | | + | | | objects | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_ciphers_policy | No | String | Specifies the security | + | | | | policy that will be used by | + | | | | the listener. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTPS listeners. | + | | | | The default value is | + | | | | **tls-1-0**. | + | | | | | + | | | | An error will be returned | + | | | | if the protocol of the | + | | | | listener is not HTTPS. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **tls-1-0** | + | | | | | + | | | | - **tls-1-1** | + | | | | | + | | | | - **tls-1-2** | + | | | | | + | | | | - **tls-1-2-strict** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_member_retry | No | Boolean | Specifies whether to enable | + | | | | health check retries for | + | | | | backend servers. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. | + | | | | | + | | | | An error will be returned | + | | | | if you configure this | + | | | | parameter for TCP and UDP | + | | | | listeners. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | keepalive_timeout | No | Integer | Specifies the idle timeout | + | | | | duration, in seconds. | + | | | | | + | | | | - For TCP listeners, the | + | | | | value ranges from **10** | + | | | | to **4000**, and the | + | | | | default value is | + | | | | **300**. | + | | | | | + | | | | - For HTTP and HTTPS | + | | | | listeners, the value | + | | | | ranges from **0** to | + | | | | **4000**, and the | + | | | | default value is **60**. | + | | | | | + | | | | - For UDP listeners, this | + | | | | parameter is not | + | | | | available. An error will | + | | | | be returned if you | + | | | | configure this parameter | + | | | | for UDP listeners. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_timeout | No | Integer | Specifies the timeout | + | | | | duration for waiting for a | + | | | | request from a client, in | + | | | | seconds. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. The value ranges | + | | | | from **1** to **300**, and | + | | | | the default value is | + | | | | **60**. | + | | | | | + | | | | An error will be returned | + | | | | if you configure this | + | | | | parameter for TCP and UDP | + | | | | listeners. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **300** | + | | | | | + | | | | Default: **60** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_timeout | No | Integer | Specifies the timeout | + | | | | duration for waiting for a | + | | | | request from a backend | + | | | | server, in seconds. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. The value ranges | + | | | | from **1** to **300**, and | + | | | | the default value is | + | | | | **60**. | + | | | | | + | | | | An error will be returned | + | | | | if you configure this | + | | | | parameter for TCP and UDP | + | | | | listeners. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipgroup | No | `Crea | Specifies the IP address | + | | | teListenerIpGroupOption <#C | group associated with the | + | | | reateListener__request_Crea | listener. | + | | | teListenerIpGroupOption>`__ | | + | | | object | The value can be **null** | + | | | | or an empty JSON structure, | + | | | | indicating that no IP | + | | | | address group is associated | + | | | | with the listener. | + | | | | | + | | | | **ipgroup_id** is also | + | | | | required if you want to | + | | | | associate an IP address | + | | | | group with the listener. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | t | No | Boolean | Specifies whether to pass | + | ransparent_client_ip_enable | | | source IP addresses of the | + | | | | clients to backend servers. | + | | | | | + | | | | Shared load balancers: The | + | | | | value can be **true** or | + | | | | **false**, and the default | + | | | | value is **false** for TCP | + | | | | and UDP listeners. The | + | | | | value can only be **true** | + | | | | for HTTP and HTTPS | + | | | | listeners. If this | + | | | | parameter is not passed, | + | | | | the default value is | + | | | | **true**. | + | | | | | + | | | | Dedicated load balancers: | + | | | | The value can only be | + | | | | **true** for all types of | + | | | | listeners. If this | + | | | | parameter is not passed, | + | | | | the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enhance_l7policy_enable | No | Boolean | Specifies whether to enable | + | | | | advanced forwarding. The | + | | | | value can be **true** or | + | | | | **false** (default). | + | | | | | + | | | | - **true** indicates that | + | | | | advanced forwarding will | + | | | | be enabled. | + | | | | | + | | | | - **false** indicates that | + | | | | advanced forwarding will | + | | | | not be enabled. | + | | | | | + | | | | The following parameters | + | | | | will be available only when | + | | | | advanced forwarding is | + | | | | enabled: | + | | | | | + | | | | - **redirect_url_config** | + | | | | | + | | | | - | + | | | | **fixed_response_config** | + | | | | | + | | | | - **priority** | + | | | | | + | | | | - **conditions** | + | | | | | + | | | | For details, see the | + | | | | descriptions in the APIs of | + | | | | forwarding policies and | + | | | | forwarding rules. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** ListenerInsertHeaders + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | X-Forwarded-ELB-IP | No | Boolean | Specifies whether to | + | | | | transparently transmit the | + | | | | load balancer EIP to | + | | | | backend servers. If | + | | | | **X-Forwarded-ELB-IP** is | + | | | | set to **true**, the load | + | | | | balancer EIP will be stored | + | | | | in the HTTP header and | + | | | | passed to backend servers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | X-Forwarded-Port | No | Boolean | Specifies whether to | + | | | | transparently transmit the | + | | | | listening port of the load | + | | | | balancer to backend | + | | | | servers. If | + | | | | **X-Forwarded-Port** is set | + | | | | to **true**, the listening | + | | | | port of the load balancer | + | | | | will be stored in the HTTP | + | | | | header and passed to | + | | | | backend servers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | X-Forwarded-For-Port | No | Boolean | Specifies whether to | + | | | | transparently transmit the | + | | | | source port of the client | + | | | | to backend servers. If | + | | | | **X-Forwarded-For-Port** is | + | | | | set to **true**, the source | + | | | | port of the client will be | + | | | | stored in the HTTP header | + | | | | and passed to backend | + | | | | servers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | X-Forwarded-Host | Yes | Boolean | Specifies whether to | + | | | | rewrite the | + | | | | **X-Forwarded-Host** | + | | | | header. If | + | | | | **X-Forwarded-Host** is set | + | | | | to **true**, | + | | | | **X-Forwarded-Host** in the | + | | | | request header from the | + | | | | clients can be set to | + | | | | **Host** in the request | + | | | | header sent from the load | + | | | | balancer to backend | + | | | | servers. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 6** Tag + + ========= ========= ====== ======================== + Parameter Mandatory Type Description + ========= ========= ====== ======================== + key No String Specifies the tag key. + value No String Specifies the tag value. + ========= ========= ====== ======================== + +.. table:: **Table 7** CreateListenerIpGroupOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | ipgroup_id | Yes | String | Specifies the ID of the IP | + | | | | address group associated | + | | | | with the listener. | + | | | | | + | | | | - If **ip_list** is set to | + | | | | **[]** and **type** to | + | | | | **whitelist**, no IP | + | | | | addresses are allowed to | + | | | | access the listener. | + | | | | | + | | | | - If **ip_list** is set to | + | | | | **[]** and **type** to | + | | | | **blacklist**, any IP | + | | | | address is allowed to | + | | | | access the listener. | + | | | | | + | | | | - The specified IP address | + | | | | group must exist and | + | | | | this parameter cannot be | + | | | | set to **null**. | + | | | | | + | | | | IP address groups are not | + | | | | supported for now. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_ipgroup | No | Boolean | Specifies whether to enable | + | | | | access control. | + | | | | | + | | | | - **true** (default): | + | | | | Access control will be | + | | | | enabled. | + | | | | | + | | | | - **false**: Access | + | | | | control will be | + | | | | disabled. | + | | | | | + | | | | A listener with access | + | | | | control enabled can be | + | | | | directly deleted. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies how access to the | + | | | | listener is controlled. | + | | | | | + | | | | - **white** (default): A | + | | | | whitelist will be | + | | | | configured. Only IP | + | | | | addresses in the | + | | | | whitelist can access the | + | | | | listener. | + | | | | | + | | | | - **black**: A blacklist | + | | | | will be configured. IP | + | | | | addresses in the | + | | | | blacklist are not | + | | | | allowed to access the | + | | | | listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 8** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | listener | `Listener <#CreateListener__response_Listener>`__ | Specifies the listener. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 9** Listener + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. And the value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. The default value is | + | | | **-1**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the default | + | | | backend server group. If there is no | + | | | matched forwarding policy, requests | + | | | are forwarded to the default backend | + | | | server. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. This | + | | | parameter is available only for HTTPS | + | | | listeners. If you configure this | + | | | parameter for other types of | + | | | listeners, it will not take effect. | + | | | | + | | | Enable HTTP/2 if you want the clients | + | | | to use HTTP/2 to communicate with the | + | | | load balancer. However, connections | + | | | between the load balancer and backend | + | | | servers use HTTP/1.x by default. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | insert_headers | ` | Specifies the HTTP header fields. | + | | ListenerInsertHeaders <#CreateListene | | + | | r__response_ListenerInsertHeaders>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Specifies the ID of the load balancer | + | | `LoadBalancerRef <#CreateL | that the listener is added to. | + | | istener__response_LoadBalancerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array of strings | Lists the IDs of SNI certificates | + | | | (server certificates with domain | + | | | names) used by the listener. | + | | | | + | | | Each SNI certificate can have up to | + | | | 30 domain names, and each domain name | + | | | in the SNI certificate must be | + | | | unique. | + | | | | + | | | This parameter will be ignored and an | + | | | empty array will be returned if the | + | | | listener's protocol is not HTTPS. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags. | + | | `T | | + | | ag <#CreateListener__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is | + | | | available only for HTTPS listeners. | + | | | | + | | | The value can be **tls-1-0**, | + | | | **tls-1-1**, **tls-1-2**, or | + | | | **tls-1-2-strict**, and the default | + | | | value is **tls-1-0**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_member_retry | Boolean | Specifies whether to enable health | + | | | check retries for backend servers. | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | keepalive_timeout | Integer | Specifies the idle timeout duration, | + | | | in seconds. | + | | | | + | | | - For TCP listeners, the value | + | | | ranges from **10** to **4000**, | + | | | and the default value is **300**. | + | | | | + | | | - For HTTP and HTTPS listeners, the | + | | | value ranges from **0** to | + | | | **4000**, and the default value is | + | | | **60**. | + | | | | + | | | - For UDP listeners, this parameter | + | | | does not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a client, | + | | | in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a backend | + | | | server, in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipgroup | `ListenerIpGroup <#CreateL | Specifies the IP address group | + | | istener__response_ListenerIpGroup>`__ | associated with the listener. | + | | object | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | transparent_client_ip_enable | Boolean | Specifies whether to pass source IP | + | | | addresses of the clients to backend | + | | | servers. | + | | | | + | | | Shared load balancers: The value can | + | | | be **true** or **false**, and the | + | | | default value is **false** for TCP | + | | | and UDP listeners. The value can only | + | | | be **true** for HTTP and HTTPS | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + | | | | + | | | Dedicated load balancers: The value | + | | | can only be **true** for all types of | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enhance_l7policy_enable | Boolean | Specifies whether to enable advanced | + | | | forwarding. The value can be **true** | + | | | or **false** (default). | + | | | | + | | | - **true** indicates that advanced | + | | | forwarding will be enabled. | + | | | | + | | | - **false** indicates that advanced | + | | | forwarding will not be enabled. | + | | | | + | | | The following parameters will be | + | | | available only when advanced | + | | | forwarding is enabled: | + | | | | + | | | - **redirect_url_config** | + | | | | + | | | - **fixed_response_config** | + | | | | + | | | - **priority** | + | | | | + | | | - **conditions** | + | | | | + | | | For details, see the descriptions in | + | | | the APIs of forwarding policies and | + | | | forwarding rules. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 10** ListenerInsertHeaders + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | X-Forwarded-ELB-IP | Boolean | Specifies whether to transparently | + | | | transmit the load balancer EIP to | + | | | backend servers. If | + | | | **X-Forwarded-ELB-IP** is set to | + | | | **true**, the load balancer EIP will | + | | | be stored in the HTTP header and | + | | | passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Port | Boolean | Specifies whether to transparently | + | | | transmit the listening port of the | + | | | load balancer to backend servers. If | + | | | **X-Forwarded-Port** is set to | + | | | **true**, the listening port of the | + | | | load balancer will be stored in the | + | | | HTTP header and passed to backend | + | | | servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-For-Port | Boolean | Specifies whether to transparently | + | | | transmit the source port of the | + | | | client to backend servers. If | + | | | **X-Forwarded-For-Port** is set to | + | | | **true**, the source port of the | + | | | client will be stored in the HTTP | + | | | header and passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Host | Boolean | Specifies whether to rewrite the | + | | | **X-Forwarded-Host** header. If | + | | | **X-Forwarded-Host** is set to | + | | | **true**, **X-Forwarded-Host** in the | + | | | request header from the clients can | + | | | be set to **Host** in the request | + | | | header sent from the load balancer to | + | | | backend servers. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 12** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 13** ListenerIpGroup + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | ipgroup_id | String | Specifies the ID of the IP address | + | | | group associated with the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **whitelist**, no | + | | | IP addresses are allowed to access | + | | | the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **blacklist**, any | + | | | IP address is allowed to access | + | | | the listener. | + | | | | + | | | - The specified IP address group | + | | | must exist and this parameter | + | | | cannot be set to **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_ipgroup | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | - **true**: Access control is | + | | | enabled. | + | | | | + | | | - **false**: Access control is | + | | | disabled. | + | | | | + | | | A listener with access control | + | | | enabled can be directly deleted. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies how access to the listener | + | | | is controlled. | + | | | | + | | | - **white**: A whitelist is | + | | | configured. Only IP addresses in | + | | | the whitelist can access the | + | | | listener. | + | | | | + | | | - **black**: A blacklist is | + | | | configured. IP addresses in the | + | | | blacklist are not allowed to | + | | | access the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +- Example 1: Adding an HTTPS listener + + .. code:: screen + + POST + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/listeners + + { + "listener" : { + "protocol_port" : 90, + "protocol" : "HTTPS", + "loadbalancer_id" : "ac82ca77-8be3-4d65-9c4d-155771b463df", + "name" : "My listener", + "admin_state_up" : true, + "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8" + } + } + +- Example 2: Adding a TCP listener + + .. code:: screen + + POST + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/listeners + + { + "listener" : { + "protocol_port" : 80, + "protocol" : "TCP", + "loadbalancer_id" : "098b2f68-af1c-41a9-8efd-69958722af62", + "name" : "My listener", + "admin_state_up" : true, + "insert_headers" : { + "X-Forwarded-ELB-IP" : true + } + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "listener" : { + "id" : "683cf917-3e51-4c41-830c-bc3a57e090f0", + "name" : "My listener", + "protocol_port" : 90, + "protocol" : "HTTPS", + "description" : "", + "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "ac82ca77-8be3-4d65-9c4d-155771b463df" + } ], + "project_id" : "060576782980d5762f9ec014dd2f1148", + "sni_container_refs" : [ ], + "connection_limit" : -1, + "tls_ciphers_policy" : "tls-1-0", + "tags" : [ ], + "created_at" : "2021-04-02T07:48:38Z", + "updated_at" : "2021-04-02T07:48:38Z", + "http2_enable" : false, + "insert_headers" : { + "X-Forwarded-ELB-IP" : false, + "X-Forwarded-Host" : true, + "X-Forwarded-For-Port" : false, + "X-Forwarded-Port" : false + }, + "member_timeout" : 60, + "client_timeout" : 60, + "keepalive_timeout" : 60, + "enable_member_retry" : true, + "transparent_client_ip_enable" : true, + "enhance_l7policy_enable" : false + }, + "request_id" : "830de7c7c38232d925db168bfb3cb0e8" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/CreateLoadBalancer.html b/elb/api-ref/CreateLoadBalancer.html new file mode 100644 index 000000000..aee3a720e --- /dev/null +++ b/elb/api-ref/CreateLoadBalancer.html @@ -0,0 +1,1049 @@ + + +

      Creating a Load Balancer

      +

      Function

      This API is used to create a dedicated load balancer. When you create the load balancer, note the following:

      +
      • Specify both vip_subnet_cidr_id and vip_address if you want to bind a private IPv4 address to the load balancer.
      • Specify publicip and either vpc_id or vip_subnet_cidr_id if you want to bind a new IPv4 EIP to the load balancer.
      • Specify publicip_ids and either vpc_id or vip_subnet_cidr_id if you want to bind an existing IPv4 EIP to the load balancer.
      • Specify ipv6_vip_virsubnet_id you want to bind a private IPv6 address to the load balancer.
      • Specify ipv6_vip_virsubnet_id and ipv6_bandwidth if you want to bind a public IPv6 address to the load balancer.
      • You cannot bind an occupied private IPv4 address, an occupied private IPv6 address, or an occupied public IPv6 address to the load balancer.
      • Dedicated load balancers with IPv6 addresses are not supported.
      + +

      Constraints

      There are some constraints when you create a dedicated load balancer:

      +
      • vpc_id, vip_subnet_cidr_id, and ipv6_vip_virsubnet_id cannot be left blank at the same time.
      • ip_target_enable specifies whether to enable cross-VPC backend. If you have a load balancer with this function enabled, you can add servers in a VPC connected through a VPC peering connection, in a VPC connected through a cloud connection, or in an on-premises data center at the other end of a Direct Connect or VPN connection, by using server IP addresses.
      • admin_state_up must be set to true.
      • provider must be set to vlb.
      • elb_virsubnet_ids indicates the subnets that support IPv4/IPv6 dual stack or only IPv4 subnets. If only IPv4 subnets are supported, ipv6_vip_virsubnet_id must be left blank.
      • If you bind an EIP to the load balancer during creation, you cannot unbind it from the load balancer by calling the API after the load balancer is created. Instead, you can unbind the EIP only on the ELB console. Locate the dedicated load balancer in the load balancer list and click More > Unbind EIP in the Operation column.
      • publicip_ids and publicip cannot be specified at the same time. Set either publicip_ids to bind an existing EIP to the load balancer, or publicip to bind a new EIP to the load balancer, or neither of them.
      • If you want to add the load balancer to a shared bandwidth, you must specify the ID of the shared bandwidth. If you want the load balancer to use a new dedicated bandwidth, charge_mode, share_type, and size are required.
      • Dedicated load balancers are supported only in the eu-nl region.
      + +

      URI

      POST /v3/{project_id}/elb/loadbalancers

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      Minimum: 1

      +

      Maximum: 255

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      No

      +

      String

      +

      Shows authentication information.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Yes

      +

      CreateLoadBalancerOption object

      +

      Specifies the load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateLoadBalancerOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the load balancer name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      vip_address

      +

      No

      +

      String

      +

      Specifies the virtual IP address bound to the load balancer. The IP address must be from the IPv4 subnet of the VPC where the load balancer works and IP address should not be occupied by other services.

      +

      Note:

      +
      • If both vip_subnet_cidr_id and vip_address are specified, a dedicated load balancer with a private IPv4 address will be created, and the virtual IP address specified by vip_address is the private IP address of the load balancer.
      • If only vip_subnet_cidr_id is specified, a dedicated load balancer with a private IPv4 address will be created, and the system will automatically assign a virtual IP address to the load balancer.
      +

      vip_subnet_cidr_id

      +

      No

      +

      String

      +

      Specifies the ID of the IPv4 subnet where the load balancer works. You can query neutron_subnet_id in the response by calling the API (GET https://{VPC_Endpoint}/v1/{project_id}/subnets).

      +
      • Both vip_subnet_cidr_id and vip_address are required if you want to create a dedicated load balancer with a private IPv4 address.
      • publicip and either vpc_id or vip_subnet_cidr_id are required if you want to create a dedicated load balancer with a new IPv4 EIP.
      • publicip_ids and either vpc_id or vip_subnet_cidr_id are required if you want to with a dedicated load balancer with an existing IPv4 EIP.
      • The subnet specified by vip_subnet_cidr_id must be in the VPC specified by vpc_id if you specify both vpc_id and vip_subnet_cidr_id.
      +

      ipv6_vip_virsubnet_id

      +

      No

      +

      String

      +

      Specifies the ID of the IPv6 subnet where the load balancer works. You can query id in the response by calling the API (GET https://{VPC_Endpoint}/v1/{project_id}/subnets).

      +

      Note:

      +
      • ipv6_vip_virsubnet_id is required if you want to create a load balancer with a private IPv6 address.
      • Both ipv6_vip_virsubnet_id and ipv6_bandwidth are required if you want to create a load balancer with a public IPv6 address.
      • The subnet specified by ipv6_vip_virsubnet_id must be in the VPC specified by vpc_id if you specify both ipv6_vip_virsubnet_id and vpc_id.
      • IPv6 must be enabled for the subnet where the load balancer works.
      +

      This parameter is unsupported. Please do not use it.

      +

      provider

      +

      No

      +

      String

      +

      Specifies the provider of the load balancer. The value can only be vlb.

      +

      l4_flavor_id

      +

      No

      +

      String

      +

      Specifies the ID of the Layer-4 flavor.

      +

      Specify either l4_flavor_id or l7_flavor_id or both l4_flavor_id and l7_flavor_id when you create a load balancer.

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      guaranteed

      +

      No

      +

      Boolean

      +

      Specifies whether the load balancer is a dedicated load balancer. The value can only be true.

      +

      Default: true

      +

      vpc_id

      +

      No

      +

      String

      +

      Specifies the ID of the VPC where the load balancer works. You can query id in the response by calling the API (GET https://{VPC_Endpoint}/v1/{project_id}/vpcs).

      +
      • The subnet specified by vip_subnet_cidr_id must be in the VPC specified by vpc_id if you specify both vip_subnet_cidr_id and vpc_id.
      • The subnet specified by ipv6_vip_virsubnet_id must be in the VPC specified by vpc_id if you specify both ipv6_vip_virsubnet_id and vpc_id.
      +

      availability_zone_list

      +

      Yes

      +

      Array of strings

      +

      Specifies the list of AZs where the load balancer can be created. You can query the AZs by calling the API (GET https://{ELB_Endpoint}/v3/{project_id}/elb/availability-zones). Select one or more AZs in the same set.

      +

      enterprise_project_id

      +

      No

      +

      String

      +

      Specifies the enterprise project ID. The value cannot be "", "0", or the ID of an enterprise project that does not exist. If this parameter is not passed during resource creation, the resource belongs to the default enterprise project.

      +

      This parameter is unsupported. Please do not use it.

      +

      tags

      +

      No

      +

      Array of Tag objects

      +

      Lists the tags added to the load balancer. Example: "tags":[{"key":"my_tag","value":"my_tag_value"}]

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the load balancer. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      l7_flavor_id

      +

      No

      +

      String

      +

      Specifies the ID of the Layer-7 flavor.

      +

      Specify either l4_flavor_id or l7_flavor_id or both l4_flavor_id and l7_flavor_id when you create a load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      ipv6_bandwidth

      +

      No

      +

      BandwidthRef object

      +

      Specifies the ID of the bandwidth. This parameter is available only when you create or update a dedicated load balancer that has an IPv6 address bound.

      +

      If you use a new IPv6 address and specify a shared bandwidth, the IPv6 address will be added to the shared bandwidth.

      +

      This parameter is unsupported. Please do not use it.

      +

      publicip_ids

      +

      No

      +

      Array of strings

      +

      Specifies the ID of the EIP the system will automatically assign and bind to the load balancer during load balancer creation. Currently, only the first EIP will be bound to the load balancer although multiple EIP IDs can be set.

      +

      publicip

      +

      No

      +

      CreateLoadBalancerPublicIpOption object

      +

      Provides information about the new IPv4 EIP that will be bound to the dedicated load balancer during load balancer creation.

      +

      elb_virsubnet_ids

      +

      Yes

      +

      Array of strings

      +

      Lists the IDs of subnets on the downstream plane. You can query parameter id in the response by calling the API (GET https://{VPC_Endpoint}/v1/{project_id}/subnets).

      +

      If there is more than one subnet, the first subnet in the list will be used.

      +

      The subnets must be in the VPC where the load balancer works.

      +

      ip_target_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to enable cross-VPC backend. The value can be true (enabled) or false (disabled). This function is supported only by dedicated load balancers.

      +

      If you enable this function, you can add servers in a VPC connected through a VPC peering connection, in a VPC connected through a cloud connection, or in an on-premises data center at the other end of a Direct Connect or VPN connection, by using their IP addresses.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 5 Tag

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      No

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      No

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + +
      Table 6 BandwidthRef

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      id

      +

      Yes

      +

      String

      +

      Specifies the shared bandwidth ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 CreateLoadBalancerPublicIpOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      ip_version

      +

      No

      +

      Integer

      +

      Specifies the IP address version. The value can be 4 (IPv4) or 6 (IPv6).

      +

      IPv6 is unsupported. The value cannot be 6.

      +

      Default: 4

      +

      network_type

      +

      Yes

      +

      String

      +

      Specifies the EIP type. The value can be 5_bgp (default) and 5_mailbgp.

      + NOTE:

      In eu-de, the value of this parameter can only be 5_gray.

      + +

      Minimum: 1

      +

      Maximum: 36

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the IPv4 EIP.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      bandwidth

      +

      Yes

      +

      CreateLoadBalancerBandwidthOption object

      +

      Provides supplementary information about the bandwidth.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 CreateLoadBalancerBandwidthOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the bandwidth name.

      +

      Minimum: 1

      +

      Maximum: 64

      +

      size

      +

      No

      +

      Integer

      +

      Specifies the bandwidth range.

      +

      The default range is 1 Mbit/s to 2,000 Mbit/s. (The specific range may vary depending on the configuration in each region. You can see the available bandwidth range on the management console.)

      +

      Note:

      +

      The minimum increment for bandwidth adjustment varies depending on the bandwidth range. The following are the details:

      +
      • The minimum increment is 1 Mbit/s if the bandwidth range is from 0 Mbit/s to 300 Mbit/s.
      • The minimum increment is 50 Mbit/s if the bandwidth range is from 300 Mbit/s to 1,000 Mbit/s.
      • The minimum increment is 500 Mbit/s if the bandwidth is greater than 1,000 Mbit/s.
      +

      This parameter is mandatory if id is set to null.

      +

      Minimum: 0

      +

      Maximum: 99999

      +

      charge_mode

      +

      No

      +

      String

      +

      Specifies how the bandwidth used by the EIP is billed.

      +

      Currently, the bandwidth can be billed only by traffic.

      +

      This parameter is mandatory if id is set to null.

      +

      share_type

      +

      No

      +

      String

      +

      Specifies the bandwidth type.

      +

      The value options are as follows:

      +
      • PER: indicates dedicated bandwidth.
      • WHOLE: indicates shared bandwidth.
      +

      This parameter is mandatory when id is set to null. It will be ignored if the value of id is not null.

      +

      id

      +

      No

      +

      String

      +

      Specifies the ID of the shared bandwidth. You can add a load balancer to a shared bandwidth by specifying its ID.

      +

      If you have specified an ID, you do not need to pass other parameters. Even if you pass other parameters, the system will automatically ignore these parameters.

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 9 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      LoadBalancer object

      +

      Specifies the load balancer.

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 10 LoadBalancer

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      Default: Automatically generated

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the load balancer. The value can only be ACTIVE.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer. The value can only be vlb.

      +

      Default: vlb

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups associated with the load balancer.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the IDs of listeners added to the load balancer.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer. The value can only be ONLINE.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      vip_address

      +

      String

      +

      Specifies the private IPv4 address bound to the load balancer.

      +

      Minimum: 1

      +

      Maximum: 64

      +

      vip_subnet_cidr_id

      +

      String

      +

      Specifies the ID of the IPv4 subnet where the load balancer works.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      String

      +

      Specifies the name of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the virtual IP address (the value of vip_address) of the load balancer.

      +

      When you create a dedicated load balancer, the system automatically creates a port for the load balancer and associates the port with a default security group. However, security group rules containing the port will not affect traffic to and from the load balancer.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags added to the load balancer.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      guaranteed

      +

      Boolean

      +

      Specifies whether the load balancer is a dedicated load balancer.

      +

      The value can be true or false. true indicates a dedicated load balancer, and false indicates a shared load balancer. When dedicated load balancers are launched in the eu-de region, either true or false will be returned when you use the API to query or update a load balancer.

      +

      Default: true

      +

      vpc_id

      +

      String

      +

      Specifies the ID of the VPC where the load balancer works.

      +

      eips

      +

      Array of EipInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      ipv6_vip_address

      +

      String

      +

      Specifies the IPv6 address bound to the load balancer.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: None

      +

      Minimum: 1

      +

      Maximum: 64

      +

      ipv6_vip_virsubnet_id

      +

      String

      +

      Specifies the ID of the IPv6 subnet where the load balancer works.

      +

      This parameter is unsupported. Please do not use it.

      +

      ipv6_vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the IPv6 address.

      +

      This parameter is unsupported. Please do not use it.

      +

      availability_zone_list

      +

      Array of strings

      +

      Specifies the list of AZs where the load balancer is created.

      +

      enterprise_project_id

      +

      String

      +

      Specifies the enterprise project ID.

      +

      If this parameter is not passed during resource creation, the resource belongs to the default enterprise project.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 0

      +

      l4_flavor_id

      +

      String

      +

      Specifies the Layer-4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l4_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_flavor_id

      +

      String

      +

      Specifies the Layer-7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      publicips

      +

      Array of PublicIpInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      elb_virsubnet_ids

      +

      Array of strings

      +

      Specifies the ID of the subnet on the downstream plane. The ports used by the load balancer dynamically occupy IP addresses in the subnet.

      +

      ip_target_enable

      +

      Boolean

      +

      Specifies whether to enable cross-VPC backend.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: false

      +

      frozen_scene

      +

      String

      +

      Specifies the scenario where the load balancer is frozen. Use commas to separate multiple scenarios.

      +

      If the value is ARREAR, the load balancer is frozen because your account is in arrears.

      +

      ipv6_bandwidth

      +

      BandwidthRef object

      +

      Specifies the ID of the bandwidth. This parameter is available only when you create or update a dedicated load balancer that has an IPv6 address bound.

      +

      If you use a new IPv6 address and specify a shared bandwidth, the IPv6 address will be added to the shared bandwidth.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 11 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + + + + + + + + + + + +
      Table 12 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 13 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 14 EipInfo

      Parameter

      +

      Type

      +

      Description

      +

      eip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      eip_address

      +

      String

      +

      Specifies the specific IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. 4 indicates IPv4, and 6 indicates IPv6.

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 15 PublicIpInfo

      Parameter

      +

      Type

      +

      Description

      +

      publicip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      publicip_address

      +

      String

      +

      Specifies the IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. The value can be 4 (IPv4) or 6 (IPv6).

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + +
      Table 16 BandwidthRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the shared bandwidth ID.

      +
      + + +

      Example Requests

      Example 1: Creating a load balancer with an IPv4 EIP

      +
      POST
      +
      +https://{ELB_Endponit}/v3/060576782980d5762f9ec014dd2f1148/elb/loadbalancers
      +
      +{
      +  "loadbalancer" : {
      +    "vpc_id" : "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b",
      +    "availability_zone_list" : [ "br-iaas-odin1a" ],
      +    "admin_state_up" : true,
      +    "vip_subnet_cidr_id" : "1800b6b8-a69f-4719-813d-24d62aaf32bd",
      +    "elb_virsubnet_ids" : [ "1fe8c0a8-d648-4294-8ea5-4d7f0c700e69" ],
      +    "name" : "elb-ipv4-public",
      +    "publicip" : {
      +      "network_type" : "5_bgp",
      +      "bandwidth" : {
      +        "size" : 2,
      +        "share_type" : "PER",
      +        "charge_mode" : "traffic",
      +        "name" : "elb_eip_traffic"
      +      }
      +    }
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "request_id" : "86bb342be098113734389bffcf593607",
      +  "loadbalancer" : {
      +    "id" : "badd5a4b-14cf-4319-ac91-4182a80dee9a",
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "name" : "elb-ipv4-public",
      +    "description" : "",
      +    "vip_port_id" : "265c13fb-49a9-4f51-b848-7f0cced0aef0",
      +    "vip_address" : "192.168.0.151",
      +    "admin_state_up" : true,
      +    "provisioning_status" : "ACTIVE",
      +    "operating_status" : "ONLINE",
      +    "listeners" : [ ],
      +    "pools" : [ ],
      +    "tags" : [ ],
      +    "provider" : "vlb",
      +    "created_at" : "2021-03-29T02:44:47Z",
      +    "updated_at" : "2021-03-29T02:44:47Z",
      +    "vpc_id" : "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b",
      +    "enterprise_project_id" : "0",
      +    "availability_zone_list" : [ "br-iaas-odin1a" ],
      +    "publicips" : [ {
      +      "publicip_id" : "448d497a-8f65-4c17-b2b2-f21279446e00",
      +      "publicip_address" : "10.246.170.154",
      +      "ip_version" : 4
      +    } ],
      +    "elb_virsubnet_ids" : [ "4df3e391-5ebf-4300-b614-cf5a4e793666" ],
      +    "elb_virsubnet_type" : "dualstack",
      +    "ip_target_enable" : false,
      +    "eips" : [ {
      +      "eip_id" : "448d497a-8f65-4c17-b2b2-f21279446e00",
      +      "eip_address" : "10.246.170.154",
      +      "ip_version" : 4
      +    } ],
      +    "guaranteed" : true,
      +    "l4_flavor_id" : "e5acacda-f861-404e-9871-df480c49d185",
      +    "l7_flavor_id" : "2f124f60-980a-42f3-b201-35461df1b936",
      +    "vip_subnet_cidr_id" : "1800b6b8-a69f-4719-813d-24d62aaf32bd"
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/CreateLoadBalancer.rst b/elb/api-ref/CreateLoadBalancer.rst new file mode 100644 index 000000000..e564ad7d8 --- /dev/null +++ b/elb/api-ref/CreateLoadBalancer.rst @@ -0,0 +1,967 @@ +Creating a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to create a dedicated load balancer. When you create the load balancer, note the following: + +- Specify both **vip_subnet_cidr_id** and **vip_address** if you want to bind a private IPv4 address to the load balancer. +- Specify **publicip** and either **vpc_id** or **vip_subnet_cidr_id** if you want to bind a new IPv4 EIP to the load balancer. +- Specify **publicip_ids** and either **vpc_id** or **vip_subnet_cidr_id** if you want to bind an existing IPv4 EIP to the load balancer. +- Specify **ipv6_vip_virsubnet_id** you want to bind a private IPv6 address to the load balancer. +- Specify **ipv6_vip_virsubnet_id** and **ipv6_bandwidth** if you want to bind a public IPv6 address to the load balancer. +- You cannot bind an occupied private IPv4 address, an occupied private IPv6 address, or an occupied public IPv6 address to the load balancer. +- Dedicated load balancers with IPv6 addresses are not supported. + +Constraints +^^^^^^^^^^^ + +There are some constraints when you create a dedicated load balancer: + +- **vpc_id**, **vip_subnet_cidr_id**, and **ipv6_vip_virsubnet_id** cannot be left blank at the same time. +- **ip_target_enable** specifies whether to enable cross-VPC backend. If you have a load balancer with this function enabled, you can add servers in a VPC connected through a VPC peering connection, in a VPC connected through a cloud connection, or in an on-premises data center at the other end of a Direct Connect or VPN connection, by using server IP addresses. +- **admin_state_up** must be set to **true**. +- **provider** must be set to **vlb**. +- **elb_virsubnet_ids** indicates the subnets that support IPv4/IPv6 dual stack or only IPv4 subnets. If only IPv4 subnets are supported, **ipv6_vip_virsubnet_id** must be left blank. +- If you bind an EIP to the load balancer during creation, you cannot unbind it from the load balancer by calling the API after the load balancer is created. Instead, you can unbind the EIP only on the ELB console. Locate the dedicated load balancer in the load balancer list and click **More** > **Unbind EIP** in the **Operation** column. +- **publicip_ids** and **publicip** cannot be specified at the same time. Set either **publicip_ids** to bind an existing EIP to the load balancer, or **publicip** to bind a new EIP to the load balancer, or neither of them. +- If you want to add the load balancer to a shared bandwidth, you must specify the ID of the shared bandwidth. If you want the load balancer to use a new dedicated bandwidth, **charge_mode**, **share_type**, and **size** are required. +- Dedicated load balancers are supported only in the **eu-nl** region. + +URI +^^^ + +POST /v3/{project_id}/elb/loadbalancers + +.. table:: **Table 1** Path parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================= + Parameter Mandatory Type Description + ============ ========= ====== ================================= + X-Auth-Token No String Shows authentication information. + ============ ========= ====== ================================= + +.. table:: **Table 3** Request body parameters + + +--------------+-----------+-------------------------------------------+------------------------------+ + | Parameter | Mandatory | Type | Description | + +==============+===========+===========================================+==============================+ + | loadbalancer | Yes | `C | Specifies the load balancer. | + | | | reateLoadBalancerOption <#CreateLoadBalan | | + | | | cer__request_CreateLoadBalancerOption>`__ | | + | | | object | | + +--------------+-----------+-------------------------------------------+------------------------------+ + +.. table:: **Table 4** CreateLoadBalancerOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the load balancer | + | | | | name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the load | + | | | | balancer. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_address | No | String | Specifies the virtual IP | + | | | | address bound to the load | + | | | | balancer. The IP address | + | | | | must be from the IPv4 | + | | | | subnet of the VPC where the | + | | | | load balancer works and IP | + | | | | address should not be | + | | | | occupied by other services. | + | | | | | + | | | | Note: | + | | | | | + | | | | - If both | + | | | | **vip_subnet_cidr_id** | + | | | | and **vip_address** are | + | | | | specified, a dedicated | + | | | | load balancer with a | + | | | | private IPv4 address | + | | | | will be created, and the | + | | | | virtual IP address | + | | | | specified by | + | | | | **vip_address** is the | + | | | | private IP address of | + | | | | the load balancer. | + | | | | - If only | + | | | | **vip_subnet_cidr_id** | + | | | | is specified, a | + | | | | dedicated load balancer | + | | | | with a private IPv4 | + | | | | address will be created, | + | | | | and the system will | + | | | | automatically assign a | + | | | | virtual IP address to | + | | | | the load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_subnet_cidr_id | No | String | Specifies the ID of the | + | | | | IPv4 subnet where the load | + | | | | balancer works. You can | + | | | | query **neutron_subnet_id** | + | | | | in the response by calling | + | | | | the API (GET | + | | | | https://{VPC_Endpoint | + | | | | }/v1/{project_id}/subnets). | + | | | | | + | | | | - Both | + | | | | **vip_subnet_cidr_id** | + | | | | and **vip_address** are | + | | | | required if you want to | + | | | | create a dedicated load | + | | | | balancer with a private | + | | | | IPv4 address. | + | | | | - **publicip** and either | + | | | | **vpc_id** or | + | | | | **vip_subnet_cidr_id** | + | | | | are required if you want | + | | | | to create a dedicated | + | | | | load balancer with a new | + | | | | IPv4 EIP. | + | | | | - **publicip_ids** and | + | | | | either **vpc_id** or | + | | | | **vip_subnet_cidr_id** | + | | | | are required if you want | + | | | | to with a dedicated load | + | | | | balancer with an | + | | | | existing IPv4 EIP. | + | | | | - The subnet specified by | + | | | | **vip_subnet_cidr_id** | + | | | | must be in the VPC | + | | | | specified by **vpc_id** | + | | | | if you specify both | + | | | | **vpc_id** and | + | | | | **vip_subnet_cidr_id**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_vip_virsubnet_id | No | String | Specifies the ID of the | + | | | | IPv6 subnet where the load | + | | | | balancer works. You can | + | | | | query **id** in the | + | | | | response by calling the API | + | | | | (GET | + | | | | https://{VPC_Endpoint | + | | | | }/v1/{project_id}/subnets). | + | | | | | + | | | | Note: | + | | | | | + | | | | - | + | | | | **ipv6_vip_virsubnet_id** | + | | | | is required if you want | + | | | | to create a load | + | | | | balancer with a private | + | | | | IPv6 address. | + | | | | - Both | + | | | | | + | | | | **ipv6_vip_virsubnet_id** | + | | | | and **ipv6_bandwidth** | + | | | | are required if you want | + | | | | to create a load | + | | | | balancer with a public | + | | | | IPv6 address. | + | | | | - The subnet specified by | + | | | | | + | | | | **ipv6_vip_virsubnet_id** | + | | | | must be in the VPC | + | | | | specified by **vpc_id** | + | | | | if you specify both | + | | | | | + | | | | **ipv6_vip_virsubnet_id** | + | | | | and **vpc_id**. | + | | | | - IPv6 must be enabled for | + | | | | the subnet where the | + | | | | load balancer works. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provider | No | String | Specifies the provider of | + | | | | the load balancer. The | + | | | | value can only be **vlb**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l4_flavor_id | No | String | Specifies the ID of the | + | | | | Layer-4 flavor. | + | | | | | + | | | | Specify either | + | | | | **l4_flavor_id** or | + | | | | **l7_flavor_id** or both | + | | | | **l4_flavor_id** and | + | | | | **l7_flavor_id** when you | + | | | | create a load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | guaranteed | No | Boolean | Specifies whether the load | + | | | | balancer is a dedicated | + | | | | load balancer. The value | + | | | | can only be **true**. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vpc_id | No | String | Specifies the ID of the VPC | + | | | | where the load balancer | + | | | | works. You can query **id** | + | | | | in the response by calling | + | | | | the API (GET | + | | | | https://{VPC_Endpo | + | | | | int}/v1/{project_id}/vpcs). | + | | | | | + | | | | - The subnet specified by | + | | | | **vip_subnet_cidr_id** | + | | | | must be in the VPC | + | | | | specified by **vpc_id** | + | | | | if you specify both | + | | | | **vip_subnet_cidr_id** | + | | | | and **vpc_id**. | + | | | | - The subnet specified by | + | | | | | + | | | | **ipv6_vip_virsubnet_id** | + | | | | must be in the VPC | + | | | | specified by **vpc_id** | + | | | | if you specify both | + | | | | | + | | | | **ipv6_vip_virsubnet_id** | + | | | | and **vpc_id**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | availability_zone_list | Yes | Array of strings | Specifies the list of AZs | + | | | | where the load balancer can | + | | | | be created. You can query | + | | | | the AZs by calling the API | + | | | | (GET | + | | | | https://{ | + | | | | ELB_Endpoint}/v3/{project_i | + | | | | d}/elb/availability-zones). | + | | | | Select one or more AZs in | + | | | | the same set. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | String | Specifies the enterprise | + | | | | project ID. The value | + | | | | cannot be **""**, **"0"**, | + | | | | or the ID of an enterprise | + | | | | project that does not | + | | | | exist. If this parameter is | + | | | | not passed during resource | + | | | | creation, the resource | + | | | | belongs to the default | + | | | | enterprise project. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tags | No | Array of | Lists the tags added to the | + | | | `Tag <#CreateLo | load balancer. Example: | + | | | adBalancer__request_Tag>`__ | "tags":[{"key":"my_ta | + | | | objects | g","value":"my_tag_value"}] | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the load balancer. The | + | | | | value can only be **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l7_flavor_id | No | String | Specifies the ID of the | + | | | | Layer-7 flavor. | + | | | | | + | | | | Specify either | + | | | | **l4_flavor_id** or | + | | | | **l7_flavor_id** or both | + | | | | **l4_flavor_id** and | + | | | | **l7_flavor_id** when you | + | | | | create a load balancer. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_bandwidth | No | `Bandw | Specifies the ID of the | + | | | idthRef <#CreateLoadBalance | bandwidth. This parameter | + | | | r__request_BandwidthRef>`__ | is available only when you | + | | | object | create or update a | + | | | | dedicated load balancer | + | | | | that has an IPv6 address | + | | | | bound. | + | | | | | + | | | | If you use a new IPv6 | + | | | | address and specify a | + | | | | shared bandwidth, the IPv6 | + | | | | address will be added to | + | | | | the shared bandwidth. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | publicip_ids | No | Array of strings | Specifies the ID of the EIP | + | | | | the system will | + | | | | automatically assign and | + | | | | bind to the load balancer | + | | | | during load balancer | + | | | | creation. Currently, only | + | | | | the first EIP will be bound | + | | | | to the load balancer | + | | | | although multiple EIP IDs | + | | | | can be set. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | publicip | No | `CreateLoadBalancer | Provides information about | + | | | PublicIpOption <#CreateLoad | the new IPv4 EIP that will | + | | | Balancer__request_CreateLoa | be bound to the dedicated | + | | | dBalancerPublicIpOption>`__ | load balancer during load | + | | | object | balancer creation. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | elb_virsubnet_ids | Yes | Array of strings | Lists the IDs of subnets on | + | | | | the downstream plane. You | + | | | | can query parameter **id** | + | | | | in the response by calling | + | | | | the API (GET | + | | | | https://{VPC_Endpoint | + | | | | }/v1/{project_id}/subnets). | + | | | | | + | | | | If there is more than one | + | | | | subnet, the first subnet in | + | | | | the list will be used. | + | | | | | + | | | | The subnets must be in the | + | | | | VPC where the load balancer | + | | | | works. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_target_enable | No | Boolean | Specifies whether to enable | + | | | | cross-VPC backend. The | + | | | | value can be **true** | + | | | | (enabled) or **false** | + | | | | (disabled). This function | + | | | | is supported only by | + | | | | dedicated load balancers. | + | | | | | + | | | | If you enable this | + | | | | function, you can add | + | | | | servers in a VPC connected | + | | | | through a VPC peering | + | | | | connection, in a VPC | + | | | | connected through a cloud | + | | | | connection, or in an | + | | | | on-premises data center at | + | | | | the other end of a Direct | + | | | | Connect or VPN connection, | + | | | | by using their IP | + | | | | addresses. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** Tag + + ========= ========= ====== ======================== + Parameter Mandatory Type Description + ========= ========= ====== ======================== + key No String Specifies the tag key. + value No String Specifies the tag value. + ========= ========= ====== ======================== + +.. table:: **Table 6** BandwidthRef + + ========= ========= ====== ================================== + Parameter Mandatory Type Description + ========= ========= ====== ================================== + id Yes String Specifies the shared bandwidth ID. + ========= ========= ====== ================================== + +.. table:: **Table 7** CreateLoadBalancerPublicIpOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | ip_version | No | Integer | Specifies the IP address | + | | | | version. The value can be | + | | | | **4** (IPv4) or **6** | + | | | | (IPv6). | + | | | | | + | | | | IPv6 is unsupported. The | + | | | | value cannot be **6**. | + | | | | | + | | | | Default: **4** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | network_type | Yes | String | Specifies the EIP type. The | + | | | | value can be **5_bgp** | + | | | | (default) and | + | | | | **5_mailbgp**. | + | | | | | + | | | | NOTE: | + | | | | In **eu-de**, the value of | + | | | | this parameter can only be | + | | | | **5_gray**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the IPv4 | + | | | | EIP. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | bandwidth | Yes | `CreateLoadBalancerBa | Provides supplementary | + | | | ndwidthOption <#CreateLoadB | information about the | + | | | alancer__request_CreateLoad | bandwidth. | + | | | BalancerBandwidthOption>`__ | | + | | | object | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 8** CreateLoadBalancerBandwidthOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the bandwidth | + | | | | name. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **64** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | size | No | Integer | Specifies the bandwidth | + | | | | range. | + | | | | | + | | | | The default range is 1 | + | | | | Mbit/s to 2,000 Mbit/s. | + | | | | (The specific range may | + | | | | vary depending on the | + | | | | configuration in each | + | | | | region. You can see the | + | | | | available bandwidth range | + | | | | on the management console.) | + | | | | | + | | | | Note: | + | | | | | + | | | | The minimum increment for | + | | | | bandwidth adjustment varies | + | | | | depending on the bandwidth | + | | | | range. The following are | + | | | | the details: | + | | | | | + | | | | - The minimum increment is | + | | | | 1 Mbit/s if the | + | | | | bandwidth range is from | + | | | | 0 Mbit/s to 300 Mbit/s. | + | | | | - The minimum increment is | + | | | | 50 Mbit/s if the | + | | | | bandwidth range is from | + | | | | 300 Mbit/s to 1,000 | + | | | | Mbit/s. | + | | | | - The minimum increment is | + | | | | 500 Mbit/s if the | + | | | | bandwidth is greater | + | | | | than 1,000 Mbit/s. | + | | | | | + | | | | This parameter is mandatory | + | | | | if **id** is set to | + | | | | **null**. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **99999** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | charge_mode | No | String | Specifies how the bandwidth | + | | | | used by the EIP is billed. | + | | | | | + | | | | Currently, the bandwidth | + | | | | can be billed only by | + | | | | **traffic**. | + | | | | | + | | | | This parameter is mandatory | + | | | | if **id** is set to | + | | | | **null**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | share_type | No | String | Specifies the bandwidth | + | | | | type. | + | | | | | + | | | | The value options are as | + | | | | follows: | + | | | | | + | | | | - **PER**: indicates | + | | | | dedicated bandwidth. | + | | | | - **WHOLE**: indicates | + | | | | shared bandwidth. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **id** is set to | + | | | | **null**. It will be | + | | | | ignored if the value of | + | | | | **id** is not **null**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the ID of the | + | | | | shared bandwidth. You can | + | | | | add a load balancer to a | + | | | | shared bandwidth by | + | | | | specifying its ID. | + | | | | | + | | | | If you have specified an | + | | | | ID, you do not need to pass | + | | | | other parameters. Even if | + | | | | you pass other parameters, | + | | | | the system will | + | | | | automatically ignore these | + | | | | parameters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 9** Response body parameters + + +--------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +==============+==================================================+==================================================+ + | loadbalancer | `LoadBalancer | Specifies the load balancer. | + | | <#CreateLoadBalancer__response_LoadBalancer>`__ | | + | | object | | + +--------------+--------------------------------------------------+--------------------------------------------------+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +--------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 10** LoadBalancer + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + | | | | + | | | Default: **Automatically generated** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the load balancer. The value can only | + | | | be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. The value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. The value can only be | + | | | **vlb**. | + | | | | + | | | Default: **vlb** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Cre | groups associated with the load | + | | ateLoadBalancer__response_PoolRef>`__ | balancer. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the IDs of listeners added to | + | | `ListenerRef <#CreateL | the load balancer. | + | | oadBalancer__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. The value can only be | + | | | **ONLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IPv4 address | + | | | bound to the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_cidr_id | String | Specifies the ID of the IPv4 subnet | + | | | where the load balancer works. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the virtual IP address (the value of | + | | | **vip_address**) of the load | + | | | balancer. | + | | | | + | | | When you create a dedicated load | + | | | balancer, the system automatically | + | | | creates a port for the load balancer | + | | | and associates the port with a | + | | | default security group. However, | + | | | security group rules containing the | + | | | port will not affect traffic to and | + | | | from the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags added to the load | + | | `Tag < | balancer. | + | | #CreateLoadBalancer__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | guaranteed | Boolean | Specifies whether the load balancer | + | | | is a dedicated load balancer. | + | | | | + | | | The value can be **true** or | + | | | **false**. **true** indicates a | + | | | dedicated load balancer, and | + | | | **false** indicates a shared load | + | | | balancer. When dedicated load | + | | | balancers are launched in the | + | | | **eu-de** region, either **true** or | + | | | **false** will be returned when you | + | | | use the API to query or update a load | + | | | balancer. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vpc_id | String | Specifies the ID of the VPC where the | + | | | load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eips | Array of | Specifies the EIP bound to the load | + | | `EipInfo <#Cre | balancer. | + | | ateLoadBalancer__response_EipInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_address | String | Specifies the IPv6 address bound to | + | | | the load balancer. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **None** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_virsubnet_id | String | Specifies the ID of the IPv6 subnet | + | | | where the load balancer works. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_port_id | String | Specifies the ID of the port bound to | + | | | the IPv6 address. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | availability_zone_list | Array of strings | Specifies the list of AZs where the | + | | | load balancer is created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enterprise_project_id | String | Specifies the enterprise project ID. | + | | | | + | | | If this parameter is not passed | + | | | during resource creation, the | + | | | resource belongs to the default | + | | | enterprise project. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **0** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_flavor_id | String | Specifies the Layer-4 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_scale_flavor_id | String | Specifies the reserved Layer 4 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_flavor_id | String | Specifies the Layer-7 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_scale_flavor_id | String | Specifies the reserved Layer 7 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicips | Array of | Specifies the EIP bound to the load | + | | `PublicIpInfo <#CreateLo | balancer. | + | | adBalancer__response_PublicIpInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | elb_virsubnet_ids | Array of strings | Specifies the ID of the subnet on the | + | | | downstream plane. The ports used by | + | | | the load balancer dynamically occupy | + | | | IP addresses in the subnet. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_target_enable | Boolean | Specifies whether to enable cross-VPC | + | | | backend. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | frozen_scene | String | Specifies the scenario where the load | + | | | balancer is frozen. Use commas to | + | | | separate multiple scenarios. | + | | | | + | | | If the value is **ARREAR**, the load | + | | | balancer is frozen because your | + | | | account is in arrears. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_bandwidth | `BandwidthRef <#CreateLo | Specifies the ID of the bandwidth. | + | | adBalancer__response_BandwidthRef>`__ | This parameter is available only when | + | | object | you create or update a dedicated load | + | | | balancer that has an IPv6 address | + | | | bound. | + | | | | + | | | If you use a new IPv6 address and | + | | | specify a shared bandwidth, the IPv6 | + | | | address will be added to the shared | + | | | bandwidth. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +.. table:: **Table 12** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 13** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 14** EipInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | eip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eip_address | String | Specifies the specific IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. **4** | + | | | indicates IPv4, and **6** indicates | + | | | IPv6. | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 15** PublicIpInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | publicip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicip_address | String | Specifies the IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. The value | + | | | can be **4** (IPv4) or **6** (IPv6). | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 16** BandwidthRef + + ========= ====== ================================== + Parameter Type Description + ========= ====== ================================== + id String Specifies the shared bandwidth ID. + ========= ====== ================================== + +Example Requests +^^^^^^^^^^^^^^^^ + +Example 1: Creating a load balancer with an IPv4 EIP + +.. code:: screen + + POST + + https://{ELB_Endponit}/v3/060576782980d5762f9ec014dd2f1148/elb/loadbalancers + + { + "loadbalancer" : { + "vpc_id" : "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b", + "availability_zone_list" : [ "br-iaas-odin1a" ], + "admin_state_up" : true, + "vip_subnet_cidr_id" : "1800b6b8-a69f-4719-813d-24d62aaf32bd", + "elb_virsubnet_ids" : [ "1fe8c0a8-d648-4294-8ea5-4d7f0c700e69" ], + "name" : "elb-ipv4-public", + "publicip" : { + "network_type" : "5_bgp", + "bandwidth" : { + "size" : 2, + "share_type" : "PER", + "charge_mode" : "traffic", + "name" : "elb_eip_traffic" + } + } + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "request_id" : "86bb342be098113734389bffcf593607", + "loadbalancer" : { + "id" : "badd5a4b-14cf-4319-ac91-4182a80dee9a", + "project_id" : "060576782980d5762f9ec014dd2f1148", + "name" : "elb-ipv4-public", + "description" : "", + "vip_port_id" : "265c13fb-49a9-4f51-b848-7f0cced0aef0", + "vip_address" : "192.168.0.151", + "admin_state_up" : true, + "provisioning_status" : "ACTIVE", + "operating_status" : "ONLINE", + "listeners" : [ ], + "pools" : [ ], + "tags" : [ ], + "provider" : "vlb", + "created_at" : "2021-03-29T02:44:47Z", + "updated_at" : "2021-03-29T02:44:47Z", + "vpc_id" : "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b", + "enterprise_project_id" : "0", + "availability_zone_list" : [ "br-iaas-odin1a" ], + "publicips" : [ { + "publicip_id" : "448d497a-8f65-4c17-b2b2-f21279446e00", + "publicip_address" : "10.246.170.154", + "ip_version" : 4 + } ], + "elb_virsubnet_ids" : [ "4df3e391-5ebf-4300-b614-cf5a4e793666" ], + "elb_virsubnet_type" : "dualstack", + "ip_target_enable" : false, + "eips" : [ { + "eip_id" : "448d497a-8f65-4c17-b2b2-f21279446e00", + "eip_address" : "10.246.170.154", + "ip_version" : 4 + } ], + "guaranteed" : true, + "l4_flavor_id" : "e5acacda-f861-404e-9871-df480c49d185", + "l7_flavor_id" : "2f124f60-980a-42f3-b201-35461df1b936", + "vip_subnet_cidr_id" : "1800b6b8-a69f-4719-813d-24d62aaf32bd" + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/CreateMember.html b/elb/api-ref/CreateMember.html new file mode 100644 index 000000000..605efd836 --- /dev/null +++ b/elb/api-ref/CreateMember.html @@ -0,0 +1,375 @@ + + +

      Adding a Backend Server

      +

      Function

      This API is used to add a backend server.

      + +

      Constraints

      When you add backend servers, note the following:

      +
      • Two backend servers in the same backend server group must have different IP addresses and ports.

        +
      • If no subnets are specified during cloud server creation, cross-VPC backend servers can be added. In this case, address must be set to an IPv4 address, the protocol of the backend server group must be TCP, HTTP, or HTTPS, and cross-VPC backend must have been enabled for the load balancer.

        +
      • If a subnet is specified during cloud server creation, the subnet must be in the same VPC as the subnet from which the virtual IP address bound to the load balancer is assigned.

        +
      • If the backend server group supports IPv4/IPv6 dual stack, address can be an IPv4 or IPv6 address. The value of address depends on the IP address version of the backend server group.

        +
      + +

      URI

      POST /v3/{project_id}/elb/pools/{pool_id}/members

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      member

      +

      Yes

      +

      CreateMemberOption object

      +

      Specifies request parameters for creating a backend server.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreateMemberOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      address

      +

      Yes

      +

      String

      +

      Specifies the IP address of the backend server.

      +
      • The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11.

        +
      • The IP address can only be the IP address of the primary NIC.

        +
      • If subnet_cidr_id is left blank, cross-VPC backend is enabled. In this case, these servers must use IPv4 addresses.

        +
      +

      Minimum: 1

      +

      Maximum: 64

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      protocol_port

      +

      Yes

      +

      Integer

      +

      Specifies the port used by the backend server to receive requests.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      subnet_cidr_id

      +

      No

      +

      String

      +

      Specifies the ID of the subnet where the backend server works.

      +

      This subnet must be in the same VPC as the subnet of the load balancer with which the backend server is associated. Only IPv4 subnets are supported.

      +

      This parameter can be left blank, indicating that cross-VPC backend servers can be added. In this case, IP addresses of these servers must be IPv4 addresses, the protocol of the backend server group must be TCP, HTTP, or HTTPS, and cross-VPC backend must have been enabled for the load balancer.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights.

      +

      If the weight is 0, the backend server will not accept new requests.

      +

      This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Minimum: 0

      +

      Maximum: 100

      +

      Default: 1

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 5 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      member

      +

      Member object

      +

      Specifies the backend server.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Member

      Parameter

      +

      Type

      +

      Description

      +

      address

      +

      String

      +

      Specifies the IP address of the backend server.

      +

      The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11. The IP address can only be the IP address of the primary NIC.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.

        +
      • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

        +
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

        +
      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server to receive requests.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      subnet_cidr_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. This subnet must be in the VPC as the subnet of the load balancer associated with the backend server. Only IPv4 subnets are supported. If the value is left blank, the backend server is not in the load balancer's VPC.

      +

      weight

      +

      Integer

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights.

      +

      If the weight is 0, the backend server will not accept new requests.

      +

      This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Minimum: 0

      +

      Maximum: 100

      +

      Default: 1

      +

      ip_version

      +

      String

      +

      This is a read-only attribute, which is automatically generated based on the address parameter. The value can be v4 or v6.

      +

      Default: v4

      +
      + + +

      Example Requests

      POST
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members
      +
      +{
      +  "member" : {
      +    "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
      +    "protocol_port" : 89,
      +    "name" : "My member",
      +    "address" : "120.10.10.16"
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "member" : {
      +    "name" : "My member",
      +    "weight" : 1,
      +    "admin_state_up" : false,
      +    "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "address" : "120.10.10.16",
      +    "protocol_port" : 89,
      +    "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f",
      +    "operating_status" : "NO_MONITOR",
      +    "ip_version" : "v4"
      +  },
      +  "request_id" : "f354090d-41db-41e0-89c6-7a943ec50792"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/CreateMember.rst b/elb/api-ref/CreateMember.rst new file mode 100644 index 000000000..c57db2eee --- /dev/null +++ b/elb/api-ref/CreateMember.rst @@ -0,0 +1,345 @@ +Adding a Backend Server +======================= + +Function +^^^^^^^^ + +This API is used to add a backend server. + +Constraints +^^^^^^^^^^^ + +When you add backend servers, note the following: + +- Two backend servers in the same backend server group must have different IP addresses and ports. + +- If no subnets are specified during cloud server creation, cross-VPC backend servers can be added. In this case, **address** must be set to an IPv4 address, the protocol of the backend server group must be TCP, HTTP, or HTTPS, and cross-VPC backend must have been enabled for the load balancer. + +- If a subnet is specified during cloud server creation, the subnet must be in the same VPC as the subnet from which the virtual IP address bound to the load balancer is assigned. + +- If the backend server group supports IPv4/IPv6 dual stack, **address** can be an IPv4 or IPv6 address. The value of **address** depends on the IP address version of the backend server group. + +URI +^^^ + +POST /v3/{project_id}/elb/pools/{pool_id}/members + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + project_id Yes String Specifies the project ID. + ========== ========= ====== ============================================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=============================================+=============================================+ + | member | Yes | `CreateMemberOption <#C | Specifies request parameters for creating a | + | | | reateMember__request_CreateMemberOption>`__ | backend server. | + | | | object | | + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + +.. table:: **Table 4** CreateMemberOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | address | Yes | String | Specifies the IP address of | + | | | | the backend server. | + | | | | | + | | | | - The IP address must be | + | | | | in the subnet specified | + | | | | by **subnet_cidr_id**, | + | | | | for example, | + | | | | 192.168.3.11. | + | | | | | + | | | | - The IP address can only | + | | | | be the IP address of the | + | | | | primary NIC. | + | | | | | + | | | | - If **subnet_cidr_id** is | + | | | | left blank, cross-VPC | + | | | | backend is enabled. In | + | | | | this case, these servers | + | | | | must use IPv4 addresses. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **64** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | Although this parameter can | + | | | | be used in the APIs for | + | | | | creating and updating | + | | | | backend servers, its actual | + | | | | value depends on whether | + | | | | cloud servers exist. If | + | | | | cloud servers exist, the | + | | | | value is **true**. | + | | | | Otherwise, the value is | + | | | | **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **32** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | Yes | Integer | Specifies the port used by | + | | | | the backend server to | + | | | | receive requests. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **65535** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | subnet_cidr_id | No | String | Specifies the ID of the | + | | | | subnet where the backend | + | | | | server works. | + | | | | | + | | | | This subnet must be in the | + | | | | same VPC as the subnet of | + | | | | the load balancer with | + | | | | which the backend server is | + | | | | associated. Only IPv4 | + | | | | subnets are supported. | + | | | | | + | | | | This parameter can be left | + | | | | blank, indicating that | + | | | | cross-VPC backend servers | + | | | | can be added. In this case, | + | | | | IP addresses of these | + | | | | servers must be IPv4 | + | | | | addresses, the protocol of | + | | | | the backend server group | + | | | | must be TCP, HTTP, or | + | | | | HTTPS, and cross-VPC | + | | | | backend must have been | + | | | | enabled for the load | + | | | | balancer. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the weight of the | + | | | | backend server. | + | | | | | + | | | | Requests are routed to | + | | | | backend servers in the same | + | | | | backend server group based | + | | | | on their weights. | + | | | | | + | | | | If the weight is 0, the | + | | | | backend server will not | + | | | | accept new requests. | + | | | | | + | | | | This parameter is invalid | + | | | | when **lb_algorithm** is | + | | | | set to **SOURCE_IP** for | + | | | | the backend server group | + | | | | that contains the backend | + | | | | server. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **100** | + | | | | | + | | | | Default: **1** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 5** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | member | `Member <#CreateMember__response_Member>`__ | Specifies the backend server. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 6** Member + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | address | String | Specifies the IP address of the | + | | | backend server. | + | | | | + | | | The IP address must be in the subnet | + | | | specified by **subnet_cidr_id**, for | + | | | example, 192.168.3.11. The IP address | + | | | can only be the IP address of the | + | | | primary NIC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | Although this parameter can be used | + | | | in the APIs for creating and updating | + | | | backend servers, its actual value | + | | | depends on whether cloud servers | + | | | exist. If cloud servers exist, the | + | | | value is **true**. Otherwise, the | + | | | value is **false**. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | backend server. The value can be one | + | | | of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group to which the backend server | + | | | belongs. | + | | | | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server to receive requests. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_cidr_id | String | Specifies the ID of the subnet where | + | | | the backend server works. This subnet | + | | | must be in the VPC as the subnet of | + | | | the load balancer associated with the | + | | | backend server. Only IPv4 subnets are | + | | | supported. If the value is left | + | | | blank, the backend server is not in | + | | | the load balancer's VPC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the weight of the backend | + | | | server. | + | | | | + | | | Requests are routed to backend | + | | | servers in the same backend server | + | | | group based on their weights. | + | | | | + | | | If the weight is 0, the backend | + | | | server will not accept new requests. | + | | | | + | | | This parameter is invalid when | + | | | **lb_algorithm** is set to | + | | | **SOURCE_IP** for the backend server | + | | | group that contains the backend | + | | | server. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **100** | + | | | | + | | | Default: **1** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | This is a read-only attribute, which | + | | | is automatically generated based on | + | | | the **address** parameter. The value | + | | | can be **v4** or **v6**. | + | | | | + | | | Default: **v4** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + POST + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members + + { + "member" : { + "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74", + "protocol_port" : 89, + "name" : "My member", + "address" : "120.10.10.16" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "member" : { + "name" : "My member", + "weight" : 1, + "admin_state_up" : false, + "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "address" : "120.10.10.16", + "protocol_port" : 89, + "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f", + "operating_status" : "NO_MONITOR", + "ip_version" : "v4" + }, + "request_id" : "f354090d-41db-41e0-89c6-7a943ec50792" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/CreatePool.html b/elb/api-ref/CreatePool.html new file mode 100644 index 000000000..44dc6c20c --- /dev/null +++ b/elb/api-ref/CreatePool.html @@ -0,0 +1,654 @@ + + +

      Creating a Backend Server Group

      +

      Function

      This API is used to create a backend server group.

      + +

      Constraints

      If session-persistence is specified, cookie_name is available only when type is set to APP_COOKIE.

      +

      If listener_id is specified, the listener must have no backend server group associated.

      + +

      URI

      POST /v3/{project_id}/elb/pools

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool

      +

      Yes

      +

      CreatePoolOption object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreatePoolOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      lb_algorithm

      +

      Yes

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers.

      +

      The value can be one of the following:

      +
      • ROUND_ROBIN: weighted round robin

        +
      • LEAST_CONNECTIONS: weighted least connections

        +
      • SOURCE_IP: source IP hash

        +
      +

      When the value is SOURCE_IP, the weights of backend servers are invalid.

      +

      listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener associated with the backend server group. Specify either listener_id or loadbalancer_id, or both of them.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the ID of the associated load balancer. Specify either listener_id or loadbalancer_id, or both of them.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server group name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      Yes

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. TCP, UDP, and HTTP are supported.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      Minimum: 1

      +

      Maximum: 255

      +

      session_persistence

      +

      No

      +

      CreatePoolSessionPersistenceOption object

      +

      Specifies whether to enable sticky sessions.

      +

      slow_start

      +

      No

      +

      CreatePoolSlowStartOption object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 CreatePoolSessionPersistenceOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      cookie_name

      +

      No

      +

      String

      +

      Specifies the cookie name. This parameter will take effect only when type is set to APP_COOKIE. Otherwise, an error will be returned.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      No

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + + + + +
      Table 6 CreatePoolSlowStartOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      enable

      +

      Yes

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Yes

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 7 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      pool

      +

      Pool object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 Pool

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      id

      +

      String

      +

      Specifies the backend server group ID.

      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers in the backend server group.

      +

      The value can be ROUND_ROBIN (weighted round robin), LEAST_CONNECTIONS (weighted least connections), or SOURCE_IP (source IP hash).

      +

      When the value is SOURCE_IP, the weight parameter is invalid.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      If only listener_id is specified during the creation of the backend server group, the ID of the loadbalancers parameter in the response is the ID of the load balancer to which the listener is added.

      +

      members

      +

      Array of MemberRef objects

      +

      Lists the backend servers in the backend server group.

      +

      name

      +

      String

      +

      Specifies the backend server group name.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. The protocol can be TCP, UDP, or HTTP.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      session_persistence

      +

      SessionPersistence object

      +

      Specifies the sticky session.

      +

      ip_version

      +

      String

      +

      Specifies the IP version supported by the backend server group.

      +
      • Shared load balancers: The default value is v4.

        +
      • Dedicated load balancers: The value can be dualstack, v4, or v6.

        +
      +

      When the protocol of the backend server group is TCP or UDP, ip_version is set to dualstack, indicating that both IPv4 and IPv6 are supported.

      +

      When the protocol of the backend server group is HTTP, ip_version is set to v4.

      +

      IPv6 is unsupported. Only v4 is returned.

      +

      Default: dualstack

      +

      slow_start

      +

      SlowStart object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 9 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + +
      Table 10 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + +
      Table 11 MemberRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 12 SessionPersistence

      Parameter

      +

      Type

      +

      Description

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter will take effect only when type is set to APP_COOKIE.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + +
      Table 13 SlowStart

      Parameter

      +

      Type

      +

      Description

      +

      enable

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Example Requests

      Adding an HTTP backend server group

      +
      POST
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools
      +
      +{
      +  "pool" : {
      +    "name" : "My pool",
      +    "lb_algorithm" : "LEAST_CONNECTIONS",
      +    "listener_id" : "0b11747a-b139-492f-9692-2df0b1c87193",
      +    "protocol" : "HTTP",
      +    "slow_start" : {
      +      "enable" : true,
      +      "duration" : 50
      +    }
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "pool" : {
      +    "lb_algorithm" : "LEAST_CONNECTIONS",
      +    "protocol" : "HTTP",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "098b2f68-af1c-41a9-8efd-69958722af62"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listeners" : [ {
      +      "id" : "0b11747a-b139-492f-9692-2df0b1c87193"
      +    } ],
      +    "members" : [ ],
      +    "id" : "36ce7086-a496-4666-9064-5ba0e6840c75",
      +    "name" : "My pool",
      +    "ip_version" : "v4",
      +    "slow_start" : {
      +      "enable" : true,
      +      "duration" : 50
      +    }
      +  },
      +  "request_id" : "2d974978-0733-404d-a21a-b29204f4803a"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/CreatePool.rst b/elb/api-ref/CreatePool.rst new file mode 100644 index 000000000..549cc54ae --- /dev/null +++ b/elb/api-ref/CreatePool.rst @@ -0,0 +1,603 @@ +Creating a Backend Server Group +=============================== + +Function +^^^^^^^^ + +This API is used to create a backend server group. + +Constraints +^^^^^^^^^^^ + +If **session-persistence** is specified, **cookie_name** is available only when **type** is set to **APP_COOKIE**. + +If **listener_id** is specified, the listener must have no backend server group associated. + +URI +^^^ + +POST /v3/{project_id}/elb/pools + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------------------------------+-------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=====================================================================+=====================================+ + | pool | Yes | `CreatePoolOption <#CreatePool__request_CreatePoolOption>`__ object | Specifies the backend server group. | + +-----------+-----------+---------------------------------------------------------------------+-------------------------------------+ + +.. table:: **Table 4** CreatePoolOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server group. | + | | | | The value can only be | + | | | | updated to **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | Yes | String | Specifies the load | + | | | | balancing algorithm used by | + | | | | the load balancer to route | + | | | | requests to backend | + | | | | servers. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **ROUND_ROBIN**: | + | | | | weighted round robin | + | | | | | + | | | | - **LEAST_CONNECTIONS**: | + | | | | weighted least | + | | | | connections | + | | | | | + | | | | - **SOURCE_IP**: source IP | + | | | | hash | + | | | | | + | | | | When the value is | + | | | | **SOURCE_IP**, the weights | + | | | | of backend servers are | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | No | String | Specifies the ID of the | + | | | | listener associated with | + | | | | the backend server group. | + | | | | Specify either | + | | | | **listener_id** or | + | | | | **loadbalancer_id**, or | + | | | | both of them. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | String | Specifies the ID of the | + | | | | associated load balancer. | + | | | | Specify either | + | | | | **listener_id** or | + | | | | **loadbalancer_id**, or | + | | | | both of them. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server group name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | Yes | String | Specifies the protocol used | + | | | | by the backend server group | + | | | | to receive requests. TCP, | + | | | | UDP, and HTTP are | + | | | | supported. | + | | | | | + | | | | - For UDP listeners, the | + | | | | protocol of the backend | + | | | | server group must be | + | | | | UDP. | + | | | | | + | | | | - For TCP listeners, the | + | | | | protocol of the backend | + | | | | server group must be | + | | | | TCP. | + | | | | | + | | | | - For HTTP or HTTPS | + | | | | listeners, the protocol | + | | | | of the backend server | + | | | | group must be HTTP. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | session_persistence | No | `CreatePoolSess | Specifies whether to enable | + | | | ionPersistenceOption <#Crea | sticky sessions. | + | | | tePool__request_CreatePoolS | | + | | | essionPersistenceOption>`__ | | + | | | object | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | slow_start | No | `CreatePoolSlowStartOpti | Specifies whether to enable | + | | | on <#CreatePool__request_Cr | slow start. After you | + | | | eatePoolSlowStartOption>`__ | enable slow start, new | + | | | object | backend servers added to | + | | | | the backend server group | + | | | | are warmed up, and the | + | | | | number of requests they can | + | | | | receive increases linearly | + | | | | during the configured slow | + | | | | start duration. | + | | | | | + | | | | This parameter can be used | + | | | | when the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS. An error | + | | | | will be returned if the | + | | | | protocol is not HTTP or | + | | | | HTTPS. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** CreatePoolSessionPersistenceOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | cookie_name | No | String | Specifies the cookie name. | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **APP_COOKIE**. | + | | | | Otherwise, an error will be | + | | | | returned. | + | | | | | + | | | | The value can contain only | + | | | | letters, digits, hyphens | + | | | | (-), underscores (_), and | + | | | | periods (.). | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **1024** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the sticky | + | | | | session type. The value can | + | | | | be **SOURCE_IP**, | + | | | | **HTTP_COOKIE**, or | + | | | | **APP_COOKIE**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, only | + | | | | **SOURCE_IP** takes | + | | | | effect. | + | | | | | + | | | | - For dedicated load | + | | | | balancers, if the | + | | | | protocol of the backend | + | | | | server group is HTTP or | + | | | | HTTPS, the value can | + | | | | only be **HTTP_COOKIE**. | + | | | | | + | | | | - For shared load | + | | | | balancers, if the | + | | | | protocol of the backend | + | | | | server group is HTTP or | + | | | | HTTPS, the value can be | + | | | | **HTTP_COOKIE** or | + | | | | **APP_COOKIE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | persistence_timeout | No | Integer | Specifies the stickiness | + | | | | duration, in minutes. This | + | | | | parameter will not take | + | | | | effect when **type** is set | + | | | | to **APP_COOKIE**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, the value | + | | | | ranges from **1** to | + | | | | **60**, and the default | + | | | | value is **1**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS, the value | + | | | | ranges from **1** to | + | | | | **1440**, and the | + | | | | default value is | + | | | | **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 6** CreatePoolSlowStartOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | enable | Yes | Boolean | Specifies whether to enable | + | | | | slow start. | + | | | | | + | | | | **true** indicates that | + | | | | this function is enabled, | + | | | | and **false** indicates | + | | | | this function is disabled. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | duration | Yes | Integer | Specifies the slow start | + | | | | duration, in seconds. | + | | | | | + | | | | The value ranges from | + | | | | **30** to **1200**, and the | + | | | | default value is **30**. | + | | | | | + | | | | Minimum: **30** | + | | | | | + | | | | Maximum: **1200** | + | | | | | + | | | | Default: **30** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 7** Response body parameters + + ========== ============================================ =============================================================== + Parameter Type Description + ========== ============================================ =============================================================== + request_id String Specifies the request ID. The value is automatically generated. + pool `Pool <#CreatePool__response_Pool>`__ object Specifies the backend server group. + ========== ============================================ =============================================================== + +.. table:: **Table 8** Pool + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. The | + | | | value can only be updated to | + | | | **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server group | + | | | ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm used by the load balancer | + | | | to route requests to backend servers | + | | | in the backend server group. | + | | | | + | | | The value can be **ROUND_ROBIN** | + | | | (weighted round robin), | + | | | **LEAST_CONNECTIONS** (weighted least | + | | | connections), or **SOURCE_IP** | + | | | (source IP hash). | + | | | | + | | | When the value is **SOURCE_IP**, the | + | | | **weight** parameter is invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the listeners associated with | + | | `ListenerRef < | the backend server group. | + | | #CreatePool__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Lists the IDs of load balancers | + | | `LoadBalancerRef <#Cre | associated with the backend server | + | | atePool__response_LoadBalancerRef>`__ | group. | + | | objects | | + | | | If only **listener_id** is specified | + | | | during the creation of the backend | + | | | server group, the ID of the | + | | | **loadbalancers** parameter in the | + | | | response is the ID of the load | + | | | balancer to which the listener is | + | | | added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array of | Lists the backend servers in the | + | | `MemberRef | backend server group. | + | | <#CreatePool__response_MemberRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server group | + | | | name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | backend server group to receive | + | | | requests. The protocol can be TCP, | + | | | UDP, or HTTP. | + | | | | + | | | - For UDP listeners, the protocol of | + | | | the backend server group must be | + | | | UDP. | + | | | | + | | | - For TCP listeners, the protocol of | + | | | the backend server group must be | + | | | TCP. | + | | | | + | | | - For HTTP or HTTPS listeners, the | + | | | protocol of the backend server | + | | | group must be HTTP. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | `SessionPersistence <#Create | Specifies the sticky session. | + | | Pool__response_SessionPersistence>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | Specifies the IP version supported by | + | | | the backend server group. | + | | | | + | | | - Shared load balancers: The default | + | | | value is **v4**. | + | | | | + | | | - Dedicated load balancers: The | + | | | value can be **dualstack**, | + | | | **v4**, or **v6**. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP or UDP, | + | | | **ip_version** is set to | + | | | **dualstack**, indicating that both | + | | | IPv4 and IPv6 are supported. | + | | | | + | | | When the protocol of the backend | + | | | server group is HTTP, **ip_version** | + | | | is set to **v4**. | + | | | | + | | | IPv6 is unsupported. Only **v4** is | + | | | returned. | + | | | | + | | | Default: **dualstack** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | slow_start | `SlowStart | Specifies whether to enable slow | + | | <#CreatePool__response_SlowStart>`__ | start. After you enable slow start, | + | | object | new backend servers added to the | + | | | backend server group are warmed up, | + | | | and the number of requests they can | + | | | receive increases linearly during the | + | | | configured slow start duration. | + | | | | + | | | This parameter can be used when the | + | | | protocol of the backend server group | + | | | is HTTP or HTTPS. An error will be | + | | | returned if the protocol is not HTTP | + | | | or HTTPS. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 10** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 11** MemberRef + + ========= ====== ================================ + Parameter Type Description + ========= ====== ================================ + id String Specifies the backend server ID. + ========= ====== ================================ + +.. table:: **Table 12** SessionPersistence + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter will take effect only | + | | | when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | The value can contain only letters, | + | | | digits, hyphens (-), underscores (_), | + | | | and periods (.). | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the sticky session type. | + | | | The value can be **SOURCE_IP**, | + | | | **HTTP_COOKIE**, or **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, only | + | | | **SOURCE_IP** takes effect. | + | | | | + | | | - For dedicated load balancers, if | + | | | the protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can only be **HTTP_COOKIE**. | + | | | | + | | | - For shared load balancers, if the | + | | | protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can be **HTTP_COOKIE** or | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the stickiness duration, in | + | | | minutes. This parameter will not take | + | | | effect when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, the | + | | | value ranges from **1** to **60**, | + | | | and the default value is **1**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is HTTP or HTTPS, the | + | | | value ranges from **1** to | + | | | **1440**, and the default value is | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 13** SlowStart + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | enable | Boolean | Specifies whether to enable slow | + | | | start. | + | | | | + | | | **true** indicates that this function | + | | | is enabled, and **false** indicates | + | | | this function is disabled. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | duration | Integer | Specifies the slow start duration, in | + | | | seconds. | + | | | | + | | | The value ranges from **30** to | + | | | **1200**, and the default value is | + | | | **30**. | + | | | | + | | | Minimum: **30** | + | | | | + | | | Maximum: **1200** | + | | | | + | | | Default: **30** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +Adding an HTTP backend server group + +.. code:: screen + + POST + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools + + { + "pool" : { + "name" : "My pool", + "lb_algorithm" : "LEAST_CONNECTIONS", + "listener_id" : "0b11747a-b139-492f-9692-2df0b1c87193", + "protocol" : "HTTP", + "slow_start" : { + "enable" : true, + "duration" : 50 + } + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "pool" : { + "lb_algorithm" : "LEAST_CONNECTIONS", + "protocol" : "HTTP", + "description" : "", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "098b2f68-af1c-41a9-8efd-69958722af62" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listeners" : [ { + "id" : "0b11747a-b139-492f-9692-2df0b1c87193" + } ], + "members" : [ ], + "id" : "36ce7086-a496-4666-9064-5ba0e6840c75", + "name" : "My pool", + "ip_version" : "v4", + "slow_start" : { + "enable" : true, + "duration" : 50 + } + }, + "request_id" : "2d974978-0733-404d-a21a-b29204f4803a" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/CreatePool1.html b/elb/api-ref/CreatePool1.html new file mode 100644 index 000000000..44dc6c20c --- /dev/null +++ b/elb/api-ref/CreatePool1.html @@ -0,0 +1,654 @@ + + +

      Creating a Backend Server Group

      +

      Function

      This API is used to create a backend server group.

      + +

      Constraints

      If session-persistence is specified, cookie_name is available only when type is set to APP_COOKIE.

      +

      If listener_id is specified, the listener must have no backend server group associated.

      + +

      URI

      POST /v3/{project_id}/elb/pools

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool

      +

      Yes

      +

      CreatePoolOption object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CreatePoolOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      lb_algorithm

      +

      Yes

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers.

      +

      The value can be one of the following:

      +
      • ROUND_ROBIN: weighted round robin

        +
      • LEAST_CONNECTIONS: weighted least connections

        +
      • SOURCE_IP: source IP hash

        +
      +

      When the value is SOURCE_IP, the weights of backend servers are invalid.

      +

      listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener associated with the backend server group. Specify either listener_id or loadbalancer_id, or both of them.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the ID of the associated load balancer. Specify either listener_id or loadbalancer_id, or both of them.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server group name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      project_id

      +

      No

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      Yes

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. TCP, UDP, and HTTP are supported.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      Minimum: 1

      +

      Maximum: 255

      +

      session_persistence

      +

      No

      +

      CreatePoolSessionPersistenceOption object

      +

      Specifies whether to enable sticky sessions.

      +

      slow_start

      +

      No

      +

      CreatePoolSlowStartOption object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 CreatePoolSessionPersistenceOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      cookie_name

      +

      No

      +

      String

      +

      Specifies the cookie name. This parameter will take effect only when type is set to APP_COOKIE. Otherwise, an error will be returned.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      No

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + + + + +
      Table 6 CreatePoolSlowStartOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      enable

      +

      Yes

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Yes

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Response Parameters

      Status code: 201

      + + + + + + + + + + + + + + + +
      Table 7 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      pool

      +

      Pool object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 Pool

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      id

      +

      String

      +

      Specifies the backend server group ID.

      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers in the backend server group.

      +

      The value can be ROUND_ROBIN (weighted round robin), LEAST_CONNECTIONS (weighted least connections), or SOURCE_IP (source IP hash).

      +

      When the value is SOURCE_IP, the weight parameter is invalid.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      If only listener_id is specified during the creation of the backend server group, the ID of the loadbalancers parameter in the response is the ID of the load balancer to which the listener is added.

      +

      members

      +

      Array of MemberRef objects

      +

      Lists the backend servers in the backend server group.

      +

      name

      +

      String

      +

      Specifies the backend server group name.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. The protocol can be TCP, UDP, or HTTP.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      session_persistence

      +

      SessionPersistence object

      +

      Specifies the sticky session.

      +

      ip_version

      +

      String

      +

      Specifies the IP version supported by the backend server group.

      +
      • Shared load balancers: The default value is v4.

        +
      • Dedicated load balancers: The value can be dualstack, v4, or v6.

        +
      +

      When the protocol of the backend server group is TCP or UDP, ip_version is set to dualstack, indicating that both IPv4 and IPv6 are supported.

      +

      When the protocol of the backend server group is HTTP, ip_version is set to v4.

      +

      IPv6 is unsupported. Only v4 is returned.

      +

      Default: dualstack

      +

      slow_start

      +

      SlowStart object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 9 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + +
      Table 10 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + +
      Table 11 MemberRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 12 SessionPersistence

      Parameter

      +

      Type

      +

      Description

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter will take effect only when type is set to APP_COOKIE.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + +
      Table 13 SlowStart

      Parameter

      +

      Type

      +

      Description

      +

      enable

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Example Requests

      Adding an HTTP backend server group

      +
      POST
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools
      +
      +{
      +  "pool" : {
      +    "name" : "My pool",
      +    "lb_algorithm" : "LEAST_CONNECTIONS",
      +    "listener_id" : "0b11747a-b139-492f-9692-2df0b1c87193",
      +    "protocol" : "HTTP",
      +    "slow_start" : {
      +      "enable" : true,
      +      "duration" : 50
      +    }
      +  }
      +}
      + +

      Example Responses

      Status code: 201

      +

      Successful request.

      +
      {
      +  "pool" : {
      +    "lb_algorithm" : "LEAST_CONNECTIONS",
      +    "protocol" : "HTTP",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "098b2f68-af1c-41a9-8efd-69958722af62"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listeners" : [ {
      +      "id" : "0b11747a-b139-492f-9692-2df0b1c87193"
      +    } ],
      +    "members" : [ ],
      +    "id" : "36ce7086-a496-4666-9064-5ba0e6840c75",
      +    "name" : "My pool",
      +    "ip_version" : "v4",
      +    "slow_start" : {
      +      "enable" : true,
      +      "duration" : 50
      +    }
      +  },
      +  "request_id" : "2d974978-0733-404d-a21a-b29204f4803a"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      201

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/CreatePool1.rst b/elb/api-ref/CreatePool1.rst new file mode 100644 index 000000000..549cc54ae --- /dev/null +++ b/elb/api-ref/CreatePool1.rst @@ -0,0 +1,603 @@ +Creating a Backend Server Group +=============================== + +Function +^^^^^^^^ + +This API is used to create a backend server group. + +Constraints +^^^^^^^^^^^ + +If **session-persistence** is specified, **cookie_name** is available only when **type** is set to **APP_COOKIE**. + +If **listener_id** is specified, the listener must have no backend server group associated. + +URI +^^^ + +POST /v3/{project_id}/elb/pools + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------------------------------+-------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=====================================================================+=====================================+ + | pool | Yes | `CreatePoolOption <#CreatePool__request_CreatePoolOption>`__ object | Specifies the backend server group. | + +-----------+-----------+---------------------------------------------------------------------+-------------------------------------+ + +.. table:: **Table 4** CreatePoolOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server group. | + | | | | The value can only be | + | | | | updated to **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | Yes | String | Specifies the load | + | | | | balancing algorithm used by | + | | | | the load balancer to route | + | | | | requests to backend | + | | | | servers. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **ROUND_ROBIN**: | + | | | | weighted round robin | + | | | | | + | | | | - **LEAST_CONNECTIONS**: | + | | | | weighted least | + | | | | connections | + | | | | | + | | | | - **SOURCE_IP**: source IP | + | | | | hash | + | | | | | + | | | | When the value is | + | | | | **SOURCE_IP**, the weights | + | | | | of backend servers are | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | No | String | Specifies the ID of the | + | | | | listener associated with | + | | | | the backend server group. | + | | | | Specify either | + | | | | **listener_id** or | + | | | | **loadbalancer_id**, or | + | | | | both of them. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | String | Specifies the ID of the | + | | | | associated load balancer. | + | | | | Specify either | + | | | | **listener_id** or | + | | | | **loadbalancer_id**, or | + | | | | both of them. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server group name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | project_id | No | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | Yes | String | Specifies the protocol used | + | | | | by the backend server group | + | | | | to receive requests. TCP, | + | | | | UDP, and HTTP are | + | | | | supported. | + | | | | | + | | | | - For UDP listeners, the | + | | | | protocol of the backend | + | | | | server group must be | + | | | | UDP. | + | | | | | + | | | | - For TCP listeners, the | + | | | | protocol of the backend | + | | | | server group must be | + | | | | TCP. | + | | | | | + | | | | - For HTTP or HTTPS | + | | | | listeners, the protocol | + | | | | of the backend server | + | | | | group must be HTTP. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | session_persistence | No | `CreatePoolSess | Specifies whether to enable | + | | | ionPersistenceOption <#Crea | sticky sessions. | + | | | tePool__request_CreatePoolS | | + | | | essionPersistenceOption>`__ | | + | | | object | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | slow_start | No | `CreatePoolSlowStartOpti | Specifies whether to enable | + | | | on <#CreatePool__request_Cr | slow start. After you | + | | | eatePoolSlowStartOption>`__ | enable slow start, new | + | | | object | backend servers added to | + | | | | the backend server group | + | | | | are warmed up, and the | + | | | | number of requests they can | + | | | | receive increases linearly | + | | | | during the configured slow | + | | | | start duration. | + | | | | | + | | | | This parameter can be used | + | | | | when the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS. An error | + | | | | will be returned if the | + | | | | protocol is not HTTP or | + | | | | HTTPS. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** CreatePoolSessionPersistenceOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | cookie_name | No | String | Specifies the cookie name. | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **APP_COOKIE**. | + | | | | Otherwise, an error will be | + | | | | returned. | + | | | | | + | | | | The value can contain only | + | | | | letters, digits, hyphens | + | | | | (-), underscores (_), and | + | | | | periods (.). | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **1024** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the sticky | + | | | | session type. The value can | + | | | | be **SOURCE_IP**, | + | | | | **HTTP_COOKIE**, or | + | | | | **APP_COOKIE**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, only | + | | | | **SOURCE_IP** takes | + | | | | effect. | + | | | | | + | | | | - For dedicated load | + | | | | balancers, if the | + | | | | protocol of the backend | + | | | | server group is HTTP or | + | | | | HTTPS, the value can | + | | | | only be **HTTP_COOKIE**. | + | | | | | + | | | | - For shared load | + | | | | balancers, if the | + | | | | protocol of the backend | + | | | | server group is HTTP or | + | | | | HTTPS, the value can be | + | | | | **HTTP_COOKIE** or | + | | | | **APP_COOKIE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | persistence_timeout | No | Integer | Specifies the stickiness | + | | | | duration, in minutes. This | + | | | | parameter will not take | + | | | | effect when **type** is set | + | | | | to **APP_COOKIE**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, the value | + | | | | ranges from **1** to | + | | | | **60**, and the default | + | | | | value is **1**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS, the value | + | | | | ranges from **1** to | + | | | | **1440**, and the | + | | | | default value is | + | | | | **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 6** CreatePoolSlowStartOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | enable | Yes | Boolean | Specifies whether to enable | + | | | | slow start. | + | | | | | + | | | | **true** indicates that | + | | | | this function is enabled, | + | | | | and **false** indicates | + | | | | this function is disabled. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | duration | Yes | Integer | Specifies the slow start | + | | | | duration, in seconds. | + | | | | | + | | | | The value ranges from | + | | | | **30** to **1200**, and the | + | | | | default value is **30**. | + | | | | | + | | | | Minimum: **30** | + | | | | | + | | | | Maximum: **1200** | + | | | | | + | | | | Default: **30** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +.. table:: **Table 7** Response body parameters + + ========== ============================================ =============================================================== + Parameter Type Description + ========== ============================================ =============================================================== + request_id String Specifies the request ID. The value is automatically generated. + pool `Pool <#CreatePool__response_Pool>`__ object Specifies the backend server group. + ========== ============================================ =============================================================== + +.. table:: **Table 8** Pool + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. The | + | | | value can only be updated to | + | | | **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server group | + | | | ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm used by the load balancer | + | | | to route requests to backend servers | + | | | in the backend server group. | + | | | | + | | | The value can be **ROUND_ROBIN** | + | | | (weighted round robin), | + | | | **LEAST_CONNECTIONS** (weighted least | + | | | connections), or **SOURCE_IP** | + | | | (source IP hash). | + | | | | + | | | When the value is **SOURCE_IP**, the | + | | | **weight** parameter is invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the listeners associated with | + | | `ListenerRef < | the backend server group. | + | | #CreatePool__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Lists the IDs of load balancers | + | | `LoadBalancerRef <#Cre | associated with the backend server | + | | atePool__response_LoadBalancerRef>`__ | group. | + | | objects | | + | | | If only **listener_id** is specified | + | | | during the creation of the backend | + | | | server group, the ID of the | + | | | **loadbalancers** parameter in the | + | | | response is the ID of the load | + | | | balancer to which the listener is | + | | | added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array of | Lists the backend servers in the | + | | `MemberRef | backend server group. | + | | <#CreatePool__response_MemberRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server group | + | | | name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | backend server group to receive | + | | | requests. The protocol can be TCP, | + | | | UDP, or HTTP. | + | | | | + | | | - For UDP listeners, the protocol of | + | | | the backend server group must be | + | | | UDP. | + | | | | + | | | - For TCP listeners, the protocol of | + | | | the backend server group must be | + | | | TCP. | + | | | | + | | | - For HTTP or HTTPS listeners, the | + | | | protocol of the backend server | + | | | group must be HTTP. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | `SessionPersistence <#Create | Specifies the sticky session. | + | | Pool__response_SessionPersistence>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | Specifies the IP version supported by | + | | | the backend server group. | + | | | | + | | | - Shared load balancers: The default | + | | | value is **v4**. | + | | | | + | | | - Dedicated load balancers: The | + | | | value can be **dualstack**, | + | | | **v4**, or **v6**. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP or UDP, | + | | | **ip_version** is set to | + | | | **dualstack**, indicating that both | + | | | IPv4 and IPv6 are supported. | + | | | | + | | | When the protocol of the backend | + | | | server group is HTTP, **ip_version** | + | | | is set to **v4**. | + | | | | + | | | IPv6 is unsupported. Only **v4** is | + | | | returned. | + | | | | + | | | Default: **dualstack** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | slow_start | `SlowStart | Specifies whether to enable slow | + | | <#CreatePool__response_SlowStart>`__ | start. After you enable slow start, | + | | object | new backend servers added to the | + | | | backend server group are warmed up, | + | | | and the number of requests they can | + | | | receive increases linearly during the | + | | | configured slow start duration. | + | | | | + | | | This parameter can be used when the | + | | | protocol of the backend server group | + | | | is HTTP or HTTPS. An error will be | + | | | returned if the protocol is not HTTP | + | | | or HTTPS. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 10** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 11** MemberRef + + ========= ====== ================================ + Parameter Type Description + ========= ====== ================================ + id String Specifies the backend server ID. + ========= ====== ================================ + +.. table:: **Table 12** SessionPersistence + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter will take effect only | + | | | when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | The value can contain only letters, | + | | | digits, hyphens (-), underscores (_), | + | | | and periods (.). | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the sticky session type. | + | | | The value can be **SOURCE_IP**, | + | | | **HTTP_COOKIE**, or **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, only | + | | | **SOURCE_IP** takes effect. | + | | | | + | | | - For dedicated load balancers, if | + | | | the protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can only be **HTTP_COOKIE**. | + | | | | + | | | - For shared load balancers, if the | + | | | protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can be **HTTP_COOKIE** or | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the stickiness duration, in | + | | | minutes. This parameter will not take | + | | | effect when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, the | + | | | value ranges from **1** to **60**, | + | | | and the default value is **1**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is HTTP or HTTPS, the | + | | | value ranges from **1** to | + | | | **1440**, and the default value is | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 13** SlowStart + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | enable | Boolean | Specifies whether to enable slow | + | | | start. | + | | | | + | | | **true** indicates that this function | + | | | is enabled, and **false** indicates | + | | | this function is disabled. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | duration | Integer | Specifies the slow start duration, in | + | | | seconds. | + | | | | + | | | The value ranges from **30** to | + | | | **1200**, and the default value is | + | | | **30**. | + | | | | + | | | Minimum: **30** | + | | | | + | | | Maximum: **1200** | + | | | | + | | | Default: **30** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +Adding an HTTP backend server group + +.. code:: screen + + POST + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools + + { + "pool" : { + "name" : "My pool", + "lb_algorithm" : "LEAST_CONNECTIONS", + "listener_id" : "0b11747a-b139-492f-9692-2df0b1c87193", + "protocol" : "HTTP", + "slow_start" : { + "enable" : true, + "duration" : 50 + } + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 201** + +Successful request. + +.. code:: screen + + { + "pool" : { + "lb_algorithm" : "LEAST_CONNECTIONS", + "protocol" : "HTTP", + "description" : "", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "098b2f68-af1c-41a9-8efd-69958722af62" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listeners" : [ { + "id" : "0b11747a-b139-492f-9692-2df0b1c87193" + } ], + "members" : [ ], + "id" : "36ce7086-a496-4666-9064-5ba0e6840c75", + "name" : "My pool", + "ip_version" : "v4", + "slow_start" : { + "enable" : true, + "duration" : 50 + } + }, + "request_id" : "2d974978-0733-404d-a21a-b29204f4803a" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +201 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/DeleteCertificate.html b/elb/api-ref/DeleteCertificate.html new file mode 100644 index 000000000..4bc7839b6 --- /dev/null +++ b/elb/api-ref/DeleteCertificate.html @@ -0,0 +1,97 @@ + + +

      Deleting a Certificate

      +

      Function

      This API is used to delete an SSL certificate.

      + +

      Constraints

      If the certificate is used by a listener, the certificate cannot be deleted, and the 409 Conflict error code will be displayed.

      + +

      URI

      DELETE /v3/{project_id}/elb/certificates/{certificate_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies a certificate ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +https://{elb_endpoint}/v3/{project_id}/elb/certificates/{certificate_id}
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/DeleteCertificate.rst b/elb/api-ref/DeleteCertificate.rst new file mode 100644 index 000000000..e8d6a5bc2 --- /dev/null +++ b/elb/api-ref/DeleteCertificate.rst @@ -0,0 +1,71 @@ +Deleting a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to delete an SSL certificate. + +Constraints +^^^^^^^^^^^ + +If the certificate is used by a listener, the certificate cannot be deleted, and the 409 Conflict error code will be displayed. + +URI +^^^ + +DELETE /v3/{project_id}/elb/certificates/{certificate_id} + +.. table:: **Table 1** Path parameters + + ============== ========= ====== =========================== + Parameter Mandatory Type Description + ============== ========= ====== =========================== + project_id Yes String Specifies the project ID. + certificate_id Yes String Specifies a certificate ID. + ============== ========= ====== =========================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + https://{elb_endpoint}/v3/{project_id}/elb/certificates/{certificate_id} + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/DeleteHealthMonitor.html b/elb/api-ref/DeleteHealthMonitor.html new file mode 100644 index 000000000..c6fcd1737 --- /dev/null +++ b/elb/api-ref/DeleteHealthMonitor.html @@ -0,0 +1,98 @@ + + +

      Deleting a Health Check

      +

      Function

      This API is used to delete a health check.

      + +

      Constraints

      The health check can be deleted only when the provisioning status of the associated load balancer is ACTIVE.

      + +

      URI

      DELETE /v3/{project_id}/elb/healthmonitors/{healthmonitor_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      healthmonitor_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors/c2b210b2-60c4-449d-91e2-9e9ea1dd7441
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/DeleteHealthMonitor.rst b/elb/api-ref/DeleteHealthMonitor.rst new file mode 100644 index 000000000..132babf2b --- /dev/null +++ b/elb/api-ref/DeleteHealthMonitor.rst @@ -0,0 +1,72 @@ +Deleting a Health Check +======================= + +Function +^^^^^^^^ + +This API is used to delete a health check. + +Constraints +^^^^^^^^^^^ + +The health check can be deleted only when the provisioning status of the associated load balancer is **ACTIVE**. + +URI +^^^ + +DELETE /v3/{project_id}/elb/healthmonitors/{healthmonitor_id} + +.. table:: **Table 1** Path parameters + + ================ ========= ====== ============================== + Parameter Mandatory Type Description + ================ ========= ====== ============================== + project_id Yes String Specifies the project ID. + healthmonitor_id Yes String Specifies the health check ID. + ================ ========= ====== ============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors/c2b210b2-60c4-449d-91e2-9e9ea1dd7441 + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/DeleteL7Policy.html b/elb/api-ref/DeleteL7Policy.html new file mode 100644 index 000000000..41320a65e --- /dev/null +++ b/elb/api-ref/DeleteL7Policy.html @@ -0,0 +1,96 @@ + + +

      Deleting a Forwarding Policy

      +

      Function

      This API is used to delete a forwarding policy.

      + +

      URI

      DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/DeleteL7Policy.rst b/elb/api-ref/DeleteL7Policy.rst new file mode 100644 index 000000000..ff86ad9e4 --- /dev/null +++ b/elb/api-ref/DeleteL7Policy.rst @@ -0,0 +1,67 @@ +Deleting a Forwarding Policy +============================ + +Function +^^^^^^^^ + +This API is used to delete a forwarding policy. + +URI +^^^ + +DELETE /v3/{project_id}/elb/l7policies/{l7policy_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + project_id Yes String Specifies the project ID. + l7policy_id Yes String Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/DeleteL7Rule.html b/elb/api-ref/DeleteL7Rule.html new file mode 100644 index 000000000..a9e7e2e62 --- /dev/null +++ b/elb/api-ref/DeleteL7Rule.html @@ -0,0 +1,105 @@ + + +

      Deleting a Forwarding Rule

      +

      Function

      This API is used to delete a forwarding rule.

      + +

      URI

      DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      l7rule_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules/84f4fcae-9c15-4e19-a99f-72c0b08fd3d7
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/DeleteL7Rule.rst b/elb/api-ref/DeleteL7Rule.rst new file mode 100644 index 000000000..0bdcf1300 --- /dev/null +++ b/elb/api-ref/DeleteL7Rule.rst @@ -0,0 +1,68 @@ +Deleting a Forwarding Rule +========================== + +Function +^^^^^^^^ + +This API is used to delete a forwarding rule. + +URI +^^^ + +DELETE /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + project_id Yes String Specifies the project ID. + l7policy_id Yes String Specifies the forwarding policy ID. + l7rule_id Yes String Specifies the forwarding rule ID. + =========== ========= ====== =================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules/84f4fcae-9c15-4e19-a99f-72c0b08fd3d7 + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/DeleteListener.html b/elb/api-ref/DeleteListener.html new file mode 100644 index 000000000..401da3162 --- /dev/null +++ b/elb/api-ref/DeleteListener.html @@ -0,0 +1,97 @@ + + +

      Deleting a Listener

      +

      Function

      This API is used to delete a listener.

      + +

      Constraints

      Before you delete a listener, delete the associated backend server group or disassociate the backend server group from the listener, and then delete all forwarding policies.

      + +

      URI

      DELETE /v3/{project_id}/elb/listeners/{listener_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +https://{elb_endpoint}/v3/{project_id}/elb/listeners/{listener_id}
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/DeleteListener.rst b/elb/api-ref/DeleteListener.rst new file mode 100644 index 000000000..a1cfa358a --- /dev/null +++ b/elb/api-ref/DeleteListener.rst @@ -0,0 +1,71 @@ +Deleting a Listener +=================== + +Function +^^^^^^^^ + +This API is used to delete a listener. + +Constraints +^^^^^^^^^^^ + +Before you delete a listener, delete the associated backend server group or disassociate the backend server group from the listener, and then delete all forwarding policies. + +URI +^^^ + +DELETE /v3/{project_id}/elb/listeners/{listener_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== ========================== + Parameter Mandatory Type Description + =========== ========= ====== ========================== + project_id Yes String Specifies the project ID. + listener_id Yes String Specifies the listener ID. + =========== ========= ====== ========================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + https://{elb_endpoint}/v3/{project_id}/elb/listeners/{listener_id} + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/DeleteLoadBalancer.html b/elb/api-ref/DeleteLoadBalancer.html new file mode 100644 index 000000000..31fad32dc --- /dev/null +++ b/elb/api-ref/DeleteLoadBalancer.html @@ -0,0 +1,98 @@ + + +

      Deleting a Load Balancer

      +

      Function

      This API is used to delete a load balancer.

      + +

      Constraints

      All listeners added to the load balancer must be deleted before the load balancer is deleted.

      + +

      URI

      DELETE /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +
      +https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers/{loadbalancer_id}
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/DeleteLoadBalancer.rst b/elb/api-ref/DeleteLoadBalancer.rst new file mode 100644 index 000000000..66cf56755 --- /dev/null +++ b/elb/api-ref/DeleteLoadBalancer.rst @@ -0,0 +1,72 @@ +Deleting a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to delete a load balancer. + +Constraints +^^^^^^^^^^^ + +All listeners added to the load balancer must be deleted before the load balancer is deleted. + +URI +^^^ + +DELETE /v3/{project_id}/elb/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Path parameters + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + + https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers/{loadbalancer_id} + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/DeleteMember.html b/elb/api-ref/DeleteMember.html new file mode 100644 index 000000000..6e6074c8d --- /dev/null +++ b/elb/api-ref/DeleteMember.html @@ -0,0 +1,110 @@ + + +

      Removing a Backend Server

      +

      Function

      This API is used to remove a backend server.

      + +

      Constraints

      When you remove backend servers, note the following:

      +
      • After you remove a backend server, new connections to this server will not be established. However, persistent connections that have been established will be maintained.

        +
      • The last backend server cannot be removed. If it is removed, 403 will be returned.

        +
      + +

      URI

      DELETE /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      member_id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +
      +https://{elb_endpoint}/v3/9a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members/1923923e-fe8a-484f-bdbc-e11559b1f48f
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/DeleteMember.rst b/elb/api-ref/DeleteMember.rst new file mode 100644 index 000000000..0a9e2d4a3 --- /dev/null +++ b/elb/api-ref/DeleteMember.rst @@ -0,0 +1,77 @@ +Removing a Backend Server +========================= + +Function +^^^^^^^^ + +This API is used to remove a backend server. + +Constraints +^^^^^^^^^^^ + +When you remove backend servers, note the following: + +- After you remove a backend server, new connections to this server will not be established. However, persistent connections that have been established will be maintained. + +- The last backend server cannot be removed. If it is removed, 403 will be returned. + +URI +^^^ + +DELETE /v3/{project_id}/elb/pools/{pool_id}/members/{member_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + project_id Yes String Specifies the project ID. + pool_id Yes String Specifies the ID of the backend server group. + member_id Yes String Specifies the backend server ID. + ========== ========= ====== ============================================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + + https://{elb_endpoint}/v3/9a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members/1923923e-fe8a-484f-bdbc-e11559b1f48f + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/DeletePool.html b/elb/api-ref/DeletePool.html new file mode 100644 index 000000000..260bee64d --- /dev/null +++ b/elb/api-ref/DeletePool.html @@ -0,0 +1,98 @@ + + +

      Deleting a Backend Server Group

      +

      Function

      This API is used to delete a backend server group.

      + +

      Constraints

      A backend server group can be deleted only after all servers are removed from the group, the health check configured for the group is deleted, and the group has no forwarding policies associated.

      + +

      URI

      DELETE /v3/{project_id}/elb/pools/{pool_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      None

      + +

      Example Requests

      DELETE
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75
      + +

      Example Responses

      None

      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      204

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/DeletePool.rst b/elb/api-ref/DeletePool.rst new file mode 100644 index 000000000..5030f676f --- /dev/null +++ b/elb/api-ref/DeletePool.rst @@ -0,0 +1,72 @@ +Deleting a Backend Server Group +=============================== + +Function +^^^^^^^^ + +This API is used to delete a backend server group. + +Constraints +^^^^^^^^^^^ + +A backend server group can be deleted only after all servers are removed from the group, the health check configured for the group is deleted, and the group has no forwarding policies associated. + +URI +^^^ + +DELETE /v3/{project_id}/elb/pools/{pool_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + project_id Yes String Specifies the project ID. + pool_id Yes String Specifies the ID of the backend server group. + ========== ========= ====== ============================================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +None + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + DELETE + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75 + +Example Responses +^^^^^^^^^^^^^^^^^ + +None + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +204 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/ListAvailabilityZones.html b/elb/api-ref/ListAvailabilityZones.html new file mode 100644 index 000000000..1257c1680 --- /dev/null +++ b/elb/api-ref/ListAvailabilityZones.html @@ -0,0 +1,154 @@ + + +

      Querying AZs

      +

      Function

      This API is used to query all available AZs when you create a dedicated load balancer.

      +

      One set of AZs is returned. When you create a dedicated load balancer, you can select one or more AZs only in the set.

      + +

      URI

      GET /v3/{project_id}/elb/availability-zones

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      availability_zones

      +

      Array<Array<AvailabilityZone>>

      +

      Specifies the AZs that are available during load balancer creation.

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +
      + + + + + + + + + + + + + + + + +
      Table 4 AvailabilityZone

      Parameter

      +

      Type

      +

      Description

      +

      state

      +

      String

      +

      Specifies the AZ status. The value can only be ACTIVE.

      +

      code

      +

      String

      +

      Specifies the AZ code.

      +
      + + +

      Example Requests

      GET
      +
      +https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/availability-zones
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "availability_zones" : [ [ {
      +    "state" : "ACTIVE",
      +    "code" : "az1"
      +  }, {
      +    "state" : "ACTIVE",
      +    "code" : "az2"
      +  }, {
      +    "state" : "ACTIVE",
      +    "code" : "az3"
      +  } ] ],
      +  "request_id" : "0d799435-259e-459f-b2bc-0beee06f6a77"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: AZ + + + diff --git a/elb/api-ref/ListAvailabilityZones.rst b/elb/api-ref/ListAvailabilityZones.rst new file mode 100644 index 000000000..f6517d55e --- /dev/null +++ b/elb/api-ref/ListAvailabilityZones.rst @@ -0,0 +1,107 @@ +Querying AZs +============ + +Function +^^^^^^^^ + +This API is used to query all available AZs when you create a dedicated load balancer. + +One set of AZs is returned. When you create a dedicated load balancer, you can select one or more AZs only in the set. + +URI +^^^ + +GET /v3/{project_id}/elb/availability-zones + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +--------------------+-----------------------------------------------+-----------------------------------------------+ + | Parameter | Type | Description | + +====================+===============================================+===============================================+ + | availability_zones | Array`__>> | load balancer creation. | + +--------------------+-----------------------------------------------+-----------------------------------------------+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +--------------------+-----------------------------------------------+-----------------------------------------------+ + +.. table:: **Table 4** AvailabilityZone + + ========= ====== ========================================================== + Parameter Type Description + ========= ====== ========================================================== + state String Specifies the AZ status. The value can only be **ACTIVE**. + code String Specifies the AZ code. + ========= ====== ========================================================== + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/availability-zones + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "availability_zones" : [ [ { + "state" : "ACTIVE", + "code" : "az1" + }, { + "state" : "ACTIVE", + "code" : "az2" + }, { + "state" : "ACTIVE", + "code" : "az3" + } ] ], + "request_id" : "0d799435-259e-459f-b2bc-0beee06f6a77" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `AZ `__ diff --git a/elb/api-ref/ListCertificates.html b/elb/api-ref/ListCertificates.html new file mode 100644 index 000000000..b8c94cd80 --- /dev/null +++ b/elb/api-ref/ListCertificates.html @@ -0,0 +1,424 @@ + + +

      Querying Certificates

      +

      Function

      This API is used to query all SSL certificates.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/certificates

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link. This parameter must be used together with limit.

      +

      id

      +

      No

      +

      Array

      +

      Specifies a certificate ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the certificate name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      description

      +

      No

      +

      Array

      +

      Provides supplementary information about the certificate.

      +

      Multiple descriptions can be queried in the format of description=xxx&description=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is unsupported. Please do not use it.

      +

      domain

      +

      No

      +

      Array

      +

      Specifies the domain names used by the server certificate. This parameter is available only when type is set to server.

      +

      Multiple domain names can be queried in the format of domain=xxx&domain=xxx.

      +

      type

      +

      No

      +

      Array

      +

      Specifies the certificate type.

      +

      The value can be server or client. server indicates server certificates, and client indicates CA certificates.

      +

      Multiple types can be queried in the format of type=xxx&type=xxx.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Certificate pagination information

      +

      certificates

      +

      Array of CertificateInfo objects

      +

      Lists the certificates.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 CertificateInfo

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is unsupported. Please do not use it.

      +

      certificate

      +

      String

      +

      Specifies the private key of the certificate. The value must be PEM encoded.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      domain

      +

      String

      +

      Specifies the domain names used by the server certificate.

      +
      • This parameter will take effect only when type is set to server, and its default value is "".

        +
      • This parameter will not take effect even if it is passed and type is set to client. However, domain names will still be verified.

        +
      +

      Note:

      +
      • The value can contain 0 to 1024 characters and consists of multiple common domain names or wildcard domain names separated by commas. A maximum of 30 domain names are allowed.

        +
      • A common domain name consists of several labels separated by periods (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit. Example: www.test.com

        +
      • A wildcard domain name is a domain name starts with an asterisk (*). Example: *.test.com

        +
      +

      Minimum: 1

      +

      Maximum: 1024

      +

      id

      +

      String

      +

      Specifies a certificate ID.

      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.

        +
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.

        +
      +

      type

      +

      String

      +

      Specifies the certificate type. The value can be server or client. server indicates server certificates, and client indicates CA certificates. The default value is server.

      +

      created_at

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      updated_at

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Example Requests

      GET https://{elb_endpoint}/v3/{project_id}/elb/certificates
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "certificates" : [ {
      +    "id" : "5494a835d88f40ff940554992f2f04d4",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "https_certificatekkkk",
      +    "type" : "server",
      +    "description" : "description for certificatehhhh",
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
      +    "admin_state_up" : true,
      +    "created_at" : "2019-04-21T18:59:43Z",
      +    "updated_at" : "2019-04-21T18:59:43Z",
      +    "expire_time" : "2045-11-17T13:25:47Z"
      +  }, {
      +    "id" : "7875ccb4c6b44cdb90ab2ab89892ab71",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "https_certificatekkkk",
      +    "type" : "client",
      +    "domain" : "sda.com",
      +    "description" : "description for certificatehhhh",
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
      +    "admin_state_up" : true,
      +    "created_at" : "2018-10-29T20:16:17Z",
      +    "updated_at" : "2019-04-06T21:33:24Z",
      +    "expire_time" : "2045-11-17T13:25:47Z"
      +  }, {
      +    "id" : "7f41c96223d34ebaa3c8e836b6625ec0",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "asdf",
      +    "type" : "server",
      +    "domain" : "sda.com",
      +    "description" : "",
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
      +    "admin_state_up" : true,
      +    "created_at" : "2019-03-31T22:23:51Z",
      +    "updated_at" : "2019-03-31T23:26:49Z",
      +    "expire_time" : "2045-11-17T13:25:47Z"
      +  } ],
      +  "page_info" : {
      +    "previous_marker" : "5494a835d88f40ff940554992f2f04d4",
      +    "current_count" : 3
      +  },
      +  "request_id" : "a27e7ae6-d901-4ec2-8e66-b8a1413819ad"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/ListCertificates.rst b/elb/api-ref/ListCertificates.rst new file mode 100644 index 000000000..b1d7d7cd6 --- /dev/null +++ b/elb/api-ref/ListCertificates.rst @@ -0,0 +1,364 @@ +Querying Certificates +===================== + +Function +^^^^^^^^ + +This API is used to query all SSL certificates. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/certificates + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. This | + | | | | parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies a certificate ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the certificate | + | | | | name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | Array | Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | | + | | | | Multiple descriptions can | + | | | | be queried in the format of | + | | | | *descri | + | | | | ption=xxx&description=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the certificate. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | Array | Specifies the domain names | + | | | | used by the server | + | | | | certificate. This parameter | + | | | | is available only when | + | | | | **type** is set to | + | | | | **server**. | + | | | | | + | | | | Multiple domain names can | + | | | | be queried in the format of | + | | | | *domain=xxx&domain=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | Array | Specifies the certificate | + | | | | type. | + | | | | | + | | | | The value can be **server** | + | | | | or **client**. **server** | + | | | | indicates server | + | | | | certificates, and | + | | | | **client** indicates CA | + | | | | certificates. | + | | | | | + | | | | Multiple types can be | + | | | | queried in the format of | + | | | | *type=xxx&type=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +--------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +==============+==================================================+==================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +--------------+--------------------------------------------------+--------------------------------------------------+ + | page_info | `Pa | Certificate pagination information | + | | geInfo <#ListCertificates__response_PageInfo>`__ | | + | | object | | + +--------------+--------------------------------------------------+--------------------------------------------------+ + | certificates | Array of | Lists the certificates. | + | | `CertificateInfo | | + | | <#ListCertificates__response_CertificateInfo>`__ | | + | | objects | | + +--------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** CertificateInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the private key of the | + | | | certificate. The value must be PEM | + | | | encoded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain names used by | + | | | the server certificate. | + | | | | + | | | - This parameter will take effect | + | | | only when **type** is set to | + | | | **server**, and its default value | + | | | is **""**. | + | | | | + | | | - This parameter will not take | + | | | effect even if it is passed and | + | | | **type** is set to **client**. | + | | | However, domain names will still | + | | | be verified. | + | | | | + | | | Note: | + | | | | + | | | - The value can contain 0 to 1024 | + | | | characters and consists of | + | | | multiple common domain names or | + | | | wildcard domain names separated by | + | | | commas. A maximum of 30 domain | + | | | names are allowed. | + | | | | + | | | - A common domain name consists of | + | | | several labels separated by | + | | | periods (.). Each label can | + | | | contain a maximum of 63 | + | | | characters, including letters, | + | | | digits, and hyphens (-), and must | + | | | start and end with a letter or | + | | | digit. Example: www.test.com | + | | | | + | | | - A wildcard domain name is a domain | + | | | name starts with an asterisk (*). | + | | | Example: \*.test.com | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies a certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate. The value must be | + | | | PEM encoded. | + | | | | + | | | - This parameter will be ignored if | + | | | **type** is set to **client**. A | + | | | CA server can still be created and | + | | | used normally. This parameter will | + | | | be left blank even if you enter a | + | | | private key that is not PEM | + | | | encoded. | + | | | | + | | | - This parameter is valid and | + | | | mandatory only when **type** is | + | | | set to **server**. If you enter an | + | | | invalid private key, an error is | + | | | returned. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. The | + | | | value can be **server** or | + | | | **client**. **server** indicates | + | | | server certificates, and **client** | + | | | indicates CA certificates. The | + | | | default value is **server**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the | + | | | certificate was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the | + | | | certificate was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET https://{elb_endpoint}/v3/{project_id}/elb/certificates + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "certificates" : [ { + "id" : "5494a835d88f40ff940554992f2f04d4", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "https_certificatekkkk", + "type" : "server", + "description" : "description for certificatehhhh", + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "admin_state_up" : true, + "created_at" : "2019-04-21T18:59:43Z", + "updated_at" : "2019-04-21T18:59:43Z", + "expire_time" : "2045-11-17T13:25:47Z" + }, { + "id" : "7875ccb4c6b44cdb90ab2ab89892ab71", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "https_certificatekkkk", + "type" : "client", + "domain" : "sda.com", + "description" : "description for certificatehhhh", + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "admin_state_up" : true, + "created_at" : "2018-10-29T20:16:17Z", + "updated_at" : "2019-04-06T21:33:24Z", + "expire_time" : "2045-11-17T13:25:47Z" + }, { + "id" : "7f41c96223d34ebaa3c8e836b6625ec0", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "asdf", + "type" : "server", + "domain" : "sda.com", + "description" : "", + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "admin_state_up" : true, + "created_at" : "2019-03-31T22:23:51Z", + "updated_at" : "2019-03-31T23:26:49Z", + "expire_time" : "2045-11-17T13:25:47Z" + } ], + "page_info" : { + "previous_marker" : "5494a835d88f40ff940554992f2f04d4", + "current_count" : 3 + }, + "request_id" : "a27e7ae6-d901-4ec2-8e66-b8a1413819ad" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/ListFlavors.html b/elb/api-ref/ListFlavors.html new file mode 100644 index 000000000..9a1b5b0f0 --- /dev/null +++ b/elb/api-ref/ListFlavors.html @@ -0,0 +1,391 @@ + + +

      Querying Flavors

      +

      Function

      This API is used to query all load balancer flavors that are available to a specific user in a specific region.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/flavors

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the flavor ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the flavor name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      type

      +

      No

      +

      Array

      +

      Specifies the flavor type. Flavors can be filtered by type.

      +

      Multiple types can be queried in the format of type=xxx&type=xxx.

      +

      shared

      +

      No

      +

      Boolean

      +

      Specifies whether the flavor is available to all users.

      +
      • true indicates that the flavor is available to all users.

        +
      • false indicates that the flavor is available only to a specific user.

        +
      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      flavors

      +

      Array of Flavor objects

      +

      Lists the flavors.

      +

      page_info

      +

      PageInfo object

      +

      Shows pagination information about the load balancer flavors.

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 Flavor

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the flavor ID.

      +

      info

      +

      FlavorInfo object

      +

      Specifies the flavor details.

      +

      name

      +

      String

      +

      Specifies the flavor name.

      +

      shared

      +

      Boolean

      +

      Specifies whether the flavor is available to all users.

      +
      • true indicates that the flavor is available to all users.

        +
      • false indicates that the flavor is available only to a specific user.

        +
      +

      Default: true

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      String

      +

      Specifies the flavor type. Flavors can be filtered by type.

      +

      Minimum: 1

      +

      Maximum: 32

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 FlavorInfo

      Parameter

      +

      Type

      +

      Description

      +

      connection

      +

      Integer

      +

      Specifies the maximum concurrent connections.

      +

      cps

      +

      Integer

      +

      Specifies the number of new connections per second.

      +

      qps

      +

      Integer

      +

      Specifies the number of requests per second at Layer 7.

      +

      bandwidth

      +

      Integer

      +

      Specifies the inbound and outbound bandwidth in the unit of Kbit/s.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 7 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + +

      Example Requests

      GET
      +
      +https://{ELB_Endpoint}/v3/{060576782980d5762f9ec014dd2f1148}/elb/flavors?limit=2&marker=179568ef-5ba4-4ca0-8c5e-5d581db779b1
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "flavors" : [ {
      +    "shared" : true,
      +    "project_id" : "573d73c9f90e48d0bddfa0eb202b25c2",
      +    "info" : {
      +      "connection" : 1000000,
      +      "cps" : 80000,
      +      "qps" : 50000
      +    },
      +    "id" : "b2c5d750-5ea8-42f8-a6a8-8b0a1441168a",
      +    "name" : "L7_flavor.elb.s2.medium",
      +    "type" : "L7"
      +  }, {
      +    "shared" : true,
      +    "project_id" : "573d73c9f90e48d0bddfa0eb202b25c2",
      +    "info" : {
      +      "connection" : 6000,
      +      "cps" : 3000
      +    },
      +    "id" : "becf3beb-7653-45ab-a025-961597a901bc",
      +    "name" : "L4_flavor.elb.s2.small",
      +    "type" : "L4"
      +  }, {
      +    "shared" : true,
      +    "project_id" : "3fb9975312cc43808cb274e2ac25d30c",
      +    "info" : {
      +      "connection" : 6000,
      +      "cps" : 3000,
      +      "qps" : 1000
      +    },
      +    "id" : "fb9394ab-d63d-4b4d-8ea0-b6dc974accc6",
      +    "name" : "L7_flavor.elb.s1.small",
      +    "type" : "L7"
      +  } ],
      +  "page_info" : {
      +    "next_marker" : "fb9394ab-d63d-4b4d-8ea0-b6dc974accc6",
      +    "previous_marker" : "b2c5d750-5ea8-42f8-a6a8-8b0a1441168a",
      +    "current_count" : 3
      +  },
      +  "request_id" : "07b7cabe-bfb5-4809-8c28-5a90a961a707"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer Flavor + + + diff --git a/elb/api-ref/ListFlavors.rst b/elb/api-ref/ListFlavors.rst new file mode 100644 index 000000000..dca163f26 --- /dev/null +++ b/elb/api-ref/ListFlavors.rst @@ -0,0 +1,279 @@ +Querying Flavors +================ + +Function +^^^^^^^^ + +This API is used to query all load balancer flavors that are available to a specific user in a specific region. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/flavors + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the flavor ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the flavor name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | Array | Specifies the flavor type. | + | | | | Flavors can be filtered by | + | | | | type. | + | | | | | + | | | | Multiple types can be | + | | | | queried in the format of | + | | | | *type=xxx&type=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | shared | No | Boolean | Specifies whether the | + | | | | flavor is available to all | + | | | | users. | + | | | | | + | | | | - **true** indicates that | + | | | | the flavor is available | + | | | | to all users. | + | | | | | + | | | | - **false** indicates that | + | | | | the flavor is available | + | | | | only to a specific user. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | flavors | Array of | Lists the flavors. | + | | `Flavor <#ListFlavors__response_Flavor>`__ | | + | | objects | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | page_info | `PageInfo <#ListFlavors__response_PageInfo>`__ | Shows pagination information about the load | + | | object | balancer flavors. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 5** Flavor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the flavor ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | info | `FlavorInfo < | Specifies the flavor details. | + | | #ListFlavors__response_FlavorInfo>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the flavor name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | shared | Boolean | Specifies whether the flavor is | + | | | available to all users. | + | | | | + | | | - **true** indicates that the flavor | + | | | is available to all users. | + | | | | + | | | - **false** indicates that the | + | | | flavor is available only to a | + | | | specific user. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the flavor type. Flavors | + | | | can be filtered by type. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** FlavorInfo + + ========== ======= =================================================================== + Parameter Type Description + ========== ======= =================================================================== + connection Integer Specifies the maximum concurrent connections. + cps Integer Specifies the number of new connections per second. + qps Integer Specifies the number of requests per second at Layer 7. + bandwidth Integer Specifies the inbound and outbound bandwidth in the unit of Kbit/s. + ========== ======= =================================================================== + +.. table:: **Table 7** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{ELB_Endpoint}/v3/{060576782980d5762f9ec014dd2f1148}/elb/flavors?limit=2&marker=179568ef-5ba4-4ca0-8c5e-5d581db779b1 + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "flavors" : [ { + "shared" : true, + "project_id" : "573d73c9f90e48d0bddfa0eb202b25c2", + "info" : { + "connection" : 1000000, + "cps" : 80000, + "qps" : 50000 + }, + "id" : "b2c5d750-5ea8-42f8-a6a8-8b0a1441168a", + "name" : "L7_flavor.elb.s2.medium", + "type" : "L7" + }, { + "shared" : true, + "project_id" : "573d73c9f90e48d0bddfa0eb202b25c2", + "info" : { + "connection" : 6000, + "cps" : 3000 + }, + "id" : "becf3beb-7653-45ab-a025-961597a901bc", + "name" : "L4_flavor.elb.s2.small", + "type" : "L4" + }, { + "shared" : true, + "project_id" : "3fb9975312cc43808cb274e2ac25d30c", + "info" : { + "connection" : 6000, + "cps" : 3000, + "qps" : 1000 + }, + "id" : "fb9394ab-d63d-4b4d-8ea0-b6dc974accc6", + "name" : "L7_flavor.elb.s1.small", + "type" : "L7" + } ], + "page_info" : { + "next_marker" : "fb9394ab-d63d-4b4d-8ea0-b6dc974accc6", + "previous_marker" : "b2c5d750-5ea8-42f8-a6a8-8b0a1441168a", + "current_count" : 3 + }, + "request_id" : "07b7cabe-bfb5-4809-8c28-5a90a961a707" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer Flavor `__ diff --git a/elb/api-ref/ListHealthMonitors.html b/elb/api-ref/ListHealthMonitors.html new file mode 100644 index 000000000..616411d06 --- /dev/null +++ b/elb/api-ref/ListHealthMonitors.html @@ -0,0 +1,562 @@ + + +

      Querying Health Checks

      +

      Function

      This API is used to query all health checks.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/healthmonitors

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the health check ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      monitor_port

      +

      No

      +

      Array

      +

      Specifies the port used for the health check.

      +

      Multiple ports can be queried in the format of monitor_port=xxx&monitor_port=xxx.

      +

      domain_name

      +

      No

      +

      Array

      +

      Specifies the domain name to which HTTP requests are sent during the health check.

      +

      This parameter will take effect only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address bound to the load balancer is used as the destination of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      Multiple domain names can be queried in the format of domain_name=xxx&domain_name=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the health check name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      delay

      +

      No

      +

      Array

      +

      Specifies the interval between health checks, in seconds.

      +

      Multiple intervals can be queried in the format of delay=xxx&delay=xxx.

      +

      max_retries

      +

      No

      +

      Array

      +

      Specifies the maximum number of retries.

      +

      Multiple values can be queried in the format of max_retries=xxx&max_retries=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      Although this parameter can be used in the APIs for creating and updating health checks, its actual value depends on whether cloud servers that serve as the backend servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      max_retries_down

      +

      No

      +

      Array

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      timeout

      +

      No

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      type

      +

      No

      +

      Array

      +

      Specifies the health check protocol.

      +

      Multiple protocols can be queried in the format of type=xxx&type=xxx.

      +

      expected_codes

      +

      No

      +

      Array

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      Multiple status codes can be queried in the format of expected_codes=xxx&expected_codes=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      url_path

      +

      No

      +

      Array

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Multiple paths can be queried in the format of url_path=xxx&url_path=xxx.

      +

      http_method

      +

      No

      +

      Array

      +

      Specifies the HTTP method. This parameter will take effect only when type is set to HTTP.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH.

      +

      Multiple methods can be queried in the format of http_method=xxx&http_method=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.

        +
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.

        +
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Shows pagination information.

      +

      healthmonitors

      +

      Array of HealthMonitor objects

      +

      Specifies the health check.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 HealthMonitor

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check. Two value options are available. true indicates that the health check is enabled, and false indicates that the health check is disabled.

      +

      Default: true

      +

      delay

      +

      Integer

      +

      Specifies the interval between health checks, in seconds.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      domain_name

      +

      String

      +

      Specifies the domain name that HTTP requests are sent to during the health check.

      +

      This parameter is available only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 200

      +

      http_method

      +

      String

      +

      Specifies the HTTP method. This parameter will take effect only when type is set to HTTP.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: GET

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      Default: 3

      +

      monitor_port

      +

      Integer

      +

      Specifies the port used for the health check. If this parameter is left blank, the port of the backend server group will be used by default.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups for which the health check is configured.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      timeout

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Default: /

      +
      + + + + + + + + + + + + +
      Table 7 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "healthmonitors" : [ {
      +    "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "My Healthmonitor update",
      +    "delay" : 10,
      +    "max_retries" : 10,
      +    "pools" : [ {
      +      "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0"
      +    } ],
      +    "admin_state_up" : true,
      +    "timeout" : 30,
      +    "type" : "HTTP",
      +    "expected_codes" : "200",
      +    "url_path" : "/",
      +    "http_method" : "GET"
      +  }, {
      +    "id" : "cda1af03-0660-4fd2-8edf-e38c79846e08",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "domain_name" : "akik..un.com",
      +    "name" : "lijunqiu",
      +    "delay" : 50,
      +    "max_retries" : 1,
      +    "pools" : [ {
      +      "id" : "ae6e45ba-be84-4074-8ac6-bc4a56484809"
      +    } ],
      +    "admin_state_up" : false,
      +    "timeout" : 3,
      +    "type" : "UDP_CONNECT",
      +    "url_path" : "/world"
      +  } ],
      +  "page_info" : {
      +    "next_marker" : "cda1af03-0660-4fd2-8edf-e38c79846e08",
      +    "previous_marker" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441",
      +    "current_count" : 2
      +  },
      +  "request_id" : "814bc40e-8b0a-4ced-b8e5-f136c3e1df6a"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/ListHealthMonitors.rst b/elb/api-ref/ListHealthMonitors.rst new file mode 100644 index 000000000..88726a1fb --- /dev/null +++ b/elb/api-ref/ListHealthMonitors.rst @@ -0,0 +1,549 @@ +Querying Health Checks +====================== + +Function +^^^^^^^^ + +This API is used to query all health checks. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/healthmonitors + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the health check | + | | | | ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | monitor_port | No | Array | Specifies the port used for | + | | | | the health check. | + | | | | | + | | | | Multiple ports can be | + | | | | queried in the format of | + | | | | *monitor_ | + | | | | port=xxx&monitor_port=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain_name | No | Array | Specifies the domain name | + | | | | to which HTTP requests are | + | | | | sent during the health | + | | | | check. | + | | | | | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **HTTP**. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the virtual IP address | + | | | | bound to the load balancer | + | | | | is used as the destination | + | | | | of HTTP requests. | + | | | | | + | | | | The value can contain only | + | | | | digits, letters, hyphens | + | | | | (-), and periods (.) and | + | | | | must start with a digit or | + | | | | letter. | + | | | | | + | | | | Multiple domain names can | + | | | | be queried in the format of | + | | | | *domain | + | | | | _name=xxx&domain_name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the health check | + | | | | name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | delay | No | Array | Specifies the interval | + | | | | between health checks, in | + | | | | seconds. | + | | | | | + | | | | Multiple intervals can be | + | | | | queried in the format of | + | | | | *delay=xxx&delay=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries | No | Array | Specifies the maximum | + | | | | number of retries. | + | | | | | + | | | | Multiple values can be | + | | | | queried in the format of | + | | | | *max_re | + | | | | tries=xxx&max_retries=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the health check. | + | | | | | + | | | | Although this parameter can | + | | | | be used in the APIs for | + | | | | creating and updating | + | | | | health checks, its actual | + | | | | value depends on whether | + | | | | cloud servers that serve as | + | | | | the backend servers exist. | + | | | | If cloud servers exist, the | + | | | | value is **true**. | + | | | | Otherwise, the value is | + | | | | **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries_down | No | Array | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **ONLINE** to | + | | | | **OFFLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | timeout | No | Integer | Specifies the maximum time | + | | | | required for waiting for a | + | | | | response from the health | + | | | | check, in seconds. It is | + | | | | recommended that you set | + | | | | the value less than that of | + | | | | parameter **delay**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | Array | Specifies the health check | + | | | | protocol. | + | | | | | + | | | | Multiple protocols can be | + | | | | queried in the format of | + | | | | *type=xxx&type=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | expected_codes | No | Array | Specifies the expected HTTP | + | | | | status code. This parameter | + | | | | will take effect only when | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value options are as | + | | | | follows: | + | | | | | + | | | | - A specific value, for | + | | | | example, 200 | + | | | | | + | | | | - A list of values that | + | | | | are separated with | + | | | | commas (,), for example, | + | | | | 200, 202 | + | | | | | + | | | | - A value range, for | + | | | | example, 200-204 | + | | | | | + | | | | Multiple status codes can | + | | | | be queried in the format of | + | | | | *expected_cod | + | | | | es=xxx&expected_codes=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | url_path | No | Array | Specifies the HTTP request | + | | | | path for the health check. | + | | | | The value must start with a | + | | | | slash (/), and the default | + | | | | value is /. This parameter | + | | | | is available only when | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | Multiple paths can be | + | | | | queried in the format of | + | | | | * | + | | | | url_path=xxx&url_path=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http_method | No | Array | Specifies the HTTP method. | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **HTTP**. | + | | | | | + | | | | The value can be **GET**, | + | | | | **HEAD**, **POST**, | + | | | | **PUT**, **DELETE**, | + | | | | **TRACE**, **OPTIONS**, | + | | | | **CONNECT**, or **PATCH**. | + | | | | | + | | | | Multiple methods can be | + | | | | queried in the format of | + | | | | *http_m | + | | | | ethod=xxx&http_method=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +----------------+-------------------------------------------------+-------------------------------------------------+ + | Parameter | Type | Description | + +================+=================================================+=================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +----------------+-------------------------------------------------+-------------------------------------------------+ + | page_info | `PageI | Shows pagination information. | + | | nfo <#ListHealthMonitors__response_PageInfo>`__ | | + | | object | | + +----------------+-------------------------------------------------+-------------------------------------------------+ + | healthmonitors | Array of | Specifies the health check. | + | | `HealthMonitor < | | + | | #ListHealthMonitors__response_HealthMonitor>`__ | | + | | objects | | + +----------------+-------------------------------------------------+-------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** HealthMonitor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. Two value | + | | | options are available. **true** | + | | | indicates that the health check is | + | | | enabled, and **false** indicates that | + | | | the health check is disabled. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the interval between health | + | | | checks, in seconds. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name that HTTP | + | | | requests are sent to during the | + | | | health check. | + | | | | + | | | This parameter is available only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the virtual IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. This parameter will take effect | + | | | only when **type** is set to | + | | | **HTTP**. | + | | | | + | | | The value options are as follows: | + | | | | + | | | - A specific value, for example, 200 | + | | | | + | | | - A list of values that are | + | | | separated with commas (,), for | + | | | example, 200, 202 | + | | | | + | | | - A value range, for example, | + | | | 200-204 | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **200** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP method. This | + | | | parameter will take effect only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | or **PATCH**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **GET** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + | | | | + | | | Default: **3** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the port used for the | + | | | health check. If this parameter is | + | | | left blank, the port of the backend | + | | | server group will be used by default. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Lis | groups for which the health check is | + | | tHealthMonitors__response_PoolRef>`__ | configured. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the maximum time required | + | | | for waiting for a response from the | + | | | health check, in seconds. It is | + | | | recommended that you set the value | + | | | less than that of parameter | + | | | **delay**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The value must | + | | | start with a slash (/), and the | + | | | default value is /. This parameter is | + | | | available only when **type** is set | + | | | to **HTTP**. | + | | | | + | | | Default: **/** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "healthmonitors" : [ { + "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "My Healthmonitor update", + "delay" : 10, + "max_retries" : 10, + "pools" : [ { + "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0" + } ], + "admin_state_up" : true, + "timeout" : 30, + "type" : "HTTP", + "expected_codes" : "200", + "url_path" : "/", + "http_method" : "GET" + }, { + "id" : "cda1af03-0660-4fd2-8edf-e38c79846e08", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "domain_name" : "akik..un.com", + "name" : "lijunqiu", + "delay" : 50, + "max_retries" : 1, + "pools" : [ { + "id" : "ae6e45ba-be84-4074-8ac6-bc4a56484809" + } ], + "admin_state_up" : false, + "timeout" : 3, + "type" : "UDP_CONNECT", + "url_path" : "/world" + } ], + "page_info" : { + "next_marker" : "cda1af03-0660-4fd2-8edf-e38c79846e08", + "previous_marker" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441", + "current_count" : 2 + }, + "request_id" : "814bc40e-8b0a-4ced-b8e5-f136c3e1df6a" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/ListL7Policies.html b/elb/api-ref/ListL7Policies.html new file mode 100644 index 000000000..04219761e --- /dev/null +++ b/elb/api-ref/ListL7Policies.html @@ -0,0 +1,712 @@ + + +

      Querying Forwarding Policies

      +

      Function

      This API is used to query all forwarding policies.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/l7policies

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.

        +
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.

        +
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the forwarding policy ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the forwarding policy name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      description

      +

      No

      +

      Array

      +

      Provides supplementary information about the forwarding policy.

      +

      Multiple descriptions can be queried in the format of description=xxx&description=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      listener_id

      +

      No

      +

      Array

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • If action is set to REDIRECT_TO_POOL, the forwarding policy can be added to an HTTP or HTTPS listener.

        +
      • If action is set to REDIRECT_TO_LISTENER, the forwarding policy can be added to an HTTP listener.

        +
      +

      Multiple IDs can be queried in the format of listener_id=xxx&listener_id=xxx.

      +

      position

      +

      No

      +

      Array

      +

      Specifies the forwarding policy priority.

      +

      Multiple priorities can be queried in the format of position=xxx&position=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      action

      +

      No

      +

      Array

      +

      Specifies where requests will be forwarded. The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests will be forwarded to another backend server group.

        +
      • REDIRECT_TO_LISTENER: Requests will be redirected to an HTTPS listener.

        +
      +

      Multiple values can be queried in the format of action=xxx&action=xxx.

      +

      redirect_url

      +

      No

      +

      Array

      +

      Specifies the URL to which requests are forwarded.

      +

      Multiple URLs can be queried in the format of redirect_url=xxx&redirect_url=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      redirect_pool_id

      +

      No

      +

      Array

      +

      Specifies the ID of the backend server group to which requests are forwarded. This parameter will take effect and is mandatory when action is set to REDIRECT_TO_POOL.

      +

      Multiple IDs can be queried in the format of redirect_pool_id=xxx&redirect_pool_id=xxx.

      +

      redirect_listener_id

      +

      No

      +

      Array

      +

      Specifies the ID of the listener to which requests are redirected. This parameter will take effect and is mandatory when action is set to REDIRECT_TO_LISTENER.

      +

      Multiple IDs can be queried in the format of redirect_listener_id=xxx&redirect_listener_id=xxx.

      +

      provisioning_status

      +

      No

      +

      Array

      +

      Specifies the provisioning status of the forwarding policy. The value can only be ACTIVE, indicating that the forwarding policy is provisioned successfully.

      +

      Multiple provisioning statuses can be queried in the format of provisioning_status=xxx&provisioning_status=xxx.

      +

      display_all_rules

      +

      No

      +

      Boolean

      +

      Specifies whether to display all information about the forwarding rule in the forwarding policy. The value can be true or false.

      +
      • true indicates all information about the forwarding rule is displayed.

        +
      • false indicates that only the rule ID is displayed.

        +
      +

      priority

      +

      No

      +

      Array

      +

      Specifies the forwarding policy priority. A smaller value indicates a higher priority.

      +

      Multiple priorities can be queried in the format of position=xxx&position=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Shows pagination information.

      +

      l7policies

      +

      Array of L7Policy objects

      +

      Lists the forwarding policies.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 L7Policy

      Parameter

      +

      Type

      +

      Description

      +

      action

      +

      String

      +

      Specifies where requests will be forwarded. The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests will be forwarded to another backend server group.

        +
      • REDIRECT_TO_LISTENER: Requests will be redirected to an HTTPS listener.

        +
      +

      REDIRECT_TO_LISTENER has the highest priority. If requests are to be redirected to an HTTPS listener, other forwarding policies of the listener will become invalid.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • If action is set to REDIRECT_TO_POOL, the forwarding policy can be added to an HTTP or HTTPS listener.

        +
      • If action is set to REDIRECT_TO_LISTENER, the forwarding policy can be added to an HTTP listener.

        +
      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      position

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter cannot be updated.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      project_id

      +

      String

      +

      Specifies the project ID of the forwarding policy.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding policy.

      +

      The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener that requests are redirected to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_LISTENER.

      +

      Only HTTPS listeners are supported, and the listener cannot be any listener added to other load balancers.

      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group that requests are forwarded to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_POOL.

      +

      The specified backend server group cannot be the default one associated with the listener, or any backend server group associated with the forwarding policies of other listeners.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which requests are forwarded.

      +

      Format: protocol://host:port/path?query

      +

      This parameter is unsupported. Please do not use it.

      +

      rules

      +

      Array of RuleRef objects

      +

      Lists the forwarding rules in the forwarding policy.

      +

      redirect_url_config

      +

      RedirectUrlConfig object

      +

      Specifies the URL to which requests are forwarded.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      For dedicated load balancers, this parameter will take effect only when advanced forwarding is enabled (enhance_l7policy_enable is set to true). If it is passed when enhance_l7policy_enable is set to false, an error will be returned.

      +

      Format: protocol://host:port/path?query

      +

      At least one of the four parameters (protocol, host, port, and path) must be passed, or their values cannot be set to ${xxx} at the same time. (${xxx} indicates that the value in the request will be inherited. For example, ${host} indicates the host in the URL to be redirected.)

      +

      The values of protocol and port cannot be the same as those of the associated listener, and either host or path must be passed or their values cannot be ${xxx} at the same time.

      +

      This parameter is unsupported. Please do not use it.

      +

      fixed_response_config

      +

      FixtedResponseConfig object

      +

      Specifies the configuration of the page that will be returned. This parameter will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      This parameter is unsupported. Please do not use it.

      +

      priority

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter is available only for dedicated load balancers and will take effect when enhance_l7policy_enable is set to true.

      +

      A smaller value indicates a higher priority. The value must be unique for each forwarding policy of the same listener.

      +

      If action is set to REDIRECT_TO_LISTENER, the value can only be 0, indicating that REDIRECT_TO_LISTENER has the highest priority.

      +
      • If enhance_l7policy_enable is set to false, forwarding policies are automatically prioritized based on the original sorting logic. Forwarding policy priorities are independent of each other regardless of domain names. If forwarding policies use the same domain name, their priorities follow the order of exact match (EQUAL_TO), prefix match (STARTS_WITH), and regular expression match (REGEX). If prefix match is used for matching, the longer the path, the higher the priority. If a forwarding policy contains only a domain name without a path specified, the path is /, and prefix match is used by default.

        +
      • If enhance_l7policy_enable is set to true and this parameter is not passed, the priority will set to a sum of 1 and the highest priority of existing forwarding policy in the same listener by default. There will be two cases: a) If the highest priority of existing forwarding policies is the maximum (10,000), the forwarding policy will fail to create because the final priority for creating the forwarding policy is the sum of 1 and 10,000, which exceeds the maximum. In this case, please specify a value or adjust the priorities of existing forwarding policies. b) If no forwarding policies exist, the highest priority of existing forwarding policies will set to 1 by default.

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 0

      +

      Maximum: 10000

      +
      + + + + + + + + + + + + +
      Table 7 RuleRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 RedirectUrlConfig

      Parameter

      +

      Type

      +

      Description

      +

      protocol

      +

      String

      +

      Specifies the protocol for redirection. The default value is ${protocol}, indicating that the protocol of the request will be used.

      +

      Value options:

      +
      • HTTP

        +
      • HTTPS

        +
      • ${protocol}

        +
      +

      Minimum: 1

      +

      Maximum: 36

      +

      host

      +

      String

      +

      Specifies the host name that requests are redirected to. The value can contain only letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. The default value is ${host}, indicating that the host of the request will be used.

      +

      Default: ${host}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      port

      +

      String

      +

      Specifies the port that requests are redirected to. The default value is ${port}, indicating that the port of the request will be used.

      +

      Default: ${port}

      +

      Minimum: 1

      +

      Maximum: 16

      +

      path

      +

      String

      +

      Specifies the path that requests are redirected to. The default value is ${path}, indicating that the path of the request will be used. The value can contain only letters, digits, and special characters _-';@^- %#&$.*+?,=!:|/()[]{} and must start with a slash (/).

      +

      Default: ${path}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      query

      +

      String

      +

      Specifies the query string set in the URL for redirection. The default value is ${query}, indicating that the query string of the request will be used.

      +

      For example, in the URL https://www.xxx.com:8080/elb?type=loadbalancer, ${query} indicates type=loadbalancer. If this parameter is set to ${query}&name=my_name, the URL will be redirected to https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name.

      +

      The value is case-sensitive and can contain only letters, digits, and special characters !$&'()*+,-./:;=?@^_`

      +

      Default: ${query}

      +

      Minimum: 0

      +

      Maximum: 128

      +

      status_code

      +

      String

      +

      Specifies the status code returned after the requests are redirected.

      +

      Value options:

      +
      • 301

        +
      • 302

        +
      • 303

        +
      • 307

        +
      • 308

        +
      +

      Minimum: 1

      +

      Maximum: 16

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 9 FixtedResponseConfig

      Parameter

      +

      Type

      +

      Description

      +

      status_code

      +

      String

      +

      Specifies the HTTP status code configured in the forwarding policy. The value can be any integer in the range of 200–299, 400–499, or 500–599.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      content_type

      +

      String

      +

      Specifies the format of the response body.

      +

      Value options:

      +
      • text/plain

        +
      • text/css

        +
      • text/html

        +
      • application/javascript

        +
      • application/json

        +
      +

      Minimum: 0

      +

      Maximum: 32

      +

      message_body

      +

      String

      +

      Specifies the content of the response body.

      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies?display_all_rules=true
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "request_id" : "d3c67339-be91-4813-bb24-85728a5d326a",
      +  "l7policies" : [ {
      +    "redirect_pool_id" : "3b34340d-59e8-4c70-9ef5-b41b12023dc9",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "rules" : [ {
      +      "id" : "1e5f17df-feec-427e-a162-8e4e05e91085"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab",
      +    "action" : "REDIRECT_TO_POOL",
      +    "position" : 100,
      +    "provisioning_status" : "ACTIVE",
      +    "id" : "0d7bf316-2e03-411f-bf29-c403c04e52bf",
      +    "name" : "elbv3"
      +  }, {
      +    "redirect_pool_id" : "3b34340d-59e8-4c70-9ef5-b41b12023dc9",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "rules" : [ {
      +      "id" : "0f5e8c34-09d1-4588-8459-f9b9add0be05"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab",
      +    "action" : "REDIRECT_TO_POOL",
      +    "position" : 100,
      +    "provisioning_status" : "ERROR",
      +    "id" : "2587d8b1-9e8d-459c-9081-7bccaa075d2b",
      +    "name" : "elbv3"
      +  } ],
      +  "page_info" : {
      +    "next_marker" : "2587d8b1-9e8d-459c-9081-7bccaa075d2b",
      +    "previous_marker" : "0d7bf316-2e03-411f-bf29-c403c04e52bf",
      +    "current_count" : 2
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/ListL7Policies.rst b/elb/api-ref/ListL7Policies.rst new file mode 100644 index 000000000..11f98ebca --- /dev/null +++ b/elb/api-ref/ListL7Policies.rst @@ -0,0 +1,806 @@ +Querying Forwarding Policies +============================ + +Function +^^^^^^^^ + +This API is used to query all forwarding policies. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/l7policies + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the forwarding | + | | | | policy ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the forwarding | + | | | | policy name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | Array | Provides supplementary | + | | | | information about the | + | | | | forwarding policy. | + | | | | | + | | | | Multiple descriptions can | + | | | | be queried in the format of | + | | | | *descri | + | | | | ption=xxx&description=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding policy. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | No | Array | Specifies the ID of the | + | | | | listener to which the | + | | | | forwarding policy is added. | + | | | | | + | | | | - If **action** is set to | + | | | | **REDIRECT_TO_POOL**, | + | | | | the forwarding policy | + | | | | can be added to an HTTP | + | | | | or HTTPS listener. | + | | | | | + | | | | - If **action** is set to | + | | | | | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | the forwarding policy | + | | | | can be added to an HTTP | + | | | | listener. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *listen | + | | | | er_id=xxx&listener_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | position | No | Array | Specifies the forwarding | + | | | | policy priority. | + | | | | | + | | | | Multiple priorities can be | + | | | | queried in the format of | + | | | | * | + | | | | position=xxx&position=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | No | Array | Specifies where requests | + | | | | will be forwarded. The | + | | | | value can be one of the | + | | | | following: | + | | | | | + | | | | - **REDIRECT_TO_POOL**: | + | | | | Requests will be | + | | | | forwarded to another | + | | | | backend server group. | + | | | | | + | | | | - | + | | | | **REDIRECT_TO_LISTENER**: | + | | | | Requests will be | + | | | | redirected to an HTTPS | + | | | | listener. | + | | | | | + | | | | Multiple values can be | + | | | | queried in the format of | + | | | | *action=xxx&action=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_url | No | Array | Specifies the URL to which | + | | | | requests are forwarded. | + | | | | | + | | | | Multiple URLs can be | + | | | | queried in the format of | + | | | | *redirect | + | | | | _url=xxx&redirect_url=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_pool_id | No | Array | Specifies the ID of the | + | | | | backend server group to | + | | | | which requests are | + | | | | forwarded. This parameter | + | | | | will take effect and is | + | | | | mandatory when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *redirect_pool_id | + | | | | =xxx&redirect_pool_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_listener_id | No | Array | Specifies the ID of the | + | | | | listener to which requests | + | | | | are redirected. This | + | | | | parameter will take effect | + | | | | and is mandatory when | + | | | | **action** is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *redirect_listener_id=xxx | + | | | | &redirect_listener_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provisioning_status | No | Array | Specifies the provisioning | + | | | | status of the forwarding | + | | | | policy. The value can only | + | | | | be **ACTIVE**, indicating | + | | | | that the forwarding policy | + | | | | is provisioned | + | | | | successfully. | + | | | | | + | | | | Multiple provisioning | + | | | | statuses can be queried in | + | | | | the format of | + | | | | *provisioning_status=xx | + | | | | x&provisioning_status=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | display_all_rules | No | Boolean | Specifies whether to | + | | | | display all information | + | | | | about the forwarding rule | + | | | | in the forwarding policy. | + | | | | The value can be **true** | + | | | | or **false**. | + | | | | | + | | | | - **true** indicates all | + | | | | information about the | + | | | | forwarding rule is | + | | | | displayed. | + | | | | | + | | | | - **false** indicates that | + | | | | only the rule ID is | + | | | | displayed. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | priority | No | Array | Specifies the forwarding | + | | | | policy priority. A smaller | + | | | | value indicates a higher | + | | | | priority. | + | | | | | + | | | | Multiple priorities can be | + | | | | queried in the format of | + | | | | * | + | | | | position=xxx&position=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | page_info | `PageInfo <#ListL7Policies__response_PageInfo>`__ | Shows pagination information. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | l7policies | Array of | Lists the forwarding policies. | + | | `L7Policy <#ListL7Policies__response_L7Policy>`__ | | + | | objects | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** L7Policy + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | action | String | Specifies where requests will be | + | | | forwarded. The value can be one of | + | | | the following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests | + | | | will be forwarded to another | + | | | backend server group. | + | | | | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | will be redirected to an HTTPS | + | | | listener. | + | | | | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. If requests are to | + | | | be redirected to an HTTPS listener, | + | | | other forwarding policies of the | + | | | listener will become invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_POOL**, the | + | | | forwarding policy can be added to | + | | | an HTTP or HTTPS listener. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the | + | | | forwarding policy can be added to | + | | | an HTTP listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding policy | + | | | priority. This parameter cannot be | + | | | updated. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **100** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the | + | | | forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding policy. | + | | | | + | | | The value can only be **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener that | + | | | requests are redirected to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + | | | | + | | | Only HTTPS listeners are supported, | + | | | and the listener cannot be any | + | | | listener added to other load | + | | | balancers. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group that requests are | + | | | forwarded to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_POOL**. | + | | | | + | | | The specified backend server group | + | | | cannot be the default one associated | + | | | with the listener, or any backend | + | | | server group associated with the | + | | | forwarding policies of other | + | | | listeners. | + | | | | + | | | This parameter cannot be specified | + | | | when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which requests | + | | | are forwarded. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array of | Lists the forwarding rules in the | + | | `RuleRef < | forwarding policy. | + | | #ListL7Policies__response_RuleRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url_config | `RedirectUrlConfig <#ListL7Pol | Specifies the URL to which requests | + | | icies__response_RedirectUrlConfig>`__ | are forwarded. | + | | object | | + | | | For shared load balancers, this | + | | | parameter is not supported. If it is | + | | | passed, an error will be returned. | + | | | | + | | | For dedicated load balancers, this | + | | | parameter will take effect only when | + | | | advanced forwarding is enabled | + | | | (**enhance_l7policy_enable** is set | + | | | to **true**). If it is passed when | + | | | **enhance_l7policy_enable** is set to | + | | | **false**, an error will be returned. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | At least one of the four parameters | + | | | (**protocol**, **host**, **port**, | + | | | and **path**) must be passed, or | + | | | their values cannot be set to | + | | | **${xxx}** at the same time. | + | | | (**${xxx}** indicates that the value | + | | | in the request will be inherited. For | + | | | example, **${host}** indicates the | + | | | host in the URL to be redirected.) | + | | | | + | | | The values of **protocol** and | + | | | **port** cannot be the same as those | + | | | of the associated listener, and | + | | | either **host** or **path** must be | + | | | passed or their values cannot be | + | | | **${xxx}** at the same time. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | fixed_response_config | `FixtedResponseConfig <#ListL7Polici | Specifies the configuration of the | + | | es__response_FixtedResponseConfig>`__ | page that will be returned. This | + | | object | parameter will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. If this parameter is passed | + | | | and **enhance_l7policy_enable** is | + | | | set to **false**, an error will be | + | | | returned. For shared load balancers, | + | | | this parameter is not supported. If | + | | | it is passed, an error will be | + | | | returned. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | priority | Integer | Specifies the forwarding policy | + | | | priority. This parameter is available | + | | | only for dedicated load balancers and | + | | | will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. | + | | | | + | | | A smaller value indicates a higher | + | | | priority. The value must be unique | + | | | for each forwarding policy of the | + | | | same listener. | + | | | | + | | | If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the value | + | | | can only be **0**, indicating that | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **false**, forwarding | + | | | policies are automatically | + | | | prioritized based on the original | + | | | sorting logic. Forwarding policy | + | | | priorities are independent of each | + | | | other regardless of domain names. | + | | | If forwarding policies use the | + | | | same domain name, their priorities | + | | | follow the order of exact match | + | | | (**EQUAL_TO**), prefix match | + | | | (**STARTS_WITH**), and regular | + | | | expression match (**REGEX**). If | + | | | prefix match is used for matching, | + | | | the longer the path, the higher | + | | | the priority. If a forwarding | + | | | policy contains only a domain name | + | | | without a path specified, the path | + | | | is **/**, and prefix match is used | + | | | by default. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **true** and this parameter | + | | | is not passed, the priority will | + | | | set to a sum of 1 and the highest | + | | | priority of existing forwarding | + | | | policy in the same listener by | + | | | default. There will be two cases: | + | | | a) If the highest priority of | + | | | existing forwarding policies is | + | | | the maximum (10,000), the | + | | | forwarding policy will fail to | + | | | create because the final priority | + | | | for creating the forwarding policy | + | | | is the sum of 1 and 10,000, which | + | | | exceeds the maximum. In this case, | + | | | please specify a value or adjust | + | | | the priorities of existing | + | | | forwarding policies. b) If no | + | | | forwarding policies exist, the | + | | | highest priority of existing | + | | | forwarding policies will set to 1 | + | | | by default. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **10000** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** RuleRef + + ========= ====== ================================= + Parameter Type Description + ========= ====== ================================= + id String Specifies the forwarding rule ID. + ========= ====== ================================= + +.. table:: **Table 8** RedirectUrlConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | protocol | String | Specifies the protocol for | + | | | redirection. The default value is | + | | | **${protocol}**, indicating that the | + | | | protocol of the request will be used. | + | | | | + | | | Value options: | + | | | | + | | | - **HTTP** | + | | | | + | | | - **HTTPS** | + | | | | + | | | - **${protocol}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | host | String | Specifies the host name that requests | + | | | are redirected to. The value can | + | | | contain only letters, digits, hyphens | + | | | (-), and periods (.) and must start | + | | | with a letter or digit. The default | + | | | value is **${host}**, indicating that | + | | | the host of the request will be used. | + | | | | + | | | Default: **${host}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | String | Specifies the port that requests are | + | | | redirected to. The default value is | + | | | **${port}**, indicating that the port | + | | | of the request will be used. | + | | | | + | | | Default: **${port}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | path | String | Specifies the path that requests are | + | | | redirected to. The default value is | + | | | **${path}**, indicating that the path | + | | | of the request will be used. The | + | | | value can contain only letters, | + | | | digits, and special characters | + | | | \_-';@^- %#&$.*+?,=!:|/()[]{} and | + | | | must start with a slash (/). | + | | | | + | | | Default: **${path}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | query | String | Specifies the query string set in the | + | | | URL for redirection. The default | + | | | value is **${query}**, indicating | + | | | that the query string of the request | + | | | will be used. | + | | | | + | | | For example, in the URL | + | | | **https://www. | + | | | xxx.com:8080/elb?type=loadbalancer**, | + | | | **${query}** indicates | + | | | **type=loadbalancer**. If this | + | | | parameter is set to | + | | | **${query}&name=my_name**, the URL | + | | | will be redirected to | + | | | **https://www.xxx.com:8080/ | + | | | elb?type=loadbalancer&name=my_name**. | + | | | | + | | | The value is case-sensitive and can | + | | | contain only letters, digits, and | + | | | special characters | + | | | !$&'()*+,-./:;=?@^_\` | + | | | | + | | | Default: **${query}** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status_code | String | Specifies the status code returned | + | | | after the requests are redirected. | + | | | | + | | | Value options: | + | | | | + | | | - **301** | + | | | | + | | | - **302** | + | | | | + | | | - **303** | + | | | | + | | | - **307** | + | | | | + | | | - **308** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** FixtedResponseConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | status_code | String | Specifies the HTTP status code | + | | | configured in the forwarding policy. | + | | | The value can be any integer in the | + | | | range of 200–299, 400–499, or | + | | | 500–599. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | content_type | String | Specifies the format of the response | + | | | body. | + | | | | + | | | Value options: | + | | | | + | | | - **text/plain** | + | | | | + | | | - **text/css** | + | | | | + | | | - **text/html** | + | | | | + | | | - **application/javascript** | + | | | | + | | | - **application/json** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | message_body | String | Specifies the content of the response | + | | | body. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies?display_all_rules=true + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "request_id" : "d3c67339-be91-4813-bb24-85728a5d326a", + "l7policies" : [ { + "redirect_pool_id" : "3b34340d-59e8-4c70-9ef5-b41b12023dc9", + "description" : "", + "admin_state_up" : true, + "rules" : [ { + "id" : "1e5f17df-feec-427e-a162-8e4e05e91085" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab", + "action" : "REDIRECT_TO_POOL", + "position" : 100, + "provisioning_status" : "ACTIVE", + "id" : "0d7bf316-2e03-411f-bf29-c403c04e52bf", + "name" : "elbv3" + }, { + "redirect_pool_id" : "3b34340d-59e8-4c70-9ef5-b41b12023dc9", + "description" : "", + "admin_state_up" : true, + "rules" : [ { + "id" : "0f5e8c34-09d1-4588-8459-f9b9add0be05" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab", + "action" : "REDIRECT_TO_POOL", + "position" : 100, + "provisioning_status" : "ERROR", + "id" : "2587d8b1-9e8d-459c-9081-7bccaa075d2b", + "name" : "elbv3" + } ], + "page_info" : { + "next_marker" : "2587d8b1-9e8d-459c-9081-7bccaa075d2b", + "previous_marker" : "0d7bf316-2e03-411f-bf29-c403c04e52bf", + "current_count" : 2 + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/ListL7Rules.html b/elb/api-ref/ListL7Rules.html new file mode 100644 index 000000000..08e0d40b0 --- /dev/null +++ b/elb/api-ref/ListL7Rules.html @@ -0,0 +1,471 @@ + + +

      Querying Forwarding Rules

      +

      Function

      This API is used to query all forwarding rules.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/l7policies/{l7policy_id}/rules

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the forwarding rule ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      compare_type

      +

      No

      +

      Array

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      Multiple values can be queried in the format of compare_type=xxx&compare_type=xxx.

      +

      provisioning_status

      +

      No

      +

      Array

      +

      Specifies the provisioning status of the forwarding rule. The value can only be ACTIVE, indicating that the forwarding rule is provisioned successfully.

      +

      Multiple provisioning statuses can be queried in the format of provisioning_status=xxx&provisioning_status=xxx.

      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      value

      +

      No

      +

      Array

      +

      Specifies the value of the match content.

      +

      Multiple values can be queried in the format of value=xxx&value=xxx.

      +

      key

      +

      No

      +

      Array

      +

      Specifies the key of the match content that is used to identify the forwarding rule.

      +

      Multiple keys can be queried in the format of key=xxx&key=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      type

      +

      No

      +

      Array

      +

      Specifies the match content. The value can be HOST_NAME or PATH.

      +

      HOST_NAME indicates that the domain name will be used for matching, and PATH indicates that the URL will be used for matching.

      +

      The type value must be unique for each forwarding rule in a forwarding policy.

      +

      Multiple values can be queried in the format of type=xxx&type=xxx.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.

        +
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.

        +
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Shows pagination information.

      +

      rules

      +

      Array of L7Rule objects

      +

      Lists the forwarding rules.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 L7Rule

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      compare_type

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      key

      +

      String

      +

      Specifies the key of the match content. This parameter will not take effect when type is set to HOST_NAME or PATH. It can be updated but will not take effect.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      String

      +

      Specifies the match content. The value can be one of the following:

      +
      • HOST_NAME: A domain name will be used for matching.

        +
      • PATH: A URL will be used for matching.

        +
      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      value

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding rule.

      +

      The value can only be ACTIVE.

      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      Default: false

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      conditions

      +

      Array of RuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule.

      +
      • If conditions is specified, key and value will not take effect, and the value of this parameter will contain all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique.

        +
      • If conditions is not specified, the values of key and value are displayed.

        +
      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + +
      Table 7 RuleCondition

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "rules" : [ {
      +    "compare_type" : "STARTS_WITH",
      +    "provisioning_status" : "ACTIVE",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "invert" : false,
      +    "admin_state_up" : true,
      +    "value" : "/ccc.html",
      +    "type" : "PATH",
      +    "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7"
      +  } ],
      +  "page_info" : {
      +    "previous_marker" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7",
      +    "current_count" : 1
      +  },
      +  "request_id" : "ae4dbd7d-9271-4040-98b6-3bfe45bb15ee"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/ListL7Rules.rst b/elb/api-ref/ListL7Rules.rst new file mode 100644 index 000000000..532cfcd5e --- /dev/null +++ b/elb/api-ref/ListL7Rules.rst @@ -0,0 +1,468 @@ +Querying Forwarding Rules +========================= + +Function +^^^^^^^^ + +This API is used to query all forwarding rules. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/l7policies/{l7policy_id}/rules + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + project_id Yes String Specifies the project ID. + l7policy_id Yes String Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the forwarding | + | | | | rule ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | No | Array | Specifies how requests are | + | | | | matched with the domain | + | | | | name or URL. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, this | + | | | | parameter can only be | + | | | | set to **EQUAL_TO**. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, this parameter | + | | | | can be set to **REGEX**, | + | | | | **STARTS_WITH**, or | + | | | | **EQUAL_TO**. | + | | | | | + | | | | Multiple values can be | + | | | | queried in the format of | + | | | | *compare_ | + | | | | type=xxx&compare_type=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provisioning_status | No | Array | Specifies the provisioning | + | | | | status of the forwarding | + | | | | rule. The value can only be | + | | | | **ACTIVE**, indicating that | + | | | | the forwarding rule is | + | | | | provisioned successfully. | + | | | | | + | | | | Multiple provisioning | + | | | | statuses can be queried in | + | | | | the format of | + | | | | *provisioning_status=xx | + | | | | x&provisioning_status=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. The | + | | | | value is fixed at | + | | | | **false**. This parameter | + | | | | can be updated but remains | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | Array | Specifies the value of the | + | | | | match content. | + | | | | | + | | | | Multiple values can be | + | | | | queried in the format of | + | | | | *value=xxx&value=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | Array | Specifies the key of the | + | | | | match content that is used | + | | | | to identify the forwarding | + | | | | rule. | + | | | | | + | | | | Multiple keys can be | + | | | | queried in the format of | + | | | | *key=xxx&key=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | Array | Specifies the match | + | | | | content. The value can be | + | | | | **HOST_NAME** or **PATH**. | + | | | | | + | | | | **HOST_NAME** indicates | + | | | | that the domain name will | + | | | | be used for matching, and | + | | | | **PATH** indicates that the | + | | | | URL will be used for | + | | | | matching. | + | | | | | + | | | | The **type** value must be | + | | | | unique for each forwarding | + | | | | rule in a forwarding | + | | | | policy. | + | | | | | + | | | | Multiple values can be | + | | | | queried in the format of | + | | | | *type=xxx&type=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | page_info | `PageInfo <#ListL7Rules__response_PageInfo>`__ | Shows pagination information. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | rules | Array of | Lists the forwarding rules. | + | | `L7Rule <#ListL7Rules__response_L7Rule>`__ | | + | | objects | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** L7Rule + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies how requests are matched | + | | | with the domain name or URL. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, this parameter can | + | | | only be set to **EQUAL_TO**. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | this parameter can be set to | + | | | **REGEX**, **STARTS_WITH**, or | + | | | **EQUAL_TO**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. This parameter will not take | + | | | effect when **type** is set to | + | | | **HOST_NAME** or **PATH**. It can be | + | | | updated but will not take effect. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match content. The | + | | | value can be one of the following: | + | | | | + | | | - **HOST_NAME**: A domain name will | + | | | be used for matching. | + | | | | + | | | - **PATH**: A URL will be used for | + | | | matching. | + | | | | + | | | If **type** is set to **HOST_NAME**, | + | | | **PATH**, **METHOD**, or | + | | | **SOURCE_IP**, only one forwarding | + | | | rule can be created for each type. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. For example, if a domain name | + | | | is used for matching, **value** is | + | | | the domain name. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain letters, digits, hyphens | + | | | (-), and periods (.) and must | + | | | start with a letter or digit. If | + | | | you want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH** and | + | | | **compare_type** to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding rule. | + | | | | + | | | The value can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. The value is fixed at | + | | | **false**. This parameter can be | + | | | updated but remains invalid. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | conditions | Array of | Specifies the matching conditions of | + | | `RuleCondition <#Li | the forwarding rule. | + | | stL7Rules__response_RuleCondition>`__ | | + | | objects | - If **conditions** is specified, | + | | | **key** and **value** will not | + | | | take effect, and the value of this | + | | | parameter will contain all | + | | | conditions configured for the | + | | | forwarding rule. The keys in the | + | | | list must be the same, whereas | + | | | each value must be unique. | + | | | | + | | | - If **conditions** is not | + | | | specified, the values of **key** | + | | | and **value** are displayed. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** RuleCondition + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the key of match item. This | + | | | parameter is left blank. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, **key** is left | + | | | blank, and **value** indicates the | + | | | domain name, which can contain 1 | + | | | to 128 characters, including | + | | | letters, digits, hyphens (-), | + | | | periods (.), and asterisks (*), | + | | | and must start with a letter, | + | | | digit, or asterisk (*). If you | + | | | want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | **key** is left blank, and | + | | | **value** indicates the request | + | | | path, which can contain 1 to 128 | + | | | characters. If **compare_type** is | + | | | set to **STARTS_WITH** or | + | | | **EQUAL_TO** for the forwarding | + | | | rule, the value must start with a | + | | | slash (/) and can contain only | + | | | letters, digits, and special | + | | | characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "rules" : [ { + "compare_type" : "STARTS_WITH", + "provisioning_status" : "ACTIVE", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "invert" : false, + "admin_state_up" : true, + "value" : "/ccc.html", + "type" : "PATH", + "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7" + } ], + "page_info" : { + "previous_marker" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7", + "current_count" : 1 + }, + "request_id" : "ae4dbd7d-9271-4040-98b6-3bfe45bb15ee" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/ListListeners.html b/elb/api-ref/ListListeners.html new file mode 100644 index 000000000..065b94d8e --- /dev/null +++ b/elb/api-ref/ListListeners.html @@ -0,0 +1,856 @@ + + +

      Querying Listeners

      +

      Function

      This API is used to query listeners.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/listeners

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      protocol_port

      +

      No

      +

      Array

      +

      Specifies the port used by the listener.

      +

      Multiple ports can be queried in the format of protocol_port=xxx&protocol_port=xxx.

      +

      protocol

      +

      No

      +

      Array

      +

      Specifies the protocol used by the listener. The protocol can be UDP, TCP, HTTP, or HTTPS.

      +

      Multiple protocols can be queried in the format of protocol=xxx&protocol=xxx.

      +

      description

      +

      No

      +

      Array

      +

      Provides supplementary information about the listener.

      +

      Multiple descriptions can be queried in the format of description=xxx&description=xxx.

      +

      default_tls_container_ref

      +

      No

      +

      Array

      +

      Specifies the ID of the server certificate used by the listener.

      +

      Multiple IDs can be queried in the format of default_tls_container_ref=xxx&default_tls_container_ref=xxx.

      +

      client_ca_tls_container_ref

      +

      No

      +

      Array

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      Multiple IDs can be queried in the format of client_ca_tls_container_ref=xxx&client_ca_tls_container_ref=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the listener. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      connection_limit

      +

      No

      +

      Array

      +

      Specifies the maximum number of connections that the load balancer can handle. The default value is -1.

      +

      Multiple values can be queried in the format of connection_limit=xxx&connection_limit=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      default_pool_id

      +

      No

      +

      Array

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests will be routed to the default backend server.

      +

      Multiple IDs can be queried in the format of default_pool_id=xxx&default_pool_id=xxx.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the listener ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the name of the listener added to the load balancer.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      http2_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      loadbalancer_id

      +

      No

      +

      Array

      +

      Specifies the ID of the load balancer that the listener is added to.

      +

      Multiple IDs can be queried in the format of loadbalancer_id=xxx&loadbalancer_id=xxx.

      +

      tls_ciphers_policy

      +

      No

      +

      Array

      +

      Specifies the security policy used by the listener. This parameter is available only for HTTPS listeners.

      +

      The value can be tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0.

      +

      Multiple security policies can be queried in the format of tls_ciphers_policy=xxx&tls_ciphers_policy=xxx.

      +

      member_address

      +

      No

      +

      Array

      +

      Specifies the private IP address bound to the backend server. This parameter is used only as a query condition and is not included in the response.

      +

      Multiple IP addresses can be queried in the format of member_address=xxx&member_address=xxx.

      +

      member_device_id

      +

      No

      +

      Array

      +

      Specifies the ID of the cloud server that serves as a backend server. This parameter is used only as a query condition and is not included in the response.

      +

      Multiple IDs can be queried in the format of member_device_id=xxx&member_device_id=xxx.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.

        +
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.

        +
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      enable_member_retry

      +

      No

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers.

      +

      member_timeout

      +

      No

      +

      Array

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300.

      +

      Multiple durations can be queried in the format of member_timeout=xxx&member_timeout=xxx.

      +

      client_timeout

      +

      No

      +

      Array

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300.

      +

      Multiple durations can be queried in the format of client_timeout=xxx&client_timeout=xxx.

      +

      keepalive_timeout

      +

      No

      +

      Array

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter does not take effect.

        +
      +

      Multiple durations can be queried in the format of keepalive_timeout=xxx&keepalive_timeout=xxx.

      +

      transparent_client_ip_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Listener pagination information

      +

      listeners

      +

      Array of Listener objects

      +

      Lists the listeners.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Listener

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener. And the value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections. The default value is -1.

      +

      This parameter is unsupported. Please do not use it.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests are forwarded to the default backend server.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      insert_headers

      +

      ListenerInsertHeaders object

      +

      Specifies the HTTP header fields.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Specifies the ID of the load balancer that the listener is added to.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      project_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      sni_container_refs

      +

      Array of strings

      +

      Lists the IDs of SNI certificates (server certificates with domain names) used by the listener.

      +

      Each SNI certificate can have up to 30 domain names, and each domain name in the SNI certificate must be unique.

      +

      This parameter will be ignored and an empty array will be returned if the listener's protocol is not HTTPS.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is available only for HTTPS listeners.

      +

      The value can be tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0.

      +

      enable_member_retry

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers. This parameter is available only for HTTP and HTTPS listeners.

      +

      keepalive_timeout

      +

      Integer

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter does not take effect.

        +
      +

      client_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      member_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      ipgroup

      +

      ListenerIpGroup object

      +

      Specifies the IP address group associated with the listener.

      +

      This parameter is unsupported. Please do not use it.

      +

      transparent_client_ip_enable

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +

      enhance_l7policy_enable

      +

      Boolean

      +

      Specifies whether to enable advanced forwarding. The value can be true or false (default).

      +
      • true indicates that advanced forwarding will be enabled.

        +
      • false indicates that advanced forwarding will not be enabled.

        +
      +

      The following parameters will be available only when advanced forwarding is enabled:

      +
      • redirect_url_config

        +
      • fixed_response_config

        +
      • priority

        +
      • conditions

        +
      +

      For details, see the descriptions in the APIs of forwarding policies and forwarding rules.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 ListenerInsertHeaders

      Parameter

      +

      Type

      +

      Description

      +

      X-Forwarded-ELB-IP

      +

      Boolean

      +

      Specifies whether to transparently transmit the load balancer EIP to backend servers. If X-Forwarded-ELB-IP is set to true, the load balancer EIP will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the listening port of the load balancer to backend servers. If X-Forwarded-Port is set to true, the listening port of the load balancer will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-For-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the source port of the client to backend servers. If X-Forwarded-For-Port is set to true, the source port of the client will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Host

      +

      Boolean

      +

      Specifies whether to rewrite the X-Forwarded-Host header. If X-Forwarded-Host is set to true, X-Forwarded-Host in the request header from the clients can be set to Host in the request header sent from the load balancer to backend servers.

      +

      Default: true

      +
      + + + + + + + + + + + + +
      Table 8 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 9 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 10 ListenerIpGroup

      Parameter

      +

      Type

      +

      Description

      +

      ipgroup_id

      +

      String

      +

      Specifies the ID of the IP address group associated with the listener.

      +
      • If ip_list is set to [] and type to whitelist, no IP addresses are allowed to access the listener.

        +
      • If ip_list is set to [] and type to blacklist, any IP address is allowed to access the listener.

        +
      • The specified IP address group must exist and this parameter cannot be set to null.

        +
      +

      enable_ipgroup

      +

      Boolean

      +

      Specifies whether to enable access control.

      +
      • true: Access control is enabled.

        +
      • false: Access control is disabled.

        +
      +

      A listener with access control enabled can be directly deleted.

      +

      type

      +

      String

      +

      Specifies how access to the listener is controlled.

      +
      • white: A whitelist is configured. Only IP addresses in the whitelist can access the listener.

        +
      • black: A blacklist is configured. IP addresses in the blacklist are not allowed to access the listener.

        +
      +
      + + +

      Example Requests

      GET
      +
      +https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/listeners?limit=2&marker=22e221c4-37c7-45d6-a76a-6e5a3bf485ba
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "request_id" : "e77338298c98d52202fd60bdacec0d75",
      +  "listeners" : [ {
      +    "id" : "683cf917-3e51-4c41-830c-bc3a57e090f0",
      +    "name" : "My listener",
      +    "protocol_port" : 90,
      +    "protocol" : "HTTPS",
      +    "description" : "",
      +    "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "ac82ca77-8be3-4d65-9c4d-155771b463df"
      +    } ],
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "sni_container_refs" : [ ],
      +    "connection_limit" : -1,
      +    "tls_ciphers_policy" : "tls-1-0",
      +    "tags" : [ ],
      +    "created_at" : "2021-04-02T07:48:38Z",
      +    "updated_at" : "2021-04-02T07:48:38Z",
      +    "http2_enable" : false,
      +    "insert_headers" : {
      +      "X-Forwarded-ELB-IP" : false,
      +      "X-Forwarded-Host" : true,
      +      "X-Forwarded-For-Port" : false,
      +      "X-Forwarded-Port" : false
      +    },
      +    "member_timeout" : 60,
      +    "client_timeout" : 60,
      +    "keepalive_timeout" : 60,
      +    "enable_member_retry" : true,
      +    "transparent_client_ip_enable" : true,
      +    "enhance_l7policy_enable" : false
      +  }, {
      +    "id" : "1173360b-5911-4aa9-a1ec-05e9f714370c",
      +    "name" : "listener-sshd",
      +    "protocol_port" : 22,
      +    "protocol" : "TCP",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "4d196846-d63c-4e7b-9875-2c4f04a48661"
      +    } ],
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "sni_container_refs" : [ ],
      +    "connection_limit" : -1,
      +    "default_pool_id" : "6350052f-e060-4f80-b92f-f21255dba4c4",
      +    "tags" : [ ],
      +    "created_at" : "2021-04-01T08:21:15Z",
      +    "updated_at" : "2021-04-01T08:21:15Z",
      +    "http2_enable" : false,
      +    "insert_headers" : {
      +      "X-Forwarded-ELB-IP" : false,
      +      "X-Forwarded-Host" : true,
      +      "X-Forwarded-For-Port" : false,
      +      "X-Forwarded-Port" : false
      +    },
      +    "keepalive_timeout" : 4000,
      +    "enable_member_retry" : true,
      +    "transparent_client_ip_enable" : true,
      +    "enhance_l7policy_enable" : false
      +  } ],
      +  "page_info" : {
      +    "next_marker" : "1173360b-5911-4aa9-a1ec-05e9f714370c",
      +    "previous_marker" : "683cf917-3e51-4c41-830c-bc3a57e090f0",
      +    "current_count" : 2
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/ListListeners.rst b/elb/api-ref/ListListeners.rst new file mode 100644 index 000000000..6ba38bfa0 --- /dev/null +++ b/elb/api-ref/ListListeners.rst @@ -0,0 +1,826 @@ +Querying Listeners +================== + +Function +^^^^^^^^ + +This API is used to query listeners. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/listeners + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | No | Array | Specifies the port used by | + | | | | the listener. | + | | | | | + | | | | Multiple ports can be | + | | | | queried in the format of | + | | | | *protocol_p | + | | | | ort=xxx&protocol_port=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | No | Array | Specifies the protocol used | + | | | | by the listener. The | + | | | | protocol can be UDP, TCP, | + | | | | HTTP, or HTTPS. | + | | | | | + | | | | Multiple protocols can be | + | | | | queried in the format of | + | | | | * | + | | | | protocol=xxx&protocol=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | Array | Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | | + | | | | Multiple descriptions can | + | | | | be queried in the format of | + | | | | *descri | + | | | | ption=xxx&description=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_tls_container_ref | No | Array | Specifies the ID of the | + | | | | server certificate used by | + | | | | the listener. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *default | + | | | | _tls_container_ref=xxx&defa | + | | | | ult_tls_container_ref=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_ca_tls_container_ref | No | Array | Specifies the ID of the CA | + | | | | certificate used by the | + | | | | listener. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *client_ca_t | + | | | | ls_container_ref=xxx&client | + | | | | _ca_tls_container_ref=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the listener. The value can | + | | | | only be **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | connection_limit | No | Array | Specifies the maximum | + | | | | number of connections that | + | | | | the load balancer can | + | | | | handle. The default value | + | | | | is **-1**. | + | | | | | + | | | | Multiple values can be | + | | | | queried in the format of | + | | | | *connection_limit | + | | | | =xxx&connection_limit=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_pool_id | No | Array | Specifies the ID of the | + | | | | default backend server | + | | | | group. If there is no | + | | | | matched forwarding policy, | + | | | | requests will be routed to | + | | | | the default backend server. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *default_pool_i | + | | | | d=xxx&default_pool_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the listener ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the name of the | + | | | | listener added to the load | + | | | | balancer. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http2_enable | No | Boolean | Specifies whether to use | + | | | | HTTP/2. This parameter is | + | | | | available only for HTTPS | + | | | | listeners. If you configure | + | | | | this parameter for other | + | | | | types of listeners, it will | + | | | | not take effect. | + | | | | | + | | | | Enable HTTP/2 if you want | + | | | | the clients to use HTTP/2 | + | | | | to communicate with the | + | | | | load balancer. However, | + | | | | connections between the | + | | | | load balancer and backend | + | | | | servers use HTTP/1.x by | + | | | | default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | Array | Specifies the ID of the | + | | | | load balancer that the | + | | | | listener is added to. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *loadbalancer_i | + | | | | d=xxx&loadbalancer_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_ciphers_policy | No | Array | Specifies the security | + | | | | policy used by the | + | | | | listener. This parameter is | + | | | | available only for HTTPS | + | | | | listeners. | + | | | | | + | | | | The value can be | + | | | | **tls-1-0**, **tls-1-1**, | + | | | | **tls-1-2**, or | + | | | | **tls-1-2-strict**, and the | + | | | | default value is | + | | | | **tls-1-0**. | + | | | | | + | | | | Multiple security policies | + | | | | can be queried in the | + | | | | format of | + | | | | *tls_ciphers_policy=x | + | | | | xx&tls_ciphers_policy=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_address | No | Array | Specifies the private IP | + | | | | address bound to the | + | | | | backend server. This | + | | | | parameter is used only as a | + | | | | query condition and is not | + | | | | included in the response. | + | | | | | + | | | | Multiple IP addresses can | + | | | | be queried in the format of | + | | | | *member_addre | + | | | | ss=xxx&member_address=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_device_id | No | Array | Specifies the ID of the | + | | | | cloud server that serves as | + | | | | a backend server. This | + | | | | parameter is used only as a | + | | | | query condition and is not | + | | | | included in the response. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *member_device_id | + | | | | =xxx&member_device_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_member_retry | No | Boolean | Specifies whether to enable | + | | | | health check retries for | + | | | | backend servers. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_timeout | No | Array | Specifies the timeout | + | | | | duration for waiting for a | + | | | | request from a backend | + | | | | server, in seconds. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. The value ranges | + | | | | from **1** to **300**. | + | | | | | + | | | | Multiple durations can be | + | | | | queried in the format of | + | | | | *member_timeo | + | | | | ut=xxx&member_timeout=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_timeout | No | Array | Specifies the timeout | + | | | | duration for waiting for a | + | | | | request from a client, in | + | | | | seconds. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. The value ranges | + | | | | from **1** to **300**. | + | | | | | + | | | | Multiple durations can be | + | | | | queried in the format of | + | | | | *client_timeo | + | | | | ut=xxx&client_timeout=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | keepalive_timeout | No | Array | Specifies the idle timeout | + | | | | duration, in seconds. | + | | | | | + | | | | - For TCP listeners, the | + | | | | value ranges from **10** | + | | | | to **4000**, and the | + | | | | default value is | + | | | | **300**. | + | | | | | + | | | | - For HTTP and HTTPS | + | | | | listeners, the value | + | | | | ranges from **0** to | + | | | | **4000**, and the | + | | | | default value is **60**. | + | | | | | + | | | | - For UDP listeners, this | + | | | | parameter does not take | + | | | | effect. | + | | | | | + | | | | Multiple durations can be | + | | | | queried in the format of | + | | | | *keepalive_timeout= | + | | | | xxx&keepalive_timeout=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | t | No | Boolean | Specifies whether to pass | + | ransparent_client_ip_enable | | | source IP addresses of the | + | | | | clients to backend servers. | + | | | | | + | | | | Shared load balancers: The | + | | | | value can be **true** or | + | | | | **false**, and the default | + | | | | value is **false** for TCP | + | | | | and UDP listeners. The | + | | | | value can only be **true** | + | | | | for HTTP and HTTPS | + | | | | listeners. If this | + | | | | parameter is not passed, | + | | | | the default value is | + | | | | **true**. | + | | | | | + | | | | Dedicated load balancers: | + | | | | The value can only be | + | | | | **true** for all types of | + | | | | listeners. If this | + | | | | parameter is not passed, | + | | | | the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | page_info | `PageInfo <#ListListeners__response_PageInfo>`__ | Listener pagination information | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | listeners | Array of | Lists the listeners. | + | | `Listener <#ListListeners__response_Listener>`__ | | + | | objects | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** Listener + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. And the value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. The default value is | + | | | **-1**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the default | + | | | backend server group. If there is no | + | | | matched forwarding policy, requests | + | | | are forwarded to the default backend | + | | | server. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. This | + | | | parameter is available only for HTTPS | + | | | listeners. If you configure this | + | | | parameter for other types of | + | | | listeners, it will not take effect. | + | | | | + | | | Enable HTTP/2 if you want the clients | + | | | to use HTTP/2 to communicate with the | + | | | load balancer. However, connections | + | | | between the load balancer and backend | + | | | servers use HTTP/1.x by default. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | insert_headers | `ListenerInsertHeaders <#ListListener | Specifies the HTTP header fields. | + | | s__response_ListenerInsertHeaders>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Specifies the ID of the load balancer | + | | `LoadBalancerRef <#ListLi | that the listener is added to. | + | | steners__response_LoadBalancerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array of strings | Lists the IDs of SNI certificates | + | | | (server certificates with domain | + | | | names) used by the listener. | + | | | | + | | | Each SNI certificate can have up to | + | | | 30 domain names, and each domain name | + | | | in the SNI certificate must be | + | | | unique. | + | | | | + | | | This parameter will be ignored and an | + | | | empty array will be returned if the | + | | | listener's protocol is not HTTPS. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags. | + | | ` | | + | | Tag <#ListListeners__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is | + | | | available only for HTTPS listeners. | + | | | | + | | | The value can be **tls-1-0**, | + | | | **tls-1-1**, **tls-1-2**, or | + | | | **tls-1-2-strict**, and the default | + | | | value is **tls-1-0**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_member_retry | Boolean | Specifies whether to enable health | + | | | check retries for backend servers. | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | keepalive_timeout | Integer | Specifies the idle timeout duration, | + | | | in seconds. | + | | | | + | | | - For TCP listeners, the value | + | | | ranges from **10** to **4000**, | + | | | and the default value is **300**. | + | | | | + | | | - For HTTP and HTTPS listeners, the | + | | | value ranges from **0** to | + | | | **4000**, and the default value is | + | | | **60**. | + | | | | + | | | - For UDP listeners, this parameter | + | | | does not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a client, | + | | | in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a backend | + | | | server, in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipgroup | `ListenerIpGroup <#ListLi | Specifies the IP address group | + | | steners__response_ListenerIpGroup>`__ | associated with the listener. | + | | object | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | transparent_client_ip_enable | Boolean | Specifies whether to pass source IP | + | | | addresses of the clients to backend | + | | | servers. | + | | | | + | | | Shared load balancers: The value can | + | | | be **true** or **false**, and the | + | | | default value is **false** for TCP | + | | | and UDP listeners. The value can only | + | | | be **true** for HTTP and HTTPS | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + | | | | + | | | Dedicated load balancers: The value | + | | | can only be **true** for all types of | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enhance_l7policy_enable | Boolean | Specifies whether to enable advanced | + | | | forwarding. The value can be **true** | + | | | or **false** (default). | + | | | | + | | | - **true** indicates that advanced | + | | | forwarding will be enabled. | + | | | | + | | | - **false** indicates that advanced | + | | | forwarding will not be enabled. | + | | | | + | | | The following parameters will be | + | | | available only when advanced | + | | | forwarding is enabled: | + | | | | + | | | - **redirect_url_config** | + | | | | + | | | - **fixed_response_config** | + | | | | + | | | - **priority** | + | | | | + | | | - **conditions** | + | | | | + | | | For details, see the descriptions in | + | | | the APIs of forwarding policies and | + | | | forwarding rules. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** ListenerInsertHeaders + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | X-Forwarded-ELB-IP | Boolean | Specifies whether to transparently | + | | | transmit the load balancer EIP to | + | | | backend servers. If | + | | | **X-Forwarded-ELB-IP** is set to | + | | | **true**, the load balancer EIP will | + | | | be stored in the HTTP header and | + | | | passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Port | Boolean | Specifies whether to transparently | + | | | transmit the listening port of the | + | | | load balancer to backend servers. If | + | | | **X-Forwarded-Port** is set to | + | | | **true**, the listening port of the | + | | | load balancer will be stored in the | + | | | HTTP header and passed to backend | + | | | servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-For-Port | Boolean | Specifies whether to transparently | + | | | transmit the source port of the | + | | | client to backend servers. If | + | | | **X-Forwarded-For-Port** is set to | + | | | **true**, the source port of the | + | | | client will be stored in the HTTP | + | | | header and passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Host | Boolean | Specifies whether to rewrite the | + | | | **X-Forwarded-Host** header. If | + | | | **X-Forwarded-Host** is set to | + | | | **true**, **X-Forwarded-Host** in the | + | | | request header from the clients can | + | | | be set to **Host** in the request | + | | | header sent from the load balancer to | + | | | backend servers. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 9** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 10** ListenerIpGroup + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | ipgroup_id | String | Specifies the ID of the IP address | + | | | group associated with the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **whitelist**, no | + | | | IP addresses are allowed to access | + | | | the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **blacklist**, any | + | | | IP address is allowed to access | + | | | the listener. | + | | | | + | | | - The specified IP address group | + | | | must exist and this parameter | + | | | cannot be set to **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_ipgroup | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | - **true**: Access control is | + | | | enabled. | + | | | | + | | | - **false**: Access control is | + | | | disabled. | + | | | | + | | | A listener with access control | + | | | enabled can be directly deleted. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies how access to the listener | + | | | is controlled. | + | | | | + | | | - **white**: A whitelist is | + | | | configured. Only IP addresses in | + | | | the whitelist can access the | + | | | listener. | + | | | | + | | | - **black**: A blacklist is | + | | | configured. IP addresses in the | + | | | blacklist are not allowed to | + | | | access the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/listeners?limit=2&marker=22e221c4-37c7-45d6-a76a-6e5a3bf485ba + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "request_id" : "e77338298c98d52202fd60bdacec0d75", + "listeners" : [ { + "id" : "683cf917-3e51-4c41-830c-bc3a57e090f0", + "name" : "My listener", + "protocol_port" : 90, + "protocol" : "HTTPS", + "description" : "", + "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "ac82ca77-8be3-4d65-9c4d-155771b463df" + } ], + "project_id" : "060576782980d5762f9ec014dd2f1148", + "sni_container_refs" : [ ], + "connection_limit" : -1, + "tls_ciphers_policy" : "tls-1-0", + "tags" : [ ], + "created_at" : "2021-04-02T07:48:38Z", + "updated_at" : "2021-04-02T07:48:38Z", + "http2_enable" : false, + "insert_headers" : { + "X-Forwarded-ELB-IP" : false, + "X-Forwarded-Host" : true, + "X-Forwarded-For-Port" : false, + "X-Forwarded-Port" : false + }, + "member_timeout" : 60, + "client_timeout" : 60, + "keepalive_timeout" : 60, + "enable_member_retry" : true, + "transparent_client_ip_enable" : true, + "enhance_l7policy_enable" : false + }, { + "id" : "1173360b-5911-4aa9-a1ec-05e9f714370c", + "name" : "listener-sshd", + "protocol_port" : 22, + "protocol" : "TCP", + "description" : "", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "4d196846-d63c-4e7b-9875-2c4f04a48661" + } ], + "project_id" : "060576782980d5762f9ec014dd2f1148", + "sni_container_refs" : [ ], + "connection_limit" : -1, + "default_pool_id" : "6350052f-e060-4f80-b92f-f21255dba4c4", + "tags" : [ ], + "created_at" : "2021-04-01T08:21:15Z", + "updated_at" : "2021-04-01T08:21:15Z", + "http2_enable" : false, + "insert_headers" : { + "X-Forwarded-ELB-IP" : false, + "X-Forwarded-Host" : true, + "X-Forwarded-For-Port" : false, + "X-Forwarded-Port" : false + }, + "keepalive_timeout" : 4000, + "enable_member_retry" : true, + "transparent_client_ip_enable" : true, + "enhance_l7policy_enable" : false + } ], + "page_info" : { + "next_marker" : "1173360b-5911-4aa9-a1ec-05e9f714370c", + "previous_marker" : "683cf917-3e51-4c41-830c-bc3a57e090f0", + "current_count" : 2 + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/ListLoadBalancers.html b/elb/api-ref/ListLoadBalancers.html new file mode 100644 index 000000000..3c50749e4 --- /dev/null +++ b/elb/api-ref/ListLoadBalancers.html @@ -0,0 +1,962 @@ + + +

      Querying Load Balancers

      +

      Function

      This API is used to query all load balancers. Both filtered query and pagination query are supported.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/loadbalancers

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      Minimum: 1

      +

      Maximum: 255

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.
      • If this parameter is not specified, the first page will be queried.
      • This parameter cannot be left blank or set to an invalid ID.
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the load balancer ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the load balancer name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      description

      +

      No

      +

      Array

      +

      Provides supplementary information about the load balancer.

      +

      Multiple descriptions can be queried in the format of description=xxx&description=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is unsupported. Please do not use it.

      +

      provisioning_status

      +

      No

      +

      Array

      +

      Specifies the provisioning status of the load balancer. The value can only be ACTIVE, indicating that the load balancer is provisioned successfully.

      +

      Multiple provisioning statuses can be queried in the format of provisioning_status=xxx&provisioning_status=xxx.

      +

      operating_status

      +

      No

      +

      Array

      +

      Specifies the operating status of the load balancer. The value can only be ONLINE, indicating that the load balancer is working normally.

      +

      Multiple operating statuses can be queried in the format of operating_status=xxx&operating_status=xxx.

      +

      guaranteed

      +

      No

      +

      Boolean

      +

      Specifies whether the load balancer is a dedicated load balancer. The value can only be true.

      +

      vpc_id

      +

      No

      +

      Array

      +

      Specifies the ID of the VPC where the load balancer works.

      +

      Multiple IDs can be queried in the format of vpc_id=xxx&vpc_id=xxx.

      +

      vip_port_id

      +

      No

      +

      Array

      +

      Specifies the ID of the port bound to the virtual IP address of the load balancer.

      +

      Multiple IDs can be queried in the format of vip_port_id=xxx&vip_port_id=xxx.

      +

      vip_address

      +

      No

      +

      Array

      +

      Specifies the virtual IP address bound to the load balancer.

      +

      Multiple virtual IP addresses can be queried in the format of vip_address=xxx&vip_address=xxx.

      +

      vip_subnet_cidr_id

      +

      No

      +

      Array

      +

      Specifies the ID of the subnet where the load balancer works.

      +

      Multiple IDs can be queried in the format of vip_subnet_cidr_id=xxx&vip_subnet_cidr_id=xxx.

      +

      l4_flavor_id

      +

      No

      +

      Array

      +

      Specifies the ID of the flavor at Layer 4.

      +

      Multiple IDs can be queried in the format of l4_flavor_id=xxx&l4_flavor_id=xxx.

      +

      l4_scale_flavor_id

      +

      No

      +

      Array

      +

      Specifies the elastic flavor that is reserved for now.

      +

      Multiple flavors can be queried in the format of l4_scale_flavor_id=xxx&l4_scale_flavor_id=xxx.

      +

      ipv6_vip_address

      +

      No

      +

      Array

      +

      Specifies the IPv6 address bound to the load balancer.

      +

      Multiple IPv6 addresses can be queried in the format of ipv6_vip_address=xxx&ipv6_vip_address=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      ipv6_vip_virsubnet_id

      +

      No

      +

      Array

      +

      Specifies the ID of the IPv6 subnet where the load balancer works.

      +

      Multiple IDs can be queried in the format of ipv6_vip_virsubnet_id=xxx&ipv6_vip_virsubnet_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      ipv6_vip_port_id

      +

      No

      +

      Array

      +

      Specifies the ID of the port bound to the IPv6 address of the load balancer.

      +

      Multiple ports can be queried in the format of ipv6_vip_port_id=xxx&ipv6_vip_port_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      availability_zone_list

      +

      No

      +

      Array

      +

      Specifies the list of AZs where the load balancer is created. You can query the AZs by calling the API (/v3/{project_id}/elb/availability-zones).

      +

      Multiple AZs can be queried in the format of availability_zone_list=xxx&availability_zone_list=xxx.

      +

      eips

      +

      No

      +

      Array

      +

      Specifies the EIP bound to the load balancer.

      +

      The following is an example:

      +

      "eips": [ { "eip_id": "e9b72a9d-4275-455e-a724-853504e4d9c6", "eip_address": "88.88.14.122", "ip_version": 4 } ]

      +

      Multiple EIPs can be queried in the format of eips=eip_id=xxx&eips=eip_id=xxx.

      +

      l7_flavor_id

      +

      No

      +

      Array

      +

      Specifies the ID of the flavor at Layer 7.

      +

      Multiple flavors can be queried in the format of l7_flavor_id=xxx&l7_flavor_id=xxx.

      +

      l7_scale_flavor_id

      +

      No

      +

      Array

      +

      Specifies the elastic flavor that is reserved for now.

      +

      Multiple flavors can be queried in the format of l7_scale_flavor_id=xxx&l7_scale_flavor_id=xxx.

      +

      member_device_id

      +

      No

      +

      Array

      +

      Specifies the ID of the cloud server that serves as a backend server. This parameter is used only as a query condition and is not included in the response.

      +

      Multiple IDs can be queried in the format of member_device_id=xxx&member_device_id=xxx.

      +

      member_address

      +

      No

      +

      Array

      +

      Specifies the private IP address of the backend server. This parameter is used only as a query condition and is not included in the response.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      publicips

      +

      No

      +

      Array

      +

      Specifies the public IP address bound to the load balancer.

      +

      The following is an example:

      +

      "publicips": [ { "publicip_id": "e9b72a9d-4275-455e-a724-853504e4d9c6", "publicip_address": "88.88.14.122", "publicip_ip_version": 4 } ]

      +

      Multiple EIPs can be queried in the format of publicips=publicip_id=xxx&publicips=publicip_id=xxx.

      +

      ip_version

      +

      No

      +

      Array

      +

      Specifies the IP version. The value can be 4 (IPv4) or 6 (IPv6).

      +

      Multiple versions can be queried in the format of ip_version=xxx&ip_version=xxx.

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      No

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancers

      +

      Array of LoadBalancer objects

      +

      Lists the load balancers.

      +

      page_info

      +

      PageInfo object

      +

      Provides load balancer pagination information.

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 LoadBalancer

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      Default: Automatically generated

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the load balancer. The value can only be ACTIVE.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer. The value can only be vlb.

      +

      Default: vlb

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups associated with the load balancer.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the IDs of listeners added to the load balancer.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer. The value can only be ONLINE.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      vip_address

      +

      String

      +

      Specifies the private IPv4 address bound to the load balancer.

      +

      Minimum: 1

      +

      Maximum: 64

      +

      vip_subnet_cidr_id

      +

      String

      +

      Specifies the ID of the IPv4 subnet where the load balancer works.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      String

      +

      Specifies the name of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the virtual IP address (the value of vip_address) of the load balancer.

      +

      When you create a dedicated load balancer, the system automatically creates a port for the load balancer and associates the port with a default security group. However, security group rules containing the port will not affect traffic to and from the load balancer.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags added to the load balancer.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      guaranteed

      +

      Boolean

      +

      Specifies whether the load balancer is a dedicated load balancer.

      +

      The value can be true or false. true indicates a dedicated load balancer, and false indicates a shared load balancer. When dedicated load balancers are launched in the eu-de region, either true or false will be returned when you use the API to query or update a load balancer.

      +

      Default: true

      +

      vpc_id

      +

      String

      +

      Specifies the ID of the VPC where the load balancer works.

      +

      eips

      +

      Array of EipInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      ipv6_vip_address

      +

      String

      +

      Specifies the IPv6 address bound to the load balancer.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: None

      +

      Minimum: 1

      +

      Maximum: 64

      +

      ipv6_vip_virsubnet_id

      +

      String

      +

      Specifies the ID of the IPv6 subnet where the load balancer works.

      +

      This parameter is unsupported. Please do not use it.

      +

      ipv6_vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the IPv6 address.

      +

      This parameter is unsupported. Please do not use it.

      +

      availability_zone_list

      +

      Array of strings

      +

      Specifies the list of AZs where the load balancer is created.

      +

      enterprise_project_id

      +

      String

      +

      Specifies the enterprise project ID.

      +

      If this parameter is not passed during resource creation, the resource belongs to the default enterprise project.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 0

      +

      l4_flavor_id

      +

      String

      +

      Specifies the Layer-4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l4_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_flavor_id

      +

      String

      +

      Specifies the Layer-7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      publicips

      +

      Array of PublicIpInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      elb_virsubnet_ids

      +

      Array of strings

      +

      Specifies the ID of the subnet on the downstream plane. The ports used by the load balancer dynamically occupy IP addresses in the subnet.

      +

      ip_target_enable

      +

      Boolean

      +

      Specifies whether to enable cross-VPC backend.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: false

      +

      frozen_scene

      +

      String

      +

      Specifies the scenario where the load balancer is frozen. Use commas to separate multiple scenarios.

      +

      If the value is ARREAR, the load balancer is frozen because your account is in arrears.

      +

      ipv6_bandwidth

      +

      BandwidthRef object

      +

      Specifies the ID of the bandwidth. This parameter is available only when you create or update a dedicated load balancer that has an IPv6 address bound.

      +

      If you use a new IPv6 address and specify a shared bandwidth, the IPv6 address will be added to the shared bandwidth.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 6 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + + + + + + + + + + + +
      Table 7 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 8 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 9 EipInfo

      Parameter

      +

      Type

      +

      Description

      +

      eip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      eip_address

      +

      String

      +

      Specifies the specific IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. 4 indicates IPv4, and 6 indicates IPv6.

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 10 PublicIpInfo

      Parameter

      +

      Type

      +

      Description

      +

      publicip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      publicip_address

      +

      String

      +

      Specifies the IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. The value can be 4 (IPv4) or 6 (IPv6).

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + +
      Table 11 BandwidthRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the shared bandwidth ID.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 12 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers?limit={num}&marker={loadbalancer_id}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "loadbalancers" : [ {
      +    "id" : "87627cb6-9ff1-4580-984f-cc564fa9fc34",
      +    "project_id" : "b2782e6708b8475c993e6064bc456bf8",
      +    "name" : "loadbalancer-cyf",
      +    "description" : "simple lb-cyf",
      +    "vip_port_id" : "0381c10b-4927-4fa5-a7b5-fa529c162a06",
      +    "vip_address" : "192.168.0.26",
      +    "admin_state_up" : true,
      +    "provisioning_status" : "ACTIVE",
      +    "operating_status" : "ONLINE",
      +    "listeners" : [ ],
      +    "pools" : [ ],
      +    "tags" : [ ],
      +    "provider" : "vlb",
      +    "created_at" : "2019-05-24T02:09:39Z",
      +    "updated_at" : "2019-05-24T02:09:39Z",
      +    "vpc_id" : "2037c5bb-e04b-4de2-9300-9051af18e417",
      +    "enterprise_project_id" : "0",
      +    "availability_zone_list" : [ "AZ1" ],
      +    "elb_virsubnet_ids" : [ "ad5d63bf-3b50-4e88-b4d9-e94a59aade48" ],
      +    "eips" : [ ],
      +    "guaranteed" : true,
      +    "l4_flavor_id" : "22365281-de68-45e4-ada4-b0920b6da3c2",
      +    "l7_flavor_id" : "0942eb8f-51fa-4354-87b1-bf4cfeca4823",
      +    "vip_subnet_cidr_id" : "1992ec06-f364-4ae3-b936-6a8cc24633b7"
      +  }, {
      +    "id" : "09e86f09-03fc-440e-8132-03f3e149e979",
      +    "project_id" : "b2782e6708b8475c993e6064bc456bf8",
      +    "name" : "loadbalancer-cyf",
      +    "description" : "simple lb-cyf",
      +    "vip_port_id" : "e0bb984a-d094-4559-9b3b-bd61b5eb3a8f",
      +    "vip_address" : "192.168.0.47",
      +    "admin_state_up" : true,
      +    "provisioning_status" : "ACTIVE",
      +    "operating_status" : "ONLINE",
      +    "listeners" : [ ],
      +    "pools" : [ ],
      +    "tags" : [ ],
      +    "provider" : "vlb",
      +    "created_at" : "2019-05-24T02:02:01Z",
      +    "updated_at" : "2019-05-24T02:02:01Z",
      +    "vpc_id" : "2037c5bb-e04b-4de2-9300-9051af18e417",
      +    "enterprise_project_id" : "0",
      +    "availability_zone_list" : [ "AZ1" ],
      +    "elb_virsubnet_ids" : [ "ad5d63bf-3b50-4e88-b4d9-e94a59aade48" ],
      +    "eips" : [ ],
      +    "guaranteed" : true,
      +    "vip_subnet_cidr_id" : "1992ec06-f364-4ae3-b936-6a8cc24633b7"
      +  } ],
      +  "page_info" : {
      +    "next_marker" : "09e86f09-03fc-440e-8132-03f3e149e979",
      +    "previous_marker" : "87627cb6-9ff1-4580-984f-cc564fa9fc34",
      +    "current_count" : 2
      +  },
      +  "request_id" : "8709f187-c879-446c-a198-8f93ede2c178"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/ListLoadBalancers.rst b/elb/api-ref/ListLoadBalancers.rst new file mode 100644 index 000000000..a30a9c3dc --- /dev/null +++ b/elb/api-ref/ListLoadBalancers.rst @@ -0,0 +1,822 @@ +Querying Load Balancers +======================= + +Function +^^^^^^^^ + +This API is used to query all load balancers. Both filtered query and pagination query are supported. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/loadbalancers + +.. table:: **Table 1** Path parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the load balancer | + | | | | ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the load balancer | + | | | | name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | Array | Provides supplementary | + | | | | information about the load | + | | | | balancer. | + | | | | | + | | | | Multiple descriptions can | + | | | | be queried in the format of | + | | | | *descri | + | | | | ption=xxx&description=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the load balancer. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provisioning_status | No | Array | Specifies the provisioning | + | | | | status of the load | + | | | | balancer. The value can | + | | | | only be **ACTIVE**, | + | | | | indicating that the load | + | | | | balancer is provisioned | + | | | | successfully. | + | | | | | + | | | | Multiple provisioning | + | | | | statuses can be queried in | + | | | | the format of | + | | | | *provisioning_status=xx | + | | | | x&provisioning_status=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | operating_status | No | Array | Specifies the operating | + | | | | status of the load | + | | | | balancer. The value can | + | | | | only be **ONLINE**, | + | | | | indicating that the load | + | | | | balancer is working | + | | | | normally. | + | | | | | + | | | | Multiple operating statuses | + | | | | can be queried in the | + | | | | format of | + | | | | *operating_status | + | | | | =xxx&operating_status=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | guaranteed | No | Boolean | Specifies whether the load | + | | | | balancer is a dedicated | + | | | | load balancer. The value | + | | | | can only be **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vpc_id | No | Array | Specifies the ID of the VPC | + | | | | where the load balancer | + | | | | works. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *vpc_id=xxx&vpc_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_port_id | No | Array | Specifies the ID of the | + | | | | port bound to the virtual | + | | | | IP address of the load | + | | | | balancer. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *vip_po | + | | | | rt_id=xxx&vip_port_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_address | No | Array | Specifies the virtual IP | + | | | | address bound to the load | + | | | | balancer. | + | | | | | + | | | | Multiple virtual IP | + | | | | addresses can be queried in | + | | | | the format of | + | | | | *vip_ad | + | | | | dress=xxx&vip_address=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_subnet_cidr_id | No | Array | Specifies the ID of the | + | | | | subnet where the load | + | | | | balancer works. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *vip_subnet_cidr_id=x | + | | | | xx&vip_subnet_cidr_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l4_flavor_id | No | Array | Specifies the ID of the | + | | | | flavor at Layer 4. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *l4_flavo | + | | | | r_id=xxx&l4_flavor_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l4_scale_flavor_id | No | Array | Specifies the elastic | + | | | | flavor that is reserved for | + | | | | now. | + | | | | | + | | | | Multiple flavors can be | + | | | | queried in the format of | + | | | | *l4_scale_flavor_id=x | + | | | | xx&l4_scale_flavor_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_vip_address | No | Array | Specifies the IPv6 address | + | | | | bound to the load balancer. | + | | | | | + | | | | Multiple IPv6 addresses can | + | | | | be queried in the format of | + | | | | *ipv6_vip_address | + | | | | =xxx&ipv6_vip_address=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_vip_virsubnet_id | No | Array | Specifies the ID of the | + | | | | IPv6 subnet where the load | + | | | | balancer works. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *ipv6_vip_virsubnet_id=xxx& | + | | | | ipv6_vip_virsubnet_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_vip_port_id | No | Array | Specifies the ID of the | + | | | | port bound to the IPv6 | + | | | | address of the load | + | | | | balancer. | + | | | | | + | | | | Multiple ports can be | + | | | | queried in the format of | + | | | | *ipv6_vip_port_id | + | | | | =xxx&ipv6_vip_port_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | availability_zone_list | No | Array | Specifies the list of AZs | + | | | | where the load balancer is | + | | | | created. You can query the | + | | | | AZs by calling the API | + | | | | (/v3/{project_i | + | | | | d}/elb/availability-zones). | + | | | | | + | | | | Multiple AZs can be queried | + | | | | in the format of | + | | | | *a | + | | | | vailability_zone_list=xxx&a | + | | | | vailability_zone_list=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | eips | No | Array | Specifies the EIP bound to | + | | | | the load balancer. | + | | | | | + | | | | The following is an | + | | | | example: | + | | | | | + | | | | "eips": [ { "eip_id": | + | | | | "e9b72a9d-42 | + | | | | 75-455e-a724-853504e4d9c6", | + | | | | "eip_address": | + | | | | "88.88.14.122", | + | | | | "ip_version": 4 } ] | + | | | | | + | | | | Multiple EIPs can be | + | | | | queried in the format of | + | | | | *eips=e | + | | | | ip_id=xxx&eips=eip_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l7_flavor_id | No | Array | Specifies the ID of the | + | | | | flavor at Layer 7. | + | | | | | + | | | | Multiple flavors can be | + | | | | queried in the format of | + | | | | *l7_flavo | + | | | | r_id=xxx&l7_flavor_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l7_scale_flavor_id | No | Array | Specifies the elastic | + | | | | flavor that is reserved for | + | | | | now. | + | | | | | + | | | | Multiple flavors can be | + | | | | queried in the format of | + | | | | *l7_scale_flavor_id=x | + | | | | xx&l7_scale_flavor_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_device_id | No | Array | Specifies the ID of the | + | | | | cloud server that serves as | + | | | | a backend server. This | + | | | | parameter is used only as a | + | | | | query condition and is not | + | | | | included in the response. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *member_device_id | + | | | | =xxx&member_device_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_address | No | Array | Specifies the private IP | + | | | | address of the backend | + | | | | server. This parameter is | + | | | | used only as a query | + | | | | condition and is not | + | | | | included in the response. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | publicips | No | Array | Specifies the public IP | + | | | | address bound to the load | + | | | | balancer. | + | | | | | + | | | | The following is an | + | | | | example: | + | | | | | + | | | | "publicips": [ { | + | | | | "publicip_id": | + | | | | "e9b72a9d-42 | + | | | | 75-455e-a724-853504e4d9c6", | + | | | | "publicip_address": | + | | | | "88.88.14.122", | + | | | | "publicip_ip_version": 4 } | + | | | | ] | + | | | | | + | | | | Multiple EIPs can be | + | | | | queried in the format of | + | | | | *publicips=publicip_id=xxx& | + | | | | publicips=publicip_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_version | No | Array | Specifies the IP version. | + | | | | The value can be **4** | + | | | | (IPv4) or **6** (IPv6). | + | | | | | + | | | | Multiple versions can be | + | | | | queried in the format of | + | | | | *ip_v | + | | | | ersion=xxx&ip_version=xxx*. | + | | | | | + | | | | IPv6 is unsupported. The | + | | | | value cannot be **6**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token No String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +---------------+-------------------------------------------------+-------------------------------------------------+ + | Parameter | Type | Description | + +===============+=================================================+=================================================+ + | loadbalancers | Array of | Lists the load balancers. | + | | `LoadBalancer | | + | | <#ListLoadBalancers__response_LoadBalancer>`__ | | + | | objects | | + +---------------+-------------------------------------------------+-------------------------------------------------+ + | page_info | `Page | Provides load balancer pagination information. | + | | Info <#ListLoadBalancers__response_PageInfo>`__ | | + | | object | | + +---------------+-------------------------------------------------+-------------------------------------------------+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +---------------+-------------------------------------------------+-------------------------------------------------+ + +.. table:: **Table 5** LoadBalancer + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + | | | | + | | | Default: **Automatically generated** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the load balancer. The value can only | + | | | be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. The value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. The value can only be | + | | | **vlb**. | + | | | | + | | | Default: **vlb** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Li | groups associated with the load | + | | stLoadBalancers__response_PoolRef>`__ | balancer. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the IDs of listeners added to | + | | `ListenerRef <#ListLo | the load balancer. | + | | adBalancers__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. The value can only be | + | | | **ONLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IPv4 address | + | | | bound to the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_cidr_id | String | Specifies the ID of the IPv4 subnet | + | | | where the load balancer works. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the virtual IP address (the value of | + | | | **vip_address**) of the load | + | | | balancer. | + | | | | + | | | When you create a dedicated load | + | | | balancer, the system automatically | + | | | creates a port for the load balancer | + | | | and associates the port with a | + | | | default security group. However, | + | | | security group rules containing the | + | | | port will not affect traffic to and | + | | | from the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags added to the load | + | | `Tag | balancer. | + | | <#ListLoadBalancers__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | guaranteed | Boolean | Specifies whether the load balancer | + | | | is a dedicated load balancer. | + | | | | + | | | The value can be **true** or | + | | | **false**. **true** indicates a | + | | | dedicated load balancer, and | + | | | **false** indicates a shared load | + | | | balancer. When dedicated load | + | | | balancers are launched in the | + | | | **eu-de** region, either **true** or | + | | | **false** will be returned when you | + | | | use the API to query or update a load | + | | | balancer. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vpc_id | String | Specifies the ID of the VPC where the | + | | | load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eips | Array of | Specifies the EIP bound to the load | + | | `EipInfo <#Li | balancer. | + | | stLoadBalancers__response_EipInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_address | String | Specifies the IPv6 address bound to | + | | | the load balancer. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **None** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_virsubnet_id | String | Specifies the ID of the IPv6 subnet | + | | | where the load balancer works. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_port_id | String | Specifies the ID of the port bound to | + | | | the IPv6 address. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | availability_zone_list | Array of strings | Specifies the list of AZs where the | + | | | load balancer is created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enterprise_project_id | String | Specifies the enterprise project ID. | + | | | | + | | | If this parameter is not passed | + | | | during resource creation, the | + | | | resource belongs to the default | + | | | enterprise project. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **0** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_flavor_id | String | Specifies the Layer-4 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_scale_flavor_id | String | Specifies the reserved Layer 4 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_flavor_id | String | Specifies the Layer-7 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_scale_flavor_id | String | Specifies the reserved Layer 7 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicips | Array of | Specifies the EIP bound to the load | + | | `PublicIpInfo <#ListLoa | balancer. | + | | dBalancers__response_PublicIpInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | elb_virsubnet_ids | Array of strings | Specifies the ID of the subnet on the | + | | | downstream plane. The ports used by | + | | | the load balancer dynamically occupy | + | | | IP addresses in the subnet. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_target_enable | Boolean | Specifies whether to enable cross-VPC | + | | | backend. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | frozen_scene | String | Specifies the scenario where the load | + | | | balancer is frozen. Use commas to | + | | | separate multiple scenarios. | + | | | | + | | | If the value is **ARREAR**, the load | + | | | balancer is frozen because your | + | | | account is in arrears. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_bandwidth | `BandwidthRef <#ListLoa | Specifies the ID of the bandwidth. | + | | dBalancers__response_BandwidthRef>`__ | This parameter is available only when | + | | object | you create or update a dedicated load | + | | | balancer that has an IPv6 address | + | | | bound. | + | | | | + | | | If you use a new IPv6 address and | + | | | specify a shared bandwidth, the IPv6 | + | | | address will be added to the shared | + | | | bandwidth. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +.. table:: **Table 7** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 8** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 9** EipInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | eip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eip_address | String | Specifies the specific IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. **4** | + | | | indicates IPv4, and **6** indicates | + | | | IPv6. | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 10** PublicIpInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | publicip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicip_address | String | Specifies the IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. The value | + | | | can be **4** (IPv4) or **6** (IPv6). | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** BandwidthRef + + ========= ====== ================================== + Parameter Type Description + ========= ====== ================================== + id String Specifies the shared bandwidth ID. + ========= ====== ================================== + +.. table:: **Table 12** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers?limit={num}&marker={loadbalancer_id} + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "loadbalancers" : [ { + "id" : "87627cb6-9ff1-4580-984f-cc564fa9fc34", + "project_id" : "b2782e6708b8475c993e6064bc456bf8", + "name" : "loadbalancer-cyf", + "description" : "simple lb-cyf", + "vip_port_id" : "0381c10b-4927-4fa5-a7b5-fa529c162a06", + "vip_address" : "192.168.0.26", + "admin_state_up" : true, + "provisioning_status" : "ACTIVE", + "operating_status" : "ONLINE", + "listeners" : [ ], + "pools" : [ ], + "tags" : [ ], + "provider" : "vlb", + "created_at" : "2019-05-24T02:09:39Z", + "updated_at" : "2019-05-24T02:09:39Z", + "vpc_id" : "2037c5bb-e04b-4de2-9300-9051af18e417", + "enterprise_project_id" : "0", + "availability_zone_list" : [ "AZ1" ], + "elb_virsubnet_ids" : [ "ad5d63bf-3b50-4e88-b4d9-e94a59aade48" ], + "eips" : [ ], + "guaranteed" : true, + "l4_flavor_id" : "22365281-de68-45e4-ada4-b0920b6da3c2", + "l7_flavor_id" : "0942eb8f-51fa-4354-87b1-bf4cfeca4823", + "vip_subnet_cidr_id" : "1992ec06-f364-4ae3-b936-6a8cc24633b7" + }, { + "id" : "09e86f09-03fc-440e-8132-03f3e149e979", + "project_id" : "b2782e6708b8475c993e6064bc456bf8", + "name" : "loadbalancer-cyf", + "description" : "simple lb-cyf", + "vip_port_id" : "e0bb984a-d094-4559-9b3b-bd61b5eb3a8f", + "vip_address" : "192.168.0.47", + "admin_state_up" : true, + "provisioning_status" : "ACTIVE", + "operating_status" : "ONLINE", + "listeners" : [ ], + "pools" : [ ], + "tags" : [ ], + "provider" : "vlb", + "created_at" : "2019-05-24T02:02:01Z", + "updated_at" : "2019-05-24T02:02:01Z", + "vpc_id" : "2037c5bb-e04b-4de2-9300-9051af18e417", + "enterprise_project_id" : "0", + "availability_zone_list" : [ "AZ1" ], + "elb_virsubnet_ids" : [ "ad5d63bf-3b50-4e88-b4d9-e94a59aade48" ], + "eips" : [ ], + "guaranteed" : true, + "vip_subnet_cidr_id" : "1992ec06-f364-4ae3-b936-6a8cc24633b7" + } ], + "page_info" : { + "next_marker" : "09e86f09-03fc-440e-8132-03f3e149e979", + "previous_marker" : "87627cb6-9ff1-4580-984f-cc564fa9fc34", + "current_count" : 2 + }, + "request_id" : "8709f187-c879-446c-a198-8f93ede2c178" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/ListMembers.html b/elb/api-ref/ListMembers.html new file mode 100644 index 000000000..6390b6a19 --- /dev/null +++ b/elb/api-ref/ListMembers.html @@ -0,0 +1,470 @@ + + +

      Querying Backend Servers

      +

      Function

      This API is used to query all backend servers.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/pools/{pool_id}/members

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction.

      +

      The value can be true or false, and the default value is false.

      +

      The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the backend server name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      weight

      +

      No

      +

      Array

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights. If the weight is 0, the backend server will not accept new requests.

      +

      This parameter will not take effect when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Multiple weights can be queried in the format of weight=xxx&weight=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers that serve as the backend servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      subnet_cidr_id

      +

      No

      +

      Array

      +

      Specifies the ID of the subnet where the backend server works.

      +

      This subnet must be in the same VPC as the subnet of the load balancer with which the backend server is associated. Only IPv4 subnets are supported.

      +

      Multiple IDs can be queried in the format of subnet_cidr_id=xxx&subnet_cidr_id=xxx.

      +

      address

      +

      No

      +

      Array

      +

      Specifies the IP address bound to the backend server.

      +
      • The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11.

        +
      • The IP address can be used only by the primary NIC.

        +
      +

      Multiple IP addresses can be queried in the format of address=xxx&address=xxx.

      +

      protocol_port

      +

      No

      +

      Array

      +

      Specifies the port used by the backend server.

      +

      Multiple ports can be queried in the format of protocol_port=xxx&protocol_port=xxx.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the backend server ID.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      operating_status

      +

      No

      +

      Array

      +

      Specifies the operating status of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.

        +
      • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

        +
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

        +
      +

      Multiple operating statuses can be queried in the format of operating_status=xxx&operating_status=xxx.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.

        +
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.

        +
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      ip_version

      +

      No

      +

      String

      +

      Specifies the IP version. The value can be 4 (IPv4) or 6 (IPv6).

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Shows pagination information.

      +

      members

      +

      Array of Member objects

      +

      Lists the backend servers.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Member

      Parameter

      +

      Type

      +

      Description

      +

      address

      +

      String

      +

      Specifies the IP address of the backend server.

      +

      The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11. The IP address can only be the IP address of the primary NIC.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.

        +
      • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

        +
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

        +
      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server to receive requests.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      subnet_cidr_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. This subnet must be in the VPC as the subnet of the load balancer associated with the backend server. Only IPv4 subnets are supported. If the value is left blank, the backend server is not in the load balancer's VPC.

      +

      weight

      +

      Integer

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights.

      +

      If the weight is 0, the backend server will not accept new requests.

      +

      This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Minimum: 0

      +

      Maximum: 100

      +

      Default: 1

      +

      ip_version

      +

      String

      +

      This is a read-only attribute, which is automatically generated based on the address parameter. The value can be v4 or v6.

      +

      Default: v4

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/{project_id}/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "members" : [ {
      +    "name" : "quark-neutron",
      +    "weight" : 100,
      +    "admin_state_up" : false,
      +    "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "address" : "120.10.10.2",
      +    "protocol_port" : 2100,
      +    "id" : "0aa23a52-1ac2-4a2d-8dfa-1e11cb26079d",
      +    "operating_status" : "NO_MONITOR",
      +    "ip_version" : "v4"
      +  }, {
      +    "name" : "quark-neutron",
      +    "weight" : 100,
      +    "admin_state_up" : false,
      +    "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "address" : "120.10.10.2",
      +    "protocol_port" : 2101,
      +    "id" : "315b928b-39e4-4d5f-8e48-39e9108c1035",
      +    "operating_status" : "NO_MONITOR",
      +    "ip_version" : "v4"
      +  }, {
      +    "name" : "quark-neutron",
      +    "weight" : 100,
      +    "admin_state_up" : false,
      +    "subnet_cidr_id" : "27e4ab69-a5ed-46c6-921a-5212be19ce87",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "address" : "2001:db8:a583:6a::4",
      +    "protocol_port" : 2101,
      +    "id" : "53976f72-d2aa-47f5-baf4-4906ed6b42d6",
      +    "operating_status" : "NO_MONITOR",
      +    "ip_version" : "v6"
      +  } ],
      +  "page_info" : {
      +    "previous_marker" : "0aa23a52-1ac2-4a2d-8dfa-1e11cb26079d",
      +    "current_count" : 3
      +  },
      +  "request_id" : "87e29592-7ab8-401a-9bf4-66cf6747eab9"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/ListMembers.rst b/elb/api-ref/ListMembers.rst new file mode 100644 index 000000000..550355329 --- /dev/null +++ b/elb/api-ref/ListMembers.rst @@ -0,0 +1,459 @@ +Querying Backend Servers +======================== + +Function +^^^^^^^^ + +This API is used to query all backend servers. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/pools/{pool_id}/members + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + project_id Yes String Specifies the project ID. + pool_id Yes String Specifies the ID of the backend server group. + ========== ========= ====== ============================================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**, and the | + | | | | default value is **false**. | + | | | | | + | | | | The last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the backend | + | | | | server name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Array | Specifies the weight of the | + | | | | backend server. | + | | | | | + | | | | Requests are routed to | + | | | | backend servers in the same | + | | | | backend server group based | + | | | | on their weights. If the | + | | | | weight is 0, the backend | + | | | | server will not accept new | + | | | | requests. | + | | | | | + | | | | This parameter will not | + | | | | take effect when | + | | | | **lb_algorithm** is set to | + | | | | **SOURCE_IP** for the | + | | | | backend server group that | + | | | | contains the backend | + | | | | server. | + | | | | | + | | | | Multiple weights can be | + | | | | queried in the format of | + | | | | *weight=xxx&weight=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | Although this parameter can | + | | | | be used in the APIs for | + | | | | creating and updating | + | | | | backend servers, its actual | + | | | | value depends on whether | + | | | | cloud servers that serve as | + | | | | the backend servers exist. | + | | | | If cloud servers exist, the | + | | | | value is **true**. | + | | | | Otherwise, the value is | + | | | | **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | subnet_cidr_id | No | Array | Specifies the ID of the | + | | | | subnet where the backend | + | | | | server works. | + | | | | | + | | | | This subnet must be in the | + | | | | same VPC as the subnet of | + | | | | the load balancer with | + | | | | which the backend server is | + | | | | associated. Only IPv4 | + | | | | subnets are supported. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *subnet_cidr_ | + | | | | id=xxx&subnet_cidr_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | address | No | Array | Specifies the IP address | + | | | | bound to the backend | + | | | | server. | + | | | | | + | | | | - The IP address must be | + | | | | in the subnet specified | + | | | | by **subnet_cidr_id**, | + | | | | for example, | + | | | | 192.168.3.11. | + | | | | | + | | | | - The IP address can be | + | | | | used only by the primary | + | | | | NIC. | + | | | | | + | | | | Multiple IP addresses can | + | | | | be queried in the format of | + | | | | *address=xxx&address=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | No | Array | Specifies the port used by | + | | | | the backend server. | + | | | | | + | | | | Multiple ports can be | + | | | | queried in the format of | + | | | | *protocol_p | + | | | | ort=xxx&protocol_port=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | operating_status | No | Array | Specifies the operating | + | | | | status of the backend | + | | | | server. The value can be | + | | | | one of the following: | + | | | | | + | | | | - **ONLINE**: The backend | + | | | | server is running | + | | | | normally. | + | | | | | + | | | | - **NO_MONITOR**: No | + | | | | health check is | + | | | | configured for the | + | | | | backend server group to | + | | | | which the backend server | + | | | | belongs. | + | | | | | + | | | | - **OFFLINE**: The cloud | + | | | | server used as the | + | | | | backend server is | + | | | | stopped or does not | + | | | | exist. | + | | | | | + | | | | Multiple operating statuses | + | | | | can be queried in the | + | | | | format of | + | | | | *operating_status | + | | | | =xxx&operating_status=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_version | No | String | Specifies the IP version. | + | | | | The value can be **4** | + | | | | (IPv4) or **6** (IPv6). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | page_info | `PageInfo <#ListMembers__response_PageInfo>`__ | Shows pagination information. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | members | Array of | Lists the backend servers. | + | | `Member <#ListMembers__response_Member>`__ | | + | | objects | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** Member + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | address | String | Specifies the IP address of the | + | | | backend server. | + | | | | + | | | The IP address must be in the subnet | + | | | specified by **subnet_cidr_id**, for | + | | | example, 192.168.3.11. The IP address | + | | | can only be the IP address of the | + | | | primary NIC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | Although this parameter can be used | + | | | in the APIs for creating and updating | + | | | backend servers, its actual value | + | | | depends on whether cloud servers | + | | | exist. If cloud servers exist, the | + | | | value is **true**. Otherwise, the | + | | | value is **false**. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | backend server. The value can be one | + | | | of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group to which the backend server | + | | | belongs. | + | | | | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server to receive requests. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_cidr_id | String | Specifies the ID of the subnet where | + | | | the backend server works. This subnet | + | | | must be in the VPC as the subnet of | + | | | the load balancer associated with the | + | | | backend server. Only IPv4 subnets are | + | | | supported. If the value is left | + | | | blank, the backend server is not in | + | | | the load balancer's VPC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the weight of the backend | + | | | server. | + | | | | + | | | Requests are routed to backend | + | | | servers in the same backend server | + | | | group based on their weights. | + | | | | + | | | If the weight is 0, the backend | + | | | server will not accept new requests. | + | | | | + | | | This parameter is invalid when | + | | | **lb_algorithm** is set to | + | | | **SOURCE_IP** for the backend server | + | | | group that contains the backend | + | | | server. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **100** | + | | | | + | | | Default: **1** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | This is a read-only attribute, which | + | | | is automatically generated based on | + | | | the **address** parameter. The value | + | | | can be **v4** or **v6**. | + | | | | + | | | Default: **v4** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/{project_id}/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "members" : [ { + "name" : "quark-neutron", + "weight" : 100, + "admin_state_up" : false, + "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "address" : "120.10.10.2", + "protocol_port" : 2100, + "id" : "0aa23a52-1ac2-4a2d-8dfa-1e11cb26079d", + "operating_status" : "NO_MONITOR", + "ip_version" : "v4" + }, { + "name" : "quark-neutron", + "weight" : 100, + "admin_state_up" : false, + "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "address" : "120.10.10.2", + "protocol_port" : 2101, + "id" : "315b928b-39e4-4d5f-8e48-39e9108c1035", + "operating_status" : "NO_MONITOR", + "ip_version" : "v4" + }, { + "name" : "quark-neutron", + "weight" : 100, + "admin_state_up" : false, + "subnet_cidr_id" : "27e4ab69-a5ed-46c6-921a-5212be19ce87", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "address" : "2001:db8:a583:6a::4", + "protocol_port" : 2101, + "id" : "53976f72-d2aa-47f5-baf4-4906ed6b42d6", + "operating_status" : "NO_MONITOR", + "ip_version" : "v6" + } ], + "page_info" : { + "previous_marker" : "0aa23a52-1ac2-4a2d-8dfa-1e11cb26079d", + "current_count" : 3 + }, + "request_id" : "87e29592-7ab8-401a-9bf4-66cf6747eab9" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/ListPools.html b/elb/api-ref/ListPools.html new file mode 100644 index 000000000..e2163bff7 --- /dev/null +++ b/elb/api-ref/ListPools.html @@ -0,0 +1,642 @@ + + +

      Querying Backend Server Groups

      +

      Function

      This API is used to query all backend server groups.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query.

      +

      Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v3/{project_id}/elb/pools

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Query parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the last record on the previous page.

      +

      Note:

      +
      • This parameter must be used together with limit.

        +
      • If this parameter is not specified, the first page will be queried.

        +
      • This parameter cannot be left blank or set to an invalid ID.

        +
      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +

      Minimum: 0

      +

      Maximum: 2000

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link. This parameter must be used together with limit.

      +

      description

      +

      No

      +

      Array

      +

      Provides supplementary information about the backend server group.

      +

      Multiple descriptions can be queried in the format of description=xxx&description=xxx.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is unsupported. Please do not use it.

      +

      healthmonitor_id

      +

      No

      +

      Array

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      Multiple IDs can be queried in the format of healthmonitor_id=xxx&healthmonitor_id=xxx.

      +

      id

      +

      No

      +

      Array

      +

      Specifies the ID of the backend server group.

      +

      Multiple IDs can be queried in the format of id=xxx&id=xxx.

      +

      name

      +

      No

      +

      Array

      +

      Specifies the backend server group name.

      +

      Multiple names can be queried in the format of name=xxx&name=xxx.

      +

      loadbalancer_id

      +

      No

      +

      Array

      +

      Specifies the ID of the load balancer associated with the backend server group.

      +

      Multiple IDs can be queried in the format of loadbalancer_id=xxx&loadbalancer_id=xxx.

      +

      protocol

      +

      No

      +

      Array

      +

      Specifies the protocol used by the backend server group to receive requests.

      +

      Multiple protocols can be queried in the format of protocol=xxx&protocol=xxx.

      +

      lb_algorithm

      +

      No

      +

      Array

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers in the backend server group.

      +

      The value can be ROUND_ROBIN (weighted round robin), LEAST_CONNECTIONS (weighted least connections), or SOURCE_IP (source IP hash).

      +

      If the value is SOURCE_IP, weight will not take effect.

      +

      Multiple algorithms can be queried in the format of lb_algorithm=xxx&lb_algorithm=xxx.

      +

      enterprise_project_id

      +

      No

      +

      Array

      +

      Specifies the enterprise project ID.

      +
      • If this parameter is not passed, resources in the default enterprise project are queried, and authentication is performed based on the default enterprise project.

        +
      • If this parameter is passed, its value can be the ID of an existing enterprise project or all_granted_eps.

        +
      +

      If the value is a specific ID, resources in the specific enterprise project are required. If the value is all_granted_eps, resources in all enterprise projects are queried.

      +

      Multiple IDs can be queried in the format of enterprise_project_id=xxx&enterprise_project_id=xxx.

      +

      This parameter is unsupported. Please do not use it.

      +

      ip_version

      +

      No

      +

      Array

      +

      Specifies the IP address version of the backend server group. The value can be dualstack, v4, or v6.

      +

      Multiple versions can be queried in the format of ip_version=xxx&ip_version=xxx.

      +

      member_address

      +

      No

      +

      Array

      +

      Specifies the private IP address bound to the backend server. This parameter is used only as a query condition and is not included in the response.

      +

      Multiple IP addresses can be queried in the format of member_address=xxx&member_address=xxx.

      +

      member_device_id

      +

      No

      +

      Array

      +

      Specifies the ID of the cloud server that serves as a backend server. This parameter is used only as a query condition and is not included in the response.

      +

      Multiple IDs can be queried in the format of member_device_id=xxx&member_device_id=xxx.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 3 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + + + + + +
      Table 4 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      page_info

      +

      PageInfo object

      +

      Shows pagination information.

      +

      pools

      +

      Array of Pool objects

      +

      Lists the backend server groups.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 5 PageInfo

      Parameter

      +

      Type

      +

      Description

      +

      previous_marker

      +

      String

      +

      Specifies the ID of the first record in the pagination query result. This parameter will not be returned if no query result is returned.

      +

      next_marker

      +

      String

      +

      Marks the start record on the next page in the pagination query result. This parameter will not be returned if there is no next page.

      +

      current_count

      +

      Integer

      +

      Specifies the number of records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Pool

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      id

      +

      String

      +

      Specifies the backend server group ID.

      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers in the backend server group.

      +

      The value can be ROUND_ROBIN (weighted round robin), LEAST_CONNECTIONS (weighted least connections), or SOURCE_IP (source IP hash).

      +

      When the value is SOURCE_IP, the weight parameter is invalid.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      If only listener_id is specified during the creation of the backend server group, the ID of the loadbalancers parameter in the response is the ID of the load balancer to which the listener is added.

      +

      members

      +

      Array of MemberRef objects

      +

      Lists the backend servers in the backend server group.

      +

      name

      +

      String

      +

      Specifies the backend server group name.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. The protocol can be TCP, UDP, or HTTP.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      session_persistence

      +

      SessionPersistence object

      +

      Specifies the sticky session.

      +

      ip_version

      +

      String

      +

      Specifies the IP version supported by the backend server group.

      +
      • Shared load balancers: The default value is v4.

        +
      • Dedicated load balancers: The value can be dualstack, v4, or v6.

        +
      +

      When the protocol of the backend server group is TCP or UDP, ip_version is set to dualstack, indicating that both IPv4 and IPv6 are supported.

      +

      When the protocol of the backend server group is HTTP, ip_version is set to v4.

      +

      IPv6 is unsupported. Only v4 is returned.

      +

      Default: dualstack

      +

      slow_start

      +

      SlowStart object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 7 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + +
      Table 8 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + +
      Table 9 MemberRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 10 SessionPersistence

      Parameter

      +

      Type

      +

      Description

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter will take effect only when type is set to APP_COOKIE.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + +
      Table 11 SlowStart

      Parameter

      +

      Type

      +

      Description

      +

      enable

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Example Requests

      GET https://{elb_endpoint}/v3/{project_id}/elb/pools?limit=2
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "pools" : [ {
      +    "lb_algorithm" : "ROUND_ROBIN",
      +    "protocol" : "HTTP",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "309a0f61-0b62-45f2-97d1-742f3434338e"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "session_persistence" : {
      +      "cookie_name" : "my_cookie",
      +      "type" : "APP_COOKIE",
      +      "persistence_timeout" : 1
      +    },
      +    "healthmonitor_id" : "",
      +    "listeners" : [ ],
      +    "members" : [ ],
      +    "id" : "73bd4fe0-ffbb-4b56-aab4-4f26ddf7a103",
      +    "name" : "",
      +    "ip_version" : "v4"
      +  }, {
      +    "lb_algorithm" : "SOURCE_IP",
      +    "protocol" : "TCP",
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "d9763e59-64b7-4e93-aec7-0ff7881ef9bc"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "session_persistence" : {
      +      "cookie_name" : "",
      +      "type" : "SOURCE_IP",
      +      "persistence_timeout" : 1
      +    },
      +    "healthmonitor_id" : "",
      +    "listeners" : [ {
      +      "id" : "8d21db6f-b475-429e-a9cb-90439b0413b2"
      +    } ],
      +    "members" : [ ],
      +    "id" : "74db02d1-5711-4c77-b383-a450e2b93142",
      +    "name" : "pool_tcp_001",
      +    "ip_version" : "dualstack"
      +  } ],
      +  "page_info" : {
      +    "next_marker" : "74db02d1-5711-4c77-b383-a450e2b93142",
      +    "previous_marker" : "73bd4fe0-ffbb-4b56-aab4-4f26ddf7a103",
      +    "current_count" : 2
      +  },
      +  "request_id" : "a1a7e852-1928-48f7-bbc9-ca8469898713"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/ListPools.rst b/elb/api-ref/ListPools.rst new file mode 100644 index 000000000..b85492a12 --- /dev/null +++ b/elb/api-ref/ListPools.rst @@ -0,0 +1,595 @@ +Querying Backend Server Groups +============================== + +Function +^^^^^^^^ + +This API is used to query all backend server groups. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. + +Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v3/{project_id}/elb/pools + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +.. table:: **Table 2** Query parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | last record on the previous | + | | | | page. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter must be | + | | | | used together with | + | | | | **limit**. | + | | | | | + | | | | - If this parameter is not | + | | | | specified, the first | + | | | | page will be queried. | + | | | | | + | | | | - This parameter cannot be | + | | | | left blank or set to an | + | | | | invalid ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | records on each page. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **2000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. This | + | | | | parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | Array | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | Multiple descriptions can | + | | | | be queried in the format of | + | | | | *descri | + | | | | ption=xxx&description=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server group. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthmonitor_id | No | Array | Specifies the ID of the | + | | | | health check configured for | + | | | | the backend server group. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *healthmonitor_id | + | | | | =xxx&healthmonitor_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | Array | Specifies the ID of the | + | | | | backend server group. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *id=xxx&id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | Array | Specifies the backend | + | | | | server group name. | + | | | | | + | | | | Multiple names can be | + | | | | queried in the format of | + | | | | *name=xxx&name=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | Array | Specifies the ID of the | + | | | | load balancer associated | + | | | | with the backend server | + | | | | group. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *loadbalancer_i | + | | | | d=xxx&loadbalancer_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | No | Array | Specifies the protocol used | + | | | | by the backend server group | + | | | | to receive requests. | + | | | | | + | | | | Multiple protocols can be | + | | | | queried in the format of | + | | | | * | + | | | | protocol=xxx&protocol=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | No | Array | Specifies the load | + | | | | balancing algorithm used by | + | | | | the load balancer to route | + | | | | requests to backend servers | + | | | | in the backend server | + | | | | group. | + | | | | | + | | | | The value can be | + | | | | **ROUND_ROBIN** (weighted | + | | | | round robin), | + | | | | **LEAST_CONNECTIONS** | + | | | | (weighted least | + | | | | connections), or | + | | | | **SOURCE_IP** (source IP | + | | | | hash). | + | | | | | + | | | | If the value is | + | | | | **SOURCE_IP**, **weight** | + | | | | will not take effect. | + | | | | | + | | | | Multiple algorithms can be | + | | | | queried in the format of | + | | | | *lb_algor | + | | | | ithm=xxx&lb_algorithm=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | Array | Specifies the enterprise | + | | | | project ID. | + | | | | | + | | | | - If this parameter is not | + | | | | passed, resources in the | + | | | | default enterprise | + | | | | project are queried, and | + | | | | authentication is | + | | | | performed based on the | + | | | | default enterprise | + | | | | project. | + | | | | | + | | | | - If this parameter is | + | | | | passed, its value can be | + | | | | the ID of an existing | + | | | | enterprise project or | + | | | | **all_granted_eps**. | + | | | | | + | | | | If the value is a specific | + | | | | ID, resources in the | + | | | | specific enterprise project | + | | | | are required. If the value | + | | | | is **all_granted_eps**, | + | | | | resources in all enterprise | + | | | | projects are queried. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *enterprise_project_id=xxx& | + | | | | enterprise_project_id=xxx*. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_version | No | Array | Specifies the IP address | + | | | | version of the backend | + | | | | server group. The value can | + | | | | be **dualstack**, **v4**, | + | | | | or **v6**. | + | | | | | + | | | | Multiple versions can be | + | | | | queried in the format of | + | | | | *ip_v | + | | | | ersion=xxx&ip_version=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_address | No | Array | Specifies the private IP | + | | | | address bound to the | + | | | | backend server. This | + | | | | parameter is used only as a | + | | | | query condition and is not | + | | | | included in the response. | + | | | | | + | | | | Multiple IP addresses can | + | | | | be queried in the format of | + | | | | *member_addre | + | | | | ss=xxx&member_address=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_device_id | No | Array | Specifies the ID of the | + | | | | cloud server that serves as | + | | | | a backend server. This | + | | | | parameter is used only as a | + | | | | query condition and is not | + | | | | included in the response. | + | | | | | + | | | | Multiple IDs can be queried | + | | | | in the format of | + | | | | *member_device_id | + | | | | =xxx&member_device_id=xxx*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 3** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 4** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | page_info | `PageInfo <#ListPools__response_PageInfo>`__ | Shows pagination information. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | pools | Array of `Pool <#ListPools__response_Pool>`__ | Lists the backend server groups. | + | | objects | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 5** PageInfo + + +-----------------+---------+----------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=========+========================================================================================+ + | previous_marker | String | Specifies the ID of the first record in the pagination query result. This parameter | + | | | will not be returned if no query result is returned. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | next_marker | String | Marks the start record on the next page in the pagination query result. This parameter | + | | | will not be returned if there is no next page. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + | current_count | Integer | Specifies the number of records. | + +-----------------+---------+----------------------------------------------------------------------------------------+ + +.. table:: **Table 6** Pool + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. The | + | | | value can only be updated to | + | | | **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server group | + | | | ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm used by the load balancer | + | | | to route requests to backend servers | + | | | in the backend server group. | + | | | | + | | | The value can be **ROUND_ROBIN** | + | | | (weighted round robin), | + | | | **LEAST_CONNECTIONS** (weighted least | + | | | connections), or **SOURCE_IP** | + | | | (source IP hash). | + | | | | + | | | When the value is **SOURCE_IP**, the | + | | | **weight** parameter is invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the listeners associated with | + | | `ListenerRef | the backend server group. | + | | <#ListPools__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Lists the IDs of load balancers | + | | `LoadBalancerRef <#Li | associated with the backend server | + | | stPools__response_LoadBalancerRef>`__ | group. | + | | objects | | + | | | If only **listener_id** is specified | + | | | during the creation of the backend | + | | | server group, the ID of the | + | | | **loadbalancers** parameter in the | + | | | response is the ID of the load | + | | | balancer to which the listener is | + | | | added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array of | Lists the backend servers in the | + | | `MemberRe | backend server group. | + | | f <#ListPools__response_MemberRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server group | + | | | name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | backend server group to receive | + | | | requests. The protocol can be TCP, | + | | | UDP, or HTTP. | + | | | | + | | | - For UDP listeners, the protocol of | + | | | the backend server group must be | + | | | UDP. | + | | | | + | | | - For TCP listeners, the protocol of | + | | | the backend server group must be | + | | | TCP. | + | | | | + | | | - For HTTP or HTTPS listeners, the | + | | | protocol of the backend server | + | | | group must be HTTP. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | `SessionPersistence <#ListP | Specifies the sticky session. | + | | ools__response_SessionPersistence>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | Specifies the IP version supported by | + | | | the backend server group. | + | | | | + | | | - Shared load balancers: The default | + | | | value is **v4**. | + | | | | + | | | - Dedicated load balancers: The | + | | | value can be **dualstack**, | + | | | **v4**, or **v6**. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP or UDP, | + | | | **ip_version** is set to | + | | | **dualstack**, indicating that both | + | | | IPv4 and IPv6 are supported. | + | | | | + | | | When the protocol of the backend | + | | | server group is HTTP, **ip_version** | + | | | is set to **v4**. | + | | | | + | | | IPv6 is unsupported. Only **v4** is | + | | | returned. | + | | | | + | | | Default: **dualstack** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | slow_start | `SlowStar | Specifies whether to enable slow | + | | t <#ListPools__response_SlowStart>`__ | start. After you enable slow start, | + | | object | new backend servers added to the | + | | | backend server group are warmed up, | + | | | and the number of requests they can | + | | | receive increases linearly during the | + | | | configured slow start duration. | + | | | | + | | | This parameter can be used when the | + | | | protocol of the backend server group | + | | | is HTTP or HTTPS. An error will be | + | | | returned if the protocol is not HTTP | + | | | or HTTPS. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 8** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 9** MemberRef + + ========= ====== ================================ + Parameter Type Description + ========= ====== ================================ + id String Specifies the backend server ID. + ========= ====== ================================ + +.. table:: **Table 10** SessionPersistence + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter will take effect only | + | | | when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | The value can contain only letters, | + | | | digits, hyphens (-), underscores (_), | + | | | and periods (.). | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the sticky session type. | + | | | The value can be **SOURCE_IP**, | + | | | **HTTP_COOKIE**, or **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, only | + | | | **SOURCE_IP** takes effect. | + | | | | + | | | - For dedicated load balancers, if | + | | | the protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can only be **HTTP_COOKIE**. | + | | | | + | | | - For shared load balancers, if the | + | | | protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can be **HTTP_COOKIE** or | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the stickiness duration, in | + | | | minutes. This parameter will not take | + | | | effect when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, the | + | | | value ranges from **1** to **60**, | + | | | and the default value is **1**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is HTTP or HTTPS, the | + | | | value ranges from **1** to | + | | | **1440**, and the default value is | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** SlowStart + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | enable | Boolean | Specifies whether to enable slow | + | | | start. | + | | | | + | | | **true** indicates that this function | + | | | is enabled, and **false** indicates | + | | | this function is disabled. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | duration | Integer | Specifies the slow start duration, in | + | | | seconds. | + | | | | + | | | The value ranges from **30** to | + | | | **1200**, and the default value is | + | | | **30**. | + | | | | + | | | Minimum: **30** | + | | | | + | | | Maximum: **1200** | + | | | | + | | | Default: **30** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET https://{elb_endpoint}/v3/{project_id}/elb/pools?limit=2 + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "pools" : [ { + "lb_algorithm" : "ROUND_ROBIN", + "protocol" : "HTTP", + "description" : "", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "309a0f61-0b62-45f2-97d1-742f3434338e" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "session_persistence" : { + "cookie_name" : "my_cookie", + "type" : "APP_COOKIE", + "persistence_timeout" : 1 + }, + "healthmonitor_id" : "", + "listeners" : [ ], + "members" : [ ], + "id" : "73bd4fe0-ffbb-4b56-aab4-4f26ddf7a103", + "name" : "", + "ip_version" : "v4" + }, { + "lb_algorithm" : "SOURCE_IP", + "protocol" : "TCP", + "description" : "", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "d9763e59-64b7-4e93-aec7-0ff7881ef9bc" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "session_persistence" : { + "cookie_name" : "", + "type" : "SOURCE_IP", + "persistence_timeout" : 1 + }, + "healthmonitor_id" : "", + "listeners" : [ { + "id" : "8d21db6f-b475-429e-a9cb-90439b0413b2" + } ], + "members" : [ ], + "id" : "74db02d1-5711-4c77-b383-a450e2b93142", + "name" : "pool_tcp_001", + "ip_version" : "dualstack" + } ], + "page_info" : { + "next_marker" : "74db02d1-5711-4c77-b383-a450e2b93142", + "previous_marker" : "73bd4fe0-ffbb-4b56-aab4-4f26ddf7a103", + "current_count" : 2 + }, + "request_id" : "a1a7e852-1928-48f7-bbc9-ca8469898713" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/PARAMETERS.txt b/elb/api-ref/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/elb/api-ref/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/elb/api-ref/ShowCertificate.html b/elb/api-ref/ShowCertificate.html new file mode 100644 index 000000000..da2be7594 --- /dev/null +++ b/elb/api-ref/ShowCertificate.html @@ -0,0 +1,252 @@ + + +

      Viewing Details of a Certificate

      +

      Function

      This API is used to view details of an SSL certificate.

      + +

      URI

      GET /v3/{project_id}/elb/certificates/{certificate_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies a certificate ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      certificate

      +

      CertificateInfo object

      +

      Specifies the certificate.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 CertificateInfo

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is unsupported. Please do not use it.

      +

      certificate

      +

      String

      +

      Specifies the private key of the certificate. The value must be PEM encoded.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      domain

      +

      String

      +

      Specifies the domain names used by the server certificate.

      +
      • This parameter will take effect only when type is set to server, and its default value is "".

        +
      • This parameter will not take effect even if it is passed and type is set to client. However, domain names will still be verified.

        +
      +

      Note:

      +
      • The value can contain 0 to 1024 characters and consists of multiple common domain names or wildcard domain names separated by commas. A maximum of 30 domain names are allowed.

        +
      • A common domain name consists of several labels separated by periods (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit. Example: www.test.com

        +
      • A wildcard domain name is a domain name starts with an asterisk (*). Example: *.test.com

        +
      +

      Minimum: 1

      +

      Maximum: 1024

      +

      id

      +

      String

      +

      Specifies a certificate ID.

      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.

        +
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.

        +
      +

      type

      +

      String

      +

      Specifies the certificate type. The value can be server or client. server indicates server certificates, and client indicates CA certificates. The default value is server.

      +

      created_at

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      updated_at

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Example Requests

      GET
      +https://{elb_endpoint}/v3/{project_id}/elb/certificates/{certificate_id}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "certificate" : {
      +    "id" : "5494a835d88f40ff940554992f2f04d4",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "https_certificatekkkk",
      +    "type" : "server",
      +    "description" : "description for certificatehhhh",
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
      +    "admin_state_up" : true,
      +    "created_at" : "2019-03-31T22:23:51Z",
      +    "updated_at" : "2019-03-31T23:26:49Z",
      +    "expire_time" : "2045-11-17T13:25:47Z"
      +  },
      +  "request_id" : "a94af450-5ac0-4185-946c-27a59a16c1d3"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/ShowCertificate.rst b/elb/api-ref/ShowCertificate.rst new file mode 100644 index 000000000..7f3d3a3ba --- /dev/null +++ b/elb/api-ref/ShowCertificate.rst @@ -0,0 +1,207 @@ +Viewing Details of a Certificate +================================ + +Function +^^^^^^^^ + +This API is used to view details of an SSL certificate. + +URI +^^^ + +GET /v3/{project_id}/elb/certificates/{certificate_id} + +.. table:: **Table 1** Path parameters + + ============== ========= ====== =========================== + Parameter Mandatory Type Description + ============== ========= ====== =========================== + project_id Yes String Specifies the project ID. + certificate_id Yes String Specifies a certificate ID. + ============== ========= ====== =========================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +-------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +=============+==================================================+==================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +-------------+--------------------------------------------------+--------------------------------------------------+ + | certificate | `CertificateInfo | Specifies the certificate. | + | | <#ShowCertificate__response_CertificateInfo>`__ | | + | | object | | + +-------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 4** CertificateInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the private key of the | + | | | certificate. The value must be PEM | + | | | encoded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain names used by | + | | | the server certificate. | + | | | | + | | | - This parameter will take effect | + | | | only when **type** is set to | + | | | **server**, and its default value | + | | | is **""**. | + | | | | + | | | - This parameter will not take | + | | | effect even if it is passed and | + | | | **type** is set to **client**. | + | | | However, domain names will still | + | | | be verified. | + | | | | + | | | Note: | + | | | | + | | | - The value can contain 0 to 1024 | + | | | characters and consists of | + | | | multiple common domain names or | + | | | wildcard domain names separated by | + | | | commas. A maximum of 30 domain | + | | | names are allowed. | + | | | | + | | | - A common domain name consists of | + | | | several labels separated by | + | | | periods (.). Each label can | + | | | contain a maximum of 63 | + | | | characters, including letters, | + | | | digits, and hyphens (-), and must | + | | | start and end with a letter or | + | | | digit. Example: www.test.com | + | | | | + | | | - A wildcard domain name is a domain | + | | | name starts with an asterisk (*). | + | | | Example: \*.test.com | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies a certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate. The value must be | + | | | PEM encoded. | + | | | | + | | | - This parameter will be ignored if | + | | | **type** is set to **client**. A | + | | | CA server can still be created and | + | | | used normally. This parameter will | + | | | be left blank even if you enter a | + | | | private key that is not PEM | + | | | encoded. | + | | | | + | | | - This parameter is valid and | + | | | mandatory only when **type** is | + | | | set to **server**. If you enter an | + | | | invalid private key, an error is | + | | | returned. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. The | + | | | value can be **server** or | + | | | **client**. **server** indicates | + | | | server certificates, and **client** | + | | | indicates CA certificates. The | + | | | default value is **server**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the | + | | | certificate was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the | + | | | certificate was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + https://{elb_endpoint}/v3/{project_id}/elb/certificates/{certificate_id} + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "certificate" : { + "id" : "5494a835d88f40ff940554992f2f04d4", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "https_certificatekkkk", + "type" : "server", + "description" : "description for certificatehhhh", + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "admin_state_up" : true, + "created_at" : "2019-03-31T22:23:51Z", + "updated_at" : "2019-03-31T23:26:49Z", + "expire_time" : "2045-11-17T13:25:47Z" + }, + "request_id" : "a94af450-5ac0-4185-946c-27a59a16c1d3" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/ShowFlavor.html b/elb/api-ref/ShowFlavor.html new file mode 100644 index 000000000..97d6b6edb --- /dev/null +++ b/elb/api-ref/ShowFlavor.html @@ -0,0 +1,238 @@ + + +

      Viewing Details of a Flavor

      +

      Function

      This API is used to view details of a flavor.

      + +

      Constraints

      This API can only be used to view the details of a flavor.

      + +

      URI

      GET /v3/{project_id}/elb/flavors/{flavor_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      flavor_id

      +

      Yes

      +

      String

      +

      Specifies the flavor ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      flavor

      +

      Flavor object

      +

      Specifies the flavor.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Flavor

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the flavor ID.

      +

      info

      +

      FlavorInfo object

      +

      Specifies the flavor details.

      +

      name

      +

      String

      +

      Specifies the flavor name.

      +

      shared

      +

      Boolean

      +

      Specifies whether the flavor is available to all users.

      +
      • true indicates that the flavor is available to all users.

        +
      • false indicates that the flavor is available only to a specific user.

        +
      +

      Default: true

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      String

      +

      Specifies the flavor type. Flavors can be filtered by type.

      +

      Minimum: 1

      +

      Maximum: 32

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 FlavorInfo

      Parameter

      +

      Type

      +

      Description

      +

      connection

      +

      Integer

      +

      Specifies the maximum concurrent connections.

      +

      cps

      +

      Integer

      +

      Specifies the number of new connections per second.

      +

      qps

      +

      Integer

      +

      Specifies the number of requests per second at Layer 7.

      +

      bandwidth

      +

      Integer

      +

      Specifies the inbound and outbound bandwidth in the unit of Kbit/s.

      +
      + + +

      Example Requests

      GET https://{elb_endpoint}/v3/{project_id}/elb/flavors/{flavor_id}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "flavor" : {
      +    "shared" : true,
      +    "project_id" : "573d73c9f90e48d0bddfa0eb202b25c2",
      +    "info" : {
      +      "connection" : 6000,
      +      "cps" : 3000,
      +      "qps" : 1000
      +    },
      +    "id" : "becf3beb-7653-45ab-a025-961597a901bc",
      +    "name" : "L7_flavor.elb.s1.small",
      +    "type" : "L7"
      +  },
      +  "request_id" : "3b9fb516-b7bb-4760-9128-4a23dd36ae10"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer Flavor + + + diff --git a/elb/api-ref/ShowFlavor.rst b/elb/api-ref/ShowFlavor.rst new file mode 100644 index 000000000..f9658fa23 --- /dev/null +++ b/elb/api-ref/ShowFlavor.rst @@ -0,0 +1,147 @@ +Viewing Details of a Flavor +=========================== + +Function +^^^^^^^^ + +This API is used to view details of a flavor. + +Constraints +^^^^^^^^^^^ + +This API can only be used to view the details of a flavor. + +URI +^^^ + +GET /v3/{project_id}/elb/flavors/{flavor_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + flavor_id Yes String Specifies the flavor ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +------------+--------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+==================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+--------------------------------------------------+---------------------------------------------------+ + | flavor | `Flavor <#ShowFlavor__response_Flavor>`__ object | Specifies the flavor. | + +------------+--------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 4** Flavor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the flavor ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | info | `FlavorInfo | Specifies the flavor details. | + | | <#ShowFlavor__response_FlavorInfo>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the flavor name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | shared | Boolean | Specifies whether the flavor is | + | | | available to all users. | + | | | | + | | | - **true** indicates that the flavor | + | | | is available to all users. | + | | | | + | | | - **false** indicates that the | + | | | flavor is available only to a | + | | | specific user. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the flavor type. Flavors | + | | | can be filtered by type. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** FlavorInfo + + ========== ======= =================================================================== + Parameter Type Description + ========== ======= =================================================================== + connection Integer Specifies the maximum concurrent connections. + cps Integer Specifies the number of new connections per second. + qps Integer Specifies the number of requests per second at Layer 7. + bandwidth Integer Specifies the inbound and outbound bandwidth in the unit of Kbit/s. + ========== ======= =================================================================== + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET https://{elb_endpoint}/v3/{project_id}/elb/flavors/{flavor_id} + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "flavor" : { + "shared" : true, + "project_id" : "573d73c9f90e48d0bddfa0eb202b25c2", + "info" : { + "connection" : 6000, + "cps" : 3000, + "qps" : 1000 + }, + "id" : "becf3beb-7653-45ab-a025-961597a901bc", + "name" : "L7_flavor.elb.s1.small", + "type" : "L7" + }, + "request_id" : "3b9fb516-b7bb-4760-9128-4a23dd36ae10" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer Flavor `__ diff --git a/elb/api-ref/ShowHealthMonitor.html b/elb/api-ref/ShowHealthMonitor.html new file mode 100644 index 000000000..6c5b987cf --- /dev/null +++ b/elb/api-ref/ShowHealthMonitor.html @@ -0,0 +1,304 @@ + + +

      Viewing Details of a Health Check

      +

      Function

      This API is used to view details of a health check.

      + +

      URI

      GET /v3/{project_id}/elb/healthmonitors/{healthmonitor_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      healthmonitor_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      healthmonitor

      +

      HealthMonitor object

      +

      Specifies the health check.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 HealthMonitor

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check. Two value options are available. true indicates that the health check is enabled, and false indicates that the health check is disabled.

      +

      Default: true

      +

      delay

      +

      Integer

      +

      Specifies the interval between health checks, in seconds.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      domain_name

      +

      String

      +

      Specifies the domain name that HTTP requests are sent to during the health check.

      +

      This parameter is available only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 200

      +

      http_method

      +

      String

      +

      Specifies the HTTP method. This parameter will take effect only when type is set to HTTP.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: GET

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      Default: 3

      +

      monitor_port

      +

      Integer

      +

      Specifies the port used for the health check. If this parameter is left blank, the port of the backend server group will be used by default.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups for which the health check is configured.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      timeout

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Default: /

      +
      + + + + + + + + + + + + +
      Table 5 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors/c2b210b2-60c4-449d-91e2-9e9ea1dd7441
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "healthmonitor" : {
      +    "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "My Healthmonitor update",
      +    "delay" : 10,
      +    "max_retries" : 10,
      +    "pools" : [ {
      +      "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0"
      +    } ],
      +    "admin_state_up" : true,
      +    "timeout" : 30,
      +    "type" : "HTTP",
      +    "expected_codes" : "200",
      +    "url_path" : "/",
      +    "http_method" : "GET"
      +  },
      +  "request_id" : "3702e8f0-f5f0-4d35-9097-fc7160005fae"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/ShowHealthMonitor.rst b/elb/api-ref/ShowHealthMonitor.rst new file mode 100644 index 000000000..7c5f0ebed --- /dev/null +++ b/elb/api-ref/ShowHealthMonitor.rst @@ -0,0 +1,250 @@ +Viewing Details of a Health Check +================================= + +Function +^^^^^^^^ + +This API is used to view details of a health check. + +URI +^^^ + +GET /v3/{project_id}/elb/healthmonitors/{healthmonitor_id} + +.. table:: **Table 1** Path parameters + + ================ ========= ====== ============================== + Parameter Mandatory Type Description + ================ ========= ====== ============================== + project_id Yes String Specifies the project ID. + healthmonitor_id Yes String Specifies the health check ID. + ================ ========= ====== ============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +---------------+-------------------------------------------------+-------------------------------------------------+ + | Parameter | Type | Description | + +===============+=================================================+=================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +---------------+-------------------------------------------------+-------------------------------------------------+ + | healthmonitor | `HealthMonitor | Specifies the health check. | + | | <#ShowHealthMonitor__response_HealthMonitor>`__ | | + | | object | | + +---------------+-------------------------------------------------+-------------------------------------------------+ + +.. table:: **Table 4** HealthMonitor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. Two value | + | | | options are available. **true** | + | | | indicates that the health check is | + | | | enabled, and **false** indicates that | + | | | the health check is disabled. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the interval between health | + | | | checks, in seconds. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name that HTTP | + | | | requests are sent to during the | + | | | health check. | + | | | | + | | | This parameter is available only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the virtual IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. This parameter will take effect | + | | | only when **type** is set to | + | | | **HTTP**. | + | | | | + | | | The value options are as follows: | + | | | | + | | | - A specific value, for example, 200 | + | | | | + | | | - A list of values that are | + | | | separated with commas (,), for | + | | | example, 200, 202 | + | | | | + | | | - A value range, for example, | + | | | 200-204 | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **200** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP method. This | + | | | parameter will take effect only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | or **PATCH**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **GET** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + | | | | + | | | Default: **3** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the port used for the | + | | | health check. If this parameter is | + | | | left blank, the port of the backend | + | | | server group will be used by default. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Sh | groups for which the health check is | + | | owHealthMonitor__response_PoolRef>`__ | configured. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the maximum time required | + | | | for waiting for a response from the | + | | | health check, in seconds. It is | + | | | recommended that you set the value | + | | | less than that of parameter | + | | | **delay**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The value must | + | | | start with a slash (/), and the | + | | | default value is /. This parameter is | + | | | available only when **type** is set | + | | | to **HTTP**. | + | | | | + | | | Default: **/** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors/c2b210b2-60c4-449d-91e2-9e9ea1dd7441 + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "healthmonitor" : { + "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "My Healthmonitor update", + "delay" : 10, + "max_retries" : 10, + "pools" : [ { + "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0" + } ], + "admin_state_up" : true, + "timeout" : 30, + "type" : "HTTP", + "expected_codes" : "200", + "url_path" : "/", + "http_method" : "GET" + }, + "request_id" : "3702e8f0-f5f0-4d35-9097-fc7160005fae" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/ShowL7Policy.html b/elb/api-ref/ShowL7Policy.html new file mode 100644 index 000000000..31f298aa9 --- /dev/null +++ b/elb/api-ref/ShowL7Policy.html @@ -0,0 +1,450 @@ + + +

      Viewing Details of a Forwarding Policy

      +

      Function

      This API is used to view details of a forwarding policy.

      + +

      URI

      GET /v3/{project_id}/elb/l7policies/{l7policy_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      l7policy

      +

      L7Policy object

      +

      Specifies the forwarding policy.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 L7Policy

      Parameter

      +

      Type

      +

      Description

      +

      action

      +

      String

      +

      Specifies where requests will be forwarded. The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests will be forwarded to another backend server group.

        +
      • REDIRECT_TO_LISTENER: Requests will be redirected to an HTTPS listener.

        +
      +

      REDIRECT_TO_LISTENER has the highest priority. If requests are to be redirected to an HTTPS listener, other forwarding policies of the listener will become invalid.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • If action is set to REDIRECT_TO_POOL, the forwarding policy can be added to an HTTP or HTTPS listener.

        +
      • If action is set to REDIRECT_TO_LISTENER, the forwarding policy can be added to an HTTP listener.

        +
      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      position

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter cannot be updated.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      project_id

      +

      String

      +

      Specifies the project ID of the forwarding policy.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding policy.

      +

      The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener that requests are redirected to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_LISTENER.

      +

      Only HTTPS listeners are supported, and the listener cannot be any listener added to other load balancers.

      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group that requests are forwarded to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_POOL.

      +

      The specified backend server group cannot be the default one associated with the listener, or any backend server group associated with the forwarding policies of other listeners.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which requests are forwarded.

      +

      Format: protocol://host:port/path?query

      +

      This parameter is unsupported. Please do not use it.

      +

      rules

      +

      Array of RuleRef objects

      +

      Lists the forwarding rules in the forwarding policy.

      +

      redirect_url_config

      +

      RedirectUrlConfig object

      +

      Specifies the URL to which requests are forwarded.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      For dedicated load balancers, this parameter will take effect only when advanced forwarding is enabled (enhance_l7policy_enable is set to true). If it is passed when enhance_l7policy_enable is set to false, an error will be returned.

      +

      Format: protocol://host:port/path?query

      +

      At least one of the four parameters (protocol, host, port, and path) must be passed, or their values cannot be set to ${xxx} at the same time. (${xxx} indicates that the value in the request will be inherited. For example, ${host} indicates the host in the URL to be redirected.)

      +

      The values of protocol and port cannot be the same as those of the associated listener, and either host or path must be passed or their values cannot be ${xxx} at the same time.

      +

      This parameter is unsupported. Please do not use it.

      +

      fixed_response_config

      +

      FixtedResponseConfig object

      +

      Specifies the configuration of the page that will be returned. This parameter will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      This parameter is unsupported. Please do not use it.

      +

      priority

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter is available only for dedicated load balancers and will take effect when enhance_l7policy_enable is set to true.

      +

      A smaller value indicates a higher priority. The value must be unique for each forwarding policy of the same listener.

      +

      If action is set to REDIRECT_TO_LISTENER, the value can only be 0, indicating that REDIRECT_TO_LISTENER has the highest priority.

      +
      • If enhance_l7policy_enable is set to false, forwarding policies are automatically prioritized based on the original sorting logic. Forwarding policy priorities are independent of each other regardless of domain names. If forwarding policies use the same domain name, their priorities follow the order of exact match (EQUAL_TO), prefix match (STARTS_WITH), and regular expression match (REGEX). If prefix match is used for matching, the longer the path, the higher the priority. If a forwarding policy contains only a domain name without a path specified, the path is /, and prefix match is used by default.

        +
      • If enhance_l7policy_enable is set to true and this parameter is not passed, the priority will set to a sum of 1 and the highest priority of existing forwarding policy in the same listener by default. There will be two cases: a) If the highest priority of existing forwarding policies is the maximum (10,000), the forwarding policy will fail to create because the final priority for creating the forwarding policy is the sum of 1 and 10,000, which exceeds the maximum. In this case, please specify a value or adjust the priorities of existing forwarding policies. b) If no forwarding policies exist, the highest priority of existing forwarding policies will set to 1 by default.

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 0

      +

      Maximum: 10000

      +
      + + + + + + + + + + + + +
      Table 5 RuleRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 RedirectUrlConfig

      Parameter

      +

      Type

      +

      Description

      +

      protocol

      +

      String

      +

      Specifies the protocol for redirection. The default value is ${protocol}, indicating that the protocol of the request will be used.

      +

      Value options:

      +
      • HTTP

        +
      • HTTPS

        +
      • ${protocol}

        +
      +

      Minimum: 1

      +

      Maximum: 36

      +

      host

      +

      String

      +

      Specifies the host name that requests are redirected to. The value can contain only letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. The default value is ${host}, indicating that the host of the request will be used.

      +

      Default: ${host}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      port

      +

      String

      +

      Specifies the port that requests are redirected to. The default value is ${port}, indicating that the port of the request will be used.

      +

      Default: ${port}

      +

      Minimum: 1

      +

      Maximum: 16

      +

      path

      +

      String

      +

      Specifies the path that requests are redirected to. The default value is ${path}, indicating that the path of the request will be used. The value can contain only letters, digits, and special characters _-';@^- %#&$.*+?,=!:|/()[]{} and must start with a slash (/).

      +

      Default: ${path}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      query

      +

      String

      +

      Specifies the query string set in the URL for redirection. The default value is ${query}, indicating that the query string of the request will be used.

      +

      For example, in the URL https://www.xxx.com:8080/elb?type=loadbalancer, ${query} indicates type=loadbalancer. If this parameter is set to ${query}&name=my_name, the URL will be redirected to https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name.

      +

      The value is case-sensitive and can contain only letters, digits, and special characters !$&'()*+,-./:;=?@^_`

      +

      Default: ${query}

      +

      Minimum: 0

      +

      Maximum: 128

      +

      status_code

      +

      String

      +

      Specifies the status code returned after the requests are redirected.

      +

      Value options:

      +
      • 301

        +
      • 302

        +
      • 303

        +
      • 307

        +
      • 308

        +
      +

      Minimum: 1

      +

      Maximum: 16

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 7 FixtedResponseConfig

      Parameter

      +

      Type

      +

      Description

      +

      status_code

      +

      String

      +

      Specifies the HTTP status code configured in the forwarding policy. The value can be any integer in the range of 200–299, 400–499, or 500–599.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      content_type

      +

      String

      +

      Specifies the format of the response body.

      +

      Value options:

      +
      • text/plain

        +
      • text/css

        +
      • text/html

        +
      • application/javascript

        +
      • application/json

        +
      +

      Minimum: 0

      +

      Maximum: 32

      +

      message_body

      +

      String

      +

      Specifies the content of the response body.

      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "l7policy" : {
      +    "description" : "",
      +    "admin_state_up" : true,
      +    "rules" : [ ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab",
      +    "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050",
      +    "action" : "REDIRECT_TO_LISTENER",
      +    "position" : 100,
      +    "provisioning_status" : "ACTIVE",
      +    "id" : "cf4360fd-8631-41ff-a6f5-b72c35da74be",
      +    "name" : ""
      +  },
      +  "request_id" : "6be83ec4-623e-4840-a417-2fcdf8ad5dfa"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/ShowL7Policy.rst b/elb/api-ref/ShowL7Policy.rst new file mode 100644 index 000000000..affff880f --- /dev/null +++ b/elb/api-ref/ShowL7Policy.rst @@ -0,0 +1,505 @@ +Viewing Details of a Forwarding Policy +====================================== + +Function +^^^^^^^^ + +This API is used to view details of a forwarding policy. + +URI +^^^ + +GET /v3/{project_id}/elb/l7policies/{l7policy_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + project_id Yes String Specifies the project ID. + l7policy_id Yes String Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | l7policy | `L7Policy <#ShowL7Policy__response_L7Policy>`__ | Specifies the forwarding policy. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 4** L7Policy + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | action | String | Specifies where requests will be | + | | | forwarded. The value can be one of | + | | | the following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests | + | | | will be forwarded to another | + | | | backend server group. | + | | | | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | will be redirected to an HTTPS | + | | | listener. | + | | | | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. If requests are to | + | | | be redirected to an HTTPS listener, | + | | | other forwarding policies of the | + | | | listener will become invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_POOL**, the | + | | | forwarding policy can be added to | + | | | an HTTP or HTTPS listener. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the | + | | | forwarding policy can be added to | + | | | an HTTP listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding policy | + | | | priority. This parameter cannot be | + | | | updated. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **100** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the | + | | | forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding policy. | + | | | | + | | | The value can only be **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener that | + | | | requests are redirected to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + | | | | + | | | Only HTTPS listeners are supported, | + | | | and the listener cannot be any | + | | | listener added to other load | + | | | balancers. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group that requests are | + | | | forwarded to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_POOL**. | + | | | | + | | | The specified backend server group | + | | | cannot be the default one associated | + | | | with the listener, or any backend | + | | | server group associated with the | + | | | forwarding policies of other | + | | | listeners. | + | | | | + | | | This parameter cannot be specified | + | | | when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which requests | + | | | are forwarded. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array of | Lists the forwarding rules in the | + | | `RuleRef | forwarding policy. | + | | <#ShowL7Policy__response_RuleRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url_config | `RedirectUrlConfig <#ShowL7P | Specifies the URL to which requests | + | | olicy__response_RedirectUrlConfig>`__ | are forwarded. | + | | object | | + | | | For shared load balancers, this | + | | | parameter is not supported. If it is | + | | | passed, an error will be returned. | + | | | | + | | | For dedicated load balancers, this | + | | | parameter will take effect only when | + | | | advanced forwarding is enabled | + | | | (**enhance_l7policy_enable** is set | + | | | to **true**). If it is passed when | + | | | **enhance_l7policy_enable** is set to | + | | | **false**, an error will be returned. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | At least one of the four parameters | + | | | (**protocol**, **host**, **port**, | + | | | and **path**) must be passed, or | + | | | their values cannot be set to | + | | | **${xxx}** at the same time. | + | | | (**${xxx}** indicates that the value | + | | | in the request will be inherited. For | + | | | example, **${host}** indicates the | + | | | host in the URL to be redirected.) | + | | | | + | | | The values of **protocol** and | + | | | **port** cannot be the same as those | + | | | of the associated listener, and | + | | | either **host** or **path** must be | + | | | passed or their values cannot be | + | | | **${xxx}** at the same time. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | fixed_response_config | `FixtedResponseConfig <#ShowL7Poli | Specifies the configuration of the | + | | cy__response_FixtedResponseConfig>`__ | page that will be returned. This | + | | object | parameter will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. If this parameter is passed | + | | | and **enhance_l7policy_enable** is | + | | | set to **false**, an error will be | + | | | returned. For shared load balancers, | + | | | this parameter is not supported. If | + | | | it is passed, an error will be | + | | | returned. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | priority | Integer | Specifies the forwarding policy | + | | | priority. This parameter is available | + | | | only for dedicated load balancers and | + | | | will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. | + | | | | + | | | A smaller value indicates a higher | + | | | priority. The value must be unique | + | | | for each forwarding policy of the | + | | | same listener. | + | | | | + | | | If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the value | + | | | can only be **0**, indicating that | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **false**, forwarding | + | | | policies are automatically | + | | | prioritized based on the original | + | | | sorting logic. Forwarding policy | + | | | priorities are independent of each | + | | | other regardless of domain names. | + | | | If forwarding policies use the | + | | | same domain name, their priorities | + | | | follow the order of exact match | + | | | (**EQUAL_TO**), prefix match | + | | | (**STARTS_WITH**), and regular | + | | | expression match (**REGEX**). If | + | | | prefix match is used for matching, | + | | | the longer the path, the higher | + | | | the priority. If a forwarding | + | | | policy contains only a domain name | + | | | without a path specified, the path | + | | | is **/**, and prefix match is used | + | | | by default. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **true** and this parameter | + | | | is not passed, the priority will | + | | | set to a sum of 1 and the highest | + | | | priority of existing forwarding | + | | | policy in the same listener by | + | | | default. There will be two cases: | + | | | a) If the highest priority of | + | | | existing forwarding policies is | + | | | the maximum (10,000), the | + | | | forwarding policy will fail to | + | | | create because the final priority | + | | | for creating the forwarding policy | + | | | is the sum of 1 and 10,000, which | + | | | exceeds the maximum. In this case, | + | | | please specify a value or adjust | + | | | the priorities of existing | + | | | forwarding policies. b) If no | + | | | forwarding policies exist, the | + | | | highest priority of existing | + | | | forwarding policies will set to 1 | + | | | by default. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **10000** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** RuleRef + + ========= ====== ================================= + Parameter Type Description + ========= ====== ================================= + id String Specifies the forwarding rule ID. + ========= ====== ================================= + +.. table:: **Table 6** RedirectUrlConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | protocol | String | Specifies the protocol for | + | | | redirection. The default value is | + | | | **${protocol}**, indicating that the | + | | | protocol of the request will be used. | + | | | | + | | | Value options: | + | | | | + | | | - **HTTP** | + | | | | + | | | - **HTTPS** | + | | | | + | | | - **${protocol}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | host | String | Specifies the host name that requests | + | | | are redirected to. The value can | + | | | contain only letters, digits, hyphens | + | | | (-), and periods (.) and must start | + | | | with a letter or digit. The default | + | | | value is **${host}**, indicating that | + | | | the host of the request will be used. | + | | | | + | | | Default: **${host}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | String | Specifies the port that requests are | + | | | redirected to. The default value is | + | | | **${port}**, indicating that the port | + | | | of the request will be used. | + | | | | + | | | Default: **${port}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | path | String | Specifies the path that requests are | + | | | redirected to. The default value is | + | | | **${path}**, indicating that the path | + | | | of the request will be used. The | + | | | value can contain only letters, | + | | | digits, and special characters | + | | | \_-';@^- %#&$.*+?,=!:|/()[]{} and | + | | | must start with a slash (/). | + | | | | + | | | Default: **${path}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | query | String | Specifies the query string set in the | + | | | URL for redirection. The default | + | | | value is **${query}**, indicating | + | | | that the query string of the request | + | | | will be used. | + | | | | + | | | For example, in the URL | + | | | **https://www. | + | | | xxx.com:8080/elb?type=loadbalancer**, | + | | | **${query}** indicates | + | | | **type=loadbalancer**. If this | + | | | parameter is set to | + | | | **${query}&name=my_name**, the URL | + | | | will be redirected to | + | | | **https://www.xxx.com:8080/ | + | | | elb?type=loadbalancer&name=my_name**. | + | | | | + | | | The value is case-sensitive and can | + | | | contain only letters, digits, and | + | | | special characters | + | | | !$&'()*+,-./:;=?@^_\` | + | | | | + | | | Default: **${query}** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status_code | String | Specifies the status code returned | + | | | after the requests are redirected. | + | | | | + | | | Value options: | + | | | | + | | | - **301** | + | | | | + | | | - **302** | + | | | | + | | | - **303** | + | | | | + | | | - **307** | + | | | | + | | | - **308** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** FixtedResponseConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | status_code | String | Specifies the HTTP status code | + | | | configured in the forwarding policy. | + | | | The value can be any integer in the | + | | | range of 200–299, 400–499, or | + | | | 500–599. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | content_type | String | Specifies the format of the response | + | | | body. | + | | | | + | | | Value options: | + | | | | + | | | - **text/plain** | + | | | | + | | | - **text/css** | + | | | | + | | | - **text/html** | + | | | | + | | | - **application/javascript** | + | | | | + | | | - **application/json** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | message_body | String | Specifies the content of the response | + | | | body. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "l7policy" : { + "description" : "", + "admin_state_up" : true, + "rules" : [ ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab", + "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050", + "action" : "REDIRECT_TO_LISTENER", + "position" : 100, + "provisioning_status" : "ACTIVE", + "id" : "cf4360fd-8631-41ff-a6f5-b72c35da74be", + "name" : "" + }, + "request_id" : "6be83ec4-623e-4840-a417-2fcdf8ad5dfa" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/ShowL7Rule.html b/elb/api-ref/ShowL7Rule.html new file mode 100644 index 000000000..beb4ff57b --- /dev/null +++ b/elb/api-ref/ShowL7Rule.html @@ -0,0 +1,282 @@ + + +

      Viewing Details of a Forwarding Rule

      +

      Function

      This API is used to view details of a forwarding rule.

      + +

      URI

      GET /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy.

      +

      l7rule_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding rule.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      rule

      +

      L7Rule object

      +

      Specifies the forwarding rule.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 L7Rule

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      compare_type

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      key

      +

      String

      +

      Specifies the key of the match content. This parameter will not take effect when type is set to HOST_NAME or PATH. It can be updated but will not take effect.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      String

      +

      Specifies the match content. The value can be one of the following:

      +
      • HOST_NAME: A domain name will be used for matching.

        +
      • PATH: A URL will be used for matching.

        +
      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      value

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding rule.

      +

      The value can only be ACTIVE.

      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      Default: false

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      conditions

      +

      Array of RuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule.

      +
      • If conditions is specified, key and value will not take effect, and the value of this parameter will contain all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique.

        +
      • If conditions is not specified, the values of key and value are displayed.

        +
      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + +
      Table 5 RuleCondition

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules/84f4fcae-9c15-4e19-a99f-72c0b08fd3d7
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "rule" : {
      +    "compare_type" : "STARTS_WITH",
      +    "provisioning_status" : "ACTIVE",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "invert" : false,
      +    "admin_state_up" : true,
      +    "value" : "/ccc.html",
      +    "type" : "PATH",
      +    "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7"
      +  },
      +  "request_id" : "0d799435-259e-459f-b2bc-0beee06f6a77"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/ShowL7Rule.rst b/elb/api-ref/ShowL7Rule.rst new file mode 100644 index 000000000..14adf18bc --- /dev/null +++ b/elb/api-ref/ShowL7Rule.rst @@ -0,0 +1,256 @@ +Viewing Details of a Forwarding Rule +==================================== + +Function +^^^^^^^^ + +This API is used to view details of a forwarding rule. + +URI +^^^ + +GET /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== ================================ + Parameter Mandatory Type Description + =========== ========= ====== ================================ + project_id Yes String Specifies the project ID. + l7policy_id Yes String Specifies the forwarding policy. + l7rule_id Yes String Specifies the forwarding rule. + =========== ========= ====== ================================ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +------------+--------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+==================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+--------------------------------------------------+---------------------------------------------------+ + | rule | `L7Rule <#ShowL7Rule__response_L7Rule>`__ object | Specifies the forwarding rule. | + +------------+--------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 4** L7Rule + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies how requests are matched | + | | | with the domain name or URL. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, this parameter can | + | | | only be set to **EQUAL_TO**. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | this parameter can be set to | + | | | **REGEX**, **STARTS_WITH**, or | + | | | **EQUAL_TO**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. This parameter will not take | + | | | effect when **type** is set to | + | | | **HOST_NAME** or **PATH**. It can be | + | | | updated but will not take effect. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match content. The | + | | | value can be one of the following: | + | | | | + | | | - **HOST_NAME**: A domain name will | + | | | be used for matching. | + | | | | + | | | - **PATH**: A URL will be used for | + | | | matching. | + | | | | + | | | If **type** is set to **HOST_NAME**, | + | | | **PATH**, **METHOD**, or | + | | | **SOURCE_IP**, only one forwarding | + | | | rule can be created for each type. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. For example, if a domain name | + | | | is used for matching, **value** is | + | | | the domain name. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain letters, digits, hyphens | + | | | (-), and periods (.) and must | + | | | start with a letter or digit. If | + | | | you want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH** and | + | | | **compare_type** to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding rule. | + | | | | + | | | The value can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. The value is fixed at | + | | | **false**. This parameter can be | + | | | updated but remains invalid. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | conditions | Array of | Specifies the matching conditions of | + | | `RuleCondition <#S | the forwarding rule. | + | | howL7Rule__response_RuleCondition>`__ | | + | | objects | - If **conditions** is specified, | + | | | **key** and **value** will not | + | | | take effect, and the value of this | + | | | parameter will contain all | + | | | conditions configured for the | + | | | forwarding rule. The keys in the | + | | | list must be the same, whereas | + | | | each value must be unique. | + | | | | + | | | - If **conditions** is not | + | | | specified, the values of **key** | + | | | and **value** are displayed. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** RuleCondition + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the key of match item. This | + | | | parameter is left blank. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, **key** is left | + | | | blank, and **value** indicates the | + | | | domain name, which can contain 1 | + | | | to 128 characters, including | + | | | letters, digits, hyphens (-), | + | | | periods (.), and asterisks (*), | + | | | and must start with a letter, | + | | | digit, or asterisk (*). If you | + | | | want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | **key** is left blank, and | + | | | **value** indicates the request | + | | | path, which can contain 1 to 128 | + | | | characters. If **compare_type** is | + | | | set to **STARTS_WITH** or | + | | | **EQUAL_TO** for the forwarding | + | | | rule, the value must start with a | + | | | slash (/) and can contain only | + | | | letters, digits, and special | + | | | characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules/84f4fcae-9c15-4e19-a99f-72c0b08fd3d7 + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "rule" : { + "compare_type" : "STARTS_WITH", + "provisioning_status" : "ACTIVE", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "invert" : false, + "admin_state_up" : true, + "value" : "/ccc.html", + "type" : "PATH", + "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7" + }, + "request_id" : "0d799435-259e-459f-b2bc-0beee06f6a77" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/ShowListener.html b/elb/api-ref/ShowListener.html new file mode 100644 index 000000000..c2cab99c7 --- /dev/null +++ b/elb/api-ref/ShowListener.html @@ -0,0 +1,515 @@ + + +

      Viewing Details of a Listener

      +

      Function

      This API is used to view details of a listener.

      + +

      URI

      GET /v3/{project_id}/elb/listeners/{listener_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      listener

      +

      Listener object

      +

      Specifies the listener.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Listener

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener. And the value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections. The default value is -1.

      +

      This parameter is unsupported. Please do not use it.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests are forwarded to the default backend server.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      insert_headers

      +

      ListenerInsertHeaders object

      +

      Specifies the HTTP header fields.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Specifies the ID of the load balancer that the listener is added to.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      project_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      sni_container_refs

      +

      Array of strings

      +

      Lists the IDs of SNI certificates (server certificates with domain names) used by the listener.

      +

      Each SNI certificate can have up to 30 domain names, and each domain name in the SNI certificate must be unique.

      +

      This parameter will be ignored and an empty array will be returned if the listener's protocol is not HTTPS.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is available only for HTTPS listeners.

      +

      The value can be tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0.

      +

      enable_member_retry

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers. This parameter is available only for HTTP and HTTPS listeners.

      +

      keepalive_timeout

      +

      Integer

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter does not take effect.

        +
      +

      client_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      member_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      ipgroup

      +

      ListenerIpGroup object

      +

      Specifies the IP address group associated with the listener.

      +

      This parameter is unsupported. Please do not use it.

      +

      transparent_client_ip_enable

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +

      enhance_l7policy_enable

      +

      Boolean

      +

      Specifies whether to enable advanced forwarding. The value can be true or false (default).

      +
      • true indicates that advanced forwarding will be enabled.

        +
      • false indicates that advanced forwarding will not be enabled.

        +
      +

      The following parameters will be available only when advanced forwarding is enabled:

      +
      • redirect_url_config

        +
      • fixed_response_config

        +
      • priority

        +
      • conditions

        +
      +

      For details, see the descriptions in the APIs of forwarding policies and forwarding rules.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 ListenerInsertHeaders

      Parameter

      +

      Type

      +

      Description

      +

      X-Forwarded-ELB-IP

      +

      Boolean

      +

      Specifies whether to transparently transmit the load balancer EIP to backend servers. If X-Forwarded-ELB-IP is set to true, the load balancer EIP will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the listening port of the load balancer to backend servers. If X-Forwarded-Port is set to true, the listening port of the load balancer will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-For-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the source port of the client to backend servers. If X-Forwarded-For-Port is set to true, the source port of the client will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Host

      +

      Boolean

      +

      Specifies whether to rewrite the X-Forwarded-Host header. If X-Forwarded-Host is set to true, X-Forwarded-Host in the request header from the clients can be set to Host in the request header sent from the load balancer to backend servers.

      +

      Default: true

      +
      + + + + + + + + + + + + +
      Table 6 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 7 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 8 ListenerIpGroup

      Parameter

      +

      Type

      +

      Description

      +

      ipgroup_id

      +

      String

      +

      Specifies the ID of the IP address group associated with the listener.

      +
      • If ip_list is set to [] and type to whitelist, no IP addresses are allowed to access the listener.

        +
      • If ip_list is set to [] and type to blacklist, any IP address is allowed to access the listener.

        +
      • The specified IP address group must exist and this parameter cannot be set to null.

        +
      +

      enable_ipgroup

      +

      Boolean

      +

      Specifies whether to enable access control.

      +
      • true: Access control is enabled.

        +
      • false: Access control is disabled.

        +
      +

      A listener with access control enabled can be directly deleted.

      +

      type

      +

      String

      +

      Specifies how access to the listener is controlled.

      +
      • white: A whitelist is configured. Only IP addresses in the whitelist can access the listener.

        +
      • black: A blacklist is configured. IP addresses in the blacklist are not allowed to access the listener.

        +
      +
      + + +

      Example Requests

      GET
      +
      +https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/listeners/683cf917-3e51-4c41-830c-bc3a57e090f0
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "listener" : {
      +    "id" : "683cf917-3e51-4c41-830c-bc3a57e090f0",
      +    "name" : "My listener",
      +    "protocol_port" : 90,
      +    "protocol" : "HTTPS",
      +    "description" : "",
      +    "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "ac82ca77-8be3-4d65-9c4d-155771b463df"
      +    } ],
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "sni_container_refs" : [ ],
      +    "connection_limit" : -1,
      +    "tls_ciphers_policy" : "tls-1-0",
      +    "tags" : [ ],
      +    "created_at" : "2021-04-02T07:48:38Z",
      +    "updated_at" : "2021-04-02T07:48:38Z",
      +    "http2_enable" : false,
      +    "insert_headers" : {
      +      "X-Forwarded-ELB-IP" : false,
      +      "X-Forwarded-Host" : true,
      +      "X-Forwarded-For-Port" : false,
      +      "X-Forwarded-Port" : false
      +    },
      +    "member_timeout" : 60,
      +    "client_timeout" : 60,
      +    "keepalive_timeout" : 60,
      +    "enable_member_retry" : true,
      +    "transparent_client_ip_enable" : true,
      +    "enhance_l7policy_enable" : false
      +  },
      +  "request_id" : "830de7c7c38232d925db168bfb3cb0e8"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/ShowListener.rst b/elb/api-ref/ShowListener.rst new file mode 100644 index 000000000..88dc7398e --- /dev/null +++ b/elb/api-ref/ShowListener.rst @@ -0,0 +1,433 @@ +Viewing Details of a Listener +============================= + +Function +^^^^^^^^ + +This API is used to view details of a listener. + +URI +^^^ + +GET /v3/{project_id}/elb/listeners/{listener_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== ========================== + Parameter Mandatory Type Description + =========== ========= ====== ========================== + project_id Yes String Specifies the project ID. + listener_id Yes String Specifies the listener ID. + =========== ========= ====== ========================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | listener | `Listener <#ShowListener__response_Listener>`__ | Specifies the listener. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 4** Listener + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. And the value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. The default value is | + | | | **-1**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the default | + | | | backend server group. If there is no | + | | | matched forwarding policy, requests | + | | | are forwarded to the default backend | + | | | server. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. This | + | | | parameter is available only for HTTPS | + | | | listeners. If you configure this | + | | | parameter for other types of | + | | | listeners, it will not take effect. | + | | | | + | | | Enable HTTP/2 if you want the clients | + | | | to use HTTP/2 to communicate with the | + | | | load balancer. However, connections | + | | | between the load balancer and backend | + | | | servers use HTTP/1.x by default. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | insert_headers | `ListenerInsertHeaders <#ShowListene | Specifies the HTTP header fields. | + | | r__response_ListenerInsertHeaders>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Specifies the ID of the load balancer | + | | `LoadBalancerRef <#ShowL | that the listener is added to. | + | | istener__response_LoadBalancerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array of strings | Lists the IDs of SNI certificates | + | | | (server certificates with domain | + | | | names) used by the listener. | + | | | | + | | | Each SNI certificate can have up to | + | | | 30 domain names, and each domain name | + | | | in the SNI certificate must be | + | | | unique. | + | | | | + | | | This parameter will be ignored and an | + | | | empty array will be returned if the | + | | | listener's protocol is not HTTPS. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags. | + | | `Tag <#ShowListener__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is | + | | | available only for HTTPS listeners. | + | | | | + | | | The value can be **tls-1-0**, | + | | | **tls-1-1**, **tls-1-2**, or | + | | | **tls-1-2-strict**, and the default | + | | | value is **tls-1-0**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_member_retry | Boolean | Specifies whether to enable health | + | | | check retries for backend servers. | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | keepalive_timeout | Integer | Specifies the idle timeout duration, | + | | | in seconds. | + | | | | + | | | - For TCP listeners, the value | + | | | ranges from **10** to **4000**, | + | | | and the default value is **300**. | + | | | | + | | | - For HTTP and HTTPS listeners, the | + | | | value ranges from **0** to | + | | | **4000**, and the default value is | + | | | **60**. | + | | | | + | | | - For UDP listeners, this parameter | + | | | does not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a client, | + | | | in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a backend | + | | | server, in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipgroup | `ListenerIpGroup <#ShowL | Specifies the IP address group | + | | istener__response_ListenerIpGroup>`__ | associated with the listener. | + | | object | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | transparent_client_ip_enable | Boolean | Specifies whether to pass source IP | + | | | addresses of the clients to backend | + | | | servers. | + | | | | + | | | Shared load balancers: The value can | + | | | be **true** or **false**, and the | + | | | default value is **false** for TCP | + | | | and UDP listeners. The value can only | + | | | be **true** for HTTP and HTTPS | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + | | | | + | | | Dedicated load balancers: The value | + | | | can only be **true** for all types of | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enhance_l7policy_enable | Boolean | Specifies whether to enable advanced | + | | | forwarding. The value can be **true** | + | | | or **false** (default). | + | | | | + | | | - **true** indicates that advanced | + | | | forwarding will be enabled. | + | | | | + | | | - **false** indicates that advanced | + | | | forwarding will not be enabled. | + | | | | + | | | The following parameters will be | + | | | available only when advanced | + | | | forwarding is enabled: | + | | | | + | | | - **redirect_url_config** | + | | | | + | | | - **fixed_response_config** | + | | | | + | | | - **priority** | + | | | | + | | | - **conditions** | + | | | | + | | | For details, see the descriptions in | + | | | the APIs of forwarding policies and | + | | | forwarding rules. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** ListenerInsertHeaders + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | X-Forwarded-ELB-IP | Boolean | Specifies whether to transparently | + | | | transmit the load balancer EIP to | + | | | backend servers. If | + | | | **X-Forwarded-ELB-IP** is set to | + | | | **true**, the load balancer EIP will | + | | | be stored in the HTTP header and | + | | | passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Port | Boolean | Specifies whether to transparently | + | | | transmit the listening port of the | + | | | load balancer to backend servers. If | + | | | **X-Forwarded-Port** is set to | + | | | **true**, the listening port of the | + | | | load balancer will be stored in the | + | | | HTTP header and passed to backend | + | | | servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-For-Port | Boolean | Specifies whether to transparently | + | | | transmit the source port of the | + | | | client to backend servers. If | + | | | **X-Forwarded-For-Port** is set to | + | | | **true**, the source port of the | + | | | client will be stored in the HTTP | + | | | header and passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Host | Boolean | Specifies whether to rewrite the | + | | | **X-Forwarded-Host** header. If | + | | | **X-Forwarded-Host** is set to | + | | | **true**, **X-Forwarded-Host** in the | + | | | request header from the clients can | + | | | be set to **Host** in the request | + | | | header sent from the load balancer to | + | | | backend servers. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 7** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 8** ListenerIpGroup + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | ipgroup_id | String | Specifies the ID of the IP address | + | | | group associated with the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **whitelist**, no | + | | | IP addresses are allowed to access | + | | | the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **blacklist**, any | + | | | IP address is allowed to access | + | | | the listener. | + | | | | + | | | - The specified IP address group | + | | | must exist and this parameter | + | | | cannot be set to **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_ipgroup | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | - **true**: Access control is | + | | | enabled. | + | | | | + | | | - **false**: Access control is | + | | | disabled. | + | | | | + | | | A listener with access control | + | | | enabled can be directly deleted. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies how access to the listener | + | | | is controlled. | + | | | | + | | | - **white**: A whitelist is | + | | | configured. Only IP addresses in | + | | | the whitelist can access the | + | | | listener. | + | | | | + | | | - **black**: A blacklist is | + | | | configured. IP addresses in the | + | | | blacklist are not allowed to | + | | | access the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/listeners/683cf917-3e51-4c41-830c-bc3a57e090f0 + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "listener" : { + "id" : "683cf917-3e51-4c41-830c-bc3a57e090f0", + "name" : "My listener", + "protocol_port" : 90, + "protocol" : "HTTPS", + "description" : "", + "default_tls_container_ref" : "4e7761d7c7d141c389479f2641c8bff8", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "ac82ca77-8be3-4d65-9c4d-155771b463df" + } ], + "project_id" : "060576782980d5762f9ec014dd2f1148", + "sni_container_refs" : [ ], + "connection_limit" : -1, + "tls_ciphers_policy" : "tls-1-0", + "tags" : [ ], + "created_at" : "2021-04-02T07:48:38Z", + "updated_at" : "2021-04-02T07:48:38Z", + "http2_enable" : false, + "insert_headers" : { + "X-Forwarded-ELB-IP" : false, + "X-Forwarded-Host" : true, + "X-Forwarded-For-Port" : false, + "X-Forwarded-Port" : false + }, + "member_timeout" : 60, + "client_timeout" : 60, + "keepalive_timeout" : 60, + "enable_member_retry" : true, + "transparent_client_ip_enable" : true, + "enhance_l7policy_enable" : false + }, + "request_id" : "830de7c7c38232d925db168bfb3cb0e8" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/ShowLoadBalancer.html b/elb/api-ref/ShowLoadBalancer.html new file mode 100644 index 000000000..e7e594766 --- /dev/null +++ b/elb/api-ref/ShowLoadBalancer.html @@ -0,0 +1,599 @@ + + +

      Viewing Details of a Load Balancer

      +

      Function

      This API is used to view details of a load balancer.

      + +

      URI

      GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      loadbalancer

      +

      LoadBalancer object

      +

      Specifies the load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 LoadBalancer

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      Default: Automatically generated

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the load balancer. The value can only be ACTIVE.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer. The value can only be vlb.

      +

      Default: vlb

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups associated with the load balancer.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the IDs of listeners added to the load balancer.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer. The value can only be ONLINE.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      vip_address

      +

      String

      +

      Specifies the private IPv4 address bound to the load balancer.

      +

      Minimum: 1

      +

      Maximum: 64

      +

      vip_subnet_cidr_id

      +

      String

      +

      Specifies the ID of the IPv4 subnet where the load balancer works.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      String

      +

      Specifies the name of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the virtual IP address (the value of vip_address) of the load balancer.

      +

      When you create a dedicated load balancer, the system automatically creates a port for the load balancer and associates the port with a default security group. However, security group rules containing the port will not affect traffic to and from the load balancer.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags added to the load balancer.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      guaranteed

      +

      Boolean

      +

      Specifies whether the load balancer is a dedicated load balancer.

      +

      The value can be true or false. true indicates a dedicated load balancer, and false indicates a shared load balancer. When dedicated load balancers are launched in the eu-de region, either true or false will be returned when you use the API to query or update a load balancer.

      +

      Default: true

      +

      vpc_id

      +

      String

      +

      Specifies the ID of the VPC where the load balancer works.

      +

      eips

      +

      Array of EipInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      ipv6_vip_address

      +

      String

      +

      Specifies the IPv6 address bound to the load balancer.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: None

      +

      Minimum: 1

      +

      Maximum: 64

      +

      ipv6_vip_virsubnet_id

      +

      String

      +

      Specifies the ID of the IPv6 subnet where the load balancer works.

      +

      This parameter is unsupported. Please do not use it.

      +

      ipv6_vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the IPv6 address.

      +

      This parameter is unsupported. Please do not use it.

      +

      availability_zone_list

      +

      Array of strings

      +

      Specifies the list of AZs where the load balancer is created.

      +

      enterprise_project_id

      +

      String

      +

      Specifies the enterprise project ID.

      +

      If this parameter is not passed during resource creation, the resource belongs to the default enterprise project.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 0

      +

      l4_flavor_id

      +

      String

      +

      Specifies the Layer-4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l4_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_flavor_id

      +

      String

      +

      Specifies the Layer-7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      publicips

      +

      Array of PublicIpInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      elb_virsubnet_ids

      +

      Array of strings

      +

      Specifies the ID of the subnet on the downstream plane. The ports used by the load balancer dynamically occupy IP addresses in the subnet.

      +

      ip_target_enable

      +

      Boolean

      +

      Specifies whether to enable cross-VPC backend.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: false

      +

      frozen_scene

      +

      String

      +

      Specifies the scenario where the load balancer is frozen. Use commas to separate multiple scenarios.

      +

      If the value is ARREAR, the load balancer is frozen because your account is in arrears.

      +

      ipv6_bandwidth

      +

      BandwidthRef object

      +

      Specifies the ID of the bandwidth. This parameter is available only when you create or update a dedicated load balancer that has an IPv6 address bound.

      +

      If you use a new IPv6 address and specify a shared bandwidth, the IPv6 address will be added to the shared bandwidth.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 5 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + + + + + + + + + + + +
      Table 6 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 7 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 8 EipInfo

      Parameter

      +

      Type

      +

      Description

      +

      eip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      eip_address

      +

      String

      +

      Specifies the specific IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. 4 indicates IPv4, and 6 indicates IPv6.

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 9 PublicIpInfo

      Parameter

      +

      Type

      +

      Description

      +

      publicip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      publicip_address

      +

      String

      +

      Specifies the IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. The value can be 4 (IPv4) or 6 (IPv6).

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + +
      Table 10 BandwidthRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the shared bandwidth ID.

      +
      + + +

      Example Requests

      Viewing details of a load balancer

      +
      GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}
      +
      +GET
      +
      +https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/loadbalancers/3dbde7e5-c277-4ea3-a424-edd339357eff
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "loadbalancer" : {
      +    "id" : "3dbde7e5-c277-4ea3-a424-edd339357eff",
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "name" : "elb-l4-no-delete",
      +    "vip_port_id" : "f079c7ee-65a9-44ef-be86-53d8927e59be",
      +    "vip_address" : "10.0.0.196",
      +    "admin_state_up" : true,
      +    "provisioning_status" : "ACTIVE",
      +    "operating_status" : "ONLINE",
      +    "listeners" : [ ],
      +    "pools" : [ {
      +      "id" : "1d864dc9-f6ef-4366-b59d-7034cde2328f"
      +    }, {
      +      "id" : "c0a2e4a1-c028-4a24-a62f-e721c52f5513"
      +    }, {
      +      "id" : "79308896-6169-4c28-acbc-e139eb661996"
      +    } ],
      +    "tags" : [ ],
      +    "created_at" : "2019-12-02T09:55:11Z",
      +    "updated_at" : "2019-12-02T09:55:11Z",
      +    "vpc_id" : "70711260-9de9-4d96-9839-0ae698e00109",
      +    "enterprise_project_id" : "0",
      +    "availability_zone_list" : [ ],
      +    "publicips" : [ ],
      +    "elb_virsubnet_ids" : [ "ad5d63bf-3b50-4e88-b4d9-e94a59aade48" ],
      +    "eips" : [ ],
      +    "guaranteed" : true,
      +    
      +    "l4_flavor_id" : "e5acacda-f861-404e-9871-df480c49d185",
      +    "vip_subnet_cidr_id" : "396d918a-756e-4163-8450-3bdc860109cf"
      +  },
      +  "request_id" : "1a47cfbf-969f-4e40-8c0e-c2e60b14bcac"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/ShowLoadBalancer.rst b/elb/api-ref/ShowLoadBalancer.rst new file mode 100644 index 000000000..843090111 --- /dev/null +++ b/elb/api-ref/ShowLoadBalancer.rst @@ -0,0 +1,433 @@ +Viewing Details of a Load Balancer +================================== + +Function +^^^^^^^^ + +This API is used to view details of a load balancer. + +URI +^^^ + +GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Path parameters + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +--------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +==============+==================================================+==================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +--------------+--------------------------------------------------+--------------------------------------------------+ + | loadbalancer | `LoadBalanc | Specifies the load balancer. | + | | er <#ShowLoadBalancer__response_LoadBalancer>`__ | | + | | object | | + +--------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 4** LoadBalancer + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + | | | | + | | | Default: **Automatically generated** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the load balancer. The value can only | + | | | be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. The value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. The value can only be | + | | | **vlb**. | + | | | | + | | | Default: **vlb** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#S | groups associated with the load | + | | howLoadBalancer__response_PoolRef>`__ | balancer. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the IDs of listeners added to | + | | `ListenerRef <#ShowL | the load balancer. | + | | oadBalancer__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. The value can only be | + | | | **ONLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IPv4 address | + | | | bound to the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_cidr_id | String | Specifies the ID of the IPv4 subnet | + | | | where the load balancer works. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the virtual IP address (the value of | + | | | **vip_address**) of the load | + | | | balancer. | + | | | | + | | | When you create a dedicated load | + | | | balancer, the system automatically | + | | | creates a port for the load balancer | + | | | and associates the port with a | + | | | default security group. However, | + | | | security group rules containing the | + | | | port will not affect traffic to and | + | | | from the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags added to the load | + | | `Tag | balancer. | + | | <#ShowLoadBalancer__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | guaranteed | Boolean | Specifies whether the load balancer | + | | | is a dedicated load balancer. | + | | | | + | | | The value can be **true** or | + | | | **false**. **true** indicates a | + | | | dedicated load balancer, and | + | | | **false** indicates a shared load | + | | | balancer. When dedicated load | + | | | balancers are launched in the | + | | | **eu-de** region, either **true** or | + | | | **false** will be returned when you | + | | | use the API to query or update a load | + | | | balancer. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vpc_id | String | Specifies the ID of the VPC where the | + | | | load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eips | Array of | Specifies the EIP bound to the load | + | | `EipInfo <#S | balancer. | + | | howLoadBalancer__response_EipInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_address | String | Specifies the IPv6 address bound to | + | | | the load balancer. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **None** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_virsubnet_id | String | Specifies the ID of the IPv6 subnet | + | | | where the load balancer works. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_port_id | String | Specifies the ID of the port bound to | + | | | the IPv6 address. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | availability_zone_list | Array of strings | Specifies the list of AZs where the | + | | | load balancer is created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enterprise_project_id | String | Specifies the enterprise project ID. | + | | | | + | | | If this parameter is not passed | + | | | during resource creation, the | + | | | resource belongs to the default | + | | | enterprise project. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **0** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_flavor_id | String | Specifies the Layer-4 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_scale_flavor_id | String | Specifies the reserved Layer 4 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_flavor_id | String | Specifies the Layer-7 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_scale_flavor_id | String | Specifies the reserved Layer 7 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicips | Array of | Specifies the EIP bound to the load | + | | `PublicIpInfo <#ShowLo | balancer. | + | | adBalancer__response_PublicIpInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | elb_virsubnet_ids | Array of strings | Specifies the ID of the subnet on the | + | | | downstream plane. The ports used by | + | | | the load balancer dynamically occupy | + | | | IP addresses in the subnet. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_target_enable | Boolean | Specifies whether to enable cross-VPC | + | | | backend. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | frozen_scene | String | Specifies the scenario where the load | + | | | balancer is frozen. Use commas to | + | | | separate multiple scenarios. | + | | | | + | | | If the value is **ARREAR**, the load | + | | | balancer is frozen because your | + | | | account is in arrears. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_bandwidth | `BandwidthRef <#ShowLo | Specifies the ID of the bandwidth. | + | | adBalancer__response_BandwidthRef>`__ | This parameter is available only when | + | | object | you create or update a dedicated load | + | | | balancer that has an IPv6 address | + | | | bound. | + | | | | + | | | If you use a new IPv6 address and | + | | | specify a shared bandwidth, the IPv6 | + | | | address will be added to the shared | + | | | bandwidth. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +.. table:: **Table 6** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 7** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 8** EipInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | eip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eip_address | String | Specifies the specific IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. **4** | + | | | indicates IPv4, and **6** indicates | + | | | IPv6. | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** PublicIpInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | publicip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicip_address | String | Specifies the IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. The value | + | | | can be **4** (IPv4) or **6** (IPv6). | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 10** BandwidthRef + + ========= ====== ================================== + Parameter Type Description + ========= ====== ================================== + id String Specifies the shared bandwidth ID. + ========= ====== ================================== + +Example Requests +^^^^^^^^^^^^^^^^ + +Viewing details of a load balancer + +.. code:: screen + + GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id} + + GET + + https://{ELB_Endpoint}/v3/060576782980d5762f9ec014dd2f1148/elb/loadbalancers/3dbde7e5-c277-4ea3-a424-edd339357eff + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "loadbalancer" : { + "id" : "3dbde7e5-c277-4ea3-a424-edd339357eff", + "project_id" : "060576782980d5762f9ec014dd2f1148", + "name" : "elb-l4-no-delete", + "vip_port_id" : "f079c7ee-65a9-44ef-be86-53d8927e59be", + "vip_address" : "10.0.0.196", + "admin_state_up" : true, + "provisioning_status" : "ACTIVE", + "operating_status" : "ONLINE", + "listeners" : [ ], + "pools" : [ { + "id" : "1d864dc9-f6ef-4366-b59d-7034cde2328f" + }, { + "id" : "c0a2e4a1-c028-4a24-a62f-e721c52f5513" + }, { + "id" : "79308896-6169-4c28-acbc-e139eb661996" + } ], + "tags" : [ ], + "created_at" : "2019-12-02T09:55:11Z", + "updated_at" : "2019-12-02T09:55:11Z", + "vpc_id" : "70711260-9de9-4d96-9839-0ae698e00109", + "enterprise_project_id" : "0", + "availability_zone_list" : [ ], + "publicips" : [ ], + "elb_virsubnet_ids" : [ "ad5d63bf-3b50-4e88-b4d9-e94a59aade48" ], + "eips" : [ ], + "guaranteed" : true, + + "l4_flavor_id" : "e5acacda-f861-404e-9871-df480c49d185", + "vip_subnet_cidr_id" : "396d918a-756e-4163-8450-3bdc860109cf" + }, + "request_id" : "1a47cfbf-969f-4e40-8c0e-c2e60b14bcac" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/ShowLoadBalancerStatus.html b/elb/api-ref/ShowLoadBalancerStatus.html new file mode 100644 index 000000000..eb7e630cf --- /dev/null +++ b/elb/api-ref/ShowLoadBalancerStatus.html @@ -0,0 +1,566 @@ + + +

      Querying the Status Tree of a Load Balancer

      +

      Function

      This API is used to query the status tree of a load balancer and show information about all resources associated with the load balancer.

      +

      When admin_state_up is set to false and operating_status to OFFLINE for a backend server, DISABLED is returned for operating_status of the backend server in the response of this API.

      + +

      URI

      GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}/statuses

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      statuses

      +

      LoadBalancerStatusResult object

      +

      Provides information about the load balancer status tree.

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +
      + + + + + + + + + + + + +
      Table 4 LoadBalancerStatusResult

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      LoadBalancerStatus object

      +

      Specifies the statuses of the load balancer and its associated resources.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 LoadBalancerStatus

      Parameter

      +

      Type

      +

      Description

      +

      name

      +

      String

      +

      Specifies the load balancer name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the load balancer.

      +

      The value can only be ACTIVE.

      +

      listeners

      +

      Array of LoadBalancerStatusListener objects

      +

      Lists the listeners added to the load balancer.

      +

      pools

      +

      Array of LoadBalancerStatusPool objects

      +

      Lists the backend server groups associated with the load balancer.

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer.

      +

      The value can only be one of the following:

      +
      • ONLINE (default): The load balancer is running normally.

        +
      • DEGRADED: This status is displayed only when operating_status is set to OFFLINE for a backend server associated with the load balancer and the API for querying the load balancer status tree is called.

        +
      • DISABLED: This status is displayed only when admin_state_up of the load balancer is set to false and the API for querying the load balancer status tree is called.

        +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 LoadBalancerStatusListener

      Parameter

      +

      Type

      +

      Description

      +

      name

      +

      String

      +

      Specifies the name of the listener added to the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the listener. The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      pools

      +

      Array of LoadBalancerStatusPool objects

      +

      Specifies the operating status of the backend server group associated with the listener.

      +

      l7policies

      +

      Array of LoadBalancerStatusPolicy objects

      +

      Specifies the operating status of the forwarding policy added to the listener.

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the listener.

      +

      The value can only be one of the following:

      +
      • ONLINE (default): The listener is running normally.

        +
      • DISABLED: This status is displayed only when admin_state_up of the load balancer or the listener is set to false and the API for querying the load balancer status tree is called.

        +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 LoadBalancerStatusPolicy

      Parameter

      +

      Type

      +

      Description

      +

      action

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener. The value can be REDIRECT_TO_POOL or REDIRECT_TO_LISTENER.

      +

      id

      +

      String

      +

      Specifies the policy ID.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding policy.

      +

      The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      name

      +

      String

      +

      Specifies the policy name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      rules

      +

      Array of LoadBalancerStatusL7Rule objects

      +

      Specifies the forwarding rule.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 8 LoadBalancerStatusL7Rule

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the forwarding rule.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding rule.

      +

      The value can only be ACTIVE.

      +

      type

      +

      String

      +

      Specifies the match content. The value can be HOST_NAME or PATH.

      +

      HOST_NAME indicates that the domain name will be used for matching, and PATH indicates that the URL will be used for matching.

      +

      The type value must be unique for each forwarding rule in a forwarding policy.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 9 LoadBalancerStatusPool

      Parameter

      +

      Type

      +

      Description

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the backend server group. The value can only be ACTIVE.

      +

      name

      +

      String

      +

      Specifies the name of the backend server group.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      healthmonitor

      +

      LoadBalancerStatusHealthMonitor object

      +

      Specifies the health check results of backend servers in the load balancer status tree.

      +

      members

      +

      Array of LoadBalancerStatusMember objects

      +

      Specifies the backend server.

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the backend server group.

      +

      The value can be one of the following:

      +
      • ONLINE: The backend server group is running normally.

        +
      • DEGRADED: This status is displayed only when operating_status of a backend server in the group is set to OFFLINE and the API for querying the load balancer status tree is called.

        +
      • DISABLED: This status is displayed only when admin_state_up of the backend server group or the associated load balancer is set to false and the API for querying the load balancer status tree is called.

        +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 10 LoadBalancerStatusHealthMonitor

      Parameter

      +

      Type

      +

      Description

      +

      type

      +

      String

      +

      Specifies the health check protocol. The value can be TCP, UDP_CONNECT, or HTTP.

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the health check. The value can only be ACTIVE.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 11 LoadBalancerStatusMember

      Parameter

      +

      Type

      +

      Description

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the backend server. The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      address

      +

      String

      +

      Specifies the IP address of the backend server.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server to receive requests. The port number ranges from 1 to 65535.

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the backend server.

      +

      The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.

        +
      • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

        +
      • DISABLED: The backend server is not available. This status is displayed only when admin_state_up of the backend server, or the backend server group to which it belongs, or the associated load balancer is set to false and the API for querying the load balancer status tree is called.

        +
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

        +
      +
      + + +

      Example Requests

      Querying the status tree of a load balancer

      +
      GET
      +
      +https://{ELB_Endpoint}/v3/{project_id}/elb/loadbalancers/38278031-cfca-44be-81be-a412f618773b/statuses
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "statuses" : {
      +    "loadbalancer" : {
      +      "name" : "lb-jy",
      +      "provisioning_status" : "ACTIVE",
      +      "listeners" : [ {
      +        "name" : "listener-jy-1",
      +        "provisioning_status" : "ACTIVE",
      +        "pools" : [ {
      +          "name" : "pool-jy-1",
      +          "provisioning_status" : "ACTIVE",
      +          "healthmonitor" : {
      +            "type" : "TCP",
      +            "id" : "7422b51a-0ed2-4702-9429-4f88349276c6",
      +            "name" : "",
      +            "provisioning_status" : "ACTIVE"
      +          },
      +          "members" : [ {
      +            "protocol_port" : 80,
      +            "address" : "192.168.44.11",
      +            "id" : "7bbf7151-0dce-4087-b316-06c7fa17b894",
      +            "operating_status" : "ONLINE",
      +            "provisioning_status" : "ACTIVE"
      +          } ],
      +          "id" : "c54b3286-2349-4c5c-ade1-e6bb0b26ad18",
      +          "operating_status" : "ONLINE"
      +        } ],
      +        "l7policies" : [ ],
      +        "id" : "eb84c5b4-9bc5-4bee-939d-3900fb05dc7b",
      +        "operating_status" : "ONLINE"
      +      } ],
      +      "pools" : [ {
      +        "name" : "pool-jy-1",
      +        "provisioning_status" : "ACTIVE",
      +        "healthmonitor" : {
      +          "type" : "TCP",
      +          "id" : "7422b51a-0ed2-4702-9429-4f88349276c6",
      +          "name" : "",
      +          "provisioning_status" : "ACTIVE"
      +        },
      +        "members" : [ {
      +          "protocol_port" : 80,
      +          "address" : "192.168.44.11",
      +          "id" : "7bbf7151-0dce-4087-b316-06c7fa17b894",
      +          "operating_status" : "ONLINE",
      +          "provisioning_status" : "ACTIVE"
      +        } ],
      +        "id" : "c54b3286-2349-4c5c-ade1-e6bb0b26ad18",
      +        "operating_status" : "ONLINE"
      +      } ],
      +      "id" : "38278031-cfca-44be-81be-a412f618773b",
      +      "operating_status" : "ONLINE"
      +    }
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/ShowLoadBalancerStatus.rst b/elb/api-ref/ShowLoadBalancerStatus.rst new file mode 100644 index 000000000..72834eb8c --- /dev/null +++ b/elb/api-ref/ShowLoadBalancerStatus.rst @@ -0,0 +1,449 @@ +Querying the Status Tree of a Load Balancer +=========================================== + +Function +^^^^^^^^ + +This API is used to query the status tree of a load balancer and show information about all resources associated with the load balancer. + +When **admin_state_up** is set to **false** and **operating_status** to **OFFLINE** for a backend server, **DISABLED** is returned for **operating_status** of the backend server in the response of this API. + +URI +^^^ + +GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}/statuses + +.. table:: **Table 1** Path parameters + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | statuses | `LoadBalancerStatusResult <#ShowLoadBala | Provides information about the load balancer | + | | ncerStatus__response_LoadBalancerStatusResult>`__ | status tree. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 4** LoadBalancerStatusResult + + +--------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +==============+==================================================+==================================================+ + | loadbalancer | `LoadBalancerStatus <#ShowLoa | Specifies the statuses of the load balancer and | + | | dBalancerStatus__response_LoadBalancerStatus>`__ | its associated resources. | + | | object | | + +--------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 5** LoadBalancerStatus + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | name | String | Specifies the load balancer name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the load balancer. | + | | | | + | | | The value can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the listeners added to the load | + | | `LoadBalancerStatus | balancer. | + | | Listener <#ShowLoadBalancerStatus__re | | + | | sponse_LoadBalancerStatusListener>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the backend server groups | + | | `LoadBalanc | associated with the load balancer. | + | | erStatusPool <#ShowLoadBalancerStatus | | + | | __response_LoadBalancerStatusPool>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. | + | | | | + | | | The value can only be one of the | + | | | following: | + | | | | + | | | - **ONLINE** (default): The load | + | | | balancer is running normally. | + | | | | + | | | - **DEGRADED**: This status is | + | | | displayed only when | + | | | **operating_status** is set to | + | | | **OFFLINE** for a backend server | + | | | associated with the load balancer | + | | | and the API for querying the load | + | | | balancer status tree is called. | + | | | | + | | | - **DISABLED**: This status is | + | | | displayed only when | + | | | **admin_state_up** of the load | + | | | balancer is set to **false** and | + | | | the API for querying the load | + | | | balancer status tree is called. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** LoadBalancerStatusListener + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | name | String | Specifies the name of the listener | + | | | added to the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the listener. The value can only be | + | | | **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Specifies the operating status of the | + | | `LoadBalanc | backend server group associated with | + | | erStatusPool <#ShowLoadBalancerStatus | the listener. | + | | __response_LoadBalancerStatusPool>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7policies | Array of | Specifies the operating status of the | + | | `LoadBalancerSt | forwarding policy added to the | + | | atusPolicy <#ShowLoadBalancerStatus__ | listener. | + | | response_LoadBalancerStatusPolicy>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | listener. | + | | | | + | | | The value can only be one of the | + | | | following: | + | | | | + | | | - **ONLINE** (default): The listener | + | | | is running normally. | + | | | | + | | | - **DISABLED**: This status is | + | | | displayed only when | + | | | **admin_state_up** of the load | + | | | balancer or the listener is set to | + | | | **false** and the API for querying | + | | | the load balancer status tree is | + | | | called. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** LoadBalancerStatusPolicy + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | action | String | Specifies whether requests are | + | | | forwarded to another backend server | + | | | group or redirected to an HTTPS | + | | | listener. The value can be | + | | | **REDIRECT_TO_POOL** or | + | | | **REDIRECT_TO_LISTENER**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding policy. | + | | | | + | | | The value can only be **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the policy name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array of | Specifies the forwarding rule. | + | | `LoadBalancerSt | | + | | atusL7Rule <#ShowLoadBalancerStatus__ | | + | | response_LoadBalancerStatusL7Rule>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** LoadBalancerStatusL7Rule + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the ID of the forwarding | + | | | rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding rule. | + | | | | + | | | The value can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match content. The | + | | | value can be **HOST_NAME** or | + | | | **PATH**. | + | | | | + | | | **HOST_NAME** indicates that the | + | | | domain name will be used for | + | | | matching, and **PATH** indicates that | + | | | the URL will be used for matching. | + | | | | + | | | The **type** value must be unique for | + | | | each forwarding rule in a forwarding | + | | | policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** LoadBalancerStatusPool + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the backend server group. The value | + | | | can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the backend | + | | | server group. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor | `LoadBalancerStatusHealthMoni | Specifies the health check results of | + | | tor <#ShowLoadBalancerStatus__respons | backend servers in the load balancer | + | | e_LoadBalancerStatusHealthMonitor>`__ | status tree. | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array of | Specifies the backend server. | + | | `LoadBalancerSt | | + | | atusMember <#ShowLoadBalancerStatus__ | | + | | response_LoadBalancerStatusMember>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the ID of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | backend server group. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **ONLINE**: The backend server | + | | | group is running normally. | + | | | | + | | | - **DEGRADED**: This status is | + | | | displayed only when | + | | | **operating_status** of a backend | + | | | server in the group is set to | + | | | **OFFLINE** and the API for | + | | | querying the load balancer status | + | | | tree is called. | + | | | | + | | | - **DISABLED**: This status is | + | | | displayed only when | + | | | **admin_state_up** of the backend | + | | | server group or the associated | + | | | load balancer is set to **false** | + | | | and the API for querying the load | + | | | balancer status tree is called. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 10** LoadBalancerStatusHealthMonitor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | type | String | Specifies the health check protocol. | + | | | The value can be **TCP**, | + | | | **UDP_CONNECT**, or **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the health check. The value can only | + | | | be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** LoadBalancerStatusMember + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the backend server. The value can | + | | | only be **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the IP address of the | + | | | backend server. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server to receive requests. | + | | | The port number ranges from 1 to | + | | | 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | backend server. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group to which the backend server | + | | | belongs. | + | | | | + | | | - **DISABLED**: The backend server | + | | | is not available. This status is | + | | | displayed only when | + | | | **admin_state_up** of the backend | + | | | server, or the backend server | + | | | group to which it belongs, or the | + | | | associated load balancer is set to | + | | | **false** and the API for querying | + | | | the load balancer status tree is | + | | | called. | + | | | | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +Querying the status tree of a load balancer + +.. code:: screen + + GET + + https://{ELB_Endpoint}/v3/{project_id}/elb/loadbalancers/38278031-cfca-44be-81be-a412f618773b/statuses + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "statuses" : { + "loadbalancer" : { + "name" : "lb-jy", + "provisioning_status" : "ACTIVE", + "listeners" : [ { + "name" : "listener-jy-1", + "provisioning_status" : "ACTIVE", + "pools" : [ { + "name" : "pool-jy-1", + "provisioning_status" : "ACTIVE", + "healthmonitor" : { + "type" : "TCP", + "id" : "7422b51a-0ed2-4702-9429-4f88349276c6", + "name" : "", + "provisioning_status" : "ACTIVE" + }, + "members" : [ { + "protocol_port" : 80, + "address" : "192.168.44.11", + "id" : "7bbf7151-0dce-4087-b316-06c7fa17b894", + "operating_status" : "ONLINE", + "provisioning_status" : "ACTIVE" + } ], + "id" : "c54b3286-2349-4c5c-ade1-e6bb0b26ad18", + "operating_status" : "ONLINE" + } ], + "l7policies" : [ ], + "id" : "eb84c5b4-9bc5-4bee-939d-3900fb05dc7b", + "operating_status" : "ONLINE" + } ], + "pools" : [ { + "name" : "pool-jy-1", + "provisioning_status" : "ACTIVE", + "healthmonitor" : { + "type" : "TCP", + "id" : "7422b51a-0ed2-4702-9429-4f88349276c6", + "name" : "", + "provisioning_status" : "ACTIVE" + }, + "members" : [ { + "protocol_port" : 80, + "address" : "192.168.44.11", + "id" : "7bbf7151-0dce-4087-b316-06c7fa17b894", + "operating_status" : "ONLINE", + "provisioning_status" : "ACTIVE" + } ], + "id" : "c54b3286-2349-4c5c-ade1-e6bb0b26ad18", + "operating_status" : "ONLINE" + } ], + "id" : "38278031-cfca-44be-81be-a412f618773b", + "operating_status" : "ONLINE" + } + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/ShowMember.html b/elb/api-ref/ShowMember.html new file mode 100644 index 000000000..0de9d1905 --- /dev/null +++ b/elb/api-ref/ShowMember.html @@ -0,0 +1,245 @@ + + +

      Viewing Details of a Backend Server

      +

      Function

      This API is used to view details of a backend server.

      + +

      URI

      GET /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      member_id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      member

      +

      Member object

      +

      Specifies the backend server.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Member

      Parameter

      +

      Type

      +

      Description

      +

      address

      +

      String

      +

      Specifies the IP address of the backend server.

      +

      The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11. The IP address can only be the IP address of the primary NIC.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.

        +
      • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

        +
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

        +
      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server to receive requests.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      subnet_cidr_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. This subnet must be in the VPC as the subnet of the load balancer associated with the backend server. Only IPv4 subnets are supported. If the value is left blank, the backend server is not in the load balancer's VPC.

      +

      weight

      +

      Integer

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights.

      +

      If the weight is 0, the backend server will not accept new requests.

      +

      This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Minimum: 0

      +

      Maximum: 100

      +

      Default: 1

      +

      ip_version

      +

      String

      +

      This is a read-only attribute, which is automatically generated based on the address parameter. The value can be v4 or v6.

      +

      Default: v4

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members/1923923e-fe8a-484f-bdbc-e11559b1f48f
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "member" : {
      +    "name" : "My member",
      +    "weight" : 10,
      +    "admin_state_up" : false,
      +    "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "address" : "120.10.10.16",
      +    "protocol_port" : 89,
      +    "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f",
      +    "operating_status" : "NO_MONITOR",
      +    "ip_version" : "v4"
      +  },
      +  "request_id" : "45688823-45f1-40cd-9d24-e51a9574a45b"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/ShowMember.rst b/elb/api-ref/ShowMember.rst new file mode 100644 index 000000000..cb16f3ca4 --- /dev/null +++ b/elb/api-ref/ShowMember.rst @@ -0,0 +1,194 @@ +Viewing Details of a Backend Server +=================================== + +Function +^^^^^^^^ + +This API is used to view details of a backend server. + +URI +^^^ + +GET /v3/{project_id}/elb/pools/{pool_id}/members/{member_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + project_id Yes String Specifies the project ID. + pool_id Yes String Specifies the ID of the backend server group. + member_id Yes String Specifies the backend server ID. + ========== ========= ====== ============================================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + +------------+--------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+==================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+--------------------------------------------------+---------------------------------------------------+ + | member | `Member <#ShowMember__response_Member>`__ object | Specifies the backend server. | + +------------+--------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 4** Member + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | address | String | Specifies the IP address of the | + | | | backend server. | + | | | | + | | | The IP address must be in the subnet | + | | | specified by **subnet_cidr_id**, for | + | | | example, 192.168.3.11. The IP address | + | | | can only be the IP address of the | + | | | primary NIC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | Although this parameter can be used | + | | | in the APIs for creating and updating | + | | | backend servers, its actual value | + | | | depends on whether cloud servers | + | | | exist. If cloud servers exist, the | + | | | value is **true**. Otherwise, the | + | | | value is **false**. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | backend server. The value can be one | + | | | of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group to which the backend server | + | | | belongs. | + | | | | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server to receive requests. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_cidr_id | String | Specifies the ID of the subnet where | + | | | the backend server works. This subnet | + | | | must be in the VPC as the subnet of | + | | | the load balancer associated with the | + | | | backend server. Only IPv4 subnets are | + | | | supported. If the value is left | + | | | blank, the backend server is not in | + | | | the load balancer's VPC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the weight of the backend | + | | | server. | + | | | | + | | | Requests are routed to backend | + | | | servers in the same backend server | + | | | group based on their weights. | + | | | | + | | | If the weight is 0, the backend | + | | | server will not accept new requests. | + | | | | + | | | This parameter is invalid when | + | | | **lb_algorithm** is set to | + | | | **SOURCE_IP** for the backend server | + | | | group that contains the backend | + | | | server. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **100** | + | | | | + | | | Default: **1** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | This is a read-only attribute, which | + | | | is automatically generated based on | + | | | the **address** parameter. The value | + | | | can be **v4** or **v6**. | + | | | | + | | | Default: **v4** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members/1923923e-fe8a-484f-bdbc-e11559b1f48f + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "member" : { + "name" : "My member", + "weight" : 10, + "admin_state_up" : false, + "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "address" : "120.10.10.16", + "protocol_port" : 89, + "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f", + "operating_status" : "NO_MONITOR", + "ip_version" : "v4" + }, + "request_id" : "45688823-45f1-40cd-9d24-e51a9574a45b" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/ShowPool.html b/elb/api-ref/ShowPool.html new file mode 100644 index 000000000..73da88648 --- /dev/null +++ b/elb/api-ref/ShowPool.html @@ -0,0 +1,410 @@ + + +

      Viewing Details of a Backend Server Group

      +

      Function

      This API is used to view details of a backend server group.

      + +

      URI

      GET /v3/{project_id}/elb/pools/{pool_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      pool

      +

      Pool object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Pool

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      id

      +

      String

      +

      Specifies the backend server group ID.

      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers in the backend server group.

      +

      The value can be ROUND_ROBIN (weighted round robin), LEAST_CONNECTIONS (weighted least connections), or SOURCE_IP (source IP hash).

      +

      When the value is SOURCE_IP, the weight parameter is invalid.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      If only listener_id is specified during the creation of the backend server group, the ID of the loadbalancers parameter in the response is the ID of the load balancer to which the listener is added.

      +

      members

      +

      Array of MemberRef objects

      +

      Lists the backend servers in the backend server group.

      +

      name

      +

      String

      +

      Specifies the backend server group name.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. The protocol can be TCP, UDP, or HTTP.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      session_persistence

      +

      SessionPersistence object

      +

      Specifies the sticky session.

      +

      ip_version

      +

      String

      +

      Specifies the IP version supported by the backend server group.

      +
      • Shared load balancers: The default value is v4.

        +
      • Dedicated load balancers: The value can be dualstack, v4, or v6.

        +
      +

      When the protocol of the backend server group is TCP or UDP, ip_version is set to dualstack, indicating that both IPv4 and IPv6 are supported.

      +

      When the protocol of the backend server group is HTTP, ip_version is set to v4.

      +

      IPv6 is unsupported. Only v4 is returned.

      +

      Default: dualstack

      +

      slow_start

      +

      SlowStart object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 5 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + +
      Table 6 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + +
      Table 7 MemberRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 8 SessionPersistence

      Parameter

      +

      Type

      +

      Description

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter will take effect only when type is set to APP_COOKIE.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + +
      Table 9 SlowStart

      Parameter

      +

      Type

      +

      Description

      +

      enable

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Example Requests

      GET
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "pool" : {
      +    "lb_algorithm" : "LEAST_CONNECTIONS",
      +    "protocol" : "TCP",
      +    "description" : "My pool",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "098b2f68-af1c-41a9-8efd-69958722af62"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "session_persistence" : "",
      +    "healthmonitor_id" : "",
      +    "listeners" : [ {
      +      "id" : "0b11747a-b139-492f-9692-2df0b1c87193"
      +    }, {
      +      "id" : "61942790-2367-482a-8b0e-93840ea2a1c6"
      +    }, {
      +      "id" : "fd8f954c-f0f8-4d39-bb1d-41637cd6b1be"
      +    } ],
      +    "members" : [ ],
      +    "id" : "36ce7086-a496-4666-9064-5ba0e6840c75",
      +    "name" : "My pool.",
      +    "ip_version" : "dualstack"
      +  },
      +  "request_id" : "c1a60da2-1ec7-4a1c-b4cc-73e1a57b368e"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/ShowPool.rst b/elb/api-ref/ShowPool.rst new file mode 100644 index 000000000..2d141024a --- /dev/null +++ b/elb/api-ref/ShowPool.rst @@ -0,0 +1,344 @@ +Viewing Details of a Backend Server Group +========================================= + +Function +^^^^^^^^ + +This API is used to view details of a backend server group. + +URI +^^^ + +GET /v3/{project_id}/elb/pools/{pool_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + project_id Yes String Specifies the project ID. + pool_id Yes String Specifies the ID of the backend server group. + ========== ========= ====== ============================================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + ========== ========================================== =============================================================== + Parameter Type Description + ========== ========================================== =============================================================== + request_id String Specifies the request ID. The value is automatically generated. + pool `Pool <#ShowPool__response_Pool>`__ object Specifies the backend server group. + ========== ========================================== =============================================================== + +.. table:: **Table 4** Pool + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. The | + | | | value can only be updated to | + | | | **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server group | + | | | ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm used by the load balancer | + | | | to route requests to backend servers | + | | | in the backend server group. | + | | | | + | | | The value can be **ROUND_ROBIN** | + | | | (weighted round robin), | + | | | **LEAST_CONNECTIONS** (weighted least | + | | | connections), or **SOURCE_IP** | + | | | (source IP hash). | + | | | | + | | | When the value is **SOURCE_IP**, the | + | | | **weight** parameter is invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the listeners associated with | + | | `ListenerRef | the backend server group. | + | | <#ShowPool__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Lists the IDs of load balancers | + | | `LoadBalancerRef <#S | associated with the backend server | + | | howPool__response_LoadBalancerRef>`__ | group. | + | | objects | | + | | | If only **listener_id** is specified | + | | | during the creation of the backend | + | | | server group, the ID of the | + | | | **loadbalancers** parameter in the | + | | | response is the ID of the load | + | | | balancer to which the listener is | + | | | added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array of | Lists the backend servers in the | + | | `MemberR | backend server group. | + | | ef <#ShowPool__response_MemberRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server group | + | | | name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | backend server group to receive | + | | | requests. The protocol can be TCP, | + | | | UDP, or HTTP. | + | | | | + | | | - For UDP listeners, the protocol of | + | | | the backend server group must be | + | | | UDP. | + | | | | + | | | - For TCP listeners, the protocol of | + | | | the backend server group must be | + | | | TCP. | + | | | | + | | | - For HTTP or HTTPS listeners, the | + | | | protocol of the backend server | + | | | group must be HTTP. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | `SessionPersistence <#Show | Specifies the sticky session. | + | | Pool__response_SessionPersistence>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | Specifies the IP version supported by | + | | | the backend server group. | + | | | | + | | | - Shared load balancers: The default | + | | | value is **v4**. | + | | | | + | | | - Dedicated load balancers: The | + | | | value can be **dualstack**, | + | | | **v4**, or **v6**. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP or UDP, | + | | | **ip_version** is set to | + | | | **dualstack**, indicating that both | + | | | IPv4 and IPv6 are supported. | + | | | | + | | | When the protocol of the backend | + | | | server group is HTTP, **ip_version** | + | | | is set to **v4**. | + | | | | + | | | IPv6 is unsupported. Only **v4** is | + | | | returned. | + | | | | + | | | Default: **dualstack** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | slow_start | `SlowSta | Specifies whether to enable slow | + | | rt <#ShowPool__response_SlowStart>`__ | start. After you enable slow start, | + | | object | new backend servers added to the | + | | | backend server group are warmed up, | + | | | and the number of requests they can | + | | | receive increases linearly during the | + | | | configured slow start duration. | + | | | | + | | | This parameter can be used when the | + | | | protocol of the backend server group | + | | | is HTTP or HTTPS. An error will be | + | | | returned if the protocol is not HTTP | + | | | or HTTPS. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 6** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 7** MemberRef + + ========= ====== ================================ + Parameter Type Description + ========= ====== ================================ + id String Specifies the backend server ID. + ========= ====== ================================ + +.. table:: **Table 8** SessionPersistence + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter will take effect only | + | | | when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | The value can contain only letters, | + | | | digits, hyphens (-), underscores (_), | + | | | and periods (.). | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the sticky session type. | + | | | The value can be **SOURCE_IP**, | + | | | **HTTP_COOKIE**, or **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, only | + | | | **SOURCE_IP** takes effect. | + | | | | + | | | - For dedicated load balancers, if | + | | | the protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can only be **HTTP_COOKIE**. | + | | | | + | | | - For shared load balancers, if the | + | | | protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can be **HTTP_COOKIE** or | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the stickiness duration, in | + | | | minutes. This parameter will not take | + | | | effect when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, the | + | | | value ranges from **1** to **60**, | + | | | and the default value is **1**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is HTTP or HTTPS, the | + | | | value ranges from **1** to | + | | | **1440**, and the default value is | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** SlowStart + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | enable | Boolean | Specifies whether to enable slow | + | | | start. | + | | | | + | | | **true** indicates that this function | + | | | is enabled, and **false** indicates | + | | | this function is disabled. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | duration | Integer | Specifies the slow start duration, in | + | | | seconds. | + | | | | + | | | The value ranges from **30** to | + | | | **1200**, and the default value is | + | | | **30**. | + | | | | + | | | Minimum: **30** | + | | | | + | | | Maximum: **1200** | + | | | | + | | | Default: **30** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75 + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "pool" : { + "lb_algorithm" : "LEAST_CONNECTIONS", + "protocol" : "TCP", + "description" : "My pool", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "098b2f68-af1c-41a9-8efd-69958722af62" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "session_persistence" : "", + "healthmonitor_id" : "", + "listeners" : [ { + "id" : "0b11747a-b139-492f-9692-2df0b1c87193" + }, { + "id" : "61942790-2367-482a-8b0e-93840ea2a1c6" + }, { + "id" : "fd8f954c-f0f8-4d39-bb1d-41637cd6b1be" + } ], + "members" : [ ], + "id" : "36ce7086-a496-4666-9064-5ba0e6840c75", + "name" : "My pool.", + "ip_version" : "dualstack" + }, + "request_id" : "c1a60da2-1ec7-4a1c-b4cc-73e1a57b368e" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/ShowQuota.html b/elb/api-ref/ShowQuota.html new file mode 100644 index 000000000..2a9ae681c --- /dev/null +++ b/elb/api-ref/ShowQuota.html @@ -0,0 +1,210 @@ + + +

      Querying Quotas

      +

      Function

      This API is used to query resource quotas of a specific user.

      + +

      URI

      GET /v3/{project_id}/elb/quotas

      + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 3 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      quota

      +

      Quota object

      +

      Specifies the quota details.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Quota

      Parameter

      +

      Type

      +

      Description

      +

      certificate

      +

      Integer

      +

      Specifies the certificate quota. -1 indicates that the quota is not limited.

      +

      healthmonitor

      +

      Integer

      +

      Specifies the health check quota. -1 indicates that the quota is not limited.

      +

      l7policy

      +

      Integer

      +

      Specifies the forwarding policy quota. -1 indicates that the quota is not limited.

      +

      listener

      +

      Integer

      +

      Specifies the listener quota. -1 indicates that the quota is not limited.

      +

      loadbalancer

      +

      Integer

      +

      Specifies the load balancer quota. -1 indicates that the quota is not limited.

      +

      member

      +

      Integer

      +

      Specifies the backend server quota. -1 indicates that the quota is not limited.

      +

      members_per_pool

      +

      Integer

      +

      Specifies the quota of backend servers in a backend server group. -1 indicates that the quota is not limited.

      +

      pool

      +

      Integer

      +

      Specifies the backend server group quota. -1 indicates that the quota is not limited.

      +

      ipgroup

      +

      Integer

      +

      Specifies the IP address group quota. -1 indicates that the quota is not limited.

      +

      This parameter is unsupported. Please do not use it.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Example Requests

      GET https://{elb_endpoint}/v3/{project_id}/elb/quotas
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "quota" : {
      +    "member" : 500,
      +    "members_per_pool" : 500,
      +    "certificate" : 120,
      +    "l7policy" : 500,
      +    "listener" : 100,
      +    "loadbalancer" : 50,
      +    "healthmonitor" : -1,
      +    "ipgroup" : 50,
      +    "pool" : 500,
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24"
      +  },
      +  "request_id" : "8d7eba6f-ec79-42d2-8d8c-16149645549d"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Quota + + + diff --git a/elb/api-ref/ShowQuota.rst b/elb/api-ref/ShowQuota.rst new file mode 100644 index 000000000..3bf56a035 --- /dev/null +++ b/elb/api-ref/ShowQuota.rst @@ -0,0 +1,141 @@ +Querying Quotas +=============== + +Function +^^^^^^^^ + +This API is used to query resource quotas of a specific user. + +URI +^^^ + +GET /v3/{project_id}/elb/quotas + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 3** Response body parameters + + ========== ============================================= =============================================================== + Parameter Type Description + ========== ============================================= =============================================================== + request_id String Specifies the request ID. The value is automatically generated. + quota `Quota <#ShowQuota__response_Quota>`__ object Specifies the quota details. + ========== ============================================= =============================================================== + +.. table:: **Table 4** Quota + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | certificate | Integer | Specifies the certificate quota. | + | | | **-1** indicates that the quota is | + | | | not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor | Integer | Specifies the health check quota. | + | | | **-1** indicates that the quota is | + | | | not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7policy | Integer | Specifies the forwarding policy | + | | | quota. **-1** indicates that the | + | | | quota is not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener | Integer | Specifies the listener quota. **-1** | + | | | indicates that the quota is not | + | | | limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancer | Integer | Specifies the load balancer quota. | + | | | **-1** indicates that the quota is | + | | | not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member | Integer | Specifies the backend server quota. | + | | | **-1** indicates that the quota is | + | | | not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members_per_pool | Integer | Specifies the quota of backend | + | | | servers in a backend server group. | + | | | **-1** indicates that the quota is | + | | | not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pool | Integer | Specifies the backend server group | + | | | quota. **-1** indicates that the | + | | | quota is not limited. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipgroup | Integer | Specifies the IP address group quota. | + | | | **-1** indicates that the quota is | + | | | not limited. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + GET https://{elb_endpoint}/v3/{project_id}/elb/quotas + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "quota" : { + "member" : 500, + "members_per_pool" : 500, + "certificate" : 120, + "l7policy" : 500, + "listener" : 100, + "loadbalancer" : 50, + "healthmonitor" : -1, + "ipgroup" : 50, + "pool" : 500, + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24" + }, + "request_id" : "8d7eba6f-ec79-42d2-8d8c-16149645549d" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Quota `__ diff --git a/elb/api-ref/UpdateCertificate.html b/elb/api-ref/UpdateCertificate.html new file mode 100644 index 000000000..88d0549e9 --- /dev/null +++ b/elb/api-ref/UpdateCertificate.html @@ -0,0 +1,358 @@ + + +

      Updating a Certificate

      +

      Function

      This API is used to update an SSL certificate.

      + +

      URI

      PUT /v3/{project_id}/elb/certificates/{certificate_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies a certificate ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID of the certificate.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate

      +

      Yes

      +

      UpdateCertificateOption object

      +

      Specifies request parameters for updating a certificate.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateCertificateOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate

      +

      No

      +

      String

      +

      Specifies the private key of the certificate. The value must be PEM encoded.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      name

      +

      No

      +

      String

      +

      Specifies the certificate name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      private_key

      +

      No

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.

        +
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.

        +
      +

      domain

      +

      No

      +

      String

      +

      Specifies the domain names used by the server certificate.

      +
      • This parameter will take effect only when type is set to server, and its default value is "".

        +
      • This parameter will not take effect even if it is passed and type is set to client. However, domain names will still be verified.

        +
      +

      Note:

      +
      • The value can contain 0 to 1024 characters and consists of multiple common domain names or wildcard domain names separated by commas. A maximum of 30 domain names are allowed.

        +
      • A common domain name consists of several labels separated by periods (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit. Example: www.test.com

        +
      • A wildcard domain name is a domain name starts with an asterisk (*). Example: *.test.com

        +
      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 5 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      certificate

      +

      CertificateInfo object

      +

      Specifies the certificate.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 CertificateInfo

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is unsupported. Please do not use it.

      +

      certificate

      +

      String

      +

      Specifies the private key of the certificate. The value must be PEM encoded.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      domain

      +

      String

      +

      Specifies the domain names used by the server certificate.

      +
      • This parameter will take effect only when type is set to server, and its default value is "".

        +
      • This parameter will not take effect even if it is passed and type is set to client. However, domain names will still be verified.

        +
      +

      Note:

      +
      • The value can contain 0 to 1024 characters and consists of multiple common domain names or wildcard domain names separated by commas. A maximum of 30 domain names are allowed.

        +
      • A common domain name consists of several labels separated by periods (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit. Example: www.test.com

        +
      • A wildcard domain name is a domain name starts with an asterisk (*). Example: *.test.com

        +
      +

      Minimum: 1

      +

      Maximum: 1024

      +

      id

      +

      String

      +

      Specifies a certificate ID.

      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.

        +
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.

        +
      +

      type

      +

      String

      +

      Specifies the certificate type. The value can be server or client. server indicates server certificates, and client indicates CA certificates. The default value is server.

      +

      created_at

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      updated_at

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Example Requests

      PUT
      +https://{elb_endponit}/v3/{project_id}/elb/certificates/{certificate_id}
      +
      +{
      +  "certificate" : {
      +    "name" : "My Certificate",
      +    "description" : "Update my Certificate."
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "certificate" : {
      +    "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
      +    "description" : "Update my Certificate.",
      +    "created_at" : "2019-03-31T22:23:51Z",
      +    "expire_time" : "2045-11-17T13:25:47Z",
      +    "id" : "233a325e5e3e4ce8beeb320aa714cc12",
      +    "name" : "My Certificate",
      +    "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
      +    "admin_state_up" : true,
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "updated_at" : "2019-03-31T23:26:49Z",
      +    "type" : "server"
      +  },
      +  "request_id" : "d9abea6b-98ee-4ad4-8c5d-185ded48742f"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/UpdateCertificate.rst b/elb/api-ref/UpdateCertificate.rst new file mode 100644 index 000000000..e6ad6739b --- /dev/null +++ b/elb/api-ref/UpdateCertificate.rst @@ -0,0 +1,321 @@ +Updating a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to update an SSL certificate. + +URI +^^^ + +PUT /v3/{project_id}/elb/certificates/{certificate_id} + +.. table:: **Table 1** Path parameters + + ============== ========= ====== ============================================ + Parameter Mandatory Type Description + ============== ========= ====== ============================================ + certificate_id Yes String Specifies a certificate ID. + project_id Yes String Specifies the project ID of the certificate. + ============== ========= ====== ============================================ + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-------------+-----------+--------------------------------------------+--------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +=============+===========+============================================+============================================+ + | certificate | Yes | `UpdateCertificateOption <#UpdateCertif | Specifies request parameters for updating | + | | | icate__request_UpdateCertificateOption>`__ | a certificate. | + | | | object | | + +-------------+-----------+--------------------------------------------+--------------------------------------------+ + +.. table:: **Table 4** UpdateCertificateOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | certificate | No | String | Specifies the private key | + | | | | of the certificate. The | + | | | | value must be PEM encoded. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the certificate | + | | | | name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | private_key | No | String | Specifies the private key | + | | | | of the server certificate. | + | | | | The value must be PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter will be | + | | | | ignored if **type** is | + | | | | set to **client**. A CA | + | | | | server can still be | + | | | | created and used | + | | | | normally. This parameter | + | | | | will be left blank even | + | | | | if you enter a private | + | | | | key that is not PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter is valid | + | | | | and mandatory only when | + | | | | **type** is set to | + | | | | **server**. If you enter | + | | | | an invalid private key, | + | | | | an error is returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | String | Specifies the domain names | + | | | | used by the server | + | | | | certificate. | + | | | | | + | | | | - This parameter will take | + | | | | effect only when | + | | | | **type** is set to | + | | | | **server**, and its | + | | | | default value is **""**. | + | | | | | + | | | | - This parameter will not | + | | | | take effect even if it | + | | | | is passed and **type** | + | | | | is set to **client**. | + | | | | However, domain names | + | | | | will still be verified. | + | | | | | + | | | | Note: | + | | | | | + | | | | - The value can contain 0 | + | | | | to 1024 characters and | + | | | | consists of multiple | + | | | | common domain names or | + | | | | wildcard domain names | + | | | | separated by commas. A | + | | | | maximum of 30 domain | + | | | | names are allowed. | + | | | | | + | | | | - A common domain name | + | | | | consists of several | + | | | | labels separated by | + | | | | periods (.). Each label | + | | | | can contain a maximum of | + | | | | 63 characters, including | + | | | | letters, digits, and | + | | | | hyphens (-), and must | + | | | | start and end with a | + | | | | letter or digit. | + | | | | Example: www.test.com | + | | | | | + | | | | - A wildcard domain name | + | | | | is a domain name starts | + | | | | with an asterisk (*). | + | | | | Example: \*.test.com | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **1024** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 5** Response body parameters + + +-------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +=============+==================================================+==================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +-------------+--------------------------------------------------+--------------------------------------------------+ + | certificate | `CertificateInfo < | Specifies the certificate. | + | | #UpdateCertificate__response_CertificateInfo>`__ | | + | | object | | + +-------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 6** CertificateInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the private key of the | + | | | certificate. The value must be PEM | + | | | encoded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain names used by | + | | | the server certificate. | + | | | | + | | | - This parameter will take effect | + | | | only when **type** is set to | + | | | **server**, and its default value | + | | | is **""**. | + | | | | + | | | - This parameter will not take | + | | | effect even if it is passed and | + | | | **type** is set to **client**. | + | | | However, domain names will still | + | | | be verified. | + | | | | + | | | Note: | + | | | | + | | | - The value can contain 0 to 1024 | + | | | characters and consists of | + | | | multiple common domain names or | + | | | wildcard domain names separated by | + | | | commas. A maximum of 30 domain | + | | | names are allowed. | + | | | | + | | | - A common domain name consists of | + | | | several labels separated by | + | | | periods (.). Each label can | + | | | contain a maximum of 63 | + | | | characters, including letters, | + | | | digits, and hyphens (-), and must | + | | | start and end with a letter or | + | | | digit. Example: www.test.com | + | | | | + | | | - A wildcard domain name is a domain | + | | | name starts with an asterisk (*). | + | | | Example: \*.test.com | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies a certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate. The value must be | + | | | PEM encoded. | + | | | | + | | | - This parameter will be ignored if | + | | | **type** is set to **client**. A | + | | | CA server can still be created and | + | | | used normally. This parameter will | + | | | be left blank even if you enter a | + | | | private key that is not PEM | + | | | encoded. | + | | | | + | | | - This parameter is valid and | + | | | mandatory only when **type** is | + | | | set to **server**. If you enter an | + | | | invalid private key, an error is | + | | | returned. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. The | + | | | value can be **server** or | + | | | **client**. **server** indicates | + | | | server certificates, and **client** | + | | | indicates CA certificates. The | + | | | default value is **server**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the | + | | | certificate was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the | + | | | certificate was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + https://{elb_endponit}/v3/{project_id}/elb/certificates/{certificate_id} + + { + "certificate" : { + "name" : "My Certificate", + "description" : "Update my Certificate." + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "certificate" : { + "private_key" : "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "description" : "Update my Certificate.", + "created_at" : "2019-03-31T22:23:51Z", + "expire_time" : "2045-11-17T13:25:47Z", + "id" : "233a325e5e3e4ce8beeb320aa714cc12", + "name" : "My Certificate", + "certificate" : "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "admin_state_up" : true, + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "updated_at" : "2019-03-31T23:26:49Z", + "type" : "server" + }, + "request_id" : "d9abea6b-98ee-4ad4-8c5d-185ded48742f" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/UpdateHealthMonitor.html b/elb/api-ref/UpdateHealthMonitor.html new file mode 100644 index 000000000..b8187e81f --- /dev/null +++ b/elb/api-ref/UpdateHealthMonitor.html @@ -0,0 +1,494 @@ + + +

      Updating a Health Check

      +

      Function

      This API is used to update a health check.

      + +

      Constraints

      The health check can be updated only when the provisioning status of the associated load balancer is ACTIVE.

      + +

      URI

      PUT /v3/{project_id}/elb/healthmonitors/{healthmonitor_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Yes

      +

      UpdateHealthMonitorOption object

      +

      Specifies the health check.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateHealthMonitorOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the health check. Two value options are available. true indicates that the health check is enabled, and false indicates that the health check is disabled.

      +

      Default: true

      +

      delay

      +

      No

      +

      Integer

      +

      Specifies the interval between health checks, in seconds.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      domain_name

      +

      No

      +

      String

      +

      Specifies the domain name that HTTP requests are sent to during the health check.

      +

      This parameter is available only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      expected_codes

      +

      No

      +

      String

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 200

      +

      Minimum: 1

      +

      Maximum: 64

      +

      http_method

      +

      No

      +

      String

      +

      Specifies the HTTP method. The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH. This parameter will take effect only when type is set to HTTP.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: GET

      +

      Minimum: 1

      +

      Maximum: 16

      +

      max_retries

      +

      No

      +

      Integer

      +

      Specifies the maximum health check retries.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      max_retries_down

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      monitor_port

      +

      No

      +

      Integer

      +

      Specifies the port used for the health check. If this parameter is left blank, the port of the backend server group will be used by default.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      name

      +

      No

      +

      String

      +

      Specifies the health check name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      timeout

      +

      No

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      url_path

      +

      No

      +

      String

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Default: /

      +

      Minimum: 1

      +

      Maximum: 255

      +

      type

      +

      No

      +

      String

      +

      Specifies the protocol used for the health check.

      +

      The value can be TCP, UDP_CONNECT, HTTP, HTTPS, or PING.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 5 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      healthmonitor

      +

      HealthMonitor object

      +

      Specifies the health check.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 HealthMonitor

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check. Two value options are available. true indicates that the health check is enabled, and false indicates that the health check is disabled.

      +

      Default: true

      +

      delay

      +

      Integer

      +

      Specifies the interval between health checks, in seconds.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      domain_name

      +

      String

      +

      Specifies the domain name that HTTP requests are sent to during the health check.

      +

      This parameter is available only when type is set to HTTP.

      +

      The value is left blank by default, indicating that the virtual IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. This parameter will take effect only when type is set to HTTP.

      +

      The value options are as follows:

      +
      • A specific value, for example, 200

        +
      • A list of values that are separated with commas (,), for example, 200, 202

        +
      • A value range, for example, 200-204

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 200

      +

      http_method

      +

      String

      +

      Specifies the HTTP method. This parameter will take effect only when type is set to HTTP.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, or PATCH.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: GET

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      Minimum: 1

      +

      Maximum: 10

      +

      Default: 3

      +

      monitor_port

      +

      Integer

      +

      Specifies the port used for the health check. If this parameter is left blank, the port of the backend server group will be used by default.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups for which the health check is configured.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      timeout

      +

      Integer

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. It is recommended that you set the value less than that of parameter delay.

      +

      Minimum: 1

      +

      Maximum: 50

      +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The value must start with a slash (/), and the default value is /. This parameter is available only when type is set to HTTP.

      +

      Default: /

      +
      + + + + + + + + + + + + +
      Table 7 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors/c2b210b2-60c4-449d-91e2-9e9ea1dd7441
      +
      +{
      +  "healthmonitor" : {
      +    "name" : "My Healthmonitor update",
      +    "max_retries" : 10,
      +    "delay" : 10
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "request_id" : "08d6ffea-d092-4cfa-860a-e364f3bef1be",
      +  "healthmonitor" : {
      +    "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "name" : "My Healthmonitor update",
      +    "delay" : 10,
      +    "max_retries" : 10,
      +    "pools" : [ {
      +      "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0"
      +    } ],
      +    "admin_state_up" : true,
      +    "timeout" : 30,
      +    "type" : "HTTP",
      +    "expected_codes" : "200",
      +    "url_path" : "/",
      +    "http_method" : "GET"
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/UpdateHealthMonitor.rst b/elb/api-ref/UpdateHealthMonitor.rst new file mode 100644 index 000000000..3faf583e8 --- /dev/null +++ b/elb/api-ref/UpdateHealthMonitor.rst @@ -0,0 +1,445 @@ +Updating a Health Check +======================= + +Function +^^^^^^^^ + +This API is used to update a health check. + +Constraints +^^^^^^^^^^^ + +The health check can be updated only when the provisioning status of the associated load balancer is **ACTIVE**. + +URI +^^^ + +PUT /v3/{project_id}/elb/healthmonitors/{healthmonitor_id} + +.. table:: **Table 1** Path parameters + + ================ ========= ====== ============================== + Parameter Mandatory Type Description + ================ ========= ====== ============================== + healthmonitor_id Yes String Specifies the health check ID. + project_id Yes String Specifies the project ID. + ================ ========= ====== ============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +---------------+-----------+-------------------------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +===============+===========+===========================================+=============================+ + | healthmonitor | Yes | `Upda | Specifies the health check. | + | | | teHealthMonitorOption <#UpdateHealthMonit | | + | | | or__request_UpdateHealthMonitorOption>`__ | | + | | | object | | + +---------------+-----------+-------------------------------------------+-----------------------------+ + +.. table:: **Table 4** UpdateHealthMonitorOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the health check. Two value | + | | | | options are available. | + | | | | **true** indicates that the | + | | | | health check is enabled, | + | | | | and **false** indicates | + | | | | that the health check is | + | | | | disabled. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | delay | No | Integer | Specifies the interval | + | | | | between health checks, in | + | | | | seconds. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **50** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain_name | No | String | Specifies the domain name | + | | | | that HTTP requests are sent | + | | | | to during the health check. | + | | | | | + | | | | This parameter is available | + | | | | only when **type** is set | + | | | | to **HTTP**. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the virtual IP address of | + | | | | the load balancer is used | + | | | | as the destination address | + | | | | of HTTP requests. | + | | | | | + | | | | The value can contain only | + | | | | digits, letters, hyphens | + | | | | (-), and periods (.) and | + | | | | must start with a digit or | + | | | | letter. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **100** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | expected_codes | No | String | Specifies the expected HTTP | + | | | | status code. This parameter | + | | | | will take effect only when | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value options are as | + | | | | follows: | + | | | | | + | | | | - A specific value, for | + | | | | example, 200 | + | | | | | + | | | | - A list of values that | + | | | | are separated with | + | | | | commas (,), for example, | + | | | | 200, 202 | + | | | | | + | | | | - A value range, for | + | | | | example, 200-204 | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **200** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **64** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http_method | No | String | Specifies the HTTP method. | + | | | | The value can be **GET**, | + | | | | **HEAD**, **POST**, | + | | | | **PUT**, **DELETE**, | + | | | | **TRACE**, **OPTIONS**, | + | | | | **CONNECT**, or **PATCH**. | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **HTTP**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **GET** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries | No | Integer | Specifies the maximum | + | | | | health check retries. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **10** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries_down | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **ONLINE** to | + | | | | **OFFLINE**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **10** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | monitor_port | No | Integer | Specifies the port used for | + | | | | the health check. If this | + | | | | parameter is left blank, | + | | | | the port of the backend | + | | | | server group will be used | + | | | | by default. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **65535** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the health check | + | | | | name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | timeout | No | Integer | Specifies the maximum time | + | | | | required for waiting for a | + | | | | response from the health | + | | | | check, in seconds. It is | + | | | | recommended that you set | + | | | | the value less than that of | + | | | | parameter **delay**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **50** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | url_path | No | String | Specifies the HTTP request | + | | | | path for the health check. | + | | | | The value must start with a | + | | | | slash (/), and the default | + | | | | value is /. This parameter | + | | | | is available only when | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | Default: **/** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the protocol used | + | | | | for the health check. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **UDP_CONNECT**, **HTTP**, | + | | | | **HTTPS**, or **PING**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 5** Response body parameters + + +---------------+-------------------------------------------------+-------------------------------------------------+ + | Parameter | Type | Description | + +===============+=================================================+=================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +---------------+-------------------------------------------------+-------------------------------------------------+ + | healthmonitor | `HealthMonitor <# | Specifies the health check. | + | | UpdateHealthMonitor__response_HealthMonitor>`__ | | + | | object | | + +---------------+-------------------------------------------------+-------------------------------------------------+ + +.. table:: **Table 6** HealthMonitor + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. Two value | + | | | options are available. **true** | + | | | indicates that the health check is | + | | | enabled, and **false** indicates that | + | | | the health check is disabled. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the interval between health | + | | | checks, in seconds. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name that HTTP | + | | | requests are sent to during the | + | | | health check. | + | | | | + | | | This parameter is available only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the virtual IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. This parameter will take effect | + | | | only when **type** is set to | + | | | **HTTP**. | + | | | | + | | | The value options are as follows: | + | | | | + | | | - A specific value, for example, 200 | + | | | | + | | | - A list of values that are | + | | | separated with commas (,), for | + | | | example, 200, 202 | + | | | | + | | | - A value range, for example, | + | | | 200-204 | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **200** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP method. This | + | | | parameter will take effect only when | + | | | **type** is set to **HTTP**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | or **PATCH**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **GET** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **10** | + | | | | + | | | Default: **3** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the port used for the | + | | | health check. If this parameter is | + | | | left blank, the port of the backend | + | | | server group will be used by default. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Upda | groups for which the health check is | + | | teHealthMonitor__response_PoolRef>`__ | configured. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the maximum time required | + | | | for waiting for a response from the | + | | | health check, in seconds. It is | + | | | recommended that you set the value | + | | | less than that of parameter | + | | | **delay**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **50** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The value must | + | | | start with a slash (/), and the | + | | | default value is /. This parameter is | + | | | available only when **type** is set | + | | | to **HTTP**. | + | | | | + | | | Default: **/** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/healthmonitors/c2b210b2-60c4-449d-91e2-9e9ea1dd7441 + + { + "healthmonitor" : { + "name" : "My Healthmonitor update", + "max_retries" : 10, + "delay" : 10 + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "request_id" : "08d6ffea-d092-4cfa-860a-e364f3bef1be", + "healthmonitor" : { + "id" : "c2b210b2-60c4-449d-91e2-9e9ea1dd7441", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "name" : "My Healthmonitor update", + "delay" : 10, + "max_retries" : 10, + "pools" : [ { + "id" : "488acc50-6bcf-423d-8f0a-0f4184f5b8a0" + } ], + "admin_state_up" : true, + "timeout" : 30, + "type" : "HTTP", + "expected_codes" : "200", + "url_path" : "/", + "http_method" : "GET" + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/UpdateL7Policy.html b/elb/api-ref/UpdateL7Policy.html new file mode 100644 index 000000000..a44c63334 --- /dev/null +++ b/elb/api-ref/UpdateL7Policy.html @@ -0,0 +1,875 @@ + + +

      Updating a Forwarding Policy

      +

      Function

      This API is used to update a forwarding policy.

      + +

      URI

      PUT /v3/{project_id}/elb/l7policies/{l7policy_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy

      +

      Yes

      +

      UpdateL7PolicyOption object

      +

      Specifies request parameters for updating a forwarding policy.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateL7PolicyOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      name

      +

      No

      +

      String

      +

      Specifies the forwarding policy name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      redirect_listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener that requests are redirected to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_LISTENER.

      +

      Only HTTPS listeners are supported, and the listener cannot be any listener added to other load balancers.

      +

      redirect_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group that requests are forwarded to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_POOL.

      +

      The specified backend server group cannot be the default one associated with the listener, or any backend server group associated with the forwarding policies of other listeners.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      redirect_url_config

      +

      No

      +

      UpdateRedirectUrlConfig object

      +

      Specifies the URL to which requests are forwarded.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      For dedicated load balancers, this parameter will take effect only when advanced forwarding is enabled (enhance_l7policy_enable is set to true). If it is passed when enhance_l7policy_enable is set to false, an error will be returned.

      +

      Format: protocol://host:port/path?query

      +

      At least one of the four parameters (protocol, host, port, and path) must be passed, or their values cannot be set to ${xxx} at the same time. (${xxx} indicates that the value in the request will be inherited. For example, ${host} indicates the host in the URL to be redirected.)

      +

      The values of protocol and port cannot be the same as those of the associated listener, and either host or path must be passed or their values cannot be ${xxx} at the same time.

      +

      This parameter is unsupported. Please do not use it.

      +

      fixed_response_config

      +

      No

      +

      UpdateFixtedResponseConfig object

      +

      Specifies the configuration of the page that will be returned. This parameter will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      This parameter is unsupported. Please do not use it.

      +

      rules

      +

      No

      +

      Array of UpdateL7RuleOption objects

      +

      Lists the forwarding rules in the forwarding policy.

      +

      The list can contain a maximum of 10 forwarding rules (if conditions is specified, a condition is considered as a rule).

      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      priority

      +

      No

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter is available only for dedicated load balancers and will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      A smaller value indicates a higher priority. The value must be unique for forwarding policies of the same listener.

      +

      If action is set to REDIRECT_TO_LISTENER, the value can only be 0, indicating that REDIRECT_TO_LISTENER has the highest priority.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 0

      +

      Maximum: 10000

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 UpdateRedirectUrlConfig

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      protocol

      +

      No

      +

      String

      +

      Specifies the protocol for redirection. The default value is ${protocol}, indicating that the protocol of the request will be used.

      +

      Value options:

      +
      • HTTP

        +
      • HTTPS

        +
      • ${protocol}

        +
      +

      Minimum: 1

      +

      Maximum: 36

      +

      host

      +

      No

      +

      String

      +

      Specifies the host name that requests are redirected to. The value can contain only letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. The default value is ${host}, indicating that the host of the request will be used.

      +

      Default: ${host}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      port

      +

      No

      +

      String

      +

      Specifies the port that requests are redirected to. The default value is ${port}, indicating that the port of the request will be used.

      +

      Default: ${port}

      +

      Minimum: 1

      +

      Maximum: 16

      +

      path

      +

      No

      +

      String

      +

      Specifies the path that requests are redirected to. The default value is ${path}, indicating that the path of the request will be used.

      +

      The value can contain only letters, digits, and special characters _-';@^- %#&$.*+?,=!:|/()[]{} and must start with a slash (/).

      +

      Default: ${path}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      query

      +

      No

      +

      String

      +

      Specifies the query string set in the URL for redirection. The default value is ${query}, indicating that the query string of the request will be used.

      +

      For example, in the URL https://www.xxx.com:8080/elb?type=loadbalancer, ${query} indicates type=loadbalancer. If this parameter is set to ${query}&name=my_name, the URL will be redirected to https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name.

      +

      The value is case-sensitive and can contain only letters, digits, and special characters !$&'()*+,-./:;=?@^_`

      +

      Default: ${query}

      +

      Minimum: 0

      +

      Maximum: 128

      +

      status_code

      +

      No

      +

      String

      +

      Specifies the status code returned after the requests are redirected.

      +

      Value options:

      +
      • 301

        +
      • 302

        +
      • 303

        +
      • 307

        +
      • 308

        +
      +

      Minimum: 1

      +

      Maximum: 16

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 UpdateFixtedResponseConfig

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      status_code

      +

      No

      +

      String

      +

      Specifies the HTTP status code configured in the forwarding rule. The value can be any integer in the range of 200–299, 400–499, or 500–599.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      content_type

      +

      No

      +

      String

      +

      Specifies the format of the response body.

      +

      Value options:

      +
      • text/plain

        +
      • text/css

        +
      • text/html

        +
      • application/javascript

        +
      • application/json

        +
      +

      Minimum: 1

      +

      Maximum: 64

      +

      message_body

      +

      No

      +

      String

      +

      Specifies the content of the response body.

      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 UpdateL7RuleOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      compare_type

      +

      No

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match item. For example, if an HTTP header is used for matching, key is the name of the HTTP header parameter.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      value

      +

      No

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      conditions

      +

      No

      +

      Array of UpdateRuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule. This parameter will take effect when enhance_l7policy_enable is set to true.

      +

      If conditions is specified, the values of key and value are invalid, and its value contains all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique. Only full update is supported.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 8 UpdateRuleCondition

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      No

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 9 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      l7policy

      +

      L7Policy object

      +

      Specifies the forwarding policy.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 10 L7Policy

      Parameter

      +

      Type

      +

      Description

      +

      action

      +

      String

      +

      Specifies where requests will be forwarded. The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests will be forwarded to another backend server group.

        +
      • REDIRECT_TO_LISTENER: Requests will be redirected to an HTTPS listener.

        +
      +

      REDIRECT_TO_LISTENER has the highest priority. If requests are to be redirected to an HTTPS listener, other forwarding policies of the listener will become invalid.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • If action is set to REDIRECT_TO_POOL, the forwarding policy can be added to an HTTP or HTTPS listener.

        +
      • If action is set to REDIRECT_TO_LISTENER, the forwarding policy can be added to an HTTP listener.

        +
      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      position

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter cannot be updated.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 100

      +

      project_id

      +

      String

      +

      Specifies the project ID of the forwarding policy.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding policy.

      +

      The value can only be ACTIVE.

      +

      Default: ACTIVE

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener that requests are redirected to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_LISTENER.

      +

      Only HTTPS listeners are supported, and the listener cannot be any listener added to other load balancers.

      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group that requests are forwarded to.

      +

      This parameter is valid and mandatory only when action is set to REDIRECT_TO_POOL.

      +

      The specified backend server group cannot be the default one associated with the listener, or any backend server group associated with the forwarding policies of other listeners.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which requests are forwarded.

      +

      Format: protocol://host:port/path?query

      +

      This parameter is unsupported. Please do not use it.

      +

      rules

      +

      Array of RuleRef objects

      +

      Lists the forwarding rules in the forwarding policy.

      +

      redirect_url_config

      +

      RedirectUrlConfig object

      +

      Specifies the URL to which requests are forwarded.

      +

      For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      For dedicated load balancers, this parameter will take effect only when advanced forwarding is enabled (enhance_l7policy_enable is set to true). If it is passed when enhance_l7policy_enable is set to false, an error will be returned.

      +

      Format: protocol://host:port/path?query

      +

      At least one of the four parameters (protocol, host, port, and path) must be passed, or their values cannot be set to ${xxx} at the same time. (${xxx} indicates that the value in the request will be inherited. For example, ${host} indicates the host in the URL to be redirected.)

      +

      The values of protocol and port cannot be the same as those of the associated listener, and either host or path must be passed or their values cannot be ${xxx} at the same time.

      +

      This parameter is unsupported. Please do not use it.

      +

      fixed_response_config

      +

      FixtedResponseConfig object

      +

      Specifies the configuration of the page that will be returned. This parameter will take effect when enhance_l7policy_enable is set to true. If this parameter is passed and enhance_l7policy_enable is set to false, an error will be returned. For shared load balancers, this parameter is not supported. If it is passed, an error will be returned.

      +

      This parameter is unsupported. Please do not use it.

      +

      priority

      +

      Integer

      +

      Specifies the forwarding policy priority. This parameter is available only for dedicated load balancers and will take effect when enhance_l7policy_enable is set to true.

      +

      A smaller value indicates a higher priority. The value must be unique for each forwarding policy of the same listener.

      +

      If action is set to REDIRECT_TO_LISTENER, the value can only be 0, indicating that REDIRECT_TO_LISTENER has the highest priority.

      +
      • If enhance_l7policy_enable is set to false, forwarding policies are automatically prioritized based on the original sorting logic. Forwarding policy priorities are independent of each other regardless of domain names. If forwarding policies use the same domain name, their priorities follow the order of exact match (EQUAL_TO), prefix match (STARTS_WITH), and regular expression match (REGEX). If prefix match is used for matching, the longer the path, the higher the priority. If a forwarding policy contains only a domain name without a path specified, the path is /, and prefix match is used by default.

        +
      • If enhance_l7policy_enable is set to true and this parameter is not passed, the priority will set to a sum of 1 and the highest priority of existing forwarding policy in the same listener by default. There will be two cases: a) If the highest priority of existing forwarding policies is the maximum (10,000), the forwarding policy will fail to create because the final priority for creating the forwarding policy is the sum of 1 and 10,000, which exceeds the maximum. In this case, please specify a value or adjust the priorities of existing forwarding policies. b) If no forwarding policies exist, the highest priority of existing forwarding policies will set to 1 by default.

        +
      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 0

      +

      Maximum: 10000

      +
      + + + + + + + + + + + + +
      Table 11 RuleRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 12 RedirectUrlConfig

      Parameter

      +

      Type

      +

      Description

      +

      protocol

      +

      String

      +

      Specifies the protocol for redirection. The default value is ${protocol}, indicating that the protocol of the request will be used.

      +

      Value options:

      +
      • HTTP

        +
      • HTTPS

        +
      • ${protocol}

        +
      +

      Minimum: 1

      +

      Maximum: 36

      +

      host

      +

      String

      +

      Specifies the host name that requests are redirected to. The value can contain only letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. The default value is ${host}, indicating that the host of the request will be used.

      +

      Default: ${host}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      port

      +

      String

      +

      Specifies the port that requests are redirected to. The default value is ${port}, indicating that the port of the request will be used.

      +

      Default: ${port}

      +

      Minimum: 1

      +

      Maximum: 16

      +

      path

      +

      String

      +

      Specifies the path that requests are redirected to. The default value is ${path}, indicating that the path of the request will be used. The value can contain only letters, digits, and special characters _-';@^- %#&$.*+?,=!:|/()[]{} and must start with a slash (/).

      +

      Default: ${path}

      +

      Minimum: 1

      +

      Maximum: 128

      +

      query

      +

      String

      +

      Specifies the query string set in the URL for redirection. The default value is ${query}, indicating that the query string of the request will be used.

      +

      For example, in the URL https://www.xxx.com:8080/elb?type=loadbalancer, ${query} indicates type=loadbalancer. If this parameter is set to ${query}&name=my_name, the URL will be redirected to https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name.

      +

      The value is case-sensitive and can contain only letters, digits, and special characters !$&'()*+,-./:;=?@^_`

      +

      Default: ${query}

      +

      Minimum: 0

      +

      Maximum: 128

      +

      status_code

      +

      String

      +

      Specifies the status code returned after the requests are redirected.

      +

      Value options:

      +
      • 301

        +
      • 302

        +
      • 303

        +
      • 307

        +
      • 308

        +
      +

      Minimum: 1

      +

      Maximum: 16

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 13 FixtedResponseConfig

      Parameter

      +

      Type

      +

      Description

      +

      status_code

      +

      String

      +

      Specifies the HTTP status code configured in the forwarding policy. The value can be any integer in the range of 200–299, 400–499, or 500–599.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      content_type

      +

      String

      +

      Specifies the format of the response body.

      +

      Value options:

      +
      • text/plain

        +
      • text/css

        +
      • text/html

        +
      • application/javascript

        +
      • application/json

        +
      +

      Minimum: 0

      +

      Maximum: 32

      +

      message_body

      +

      String

      +

      Specifies the content of the response body.

      +

      Minimum: 0

      +

      Maximum: 1024

      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be
      +
      +{
      +  "l7policy" : {
      +    "name" : "My policy.",
      +    "description" : "Update policy.",
      +    "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050"
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "request_id" : "e5c07525-1470-47b6-9b0c-567527a036aa",
      +  "l7policy" : {
      +    "description" : "Update policy.",
      +    "admin_state_up" : true,
      +    "rules" : [ ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab",
      +    "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050",
      +    "action" : "REDIRECT_TO_LISTENER",
      +    "position" : 100,
      +    "provisioning_status" : "ACTIVE",
      +    "id" : "cf4360fd-8631-41ff-a6f5-b72c35da74be",
      +    "name" : "My policy."
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/UpdateL7Policy.rst b/elb/api-ref/UpdateL7Policy.rst new file mode 100644 index 000000000..7f309f4fc --- /dev/null +++ b/elb/api-ref/UpdateL7Policy.rst @@ -0,0 +1,1060 @@ +Updating a Forwarding Policy +============================ + +Function +^^^^^^^^ + +This API is used to update a forwarding policy. + +URI +^^^ + +PUT /v3/{project_id}/elb/l7policies/{l7policy_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + project_id Yes String Specifies the project ID. + =========== ========= ====== =================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=============================================+=============================================+ + | l7policy | Yes | `UpdateL7PolicyOption <#Updat | Specifies request parameters for updating a | + | | | eL7Policy__request_UpdateL7PolicyOption>`__ | forwarding policy. | + | | | object | | + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + +.. table:: **Table 4** UpdateL7PolicyOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding policy. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | forwarding policy. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the forwarding | + | | | | policy name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_listener_id | No | String | Specifies the ID of the | + | | | | listener that requests are | + | | | | redirected to. | + | | | | | + | | | | This parameter is valid and | + | | | | mandatory only when | + | | | | **action** is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | Only HTTPS listeners are | + | | | | supported, and the listener | + | | | | cannot be any listener | + | | | | added to other load | + | | | | balancers. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_pool_id | No | String | Specifies the ID of the | + | | | | backend server group that | + | | | | requests are forwarded to. | + | | | | | + | | | | This parameter is valid and | + | | | | mandatory only when | + | | | | **action** is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | The specified backend | + | | | | server group cannot be the | + | | | | default one associated with | + | | | | the listener, or any | + | | | | backend server group | + | | | | associated with the | + | | | | forwarding policies of | + | | | | other listeners. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_LISTENER**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_url_config | No | `UpdateRedirectUrlConfig | Specifies the URL to which | + | | | <#UpdateL7Policy__request_ | requests are forwarded. | + | | | UpdateRedirectUrlConfig>`__ | | + | | | object | For shared load balancers, | + | | | | this parameter is not | + | | | | supported. If it is passed, | + | | | | an error will be returned. | + | | | | | + | | | | For dedicated load | + | | | | balancers, this parameter | + | | | | will take effect only when | + | | | | advanced forwarding is | + | | | | enabled | + | | | | ( | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**). If it | + | | | | is passed when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, an | + | | | | error will be returned. | + | | | | | + | | | | Format: | + | | | | *proto | + | | | | col://host:port/path?query* | + | | | | | + | | | | At least one of the four | + | | | | parameters (**protocol**, | + | | | | **host**, **port**, and | + | | | | **path**) must be passed, | + | | | | or their values cannot be | + | | | | set to **${xxx}** at the | + | | | | same time. (**${xxx}** | + | | | | indicates that the value in | + | | | | the request will be | + | | | | inherited. For example, | + | | | | **${host}** indicates the | + | | | | host in the URL to be | + | | | | redirected.) | + | | | | | + | | | | The values of **protocol** | + | | | | and **port** cannot be the | + | | | | same as those of the | + | | | | associated listener, and | + | | | | either **host** or **path** | + | | | | must be passed or their | + | | | | values cannot be **${xxx}** | + | | | | at the same time. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | fixed_response_config | No | `Up | Specifies the configuration | + | | | dateFixtedResponseConfig <# | of the page that will be | + | | | UpdateL7Policy__request_Upd | returned. This parameter | + | | | ateFixtedResponseConfig>`__ | will take effect when | + | | | object | **enhance_l7policy_enable** | + | | | | is set to **true**. If this | + | | | | parameter is passed and | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, an | + | | | | error will be returned. For | + | | | | shared load balancers, this | + | | | | parameter is not supported. | + | | | | If it is passed, an error | + | | | | will be returned. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | rules | No | Array of | Lists the forwarding rules | + | | | `UpdateL7RuleO | in the forwarding policy. | + | | | ption <#UpdateL7Policy__req | | + | | | uest_UpdateL7RuleOption>`__ | The list can contain a | + | | | objects | maximum of 10 forwarding | + | | | | rules (if **conditions** is | + | | | | specified, a condition is | + | | | | considered as a rule). | + | | | | | + | | | | If **type** is set to | + | | | | **HOST_NAME**, **PATH**, | + | | | | **METHOD**, or | + | | | | **SOURCE_IP**, only one | + | | | | forwarding rule can be | + | | | | created for each type. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | priority | No | Integer | Specifies the forwarding | + | | | | policy priority. This | + | | | | parameter is available only | + | | | | for dedicated load | + | | | | balancers and will take | + | | | | effect when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**. If this | + | | | | parameter is passed and | + | | | | **enhance_l7policy_enable** | + | | | | is set to **false**, an | + | | | | error will be returned. For | + | | | | shared load balancers, this | + | | | | parameter is not supported. | + | | | | If it is passed, an error | + | | | | will be returned. | + | | | | | + | | | | A smaller value indicates a | + | | | | higher priority. The value | + | | | | must be unique for | + | | | | forwarding policies of the | + | | | | same listener. | + | | | | | + | | | | If **action** is set to | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | the value can only be | + | | | | **0**, indicating that | + | | | | **REDIRECT_TO_LISTENER** | + | | | | has the highest priority. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **10000** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** UpdateRedirectUrlConfig + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | protocol | No | String | Specifies the protocol for | + | | | | redirection. The default | + | | | | value is **${protocol}**, | + | | | | indicating that the | + | | | | protocol of the request | + | | | | will be used. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **HTTP** | + | | | | | + | | | | - **HTTPS** | + | | | | | + | | | | - **${protocol}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | host | No | String | Specifies the host name | + | | | | that requests are | + | | | | redirected to. The value | + | | | | can contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.) and must start | + | | | | with a letter or digit. The | + | | | | default value is | + | | | | **${host}**, indicating | + | | | | that the host of the | + | | | | request will be used. | + | | | | | + | | | | Default: **${host}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | port | No | String | Specifies the port that | + | | | | requests are redirected to. | + | | | | The default value is | + | | | | **${port}**, indicating | + | | | | that the port of the | + | | | | request will be used. | + | | | | | + | | | | Default: **${port}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | path | No | String | Specifies the path that | + | | | | requests are redirected to. | + | | | | The default value is | + | | | | **${path}**, indicating | + | | | | that the path of the | + | | | | request will be used. | + | | | | | + | | | | The value can contain only | + | | | | letters, digits, and | + | | | | special characters \_-';@^- | + | | | | %#&$.*+?,=!:|/()[]{} and | + | | | | must start with a slash | + | | | | (/). | + | | | | | + | | | | Default: **${path}** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | query | No | String | Specifies the query string | + | | | | set in the URL for | + | | | | redirection. The default | + | | | | value is **${query}**, | + | | | | indicating that the query | + | | | | string of the request will | + | | | | be used. | + | | | | | + | | | | For example, in the URL | + | | | | **https://www.xxx.com:80 | + | | | | 80/elb?type=loadbalancer**, | + | | | | **${query}** indicates | + | | | | **type=loadbalancer**. If | + | | | | this parameter is set to | + | | | | **${query}&name=my_name**, | + | | | | the URL will be redirected | + | | | | to | + | | | | **https:// | + | | | | www.xxx.com:8080/elb?type=l | + | | | | oadbalancer&name=my_name**. | + | | | | | + | | | | The value is case-sensitive | + | | | | and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | !$&'()*+,-./:;=?@^_\` | + | | | | | + | | | | Default: **${query}** | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | status_code | No | String | Specifies the status code | + | | | | returned after the requests | + | | | | are redirected. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **301** | + | | | | | + | | | | - **302** | + | | | | | + | | | | - **303** | + | | | | | + | | | | - **307** | + | | | | | + | | | | - **308** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 6** UpdateFixtedResponseConfig + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | status_code | No | String | Specifies the HTTP status | + | | | | code configured in the | + | | | | forwarding rule. The value | + | | | | can be any integer in the | + | | | | range of 200–299, 400–499, | + | | | | or 500–599. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **16** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | content_type | No | String | Specifies the format of the | + | | | | response body. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **text/plain** | + | | | | | + | | | | - **text/css** | + | | | | | + | | | | - **text/html** | + | | | | | + | | | | - | + | | | | **application/javascript** | + | | | | | + | | | | - **application/json** | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **64** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | message_body | No | String | Specifies the content of | + | | | | the response body. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **1024** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 7** UpdateL7RuleOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | No | String | Specifies how requests are | + | | | | matched with the domain | + | | | | name or URL. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, this | + | | | | parameter can only be | + | | | | set to **EQUAL_TO**. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, this parameter | + | | | | can be set to **REGEX**, | + | | | | **STARTS_WITH**, or | + | | | | **EQUAL_TO**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. The | + | | | | value is fixed at | + | | | | **false**. This parameter | + | | | | can be updated but remains | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match item. For example, if | + | | | | an HTTP header is used for | + | | | | matching, **key** is the | + | | | | name of the HTTP header | + | | | | parameter. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | String | Specifies the value of the | + | | | | match item. For example, if | + | | | | a domain name is used for | + | | | | matching, **value** is the | + | | | | domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.) and must | + | | | | start with a letter or | + | | | | digit. If you want to | + | | | | use a wildcard domain | + | | | | name, enter an asterisk | + | | | | (*) as the leftmost | + | | | | label of the domain | + | | | | name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH** and | + | | | | **compare_type** to | + | | | | **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | conditions | No | Array of | Specifies the matching | + | | | `UpdateRuleCondi | conditions of the | + | | | tion <#UpdateL7Policy__requ | forwarding rule. This | + | | | est_UpdateRuleCondition>`__ | parameter will take effect | + | | | objects | when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**. | + | | | | | + | | | | If **conditions** is | + | | | | specified, the values of | + | | | | **key** and **value** are | + | | | | invalid, and its value | + | | | | contains all conditions | + | | | | configured for the | + | | | | forwarding rule. The keys | + | | | | in the list must be the | + | | | | same, whereas each value | + | | | | must be unique. Only full | + | | | | update is supported. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 8** UpdateRuleCondition + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | key | No | String | Specifies the key of match | + | | | | item. This parameter is | + | | | | left blank. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | String | Specifies the value of the | + | | | | match item. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, **key** | + | | | | is left blank, and | + | | | | **value** indicates the | + | | | | domain name, which can | + | | | | contain 1 to 128 | + | | | | characters, including | + | | | | letters, digits, hyphens | + | | | | (-), periods (.), and | + | | | | asterisks (*), and must | + | | | | start with a letter, | + | | | | digit, or asterisk (*). | + | | | | If you want to use a | + | | | | wildcard domain name, | + | | | | enter an asterisk (*) as | + | | | | the leftmost label of | + | | | | the domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, **key** is | + | | | | left blank, and | + | | | | **value** indicates the | + | | | | request path, which can | + | | | | contain 1 to 128 | + | | | | characters. If | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO** for the | + | | | | forwarding rule, the | + | | | | value must start with a | + | | | | slash (/) and can | + | | | | contain only letters, | + | | | | digits, and special | + | | | | characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 9** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | l7policy | `L7Policy <#UpdateL7Policy__response_L7Policy>`__ | Specifies the forwarding policy. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 10** L7Policy + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | action | String | Specifies where requests will be | + | | | forwarded. The value can be one of | + | | | the following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests | + | | | will be forwarded to another | + | | | backend server group. | + | | | | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | will be redirected to an HTTPS | + | | | listener. | + | | | | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. If requests are to | + | | | be redirected to an HTTPS listener, | + | | | other forwarding policies of the | + | | | listener will become invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_POOL**, the | + | | | forwarding policy can be added to | + | | | an HTTP or HTTPS listener. | + | | | | + | | | - If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the | + | | | forwarding policy can be added to | + | | | an HTTP listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding policy | + | | | priority. This parameter cannot be | + | | | updated. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **100** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the | + | | | forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding policy. | + | | | | + | | | The value can only be **ACTIVE**. | + | | | | + | | | Default: **ACTIVE** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener that | + | | | requests are redirected to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + | | | | + | | | Only HTTPS listeners are supported, | + | | | and the listener cannot be any | + | | | listener added to other load | + | | | balancers. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group that requests are | + | | | forwarded to. | + | | | | + | | | This parameter is valid and mandatory | + | | | only when **action** is set to | + | | | **REDIRECT_TO_POOL**. | + | | | | + | | | The specified backend server group | + | | | cannot be the default one associated | + | | | with the listener, or any backend | + | | | server group associated with the | + | | | forwarding policies of other | + | | | listeners. | + | | | | + | | | This parameter cannot be specified | + | | | when **action** is set to | + | | | **REDIRECT_TO_LISTENER**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which requests | + | | | are forwarded. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array of | Lists the forwarding rules in the | + | | `RuleRef < | forwarding policy. | + | | #UpdateL7Policy__response_RuleRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url_config | `RedirectUrlConfig <#UpdateL7P | Specifies the URL to which requests | + | | olicy__response_RedirectUrlConfig>`__ | are forwarded. | + | | object | | + | | | For shared load balancers, this | + | | | parameter is not supported. If it is | + | | | passed, an error will be returned. | + | | | | + | | | For dedicated load balancers, this | + | | | parameter will take effect only when | + | | | advanced forwarding is enabled | + | | | (**enhance_l7policy_enable** is set | + | | | to **true**). If it is passed when | + | | | **enhance_l7policy_enable** is set to | + | | | **false**, an error will be returned. | + | | | | + | | | Format: | + | | | *protocol://host:port/path?query* | + | | | | + | | | At least one of the four parameters | + | | | (**protocol**, **host**, **port**, | + | | | and **path**) must be passed, or | + | | | their values cannot be set to | + | | | **${xxx}** at the same time. | + | | | (**${xxx}** indicates that the value | + | | | in the request will be inherited. For | + | | | example, **${host}** indicates the | + | | | host in the URL to be redirected.) | + | | | | + | | | The values of **protocol** and | + | | | **port** cannot be the same as those | + | | | of the associated listener, and | + | | | either **host** or **path** must be | + | | | passed or their values cannot be | + | | | **${xxx}** at the same time. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | fixed_response_config | `FixtedResponseConfig <#UpdateL7Poli | Specifies the configuration of the | + | | cy__response_FixtedResponseConfig>`__ | page that will be returned. This | + | | object | parameter will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. If this parameter is passed | + | | | and **enhance_l7policy_enable** is | + | | | set to **false**, an error will be | + | | | returned. For shared load balancers, | + | | | this parameter is not supported. If | + | | | it is passed, an error will be | + | | | returned. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | priority | Integer | Specifies the forwarding policy | + | | | priority. This parameter is available | + | | | only for dedicated load balancers and | + | | | will take effect when | + | | | **enhance_l7policy_enable** is set to | + | | | **true**. | + | | | | + | | | A smaller value indicates a higher | + | | | priority. The value must be unique | + | | | for each forwarding policy of the | + | | | same listener. | + | | | | + | | | If **action** is set to | + | | | **REDIRECT_TO_LISTENER**, the value | + | | | can only be **0**, indicating that | + | | | **REDIRECT_TO_LISTENER** has the | + | | | highest priority. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **false**, forwarding | + | | | policies are automatically | + | | | prioritized based on the original | + | | | sorting logic. Forwarding policy | + | | | priorities are independent of each | + | | | other regardless of domain names. | + | | | If forwarding policies use the | + | | | same domain name, their priorities | + | | | follow the order of exact match | + | | | (**EQUAL_TO**), prefix match | + | | | (**STARTS_WITH**), and regular | + | | | expression match (**REGEX**). If | + | | | prefix match is used for matching, | + | | | the longer the path, the higher | + | | | the priority. If a forwarding | + | | | policy contains only a domain name | + | | | without a path specified, the path | + | | | is **/**, and prefix match is used | + | | | by default. | + | | | | + | | | - If **enhance_l7policy_enable** is | + | | | set to **true** and this parameter | + | | | is not passed, the priority will | + | | | set to a sum of 1 and the highest | + | | | priority of existing forwarding | + | | | policy in the same listener by | + | | | default. There will be two cases: | + | | | a) If the highest priority of | + | | | existing forwarding policies is | + | | | the maximum (10,000), the | + | | | forwarding policy will fail to | + | | | create because the final priority | + | | | for creating the forwarding policy | + | | | is the sum of 1 and 10,000, which | + | | | exceeds the maximum. In this case, | + | | | please specify a value or adjust | + | | | the priorities of existing | + | | | forwarding policies. b) If no | + | | | forwarding policies exist, the | + | | | highest priority of existing | + | | | forwarding policies will set to 1 | + | | | by default. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **10000** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 11** RuleRef + + ========= ====== ================================= + Parameter Type Description + ========= ====== ================================= + id String Specifies the forwarding rule ID. + ========= ====== ================================= + +.. table:: **Table 12** RedirectUrlConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | protocol | String | Specifies the protocol for | + | | | redirection. The default value is | + | | | **${protocol}**, indicating that the | + | | | protocol of the request will be used. | + | | | | + | | | Value options: | + | | | | + | | | - **HTTP** | + | | | | + | | | - **HTTPS** | + | | | | + | | | - **${protocol}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | host | String | Specifies the host name that requests | + | | | are redirected to. The value can | + | | | contain only letters, digits, hyphens | + | | | (-), and periods (.) and must start | + | | | with a letter or digit. The default | + | | | value is **${host}**, indicating that | + | | | the host of the request will be used. | + | | | | + | | | Default: **${host}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | String | Specifies the port that requests are | + | | | redirected to. The default value is | + | | | **${port}**, indicating that the port | + | | | of the request will be used. | + | | | | + | | | Default: **${port}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | path | String | Specifies the path that requests are | + | | | redirected to. The default value is | + | | | **${path}**, indicating that the path | + | | | of the request will be used. The | + | | | value can contain only letters, | + | | | digits, and special characters | + | | | \_-';@^- %#&$.*+?,=!:|/()[]{} and | + | | | must start with a slash (/). | + | | | | + | | | Default: **${path}** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | query | String | Specifies the query string set in the | + | | | URL for redirection. The default | + | | | value is **${query}**, indicating | + | | | that the query string of the request | + | | | will be used. | + | | | | + | | | For example, in the URL | + | | | **https://www. | + | | | xxx.com:8080/elb?type=loadbalancer**, | + | | | **${query}** indicates | + | | | **type=loadbalancer**. If this | + | | | parameter is set to | + | | | **${query}&name=my_name**, the URL | + | | | will be redirected to | + | | | **https://www.xxx.com:8080/ | + | | | elb?type=loadbalancer&name=my_name**. | + | | | | + | | | The value is case-sensitive and can | + | | | contain only letters, digits, and | + | | | special characters | + | | | !$&'()*+,-./:;=?@^_\` | + | | | | + | | | Default: **${query}** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status_code | String | Specifies the status code returned | + | | | after the requests are redirected. | + | | | | + | | | Value options: | + | | | | + | | | - **301** | + | | | | + | | | - **302** | + | | | | + | | | - **303** | + | | | | + | | | - **307** | + | | | | + | | | - **308** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 13** FixtedResponseConfig + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | status_code | String | Specifies the HTTP status code | + | | | configured in the forwarding policy. | + | | | The value can be any integer in the | + | | | range of 200–299, 400–499, or | + | | | 500–599. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | content_type | String | Specifies the format of the response | + | | | body. | + | | | | + | | | Value options: | + | | | | + | | | - **text/plain** | + | | | | + | | | - **text/css** | + | | | | + | | | - **text/html** | + | | | | + | | | - **application/javascript** | + | | | | + | | | - **application/json** | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | message_body | String | Specifies the content of the response | + | | | body. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be + + { + "l7policy" : { + "name" : "My policy.", + "description" : "Update policy.", + "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "request_id" : "e5c07525-1470-47b6-9b0c-567527a036aa", + "l7policy" : { + "description" : "Update policy.", + "admin_state_up" : true, + "rules" : [ ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listener_id" : "e2220d2a-3faf-44f3-8cd6-0c42952bd0ab", + "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050", + "action" : "REDIRECT_TO_LISTENER", + "position" : 100, + "provisioning_status" : "ACTIVE", + "id" : "cf4360fd-8631-41ff-a6f5-b72c35da74be", + "name" : "My policy." + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/UpdateL7Rule.html b/elb/api-ref/UpdateL7Rule.html new file mode 100644 index 000000000..f07947e6f --- /dev/null +++ b/elb/api-ref/UpdateL7Rule.html @@ -0,0 +1,433 @@ + + +

      Updating a Forwarding Rule

      +

      Function

      This API is used to update a forwarding rule.

      + +

      URI

      PUT /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id}

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      l7rule_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      rule

      +

      Yes

      +

      UpdateL7RuleOption object

      +

      Specifies request parameters for updating a forwarding rule.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateL7RuleOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      compare_type

      +

      No

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match item. For example, if an HTTP header is used for matching, key is the name of the HTTP header parameter.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      value

      +

      No

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      conditions

      +

      No

      +

      Array of UpdateRuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule. This parameter will take effect when enhance_l7policy_enable is set to true.

      +

      If conditions is specified, the values of key and value are invalid, and its value contains all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique. Only full update is supported.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 5 UpdateRuleCondition

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      No

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 6 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      rule

      +

      L7Rule object

      +

      Specifies the forwarding rule.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 L7Rule

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule. The default value is true.

      +

      This parameter is unsupported. Please do not use it.

      +

      compare_type

      +

      String

      +

      Specifies how requests are matched with the domain name or URL.

      +
      • If type is set to HOST_NAME, this parameter can only be set to EQUAL_TO.

        +
      • If type is set to PATH, this parameter can be set to REGEX, STARTS_WITH, or EQUAL_TO.

        +
      +

      key

      +

      String

      +

      Specifies the key of the match content. This parameter will not take effect when type is set to HOST_NAME or PATH. It can be updated but will not take effect.

      +

      This parameter is unsupported. Please do not use it.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      type

      +

      String

      +

      Specifies the match content. The value can be one of the following:

      +
      • HOST_NAME: A domain name will be used for matching.

        +
      • PATH: A URL will be used for matching.

        +
      +

      If type is set to HOST_NAME, PATH, METHOD, or SOURCE_IP, only one forwarding rule can be created for each type.

      +

      value

      +

      String

      +

      Specifies the value of the match item. For example, if a domain name is used for matching, value is the domain name.

      +
      • If type is set to HOST_NAME, the value can contain letters, digits, hyphens (-), and periods (.) and must start with a letter or digit. If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH and compare_type to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the forwarding rule.

      +

      The value can only be ACTIVE.

      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported. The value is fixed at false. This parameter can be updated but remains invalid.

      +

      Default: false

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      conditions

      +

      Array of RuleCondition objects

      +

      Specifies the matching conditions of the forwarding rule.

      +
      • If conditions is specified, key and value will not take effect, and the value of this parameter will contain all conditions configured for the forwarding rule. The keys in the list must be the same, whereas each value must be unique.

        +
      • If conditions is not specified, the values of key and value are displayed.

        +
      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + +
      Table 8 RuleCondition

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the key of match item. This parameter is left blank.

      +

      Minimum: 1

      +

      Maximum: 128

      +

      value

      +

      String

      +

      Specifies the value of the match item.

      +
      • If type is set to HOST_NAME, key is left blank, and value indicates the domain name, which can contain 1 to 128 characters, including letters, digits, hyphens (-), periods (.), and asterisks (), and must start with a letter, digit, or asterisk (). If you want to use a wildcard domain name, enter an asterisk (*) as the leftmost label of the domain name.

        +
      • If type is set to PATH, key is left blank, and value indicates the request path, which can contain 1 to 128 characters. If compare_type is set to STARTS_WITH or EQUAL_TO for the forwarding rule, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|/()[]{}

        +
      +

      Minimum: 1

      +

      Maximum: 128

      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules/84f4fcae-9c15-4e19-a99f-72c0b08fd3d7
      +
      +{
      +  "rule" : {
      +    "compare_type" : "STARTS_WITH",
      +    "value" : "/ccc.html"
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "rule" : {
      +    "compare_type" : "STARTS_WITH",
      +    "provisioning_status" : "ACTIVE",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "invert" : false,
      +    "admin_state_up" : true,
      +    "value" : "/ccc.html",
      +    "type" : "PATH",
      +    "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7"
      +  },
      +  "request_id" : "133096f9-e754-430d-a2c2-e61fe1190aa8"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/UpdateL7Rule.rst b/elb/api-ref/UpdateL7Rule.rst new file mode 100644 index 000000000..effc09871 --- /dev/null +++ b/elb/api-ref/UpdateL7Rule.rst @@ -0,0 +1,443 @@ +Updating a Forwarding Rule +========================== + +Function +^^^^^^^^ + +This API is used to update a forwarding rule. + +URI +^^^ + +PUT /v3/{project_id}/elb/l7policies/{l7policy_id}/rules/{l7rule_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + l7rule_id Yes String Specifies the forwarding rule ID. + project_id Yes String Specifies the project ID. + =========== ========= ====== =================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=============================================+=============================================+ + | rule | Yes | `UpdateL7RuleOption <#U | Specifies request parameters for updating a | + | | | pdateL7Rule__request_UpdateL7RuleOption>`__ | forwarding rule. | + | | | object | | + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + +.. table:: **Table 4** UpdateL7RuleOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. The | + | | | | default value is **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | No | String | Specifies how requests are | + | | | | matched with the domain | + | | | | name or URL. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, this | + | | | | parameter can only be | + | | | | set to **EQUAL_TO**. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, this parameter | + | | | | can be set to **REGEX**, | + | | | | **STARTS_WITH**, or | + | | | | **EQUAL_TO**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. The | + | | | | value is fixed at | + | | | | **false**. This parameter | + | | | | can be updated but remains | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match item. For example, if | + | | | | an HTTP header is used for | + | | | | matching, **key** is the | + | | | | name of the HTTP header | + | | | | parameter. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | String | Specifies the value of the | + | | | | match item. For example, if | + | | | | a domain name is used for | + | | | | matching, **value** is the | + | | | | domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.) and must | + | | | | start with a letter or | + | | | | digit. If you want to | + | | | | use a wildcard domain | + | | | | name, enter an asterisk | + | | | | (*) as the leftmost | + | | | | label of the domain | + | | | | name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH** and | + | | | | **compare_type** to | + | | | | **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | conditions | No | Array of | Specifies the matching | + | | | `UpdateRuleCon | conditions of the | + | | | dition <#UpdateL7Rule__requ | forwarding rule. This | + | | | est_UpdateRuleCondition>`__ | parameter will take effect | + | | | objects | when | + | | | | **enhance_l7policy_enable** | + | | | | is set to **true**. | + | | | | | + | | | | If **conditions** is | + | | | | specified, the values of | + | | | | **key** and **value** are | + | | | | invalid, and its value | + | | | | contains all conditions | + | | | | configured for the | + | | | | forwarding rule. The keys | + | | | | in the list must be the | + | | | | same, whereas each value | + | | | | must be unique. Only full | + | | | | update is supported. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** UpdateRuleCondition + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | key | No | String | Specifies the key of match | + | | | | item. This parameter is | + | | | | left blank. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | String | Specifies the value of the | + | | | | match item. | + | | | | | + | | | | - If **type** is set to | + | | | | **HOST_NAME**, **key** | + | | | | is left blank, and | + | | | | **value** indicates the | + | | | | domain name, which can | + | | | | contain 1 to 128 | + | | | | characters, including | + | | | | letters, digits, hyphens | + | | | | (-), periods (.), and | + | | | | asterisks (*), and must | + | | | | start with a letter, | + | | | | digit, or asterisk (*). | + | | | | If you want to use a | + | | | | wildcard domain name, | + | | | | enter an asterisk (*) as | + | | | | the leftmost label of | + | | | | the domain name. | + | | | | | + | | | | - If **type** is set to | + | | | | **PATH**, **key** is | + | | | | left blank, and | + | | | | **value** indicates the | + | | | | request path, which can | + | | | | contain 1 to 128 | + | | | | characters. If | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO** for the | + | | | | forwarding rule, the | + | | | | value must start with a | + | | | | slash (/) and can | + | | | | contain only letters, | + | | | | digits, and special | + | | | | characters | + | | | | \ | + | | | | _~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **128** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 6** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | rule | `L7Rule <#UpdateL7Rule__response_L7Rule>`__ | Specifies the forwarding rule. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 7** L7Rule + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. The default | + | | | value is **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies how requests are matched | + | | | with the domain name or URL. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, this parameter can | + | | | only be set to **EQUAL_TO**. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | this parameter can be set to | + | | | **REGEX**, **STARTS_WITH**, or | + | | | **EQUAL_TO**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. This parameter will not take | + | | | effect when **type** is set to | + | | | **HOST_NAME** or **PATH**. It can be | + | | | updated but will not take effect. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match content. The | + | | | value can be one of the following: | + | | | | + | | | - **HOST_NAME**: A domain name will | + | | | be used for matching. | + | | | | + | | | - **PATH**: A URL will be used for | + | | | matching. | + | | | | + | | | If **type** is set to **HOST_NAME**, | + | | | **PATH**, **METHOD**, or | + | | | **SOURCE_IP**, only one forwarding | + | | | rule can be created for each type. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. For example, if a domain name | + | | | is used for matching, **value** is | + | | | the domain name. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain letters, digits, hyphens | + | | | (-), and periods (.) and must | + | | | start with a letter or digit. If | + | | | you want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH** and | + | | | **compare_type** to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the forwarding rule. | + | | | | + | | | The value can only be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. The value is fixed at | + | | | **false**. This parameter can be | + | | | updated but remains invalid. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | conditions | Array of | Specifies the matching conditions of | + | | `RuleCondition <#Upd | the forwarding rule. | + | | ateL7Rule__response_RuleCondition>`__ | | + | | objects | - If **conditions** is specified, | + | | | **key** and **value** will not | + | | | take effect, and the value of this | + | | | parameter will contain all | + | | | conditions configured for the | + | | | forwarding rule. The keys in the | + | | | list must be the same, whereas | + | | | each value must be unique. | + | | | | + | | | - If **conditions** is not | + | | | specified, the values of **key** | + | | | and **value** are displayed. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** RuleCondition + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the key of match item. This | + | | | parameter is left blank. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | item. | + | | | | + | | | - If **type** is set to | + | | | **HOST_NAME**, **key** is left | + | | | blank, and **value** indicates the | + | | | domain name, which can contain 1 | + | | | to 128 characters, including | + | | | letters, digits, hyphens (-), | + | | | periods (.), and asterisks (*), | + | | | and must start with a letter, | + | | | digit, or asterisk (*). If you | + | | | want to use a wildcard domain | + | | | name, enter an asterisk (*) as the | + | | | leftmost label of the domain name. | + | | | | + | | | - If **type** is set to **PATH**, | + | | | **key** is left blank, and | + | | | **value** indicates the request | + | | | path, which can contain 1 to 128 | + | | | characters. If **compare_type** is | + | | | set to **STARTS_WITH** or | + | | | **EQUAL_TO** for the forwarding | + | | | rule, the value must start with a | + | | | slash (/) and can contain only | + | | | letters, digits, and special | + | | | characters | + | | | \_~';@^-%#&$.*+?,=!:|/()[]{} | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **128** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be/rules/84f4fcae-9c15-4e19-a99f-72c0b08fd3d7 + + { + "rule" : { + "compare_type" : "STARTS_WITH", + "value" : "/ccc.html" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "rule" : { + "compare_type" : "STARTS_WITH", + "provisioning_status" : "ACTIVE", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "invert" : false, + "admin_state_up" : true, + "value" : "/ccc.html", + "type" : "PATH", + "id" : "84f4fcae-9c15-4e19-a99f-72c0b08fd3d7" + }, + "request_id" : "133096f9-e754-430d-a2c2-e61fe1190aa8" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/UpdateListener.html b/elb/api-ref/UpdateListener.html new file mode 100644 index 000000000..71f1b0e6d --- /dev/null +++ b/elb/api-ref/UpdateListener.html @@ -0,0 +1,863 @@ + + +

      Updating a Listener

      +

      Function

      This API is used to update a listener.

      + +

      Constraints

      If the provisioning status of the load balancer that the listener is added to is not ACTIVE, the listener cannot be updated. Only the administrator can specify connection_limit.

      + +

      URI

      PUT /v3/{project_id}/elb/listeners/{listener_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the tenant ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener

      +

      Yes

      +

      UpdateListenerOption object

      +

      Specifies the listener.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateListenerOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the listener. And the value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      client_ca_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      default_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests are forwarded to the default backend server.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      default_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the listener.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      http2_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      Default: true

      +

      insert_headers

      +

      No

      +

      ListenerInsertHeaders object

      +

      Specifies the HTTP header fields.

      +

      name

      +

      No

      +

      String

      +

      Specifies the listener name.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      sni_container_refs

      +

      No

      +

      Array of strings

      +

      Lists the IDs of SNI certificates (server certificates with domain names) used by the listener.

      +

      Each SNI certificate can have up to 30 domain names, and each domain name in the SNI certificate must be unique.

      +

      This parameter will be ignored and an empty array will be returned if the listener's protocol is not HTTPS.

      +

      tls_ciphers_policy

      +

      No

      +

      String

      +

      Specifies the security policy used by the listener.

      +

      This parameter is available only for HTTPS listeners. The default value is tls-1-0.

      +

      An error will be returned if the protocol of the listener is not HTTPS.

      +

      Value options:

      +
      • tls-1-0

        +
      • tls-1-1

        +
      • tls-1-2

        +
      • tls-1-2-strict

        +
      +

      enable_member_retry

      +

      No

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers. This parameter is available only for HTTP and HTTPS listeners of Shared load balancers.

      +

      Default: false

      +

      member_timeout

      +

      No

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      client_timeout

      +

      No

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      keepalive_timeout

      +

      No

      +

      Integer

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter is invalid.

        +
      +

      ipgroup

      +

      No

      +

      UpdateListenerIpGroupOption object

      +

      Specifies the IP address group associated with the listener.

      +

      The value can be null or an empty JSON structure, indicating that no IP address group is associated with the listener.

      +

      ipgroup_id is also required if you want to associate an IP address group with the listener.

      +

      This parameter is unsupported. Please do not use it.

      +

      transparent_client_ip_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +

      enhance_l7policy_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to enable advanced forwarding. The value can be true or false (default).

      +
      • true indicates that advanced forwarding will be enabled. Advanced forwarding cannot be disabled once it is enabled.

        +
      • false indicates that advanced forwarding will not be enabled.

        +
      +

      The following parameters will be available only when advanced forwarding is enabled:

      +
      • redirect_url_config

        +
      • fixed_response_config

        +
      • priority

        +
      • conditions

        +
      +

      For details, see the descriptions in the APIs of forwarding policies and forwarding rules.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 ListenerInsertHeaders

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Forwarded-ELB-IP

      +

      No

      +

      Boolean

      +

      Specifies whether to transparently transmit the load balancer EIP to backend servers. If X-Forwarded-ELB-IP is set to true, the load balancer EIP will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Port

      +

      No

      +

      Boolean

      +

      Specifies whether to transparently transmit the listening port of the load balancer to backend servers. If X-Forwarded-Port is set to true, the listening port of the load balancer will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-For-Port

      +

      No

      +

      Boolean

      +

      Specifies whether to transparently transmit the source port of the client to backend servers. If X-Forwarded-For-Port is set to true, the source port of the client will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Host

      +

      Yes

      +

      Boolean

      +

      Specifies whether to rewrite the X-Forwarded-Host header. If X-Forwarded-Host is set to true, X-Forwarded-Host in the request header from the clients can be set to Host in the request header sent from the load balancer to backend servers.

      +

      Default: true

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 UpdateListenerIpGroupOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      ipgroup_id

      +

      No

      +

      String

      +

      Specifies the ID of the IP address group associated with the listener.

      +
      • If ip_list is set to [] and type to whitelist, no IP addresses are allowed to access the listener.

        +
      • If ip_list is set to [] and type to blacklist, any IP address is allowed to access the listener.

        +
      • The specified IP address group must exist and this parameter cannot be set to null.

        +
      +

      IP address groups are not supported for now.

      +

      enable_ipgroup

      +

      No

      +

      Boolean

      +

      Specifies whether access control is enabled.

      +
      • true: Access control is enabled.

        +
      • false: Access control is disabled.

        +
      +

      A listener with access control enabled can be directly deleted.

      +

      type

      +

      No

      +

      String

      +

      Specifies how access to the listener is controlled.

      +
      • white: A whitelist is configured. Only IP addresses in the whitelist can access the listener.

        +
      • black: A blacklist is configured. IP addresses in the blacklist are not allowed to access the listener.

        +
      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 7 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      listener

      +

      Listener object

      +

      Specifies the listener.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 Listener

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener. And the value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections. The default value is -1.

      +

      This parameter is unsupported. Please do not use it.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the default backend server group. If there is no matched forwarding policy, requests are forwarded to the default backend server.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2. This parameter is available only for HTTPS listeners. If you configure this parameter for other types of listeners, it will not take effect.

      +

      Enable HTTP/2 if you want the clients to use HTTP/2 to communicate with the load balancer. However, connections between the load balancer and backend servers use HTTP/1.x by default.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      insert_headers

      +

      ListenerInsertHeaders object

      +

      Specifies the HTTP header fields.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Specifies the ID of the load balancer that the listener is added to.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      project_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      sni_container_refs

      +

      Array of strings

      +

      Lists the IDs of SNI certificates (server certificates with domain names) used by the listener.

      +

      Each SNI certificate can have up to 30 domain names, and each domain name in the SNI certificate must be unique.

      +

      This parameter will be ignored and an empty array will be returned if the listener's protocol is not HTTPS.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is available only for HTTPS listeners.

      +

      The value can be tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0.

      +

      enable_member_retry

      +

      Boolean

      +

      Specifies whether to enable health check retries for backend servers. This parameter is available only for HTTP and HTTPS listeners.

      +

      keepalive_timeout

      +

      Integer

      +

      Specifies the idle timeout duration, in seconds.

      +
      • For TCP listeners, the value ranges from 10 to 4000, and the default value is 300.

        +
      • For HTTP and HTTPS listeners, the value ranges from 0 to 4000, and the default value is 60.

        +
      • For UDP listeners, this parameter does not take effect.

        +
      +

      client_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a client, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      member_timeout

      +

      Integer

      +

      Specifies the timeout duration for waiting for a request from a backend server, in seconds.

      +

      This parameter is available only for HTTP and HTTPS listeners. The value ranges from 1 to 300, and the default value is 60.

      +

      ipgroup

      +

      ListenerIpGroup object

      +

      Specifies the IP address group associated with the listener.

      +

      This parameter is unsupported. Please do not use it.

      +

      transparent_client_ip_enable

      +

      Boolean

      +

      Specifies whether to pass source IP addresses of the clients to backend servers.

      +

      Shared load balancers: The value can be true or false, and the default value is false for TCP and UDP listeners. The value can only be true for HTTP and HTTPS listeners. If this parameter is not passed, the default value is true.

      +

      Dedicated load balancers: The value can only be true for all types of listeners. If this parameter is not passed, the default value is true.

      +

      enhance_l7policy_enable

      +

      Boolean

      +

      Specifies whether to enable advanced forwarding. The value can be true or false (default).

      +
      • true indicates that advanced forwarding will be enabled.

        +
      • false indicates that advanced forwarding will not be enabled.

        +
      +

      The following parameters will be available only when advanced forwarding is enabled:

      +
      • redirect_url_config

        +
      • fixed_response_config

        +
      • priority

        +
      • conditions

        +
      +

      For details, see the descriptions in the APIs of forwarding policies and forwarding rules.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 9 ListenerInsertHeaders

      Parameter

      +

      Type

      +

      Description

      +

      X-Forwarded-ELB-IP

      +

      Boolean

      +

      Specifies whether to transparently transmit the load balancer EIP to backend servers. If X-Forwarded-ELB-IP is set to true, the load balancer EIP will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the listening port of the load balancer to backend servers. If X-Forwarded-Port is set to true, the listening port of the load balancer will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-For-Port

      +

      Boolean

      +

      Specifies whether to transparently transmit the source port of the client to backend servers. If X-Forwarded-For-Port is set to true, the source port of the client will be stored in the HTTP header and passed to backend servers.

      +

      Default: false

      +

      X-Forwarded-Host

      +

      Boolean

      +

      Specifies whether to rewrite the X-Forwarded-Host header. If X-Forwarded-Host is set to true, X-Forwarded-Host in the request header from the clients can be set to Host in the request header sent from the load balancer to backend servers.

      +

      Default: true

      +
      + + + + + + + + + + + + +
      Table 10 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 11 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 12 ListenerIpGroup

      Parameter

      +

      Type

      +

      Description

      +

      ipgroup_id

      +

      String

      +

      Specifies the ID of the IP address group associated with the listener.

      +
      • If ip_list is set to [] and type to whitelist, no IP addresses are allowed to access the listener.

        +
      • If ip_list is set to [] and type to blacklist, any IP address is allowed to access the listener.

        +
      • The specified IP address group must exist and this parameter cannot be set to null.

        +
      +

      enable_ipgroup

      +

      Boolean

      +

      Specifies whether to enable access control.

      +
      • true: Access control is enabled.

        +
      • false: Access control is disabled.

        +
      +

      A listener with access control enabled can be directly deleted.

      +

      type

      +

      String

      +

      Specifies how access to the listener is controlled.

      +
      • white: A whitelist is configured. Only IP addresses in the whitelist can access the listener.

        +
      • black: A blacklist is configured. IP addresses in the blacklist are not allowed to access the listener.

        +
      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/listeners/0b11747a-b139-492f-9692-2df0b1c87193
      +
      +{
      +  "listener" : {
      +    "description" : "My listener update.",
      +    "name" : "listener-1",
      +    "http2_enable" : true
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "listener" : {
      +    "id" : "e2baad06-8095-4159-a14e-d1f0137bac06",
      +    "name" : "listener-1",
      +    "protocol_port" : 77,
      +    "protocol" : "HTTP",
      +    "description" : "My listener update.",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "c285bc7b-56d5-43bd-9589-075ee0a5c777"
      +    } ],
      +    "project_id" : "060576782980d5762f9ec014dd2f1148",
      +    "sni_container_refs" : [ ],
      +    "connection_limit" : -1,
      +    "default_pool_id" : "61609d20-5230-4b72-8274-46212bbf317c",
      +    "tags" : [ ],
      +    "created_at" : "2020-07-28T11:35:21Z",
      +    "updated_at" : "2020-07-28T11:35:21Z",
      +    "http2_enable" : true,
      +    "insert_headers" : {
      +      "X-Forwarded-ELB-IP" : false,
      +      "X-Forwarded-Host" : true,
      +      "X-Forwarded-For-Port" : false,
      +      "X-Forwarded-Port" : false
      +    },
      +    "member_timeout" : 60,
      +    "client_timeout" : 60,
      +    "keepalive_timeout" : 60,
      +    "enable_member_retry" : true,
      +    "transparent_client_ip_enable" : true,
      +    "enhance_l7policy_enable" : false
      +  },
      +  "request_id" : "619dc40f7ec73c0f13b5b5127904b71e"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/UpdateListener.rst b/elb/api-ref/UpdateListener.rst new file mode 100644 index 000000000..16b9cf06d --- /dev/null +++ b/elb/api-ref/UpdateListener.rst @@ -0,0 +1,823 @@ +Updating a Listener +=================== + +Function +^^^^^^^^ + +This API is used to update a listener. + +Constraints +^^^^^^^^^^^ + +If the provisioning status of the load balancer that the listener is added to is not **ACTIVE**, the listener cannot be updated. Only the administrator can specify **connection_limit**. + +URI +^^^ + +PUT /v3/{project_id}/elb/listeners/{listener_id} + +.. table:: **Table 1** Path parameters + + =========== ========= ====== ========================== + Parameter Mandatory Type Description + =========== ========= ====== ========================== + listener_id Yes String Specifies the listener ID. + project_id Yes String Specifies the tenant ID. + =========== ========= ====== ========================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------------------------------------------+-------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=================================================================================+=========================+ + | listener | Yes | `UpdateListenerOption <#UpdateListener__request_UpdateListenerOption>`__ object | Specifies the listener. | + +-----------+-----------+---------------------------------------------------------------------------------+-------------------------+ + +.. table:: **Table 4** UpdateListenerOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the listener. And the value | + | | | | can only be **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_ca_tls_container_ref | No | String | Specifies the ID of the CA | + | | | | certificate used by the | + | | | | listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_pool_id | No | String | Specifies the ID of the | + | | | | default backend server | + | | | | group. If there is no | + | | | | matched forwarding policy, | + | | | | requests are forwarded to | + | | | | the default backend server. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_tls_container_ref | No | String | Specifies the ID of the | + | | | | server certificate used by | + | | | | the listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http2_enable | No | Boolean | Specifies whether to use | + | | | | HTTP/2. This parameter is | + | | | | available only for HTTPS | + | | | | listeners. If you configure | + | | | | this parameter for other | + | | | | types of listeners, it will | + | | | | not take effect. | + | | | | | + | | | | Enable HTTP/2 if you want | + | | | | the clients to use HTTP/2 | + | | | | to communicate with the | + | | | | load balancer. However, | + | | | | connections between the | + | | | | load balancer and backend | + | | | | servers use HTTP/1.x by | + | | | | default. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | insert_headers | No | `ListenerInsertHeade | Specifies the HTTP header | + | | | rs <#UpdateListener__reques | fields. | + | | | t_ListenerInsertHeaders>`__ | | + | | | object | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the listener | + | | | | name. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sni_container_refs | No | Array of strings | Lists the IDs of SNI | + | | | | certificates (server | + | | | | certificates with domain | + | | | | names) used by the | + | | | | listener. | + | | | | | + | | | | Each SNI certificate can | + | | | | have up to 30 domain names, | + | | | | and each domain name in the | + | | | | SNI certificate must be | + | | | | unique. | + | | | | | + | | | | This parameter will be | + | | | | ignored and an empty array | + | | | | will be returned if the | + | | | | listener's protocol is not | + | | | | HTTPS. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_ciphers_policy | No | String | Specifies the security | + | | | | policy used by the | + | | | | listener. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTPS listeners. | + | | | | The default value is | + | | | | **tls-1-0**. | + | | | | | + | | | | An error will be returned | + | | | | if the protocol of the | + | | | | listener is not HTTPS. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **tls-1-0** | + | | | | | + | | | | - **tls-1-1** | + | | | | | + | | | | - **tls-1-2** | + | | | | | + | | | | - **tls-1-2-strict** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_member_retry | No | Boolean | Specifies whether to enable | + | | | | health check retries for | + | | | | backend servers. This | + | | | | parameter is available only | + | | | | for HTTP and HTTPS | + | | | | listeners of Shared load | + | | | | balancers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_timeout | No | Integer | Specifies the timeout | + | | | | duration for waiting for a | + | | | | request from a backend | + | | | | server, in seconds. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. The value ranges | + | | | | from **1** to **300**, and | + | | | | the default value is | + | | | | **60**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_timeout | No | Integer | Specifies the timeout | + | | | | duration for waiting for a | + | | | | request from a client, in | + | | | | seconds. | + | | | | | + | | | | This parameter is available | + | | | | only for HTTP and HTTPS | + | | | | listeners. The value ranges | + | | | | from **1** to **300**, and | + | | | | the default value is | + | | | | **60**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | keepalive_timeout | No | Integer | Specifies the idle timeout | + | | | | duration, in seconds. | + | | | | | + | | | | - For TCP listeners, the | + | | | | value ranges from **10** | + | | | | to **4000**, and the | + | | | | default value is | + | | | | **300**. | + | | | | | + | | | | - For HTTP and HTTPS | + | | | | listeners, the value | + | | | | ranges from **0** to | + | | | | **4000**, and the | + | | | | default value is **60**. | + | | | | | + | | | | - For UDP listeners, this | + | | | | parameter is invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipgroup | No | `Upda | Specifies the IP address | + | | | teListenerIpGroupOption <#U | group associated with the | + | | | pdateListener__request_Upda | listener. | + | | | teListenerIpGroupOption>`__ | | + | | | object | The value can be **null** | + | | | | or an empty JSON structure, | + | | | | indicating that no IP | + | | | | address group is associated | + | | | | with the listener. | + | | | | | + | | | | **ipgroup_id** is also | + | | | | required if you want to | + | | | | associate an IP address | + | | | | group with the listener. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | t | No | Boolean | Specifies whether to pass | + | ransparent_client_ip_enable | | | source IP addresses of the | + | | | | clients to backend servers. | + | | | | | + | | | | Shared load balancers: The | + | | | | value can be **true** or | + | | | | **false**, and the default | + | | | | value is **false** for TCP | + | | | | and UDP listeners. The | + | | | | value can only be **true** | + | | | | for HTTP and HTTPS | + | | | | listeners. If this | + | | | | parameter is not passed, | + | | | | the default value is | + | | | | **true**. | + | | | | | + | | | | Dedicated load balancers: | + | | | | The value can only be | + | | | | **true** for all types of | + | | | | listeners. If this | + | | | | parameter is not passed, | + | | | | the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enhance_l7policy_enable | No | Boolean | Specifies whether to enable | + | | | | advanced forwarding. The | + | | | | value can be **true** or | + | | | | **false** (default). | + | | | | | + | | | | - **true** indicates that | + | | | | advanced forwarding will | + | | | | be enabled. Advanced | + | | | | forwarding cannot be | + | | | | disabled once it is | + | | | | enabled. | + | | | | | + | | | | - **false** indicates that | + | | | | advanced forwarding will | + | | | | not be enabled. | + | | | | | + | | | | The following parameters | + | | | | will be available only when | + | | | | advanced forwarding is | + | | | | enabled: | + | | | | | + | | | | - **redirect_url_config** | + | | | | | + | | | | - | + | | | | **fixed_response_config** | + | | | | | + | | | | - **priority** | + | | | | | + | | | | - **conditions** | + | | | | | + | | | | For details, see the | + | | | | descriptions in the APIs of | + | | | | forwarding policies and | + | | | | forwarding rules. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** ListenerInsertHeaders + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | X-Forwarded-ELB-IP | No | Boolean | Specifies whether to | + | | | | transparently transmit the | + | | | | load balancer EIP to | + | | | | backend servers. If | + | | | | **X-Forwarded-ELB-IP** is | + | | | | set to **true**, the load | + | | | | balancer EIP will be stored | + | | | | in the HTTP header and | + | | | | passed to backend servers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | X-Forwarded-Port | No | Boolean | Specifies whether to | + | | | | transparently transmit the | + | | | | listening port of the load | + | | | | balancer to backend | + | | | | servers. If | + | | | | **X-Forwarded-Port** is set | + | | | | to **true**, the listening | + | | | | port of the load balancer | + | | | | will be stored in the HTTP | + | | | | header and passed to | + | | | | backend servers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | X-Forwarded-For-Port | No | Boolean | Specifies whether to | + | | | | transparently transmit the | + | | | | source port of the client | + | | | | to backend servers. If | + | | | | **X-Forwarded-For-Port** is | + | | | | set to **true**, the source | + | | | | port of the client will be | + | | | | stored in the HTTP header | + | | | | and passed to backend | + | | | | servers. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | X-Forwarded-Host | Yes | Boolean | Specifies whether to | + | | | | rewrite the | + | | | | **X-Forwarded-Host** | + | | | | header. If | + | | | | **X-Forwarded-Host** is set | + | | | | to **true**, | + | | | | **X-Forwarded-Host** in the | + | | | | request header from the | + | | | | clients can be set to | + | | | | **Host** in the request | + | | | | header sent from the load | + | | | | balancer to backend | + | | | | servers. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 6** UpdateListenerIpGroupOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | ipgroup_id | No | String | Specifies the ID of the IP | + | | | | address group associated | + | | | | with the listener. | + | | | | | + | | | | - If **ip_list** is set to | + | | | | **[]** and **type** to | + | | | | **whitelist**, no IP | + | | | | addresses are allowed to | + | | | | access the listener. | + | | | | | + | | | | - If **ip_list** is set to | + | | | | **[]** and **type** to | + | | | | **blacklist**, any IP | + | | | | address is allowed to | + | | | | access the listener. | + | | | | | + | | | | - The specified IP address | + | | | | group must exist and | + | | | | this parameter cannot be | + | | | | set to **null**. | + | | | | | + | | | | IP address groups are not | + | | | | supported for now. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_ipgroup | No | Boolean | Specifies whether access | + | | | | control is enabled. | + | | | | | + | | | | - **true**: Access control | + | | | | is enabled. | + | | | | | + | | | | - **false**: Access | + | | | | control is disabled. | + | | | | | + | | | | A listener with access | + | | | | control enabled can be | + | | | | directly deleted. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies how access to the | + | | | | listener is controlled. | + | | | | | + | | | | - **white**: A whitelist | + | | | | is configured. Only IP | + | | | | addresses in the | + | | | | whitelist can access the | + | | | | listener. | + | | | | | + | | | | - **black**: A blacklist | + | | | | is configured. IP | + | | | | addresses in the | + | | | | blacklist are not | + | | | | allowed to access the | + | | | | listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 7** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | listener | `Listener <#UpdateListener__response_Listener>`__ | Specifies the listener. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 8** Listener + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. And the value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. The default value is | + | | | **-1**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the default | + | | | backend server group. If there is no | + | | | matched forwarding policy, requests | + | | | are forwarded to the default backend | + | | | server. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. This | + | | | parameter is available only for HTTPS | + | | | listeners. If you configure this | + | | | parameter for other types of | + | | | listeners, it will not take effect. | + | | | | + | | | Enable HTTP/2 if you want the clients | + | | | to use HTTP/2 to communicate with the | + | | | load balancer. However, connections | + | | | between the load balancer and backend | + | | | servers use HTTP/1.x by default. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | insert_headers | ` | Specifies the HTTP header fields. | + | | ListenerInsertHeaders <#UpdateListene | | + | | r__response_ListenerInsertHeaders>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Specifies the ID of the load balancer | + | | `LoadBalancerRef <#UpdateL | that the listener is added to. | + | | istener__response_LoadBalancerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array of strings | Lists the IDs of SNI certificates | + | | | (server certificates with domain | + | | | names) used by the listener. | + | | | | + | | | Each SNI certificate can have up to | + | | | 30 domain names, and each domain name | + | | | in the SNI certificate must be | + | | | unique. | + | | | | + | | | This parameter will be ignored and an | + | | | empty array will be returned if the | + | | | listener's protocol is not HTTPS. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags. | + | | `T | | + | | ag <#UpdateListener__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is | + | | | available only for HTTPS listeners. | + | | | | + | | | The value can be **tls-1-0**, | + | | | **tls-1-1**, **tls-1-2**, or | + | | | **tls-1-2-strict**, and the default | + | | | value is **tls-1-0**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_member_retry | Boolean | Specifies whether to enable health | + | | | check retries for backend servers. | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | keepalive_timeout | Integer | Specifies the idle timeout duration, | + | | | in seconds. | + | | | | + | | | - For TCP listeners, the value | + | | | ranges from **10** to **4000**, | + | | | and the default value is **300**. | + | | | | + | | | - For HTTP and HTTPS listeners, the | + | | | value ranges from **0** to | + | | | **4000**, and the default value is | + | | | **60**. | + | | | | + | | | - For UDP listeners, this parameter | + | | | does not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a client, | + | | | in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_timeout | Integer | Specifies the timeout duration for | + | | | waiting for a request from a backend | + | | | server, in seconds. | + | | | | + | | | This parameter is available only for | + | | | HTTP and HTTPS listeners. The value | + | | | ranges from **1** to **300**, and the | + | | | default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipgroup | `ListenerIpGroup <#UpdateL | Specifies the IP address group | + | | istener__response_ListenerIpGroup>`__ | associated with the listener. | + | | object | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | transparent_client_ip_enable | Boolean | Specifies whether to pass source IP | + | | | addresses of the clients to backend | + | | | servers. | + | | | | + | | | Shared load balancers: The value can | + | | | be **true** or **false**, and the | + | | | default value is **false** for TCP | + | | | and UDP listeners. The value can only | + | | | be **true** for HTTP and HTTPS | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + | | | | + | | | Dedicated load balancers: The value | + | | | can only be **true** for all types of | + | | | listeners. If this parameter is not | + | | | passed, the default value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enhance_l7policy_enable | Boolean | Specifies whether to enable advanced | + | | | forwarding. The value can be **true** | + | | | or **false** (default). | + | | | | + | | | - **true** indicates that advanced | + | | | forwarding will be enabled. | + | | | | + | | | - **false** indicates that advanced | + | | | forwarding will not be enabled. | + | | | | + | | | The following parameters will be | + | | | available only when advanced | + | | | forwarding is enabled: | + | | | | + | | | - **redirect_url_config** | + | | | | + | | | - **fixed_response_config** | + | | | | + | | | - **priority** | + | | | | + | | | - **conditions** | + | | | | + | | | For details, see the descriptions in | + | | | the APIs of forwarding policies and | + | | | forwarding rules. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** ListenerInsertHeaders + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | X-Forwarded-ELB-IP | Boolean | Specifies whether to transparently | + | | | transmit the load balancer EIP to | + | | | backend servers. If | + | | | **X-Forwarded-ELB-IP** is set to | + | | | **true**, the load balancer EIP will | + | | | be stored in the HTTP header and | + | | | passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Port | Boolean | Specifies whether to transparently | + | | | transmit the listening port of the | + | | | load balancer to backend servers. If | + | | | **X-Forwarded-Port** is set to | + | | | **true**, the listening port of the | + | | | load balancer will be stored in the | + | | | HTTP header and passed to backend | + | | | servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-For-Port | Boolean | Specifies whether to transparently | + | | | transmit the source port of the | + | | | client to backend servers. If | + | | | **X-Forwarded-For-Port** is set to | + | | | **true**, the source port of the | + | | | client will be stored in the HTTP | + | | | header and passed to backend servers. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | X-Forwarded-Host | Boolean | Specifies whether to rewrite the | + | | | **X-Forwarded-Host** header. If | + | | | **X-Forwarded-Host** is set to | + | | | **true**, **X-Forwarded-Host** in the | + | | | request header from the clients can | + | | | be set to **Host** in the request | + | | | header sent from the load balancer to | + | | | backend servers. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 10** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 11** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 12** ListenerIpGroup + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | ipgroup_id | String | Specifies the ID of the IP address | + | | | group associated with the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **whitelist**, no | + | | | IP addresses are allowed to access | + | | | the listener. | + | | | | + | | | - If **ip_list** is set to **[]** | + | | | and **type** to **blacklist**, any | + | | | IP address is allowed to access | + | | | the listener. | + | | | | + | | | - The specified IP address group | + | | | must exist and this parameter | + | | | cannot be set to **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_ipgroup | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | - **true**: Access control is | + | | | enabled. | + | | | | + | | | - **false**: Access control is | + | | | disabled. | + | | | | + | | | A listener with access control | + | | | enabled can be directly deleted. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies how access to the listener | + | | | is controlled. | + | | | | + | | | - **white**: A whitelist is | + | | | configured. Only IP addresses in | + | | | the whitelist can access the | + | | | listener. | + | | | | + | | | - **black**: A blacklist is | + | | | configured. IP addresses in the | + | | | blacklist are not allowed to | + | | | access the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/listeners/0b11747a-b139-492f-9692-2df0b1c87193 + + { + "listener" : { + "description" : "My listener update.", + "name" : "listener-1", + "http2_enable" : true + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "listener" : { + "id" : "e2baad06-8095-4159-a14e-d1f0137bac06", + "name" : "listener-1", + "protocol_port" : 77, + "protocol" : "HTTP", + "description" : "My listener update.", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "c285bc7b-56d5-43bd-9589-075ee0a5c777" + } ], + "project_id" : "060576782980d5762f9ec014dd2f1148", + "sni_container_refs" : [ ], + "connection_limit" : -1, + "default_pool_id" : "61609d20-5230-4b72-8274-46212bbf317c", + "tags" : [ ], + "created_at" : "2020-07-28T11:35:21Z", + "updated_at" : "2020-07-28T11:35:21Z", + "http2_enable" : true, + "insert_headers" : { + "X-Forwarded-ELB-IP" : false, + "X-Forwarded-Host" : true, + "X-Forwarded-For-Port" : false, + "X-Forwarded-Port" : false + }, + "member_timeout" : 60, + "client_timeout" : 60, + "keepalive_timeout" : 60, + "enable_member_retry" : true, + "transparent_client_ip_enable" : true, + "enhance_l7policy_enable" : false + }, + "request_id" : "619dc40f7ec73c0f13b5b5127904b71e" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/UpdateLoadBalancer.html b/elb/api-ref/UpdateLoadBalancer.html new file mode 100644 index 000000000..cc6595e2b --- /dev/null +++ b/elb/api-ref/UpdateLoadBalancer.html @@ -0,0 +1,784 @@ + + +

      Updating a Load Balancer

      +

      Function

      This API is used to update a load balancer.

      + +

      URI

      PUT /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Yes

      +

      UpdateLoadBalancerOption object

      +

      Specifies the load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateLoadBalancerOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the load balancer name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the load balancer. And the value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      ipv6_vip_virsubnet_id

      +

      No

      +

      String

      +

      Specifies the ID of the IPv6 subnet where the load balancer works. You can query id in the response by calling the API (GET https://{VPC_Endpoint}/v1/{project_id}/subnets).

      +

      The IPv6 subnet can be updated using ipv6_vip_virsubnet_id, and the private IPv6 address of the load balancer will be changed accordingly.

      +

      The IPv6 subnet must be in the VPC specified by vpc_id.

      +

      Note:

      +
      • ipv6_vip_virsubnet_id can be updated only when guaranteed is set to true.
      • Enter null if the IPv6 address is unbound from the load balancer.
      +

      This parameter is unsupported. Please do not use it.

      +

      vip_subnet_cidr_id

      +

      No

      +

      String

      +

      Specifies the ID of the IPv4 subnet where the load balancer works. You can query neutron_subnet_id in the response by calling the API (GET https://{VPC_Endpoint}/v1/{project_id}/subnets).

      +
      • The IPv4 subnet can be updated using vip_subnet_cidr_id, and the private IPv4 address of the load balancer will be changed accordingly.
      • If vip_address is also specified, the IP address specified by it must be in the subnet specified by vip_subnet_cidr_id and will be used as the private IPv4 address of the load balancer.
      • The IPv4 subnet must be in the VPC specified by vpc_id.
      +

      Note:

      +
      • vip_subnet_cidr_id can be updated only when guaranteed is set to true.
      • Enter null if the private IPv4 address is unbound from the load balancer.
      +

      Minimum: 1

      +

      Maximum: 36

      +

      vip_address

      +

      No

      +

      String

      +

      Specifies the virtual IP address bound to the load balancer. The IP address must be from the IPv4 subnet of the VPC where the load balancer works and IP address should not be occupied by other services.

      +

      The IP address specified by this parameter must be in the subnet specified by vip_subnet_cidr_id and will be used as the private IPv4 address of the load balancer.

      +

      vip_address can be updated only when guaranteed is set to true.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      l4_flavor_id

      +

      No

      +

      String

      +

      Specifies the ID of the Layer-4 flavor.

      +

      Note:

      +
      • This parameter can be updated only when guaranteed is set to true.
      • The value cannot be changed from null to a specific value, or the other way around. If you need to change the flavor, you must select a larger one.
      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_flavor_id

      +

      No

      +

      String

      +

      Specifies the ID of the Layer-7 flavor.

      +

      Note:

      +
      • This parameter can be updated only when guaranteed is set to true.
      • The value cannot be changed from null to a specific value, or the other way around. If you need to change the flavor, you must select a larger one.
      +

      ipv6_bandwidth

      +

      No

      +

      BandwidthRef object

      +

      Specifies the ID of the bandwidth. This parameter is available only when you create or update a dedicated load balancer that has an IPv6 address bound.

      +

      If you use a new IPv6 address and specify a shared bandwidth, the IPv6 address will be added to the shared bandwidth.

      +

      This parameter is unsupported. Please do not use it.

      +

      ip_target_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to enable cross-VPC backend. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + +
      Table 5 BandwidthRef

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      id

      +

      Yes

      +

      String

      +

      Specifies the shared bandwidth ID.

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 6 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      loadbalancer

      +

      LoadBalancer object

      +

      Specifies the load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 LoadBalancer

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      Default: Automatically generated

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the load balancer. The value can only be ACTIVE.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer. The value can only be true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer. The value can only be vlb.

      +

      Default: vlb

      +

      pools

      +

      Array of PoolRef objects

      +

      Lists the IDs of backend server groups associated with the load balancer.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the IDs of listeners added to the load balancer.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer. The value can only be ONLINE.

      +

      Minimum: 1

      +

      Maximum: 16

      +

      vip_address

      +

      String

      +

      Specifies the private IPv4 address bound to the load balancer.

      +

      Minimum: 1

      +

      Maximum: 64

      +

      vip_subnet_cidr_id

      +

      String

      +

      Specifies the ID of the IPv4 subnet where the load balancer works.

      +

      Minimum: 1

      +

      Maximum: 36

      +

      name

      +

      String

      +

      Specifies the name of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      project_id

      +

      String

      +

      Specifies the project ID of the load balancer.

      +

      Minimum: 1

      +

      Maximum: 32

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the virtual IP address (the value of vip_address) of the load balancer.

      +

      When you create a dedicated load balancer, the system automatically creates a port for the load balancer and associates the port with a default security group. However, security group rules containing the port will not affect traffic to and from the load balancer.

      +

      tags

      +

      Array of Tag objects

      +

      Lists the tags added to the load balancer.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      Minimum: 1

      +

      Maximum: 20

      +

      guaranteed

      +

      Boolean

      +

      Specifies whether the load balancer is a dedicated load balancer.

      +

      The value can be true or false. true indicates a dedicated load balancer, and false indicates a shared load balancer. When dedicated load balancers are launched in the eu-de region, either true or false will be returned when you use the API to query or update a load balancer.

      +

      Default: true

      +

      vpc_id

      +

      String

      +

      Specifies the ID of the VPC where the load balancer works.

      +

      eips

      +

      Array of EipInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      ipv6_vip_address

      +

      String

      +

      Specifies the IPv6 address bound to the load balancer.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: None

      +

      Minimum: 1

      +

      Maximum: 64

      +

      ipv6_vip_virsubnet_id

      +

      String

      +

      Specifies the ID of the IPv6 subnet where the load balancer works.

      +

      This parameter is unsupported. Please do not use it.

      +

      ipv6_vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the IPv6 address.

      +

      This parameter is unsupported. Please do not use it.

      +

      availability_zone_list

      +

      Array of strings

      +

      Specifies the list of AZs where the load balancer is created.

      +

      enterprise_project_id

      +

      String

      +

      Specifies the enterprise project ID.

      +

      If this parameter is not passed during resource creation, the resource belongs to the default enterprise project.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: 0

      +

      l4_flavor_id

      +

      String

      +

      Specifies the Layer-4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l4_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 4 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_flavor_id

      +

      String

      +

      Specifies the Layer-7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      l7_scale_flavor_id

      +

      String

      +

      Specifies the reserved Layer 7 flavor.

      +

      Minimum: 1

      +

      Maximum: 255

      +

      publicips

      +

      Array of PublicIpInfo objects

      +

      Specifies the EIP bound to the load balancer.

      +

      elb_virsubnet_ids

      +

      Array of strings

      +

      Specifies the ID of the subnet on the downstream plane. The ports used by the load balancer dynamically occupy IP addresses in the subnet.

      +

      ip_target_enable

      +

      Boolean

      +

      Specifies whether to enable cross-VPC backend.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: false

      +

      frozen_scene

      +

      String

      +

      Specifies the scenario where the load balancer is frozen. Use commas to separate multiple scenarios.

      +

      If the value is ARREAR, the load balancer is frozen because your account is in arrears.

      +

      ipv6_bandwidth

      +

      BandwidthRef object

      +

      Specifies the ID of the bandwidth. This parameter is available only when you create or update a dedicated load balancer that has an IPv6 address bound.

      +

      If you use a new IPv6 address and specify a shared bandwidth, the IPv6 address will be added to the shared bandwidth.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 8 PoolRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + + + + + + + + + + + +
      Table 9 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 10 Tag

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 11 EipInfo

      Parameter

      +

      Type

      +

      Description

      +

      eip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      eip_address

      +

      String

      +

      Specifies the specific IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. 4 indicates IPv4, and 6 indicates IPv6.

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 12 PublicIpInfo

      Parameter

      +

      Type

      +

      Description

      +

      publicip_id

      +

      String

      +

      Specifies the EIP ID.

      +

      publicip_address

      +

      String

      +

      Specifies the IP address.

      +

      ip_version

      +

      Integer

      +

      Specifies the IP version. The value can be 4 (IPv4) or 6 (IPv6).

      +

      IPv6 is unsupported. The value cannot be 6.

      +
      + + + + + + + + + + + + +
      Table 13 BandwidthRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the shared bandwidth ID.

      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers/{loadbalancer_id}
      +
      +{
      +  "loadbalancer" : {
      +    "admin_state_up" : true,
      +    "description" : "loadbalancer",
      +    "name" : "loadbalancer-update"
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "request_id" : "010dad1e-32a3-4405-ab83-62a1fc5f8722",
      +  "loadbalancer" : {
      +    "id" : "2e073bf8-edfe-4e51-a699-d915b0b8af89",
      +    "project_id" : "b2782e6708b8475c993e6064bc456bf8",
      +    "name" : "loadbalancer-update",
      +    "description" : "loadbalancer",
      +    "admin_state_up" : true,
      +    "provisioning_status" : "ACTIVE",
      +    "operating_status" : "ONLINE",
      +    "listeners" : [ {
      +      "id" : "41937176-bf64-4b58-8e0d-9ff2d0d32c54"
      +    }, {
      +      "id" : "abc6ac93-ad0e-4765-bd5a-eec632efde56"
      +    }, {
      +      "id" : "b9d8ba97-6d60-467d-838d-f3550b54c22a"
      +    }, {
      +      "id" : "fd797ebd-263d-4b18-96e9-e9188d36c69e"
      +    } ],
      +    "pools" : [ {
      +      "id" : "0aabcaa8-c35c-4ddc-a60c-9032d0ac0b80"
      +    }, {
      +      "id" : "165d9092-396e-4a8d-b398-067496a447d2"
      +    } ],
      +    "tags" : [ ],
      +    "provider" : "vlb",
      +    "created_at" : "2019-04-20T03:10:37Z",
      +    "updated_at" : "2019-05-24T02:11:58Z",
      +    "vpc_id" : "2037c5bb-e04b-4de2-9300-9051af18e417",
      +    "enterprise_project_id" : "0",
      +    "availability_zone_list" : [ "AZ1", "AZ2", "dc3" ],
      +    "eips" : [ ],
      +    "guaranteed" : true
      +  }
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/UpdateLoadBalancer.rst b/elb/api-ref/UpdateLoadBalancer.rst new file mode 100644 index 000000000..3dd56f1c3 --- /dev/null +++ b/elb/api-ref/UpdateLoadBalancer.rst @@ -0,0 +1,659 @@ +Updating a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to update a load balancer. + +URI +^^^ + +PUT /v3/{project_id}/elb/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Path parameters + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + loadbalancer_id Yes String Specifies the load balancer ID. + project_id Yes String Specifies the project ID. + =============== ========= ====== =============================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +--------------+-----------+-------------------------------------------+------------------------------+ + | Parameter | Mandatory | Type | Description | + +==============+===========+===========================================+==============================+ + | loadbalancer | Yes | `U | Specifies the load balancer. | + | | | pdateLoadBalancerOption <#UpdateLoadBalan | | + | | | cer__request_UpdateLoadBalancerOption>`__ | | + | | | object | | + +--------------+-----------+-------------------------------------------+------------------------------+ + +.. table:: **Table 4** UpdateLoadBalancerOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the load balancer | + | | | | name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the load balancer. And the | + | | | | value can only be **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + | | | | | + | | | | Default: **true** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the load | + | | | | balancer. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_vip_virsubnet_id | No | String | Specifies the ID of the | + | | | | IPv6 subnet where the load | + | | | | balancer works. You can | + | | | | query **id** in the | + | | | | response by calling the API | + | | | | (GET | + | | | | https://{VPC_Endpoint | + | | | | }/v1/{project_id}/subnets). | + | | | | | + | | | | The IPv6 subnet can be | + | | | | updated using | + | | | | **ipv6_vip_virsubnet_id**, | + | | | | and the private IPv6 | + | | | | address of the load | + | | | | balancer will be changed | + | | | | accordingly. | + | | | | | + | | | | The IPv6 subnet must be in | + | | | | the VPC specified by | + | | | | **vpc_id**. | + | | | | | + | | | | Note: | + | | | | | + | | | | - | + | | | | **ipv6_vip_virsubnet_id** | + | | | | can be updated only when | + | | | | **guaranteed** is set to | + | | | | **true**. | + | | | | - Enter **null** if the | + | | | | IPv6 address is unbound | + | | | | from the load balancer. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_subnet_cidr_id | No | String | Specifies the ID of the | + | | | | IPv4 subnet where the load | + | | | | balancer works. You can | + | | | | query **neutron_subnet_id** | + | | | | in the response by calling | + | | | | the API (GET | + | | | | https://{VPC_Endpoint | + | | | | }/v1/{project_id}/subnets). | + | | | | | + | | | | - The IPv4 subnet can be | + | | | | updated using | + | | | | **vip_subnet_cidr_id**, | + | | | | and the private IPv4 | + | | | | address of the load | + | | | | balancer will be changed | + | | | | accordingly. | + | | | | - If **vip_address** is | + | | | | also specified, the IP | + | | | | address specified by it | + | | | | must be in the subnet | + | | | | specified by | + | | | | **vip_subnet_cidr_id** | + | | | | and will be used as the | + | | | | private IPv4 address of | + | | | | the load balancer. | + | | | | - The IPv4 subnet must be | + | | | | in the VPC specified by | + | | | | **vpc_id**. | + | | | | | + | | | | Note: | + | | | | | + | | | | - **vip_subnet_cidr_id** | + | | | | can be updated only when | + | | | | **guaranteed** is set to | + | | | | **true**. | + | | | | - Enter **null** if the | + | | | | private IPv4 address is | + | | | | unbound from the load | + | | | | balancer. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_address | No | String | Specifies the virtual IP | + | | | | address bound to the load | + | | | | balancer. The IP address | + | | | | must be from the IPv4 | + | | | | subnet of the VPC where the | + | | | | load balancer works and IP | + | | | | address should not be | + | | | | occupied by other services. | + | | | | | + | | | | The IP address specified by | + | | | | this parameter must be in | + | | | | the subnet specified by | + | | | | **vip_subnet_cidr_id** and | + | | | | will be used as the private | + | | | | IPv4 address of the load | + | | | | balancer. | + | | | | | + | | | | **vip_address** can be | + | | | | updated only when | + | | | | **guaranteed** is set to | + | | | | **true**. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **36** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l4_flavor_id | No | String | Specifies the ID of the | + | | | | Layer-4 flavor. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter can be | + | | | | updated only when | + | | | | **guaranteed** is set to | + | | | | **true**. | + | | | | - The value cannot be | + | | | | changed from **null** to | + | | | | a specific value, or the | + | | | | other way around. If you | + | | | | need to change the | + | | | | flavor, you must select | + | | | | a larger one. | + | | | | | + | | | | Minimum: **1** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | l7_flavor_id | No | String | Specifies the ID of the | + | | | | Layer-7 flavor. | + | | | | | + | | | | Note: | + | | | | | + | | | | - This parameter can be | + | | | | updated only when | + | | | | **guaranteed** is set to | + | | | | **true**. | + | | | | - The value cannot be | + | | | | changed from **null** to | + | | | | a specific value, or the | + | | | | other way around. If you | + | | | | need to change the | + | | | | flavor, you must select | + | | | | a larger one. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ipv6_bandwidth | No | `Bandw | Specifies the ID of the | + | | | idthRef <#UpdateLoadBalance | bandwidth. This parameter | + | | | r__request_BandwidthRef>`__ | is available only when you | + | | | object | create or update a | + | | | | dedicated load balancer | + | | | | that has an IPv6 address | + | | | | bound. | + | | | | | + | | | | If you use a new IPv6 | + | | | | address and specify a | + | | | | shared bandwidth, the IPv6 | + | | | | address will be added to | + | | | | the shared bandwidth. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_target_enable | No | Boolean | Specifies whether to enable | + | | | | cross-VPC backend. The | + | | | | value can only be **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** BandwidthRef + + ========= ========= ====== ================================== + Parameter Mandatory Type Description + ========= ========= ====== ================================== + id Yes String Specifies the shared bandwidth ID. + ========= ========= ====== ================================== + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 6** Response body parameters + + +--------------+--------------------------------------------------+--------------------------------------------------+ + | Parameter | Type | Description | + +==============+==================================================+==================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +--------------+--------------------------------------------------+--------------------------------------------------+ + | loadbalancer | `LoadBalancer | Specifies the load balancer. | + | | <#UpdateLoadBalancer__response_LoadBalancer>`__ | | + | | object | | + +--------------+--------------------------------------------------+--------------------------------------------------+ + +.. table:: **Table 7** LoadBalancer + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + | | | | + | | | Default: **Automatically generated** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the load balancer. The value can only | + | | | be **ACTIVE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. The value can | + | | | only be **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. The value can only be | + | | | **vlb**. | + | | | | + | | | Default: **vlb** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array of | Lists the IDs of backend server | + | | `PoolRef <#Upd | groups associated with the load | + | | ateLoadBalancer__response_PoolRef>`__ | balancer. | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the IDs of listeners added to | + | | `ListenerRef <#UpdateL | the load balancer. | + | | oadBalancer__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. The value can only be | + | | | **ONLINE**. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **16** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IPv4 address | + | | | bound to the load balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_cidr_id | String | Specifies the ID of the IPv4 subnet | + | | | where the load balancer works. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **36** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID of the load | + | | | balancer. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **32** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the virtual IP address (the value of | + | | | **vip_address**) of the load | + | | | balancer. | + | | | | + | | | When you create a dedicated load | + | | | balancer, the system automatically | + | | | creates a port for the load balancer | + | | | and associates the port with a | + | | | default security group. However, | + | | | security group rules containing the | + | | | port will not affect traffic to and | + | | | from the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array of | Lists the tags added to the load | + | | `Tag < | balancer. | + | | #UpdateLoadBalancer__response_Tag>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **20** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | guaranteed | Boolean | Specifies whether the load balancer | + | | | is a dedicated load balancer. | + | | | | + | | | The value can be **true** or | + | | | **false**. **true** indicates a | + | | | dedicated load balancer, and | + | | | **false** indicates a shared load | + | | | balancer. When dedicated load | + | | | balancers are launched in the | + | | | **eu-de** region, either **true** or | + | | | **false** will be returned when you | + | | | use the API to query or update a load | + | | | balancer. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vpc_id | String | Specifies the ID of the VPC where the | + | | | load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eips | Array of | Specifies the EIP bound to the load | + | | `EipInfo <#Upd | balancer. | + | | ateLoadBalancer__response_EipInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_address | String | Specifies the IPv6 address bound to | + | | | the load balancer. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **None** | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **64** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_virsubnet_id | String | Specifies the ID of the IPv6 subnet | + | | | where the load balancer works. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_vip_port_id | String | Specifies the ID of the port bound to | + | | | the IPv6 address. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | availability_zone_list | Array of strings | Specifies the list of AZs where the | + | | | load balancer is created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enterprise_project_id | String | Specifies the enterprise project ID. | + | | | | + | | | If this parameter is not passed | + | | | during resource creation, the | + | | | resource belongs to the default | + | | | enterprise project. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **0** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_flavor_id | String | Specifies the Layer-4 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l4_scale_flavor_id | String | Specifies the reserved Layer 4 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_flavor_id | String | Specifies the Layer-7 flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7_scale_flavor_id | String | Specifies the reserved Layer 7 | + | | | flavor. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **255** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicips | Array of | Specifies the EIP bound to the load | + | | `PublicIpInfo <#UpdateLo | balancer. | + | | adBalancer__response_PublicIpInfo>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | elb_virsubnet_ids | Array of strings | Specifies the ID of the subnet on the | + | | | downstream plane. The ports used by | + | | | the load balancer dynamically occupy | + | | | IP addresses in the subnet. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_target_enable | Boolean | Specifies whether to enable cross-VPC | + | | | backend. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | frozen_scene | String | Specifies the scenario where the load | + | | | balancer is frozen. Use commas to | + | | | separate multiple scenarios. | + | | | | + | | | If the value is **ARREAR**, the load | + | | | balancer is frozen because your | + | | | account is in arrears. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ipv6_bandwidth | `BandwidthRef <#UpdateLo | Specifies the ID of the bandwidth. | + | | adBalancer__response_BandwidthRef>`__ | This parameter is available only when | + | | object | you create or update a dedicated load | + | | | balancer that has an IPv6 address | + | | | bound. | + | | | | + | | | If you use a new IPv6 address and | + | | | specify a shared bandwidth, the IPv6 | + | | | address will be added to the shared | + | | | bandwidth. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** PoolRef + + ========= ====== ============================================= + Parameter Type Description + ========= ====== ============================================= + id String Specifies the ID of the backend server group. + ========= ====== ============================================= + +.. table:: **Table 9** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 10** Tag + + ========= ====== ======================== + Parameter Type Description + ========= ====== ======================== + key String Specifies the tag key. + value String Specifies the tag value. + ========= ====== ======================== + +.. table:: **Table 11** EipInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | eip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | eip_address | String | Specifies the specific IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. **4** | + | | | indicates IPv4, and **6** indicates | + | | | IPv6. | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 12** PublicIpInfo + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | publicip_id | String | Specifies the EIP ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | publicip_address | String | Specifies the IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | Integer | Specifies the IP version. The value | + | | | can be **4** (IPv4) or **6** (IPv6). | + | | | | + | | | IPv6 is unsupported. The value cannot | + | | | be **6**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 13** BandwidthRef + + ========= ====== ================================== + Parameter Type Description + ========= ====== ================================== + id String Specifies the shared bandwidth ID. + ========= ====== ================================== + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers/{loadbalancer_id} + + { + "loadbalancer" : { + "admin_state_up" : true, + "description" : "loadbalancer", + "name" : "loadbalancer-update" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "request_id" : "010dad1e-32a3-4405-ab83-62a1fc5f8722", + "loadbalancer" : { + "id" : "2e073bf8-edfe-4e51-a699-d915b0b8af89", + "project_id" : "b2782e6708b8475c993e6064bc456bf8", + "name" : "loadbalancer-update", + "description" : "loadbalancer", + "admin_state_up" : true, + "provisioning_status" : "ACTIVE", + "operating_status" : "ONLINE", + "listeners" : [ { + "id" : "41937176-bf64-4b58-8e0d-9ff2d0d32c54" + }, { + "id" : "abc6ac93-ad0e-4765-bd5a-eec632efde56" + }, { + "id" : "b9d8ba97-6d60-467d-838d-f3550b54c22a" + }, { + "id" : "fd797ebd-263d-4b18-96e9-e9188d36c69e" + } ], + "pools" : [ { + "id" : "0aabcaa8-c35c-4ddc-a60c-9032d0ac0b80" + }, { + "id" : "165d9092-396e-4a8d-b398-067496a447d2" + } ], + "tags" : [ ], + "provider" : "vlb", + "created_at" : "2019-04-20T03:10:37Z", + "updated_at" : "2019-05-24T02:11:58Z", + "vpc_id" : "2037c5bb-e04b-4de2-9300-9051af18e417", + "enterprise_project_id" : "0", + "availability_zone_list" : [ "AZ1", "AZ2", "dc3" ], + "eips" : [ ], + "guaranteed" : true + } + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/UpdateMember.html b/elb/api-ref/UpdateMember.html new file mode 100644 index 000000000..51efde274 --- /dev/null +++ b/elb/api-ref/UpdateMember.html @@ -0,0 +1,324 @@ + + +

      Updating a Backend Server

      +

      Function

      The backend server can be updated only when the provisioning status of the associated load balancer is ACTIVE.

      + +

      URI

      PUT /v3/{project_id}/elb/pools/{pool_id}/members/{member_id}

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      member_id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request header parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      X-Auth-Token

      +

      Yes

      +

      String

      +

      Specifies the token used for IAM authentication.

      +
      + + + + + + + + + + + + + + +
      Table 3 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      member

      +

      Yes

      +

      UpdateMemberOption object

      +

      Specifies request parameters for updating a backend server.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdateMemberOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights. If the weight is 0, the backend server will not accept new requests.

      +

      This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Minimum: 0

      +

      Maximum: 100

      +

      Default: 1

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 5 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      member

      +

      Member object

      +

      Specifies the backend server.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Member

      Parameter

      +

      Type

      +

      Description

      +

      address

      +

      String

      +

      Specifies the IP address of the backend server.

      +

      The IP address must be in the subnet specified by subnet_cidr_id, for example, 192.168.3.11. The IP address can only be the IP address of the primary NIC.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      Although this parameter can be used in the APIs for creating and updating backend servers, its actual value depends on whether cloud servers exist. If cloud servers exist, the value is true. Otherwise, the value is false.

      +

      Default: true

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.

        +
      • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

        +
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

        +
      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server to receive requests.

      +

      Minimum: 1

      +

      Maximum: 65535

      +

      subnet_cidr_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. This subnet must be in the VPC as the subnet of the load balancer associated with the backend server. Only IPv4 subnets are supported. If the value is left blank, the backend server is not in the load balancer's VPC.

      +

      weight

      +

      Integer

      +

      Specifies the weight of the backend server.

      +

      Requests are routed to backend servers in the same backend server group based on their weights.

      +

      If the weight is 0, the backend server will not accept new requests.

      +

      This parameter is invalid when lb_algorithm is set to SOURCE_IP for the backend server group that contains the backend server.

      +

      Minimum: 0

      +

      Maximum: 100

      +

      Default: 1

      +

      ip_version

      +

      String

      +

      This is a read-only attribute, which is automatically generated based on the address parameter. The value can be v4 or v6.

      +

      Default: v4

      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/9a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members/1923923e-fe8a-484f-bdbc-e11559b1f48f
      +
      +{
      +  "member" : {
      +    "name" : "My member",
      +    "weight" : 10
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "member" : {
      +    "name" : "My member",
      +    "weight" : 10,
      +    "admin_state_up" : false,
      +    "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74",
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "address" : "120.10.10.16",
      +    "protocol_port" : 89,
      +    "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f",
      +    "operating_status" : "NO_MONITOR",
      +    "ip_version" : "v4"
      +  },
      +  "request_id" : "e7b569d4-15ad-494d-9dd9-8cd740eef8f6"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/UpdateMember.rst b/elb/api-ref/UpdateMember.rst new file mode 100644 index 000000000..f4ec1025d --- /dev/null +++ b/elb/api-ref/UpdateMember.rst @@ -0,0 +1,264 @@ +Updating a Backend Server +========================= + +Function +^^^^^^^^ + +The backend server can be updated only when the provisioning status of the associated load balancer is **ACTIVE**. + +URI +^^^ + +PUT /v3/{project_id}/elb/pools/{pool_id}/members/{member_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ============================================= + Parameter Mandatory Type Description + ========== ========= ====== ============================================= + member_id Yes String Specifies the backend server ID. + pool_id Yes String Specifies the ID of the backend server group. + project_id Yes String Specifies the project ID. + ========== ========= ====== ============================================= + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request header parameters + + ============ ========= ====== ================================================ + Parameter Mandatory Type Description + ============ ========= ====== ================================================ + X-Auth-Token Yes String Specifies the token used for IAM authentication. + ============ ========= ====== ================================================ + +.. table:: **Table 3** Request body parameters + + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=============================================+=============================================+ + | member | Yes | `UpdateMemberOption <#U | Specifies request parameters for updating a | + | | | pdateMember__request_UpdateMemberOption>`__ | backend server. | + | | | object | | + +-----------+-----------+---------------------------------------------+---------------------------------------------+ + +.. table:: **Table 4** UpdateMemberOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | Although this parameter can | + | | | | be used in the APIs for | + | | | | creating and updating | + | | | | backend servers, its actual | + | | | | value depends on whether | + | | | | cloud servers exist. If | + | | | | cloud servers exist, the | + | | | | value is **true**. | + | | | | Otherwise, the value is | + | | | | **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the weight of the | + | | | | backend server. | + | | | | | + | | | | Requests are routed to | + | | | | backend servers in the same | + | | | | backend server group based | + | | | | on their weights. If the | + | | | | weight is 0, the backend | + | | | | server will not accept new | + | | | | requests. | + | | | | | + | | | | This parameter is invalid | + | | | | when **lb_algorithm** is | + | | | | set to **SOURCE_IP** for | + | | | | the backend server group | + | | | | that contains the backend | + | | | | server. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **100** | + | | | | | + | | | | Default: **1** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 5** Response body parameters + + +------------+---------------------------------------------------+---------------------------------------------------+ + | Parameter | Type | Description | + +============+===================================================+===================================================+ + | request_id | String | Specifies the request ID. The value is | + | | | automatically generated. | + +------------+---------------------------------------------------+---------------------------------------------------+ + | member | `Member <#UpdateMember__response_Member>`__ | Specifies the backend server. | + | | object | | + +------------+---------------------------------------------------+---------------------------------------------------+ + +.. table:: **Table 6** Member + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | address | String | Specifies the IP address of the | + | | | backend server. | + | | | | + | | | The IP address must be in the subnet | + | | | specified by **subnet_cidr_id**, for | + | | | example, 192.168.3.11. The IP address | + | | | can only be the IP address of the | + | | | primary NIC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | Although this parameter can be used | + | | | in the APIs for creating and updating | + | | | backend servers, its actual value | + | | | depends on whether cloud servers | + | | | exist. If cloud servers exist, the | + | | | value is **true**. Otherwise, the | + | | | value is **false**. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | backend server. The value can be one | + | | | of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group to which the backend server | + | | | belongs. | + | | | | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server to receive requests. | + | | | | + | | | Minimum: **1** | + | | | | + | | | Maximum: **65535** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_cidr_id | String | Specifies the ID of the subnet where | + | | | the backend server works. This subnet | + | | | must be in the VPC as the subnet of | + | | | the load balancer associated with the | + | | | backend server. Only IPv4 subnets are | + | | | supported. If the value is left | + | | | blank, the backend server is not in | + | | | the load balancer's VPC. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the weight of the backend | + | | | server. | + | | | | + | | | Requests are routed to backend | + | | | servers in the same backend server | + | | | group based on their weights. | + | | | | + | | | If the weight is 0, the backend | + | | | server will not accept new requests. | + | | | | + | | | This parameter is invalid when | + | | | **lb_algorithm** is set to | + | | | **SOURCE_IP** for the backend server | + | | | group that contains the backend | + | | | server. | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **100** | + | | | | + | | | Default: **1** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | This is a read-only attribute, which | + | | | is automatically generated based on | + | | | the **address** parameter. The value | + | | | can be **v4** or **v6**. | + | | | | + | | | Default: **v4** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/9a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75/members/1923923e-fe8a-484f-bdbc-e11559b1f48f + + { + "member" : { + "name" : "My member", + "weight" : 10 + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "member" : { + "name" : "My member", + "weight" : 10, + "admin_state_up" : false, + "subnet_cidr_id" : "c09f620e-3492-4429-ac15-445d5dd9ca74", + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "address" : "120.10.10.16", + "protocol_port" : 89, + "id" : "1923923e-fe8a-484f-bdbc-e11559b1f48f", + "operating_status" : "NO_MONITOR", + "ip_version" : "v4" + }, + "request_id" : "e7b569d4-15ad-494d-9dd9-8cd740eef8f6" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/UpdatePool.html b/elb/api-ref/UpdatePool.html new file mode 100644 index 000000000..70e80b4cf --- /dev/null +++ b/elb/api-ref/UpdatePool.html @@ -0,0 +1,590 @@ + + +

      Updating a Backend Server Group

      +

      Function

      This API is used to update a backend server group.

      + +

      Constraints

      The backend server group can be updated only when the provisioning status of the associated load balancer is ACTIVE.

      + +

      URI

      PUT /v3/{project_id}/elb/pools/{pool_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Path parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the backend server group ID.

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request Parameters

      + + + + + + + + + + + + +
      Table 2 Request body parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool

      +

      Yes

      +

      UpdatePoolOption object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 UpdatePoolOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      lb_algorithm

      +

      No

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers.

      +

      The value can be one of the following:

      +
      • ROUND_ROBIN: weighted round robin

        +
      • LEAST_CONNECTIONS: weighted least connections

        +
      • SOURCE_IP: source IP hash

        +
      +

      When the value is SOURCE_IP, the weights of backend servers are invalid.

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server group name.

      +

      Minimum: 0

      +

      Maximum: 255

      +

      session_persistence

      +

      No

      +

      UpdatePoolSessionPersistenceOption object

      +

      Specifies whether to enable sticky sessions.

      +

      slow_start

      +

      No

      +

      UpdatePoolSlowStartOption object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 UpdatePoolSessionPersistenceOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      cookie_name

      +

      No

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter will take effect only when type is set to APP_COOKIE. Otherwise, an error will be returned.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      No

      +

      Integer

      +

      Specifies the stickiness duration, in minutes.

      +

      This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + + + + +
      Table 5 UpdatePoolSlowStartOption

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      enable

      +

      Yes

      +

      Boolean

      +

      Specifies whether slow start is enabled.

      +

      true indicates that slow start is enabled, and false indicates slow start is disabled.

      +

      Default: false

      +

      duration

      +

      Yes

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Response Parameters

      Status code: 200

      + + + + + + + + + + + + + + + +
      Table 6 Response body parameters

      Parameter

      +

      Type

      +

      Description

      +

      request_id

      +

      String

      +

      Specifies the request ID. The value is automatically generated.

      +

      pool

      +

      Pool object

      +

      Specifies the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 Pool

      Parameter

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group. The value can only be updated to true.

      +

      This parameter is unsupported. Please do not use it.

      +

      Default: true

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      id

      +

      String

      +

      Specifies the backend server group ID.

      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm used by the load balancer to route requests to backend servers in the backend server group.

      +

      The value can be ROUND_ROBIN (weighted round robin), LEAST_CONNECTIONS (weighted least connections), or SOURCE_IP (source IP hash).

      +

      When the value is SOURCE_IP, the weight parameter is invalid.

      +

      listeners

      +

      Array of ListenerRef objects

      +

      Lists the listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array of LoadBalancerRef objects

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      If only listener_id is specified during the creation of the backend server group, the ID of the loadbalancers parameter in the response is the ID of the load balancer to which the listener is added.

      +

      members

      +

      Array of MemberRef objects

      +

      Lists the backend servers in the backend server group.

      +

      name

      +

      String

      +

      Specifies the backend server group name.

      +

      project_id

      +

      String

      +

      Specifies the project ID.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the backend server group to receive requests. The protocol can be TCP, UDP, or HTTP.

      +
      • For UDP listeners, the protocol of the backend server group must be UDP.

        +
      • For TCP listeners, the protocol of the backend server group must be TCP.

        +
      • For HTTP or HTTPS listeners, the protocol of the backend server group must be HTTP.

        +
      +

      session_persistence

      +

      SessionPersistence object

      +

      Specifies the sticky session.

      +

      ip_version

      +

      String

      +

      Specifies the IP version supported by the backend server group.

      +
      • Shared load balancers: The default value is v4.

        +
      • Dedicated load balancers: The value can be dualstack, v4, or v6.

        +
      +

      When the protocol of the backend server group is TCP or UDP, ip_version is set to dualstack, indicating that both IPv4 and IPv6 are supported.

      +

      When the protocol of the backend server group is HTTP, ip_version is set to v4.

      +

      IPv6 is unsupported. Only v4 is returned.

      +

      Default: dualstack

      +

      slow_start

      +

      SlowStart object

      +

      Specifies whether to enable slow start. After you enable slow start, new backend servers added to the backend server group are warmed up, and the number of requests they can receive increases linearly during the configured slow start duration.

      +

      This parameter can be used when the protocol of the backend server group is HTTP or HTTPS. An error will be returned if the protocol is not HTTP or HTTPS.

      +

      This parameter is unsupported. Please do not use it.

      +
      + + + + + + + + + + + + +
      Table 8 ListenerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +
      + + + + + + + + + + + + +
      Table 9 LoadBalancerRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + + + + + + + + + + + +
      Table 10 MemberRef

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 11 SessionPersistence

      Parameter

      +

      Type

      +

      Description

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter will take effect only when type is set to APP_COOKIE.

      +

      The value can contain only letters, digits, hyphens (-), underscores (_), and periods (.).

      +

      Minimum: 0

      +

      Maximum: 1024

      +

      type

      +

      String

      +

      Specifies the sticky session type. The value can be SOURCE_IP, HTTP_COOKIE, or APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, only SOURCE_IP takes effect.

        +
      • For dedicated load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can only be HTTP_COOKIE.

        +
      • For shared load balancers, if the protocol of the backend server group is HTTP or HTTPS, the value can be HTTP_COOKIE or APP_COOKIE.

        +
      +

      persistence_timeout

      +

      Integer

      +

      Specifies the stickiness duration, in minutes. This parameter will not take effect when type is set to APP_COOKIE.

      +
      • If the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60, and the default value is 1.

        +
      • If the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440, and the default value is 1440.

        +
      +
      + + + + + + + + + + + + + + + + +
      Table 12 SlowStart

      Parameter

      +

      Type

      +

      Description

      +

      enable

      +

      Boolean

      +

      Specifies whether to enable slow start.

      +

      true indicates that this function is enabled, and false indicates this function is disabled.

      +

      Default: false

      +

      duration

      +

      Integer

      +

      Specifies the slow start duration, in seconds.

      +

      The value ranges from 30 to 1200, and the default value is 30.

      +

      Minimum: 30

      +

      Maximum: 1200

      +

      Default: 30

      +
      + + +

      Example Requests

      PUT
      +
      +https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75
      +
      +{
      +  "pool" : {
      +    "name" : "My pool.",
      +    "description" : "My pool update",
      +    "lb_algorithm" : "LEAST_CONNECTIONS"
      +  }
      +}
      + +

      Example Responses

      Status code: 200

      +

      Successful request.

      +
      {
      +  "pool" : {
      +    "lb_algorithm" : "LEAST_CONNECTIONS",
      +    "protocol" : "TCP",
      +    "description" : "My pool update",
      +    "admin_state_up" : true,
      +    "loadbalancers" : [ {
      +      "id" : "098b2f68-af1c-41a9-8efd-69958722af62"
      +    } ],
      +    "project_id" : "99a3fff0d03c428eac3678da6a7d0f24",
      +    "listeners" : [ {
      +      "id" : "0b11747a-b139-492f-9692-2df0b1c87193"
      +    }, {
      +      "id" : "61942790-2367-482a-8b0e-93840ea2a1c6"
      +    }, {
      +      "id" : "fd8f954c-f0f8-4d39-bb1d-41637cd6b1be"
      +    } ],
      +    "members" : [ ],
      +    "id" : "36ce7086-a496-4666-9064-5ba0e6840c75",
      +    "name" : "My pool.",
      +    "ip_version" : "dualstack"
      +  },
      +  "request_id" : "8f40128b-c72b-4b64-986a-f7e2c633d75f"
      +}
      + +

      Status Codes

      + + + + + + + + +

      Status Code

      +

      Description

      +

      200

      +

      Successful request.

      +
      + + +

      Error Codes

      See Error Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/UpdatePool.rst b/elb/api-ref/UpdatePool.rst new file mode 100644 index 000000000..d41b1c98e --- /dev/null +++ b/elb/api-ref/UpdatePool.rst @@ -0,0 +1,540 @@ +Updating a Backend Server Group +=============================== + +Function +^^^^^^^^ + +This API is used to update a backend server group. + +Constraints +^^^^^^^^^^^ + +The backend server group can be updated only when the provisioning status of the associated load balancer is **ACTIVE**. + +URI +^^^ + +PUT /v3/{project_id}/elb/pools/{pool_id} + +.. table:: **Table 1** Path parameters + + ========== ========= ====== ====================================== + Parameter Mandatory Type Description + ========== ========= ====== ====================================== + pool_id Yes String Specifies the backend server group ID. + project_id Yes String Specifies the project ID. + ========== ========= ====== ====================================== + +Request Parameters +^^^^^^^^^^^^^^^^^^ + +.. table:: **Table 2** Request body parameters + + +-----------+-----------+---------------------------------------------------------------------+-------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+=====================================================================+=====================================+ + | pool | Yes | `UpdatePoolOption <#UpdatePool__request_UpdatePoolOption>`__ object | Specifies the backend server group. | + +-----------+-----------+---------------------------------------------------------------------+-------------------------------------+ + +.. table:: **Table 3** UpdatePoolOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server group. | + | | | | The value can only be | + | | | | updated to **true**. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | No | String | Specifies the load | + | | | | balancing algorithm used by | + | | | | the load balancer to route | + | | | | requests to backend | + | | | | servers. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **ROUND_ROBIN**: | + | | | | weighted round robin | + | | | | | + | | | | - **LEAST_CONNECTIONS**: | + | | | | weighted least | + | | | | connections | + | | | | | + | | | | - **SOURCE_IP**: source IP | + | | | | hash | + | | | | | + | | | | When the value is | + | | | | **SOURCE_IP**, the weights | + | | | | of backend servers are | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server group name. | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **255** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | session_persistence | No | `UpdatePoolSess | Specifies whether to enable | + | | | ionPersistenceOption <#Upda | sticky sessions. | + | | | tePool__request_UpdatePoolS | | + | | | essionPersistenceOption>`__ | | + | | | object | | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | slow_start | No | `UpdatePoolSlowStartOpti | Specifies whether to enable | + | | | on <#UpdatePool__request_Up | slow start. After you | + | | | datePoolSlowStartOption>`__ | enable slow start, new | + | | | object | backend servers added to | + | | | | the backend server group | + | | | | are warmed up, and the | + | | | | number of requests they can | + | | | | receive increases linearly | + | | | | during the configured slow | + | | | | start duration. | + | | | | | + | | | | This parameter can be used | + | | | | when the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS. An error | + | | | | will be returned if the | + | | | | protocol is not HTTP or | + | | | | HTTPS. | + | | | | | + | | | | This parameter is | + | | | | unsupported. Please do not | + | | | | use it. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 4** UpdatePoolSessionPersistenceOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | cookie_name | No | String | Specifies the cookie name. | + | | | | | + | | | | This parameter will take | + | | | | effect only when **type** | + | | | | is set to **APP_COOKIE**. | + | | | | Otherwise, an error will be | + | | | | returned. | + | | | | | + | | | | The value can contain only | + | | | | letters, digits, hyphens | + | | | | (-), underscores (_), and | + | | | | periods (.). | + | | | | | + | | | | Minimum: **0** | + | | | | | + | | | | Maximum: **1024** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the sticky | + | | | | session type. The value can | + | | | | be **SOURCE_IP**, | + | | | | **HTTP_COOKIE**, or | + | | | | **APP_COOKIE**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, only | + | | | | **SOURCE_IP** takes | + | | | | effect. | + | | | | | + | | | | - For dedicated load | + | | | | balancers, if the | + | | | | protocol of the backend | + | | | | server group is HTTP or | + | | | | HTTPS, the value can | + | | | | only be **HTTP_COOKIE**. | + | | | | | + | | | | - For shared load | + | | | | balancers, if the | + | | | | protocol of the backend | + | | | | server group is HTTP or | + | | | | HTTPS, the value can be | + | | | | **HTTP_COOKIE** or | + | | | | **APP_COOKIE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | persistence_timeout | No | Integer | Specifies the stickiness | + | | | | duration, in minutes. | + | | | | | + | | | | This parameter will not | + | | | | take effect when **type** | + | | | | is set to **APP_COOKIE**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, the value | + | | | | ranges from **1** to | + | | | | **60**, and the default | + | | | | value is **1**. | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS, the value | + | | | | ranges from **1** to | + | | | | **1440**, and the | + | | | | default value is | + | | | | **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 5** UpdatePoolSlowStartOption + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | enable | Yes | Boolean | Specifies whether slow | + | | | | start is enabled. | + | | | | | + | | | | **true** indicates that | + | | | | slow start is enabled, and | + | | | | **false** indicates slow | + | | | | start is disabled. | + | | | | | + | | | | Default: **false** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | duration | Yes | Integer | Specifies the slow start | + | | | | duration, in seconds. | + | | | | | + | | | | The value ranges from | + | | | | **30** to **1200**, and the | + | | | | default value is **30**. | + | | | | | + | | | | Minimum: **30** | + | | | | | + | | | | Maximum: **1200** | + | | | | | + | | | | Default: **30** | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response Parameters +^^^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +.. table:: **Table 6** Response body parameters + + ========== ============================================ =============================================================== + Parameter Type Description + ========== ============================================ =============================================================== + request_id String Specifies the request ID. The value is automatically generated. + pool `Pool <#UpdatePool__response_Pool>`__ object Specifies the backend server group. + ========== ============================================ =============================================================== + +.. table:: **Table 7** Pool + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. The | + | | | value can only be updated to | + | | | **true**. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + | | | | + | | | Default: **true** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the backend server group | + | | | ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm used by the load balancer | + | | | to route requests to backend servers | + | | | in the backend server group. | + | | | | + | | | The value can be **ROUND_ROBIN** | + | | | (weighted round robin), | + | | | **LEAST_CONNECTIONS** (weighted least | + | | | connections), or **SOURCE_IP** | + | | | (source IP hash). | + | | | | + | | | When the value is **SOURCE_IP**, the | + | | | **weight** parameter is invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array of | Lists the listeners associated with | + | | `ListenerRef < | the backend server group. | + | | #UpdatePool__response_ListenerRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array of | Lists the IDs of load balancers | + | | `LoadBalancerRef <#Upd | associated with the backend server | + | | atePool__response_LoadBalancerRef>`__ | group. | + | | objects | | + | | | If only **listener_id** is specified | + | | | during the creation of the backend | + | | | server group, the ID of the | + | | | **loadbalancers** parameter in the | + | | | response is the ID of the load | + | | | balancer to which the listener is | + | | | added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array of | Lists the backend servers in the | + | | `MemberRef | backend server group. | + | | <#UpdatePool__response_MemberRef>`__ | | + | | objects | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server group | + | | | name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | project_id | String | Specifies the project ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | backend server group to receive | + | | | requests. The protocol can be TCP, | + | | | UDP, or HTTP. | + | | | | + | | | - For UDP listeners, the protocol of | + | | | the backend server group must be | + | | | UDP. | + | | | | + | | | - For TCP listeners, the protocol of | + | | | the backend server group must be | + | | | TCP. | + | | | | + | | | - For HTTP or HTTPS listeners, the | + | | | protocol of the backend server | + | | | group must be HTTP. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | `SessionPersistence <#Update | Specifies the sticky session. | + | | Pool__response_SessionPersistence>`__ | | + | | object | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ip_version | String | Specifies the IP version supported by | + | | | the backend server group. | + | | | | + | | | - Shared load balancers: The default | + | | | value is **v4**. | + | | | | + | | | - Dedicated load balancers: The | + | | | value can be **dualstack**, | + | | | **v4**, or **v6**. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP or UDP, | + | | | **ip_version** is set to | + | | | **dualstack**, indicating that both | + | | | IPv4 and IPv6 are supported. | + | | | | + | | | When the protocol of the backend | + | | | server group is HTTP, **ip_version** | + | | | is set to **v4**. | + | | | | + | | | IPv6 is unsupported. Only **v4** is | + | | | returned. | + | | | | + | | | Default: **dualstack** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | slow_start | `SlowStart | Specifies whether to enable slow | + | | <#UpdatePool__response_SlowStart>`__ | start. After you enable slow start, | + | | object | new backend servers added to the | + | | | backend server group are warmed up, | + | | | and the number of requests they can | + | | | receive increases linearly during the | + | | | configured slow start duration. | + | | | | + | | | This parameter can be used when the | + | | | protocol of the backend server group | + | | | is HTTP or HTTPS. An error will be | + | | | returned if the protocol is not HTTP | + | | | or HTTPS. | + | | | | + | | | This parameter is unsupported. Please | + | | | do not use it. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** ListenerRef + + ========= ====== ========================== + Parameter Type Description + ========= ====== ========================== + id String Specifies the listener ID. + ========= ====== ========================== + +.. table:: **Table 9** LoadBalancerRef + + ========= ====== =============================== + Parameter Type Description + ========= ====== =============================== + id String Specifies the load balancer ID. + ========= ====== =============================== + +.. table:: **Table 10** MemberRef + + ========= ====== ================================ + Parameter Type Description + ========= ====== ================================ + id String Specifies the backend server ID. + ========= ====== ================================ + +.. table:: **Table 11** SessionPersistence + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter will take effect only | + | | | when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | The value can contain only letters, | + | | | digits, hyphens (-), underscores (_), | + | | | and periods (.). | + | | | | + | | | Minimum: **0** | + | | | | + | | | Maximum: **1024** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the sticky session type. | + | | | The value can be **SOURCE_IP**, | + | | | **HTTP_COOKIE**, or **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, only | + | | | **SOURCE_IP** takes effect. | + | | | | + | | | - For dedicated load balancers, if | + | | | the protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can only be **HTTP_COOKIE**. | + | | | | + | | | - For shared load balancers, if the | + | | | protocol of the backend server | + | | | group is HTTP or HTTPS, the value | + | | | can be **HTTP_COOKIE** or | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the stickiness duration, in | + | | | minutes. This parameter will not take | + | | | effect when **type** is set to | + | | | **APP_COOKIE**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is TCP or UDP, the | + | | | value ranges from **1** to **60**, | + | | | and the default value is **1**. | + | | | | + | | | - If the protocol of the backend | + | | | server group is HTTP or HTTPS, the | + | | | value ranges from **1** to | + | | | **1440**, and the default value is | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 12** SlowStart + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | enable | Boolean | Specifies whether to enable slow | + | | | start. | + | | | | + | | | **true** indicates that this function | + | | | is enabled, and **false** indicates | + | | | this function is disabled. | + | | | | + | | | Default: **false** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | duration | Integer | Specifies the slow start duration, in | + | | | seconds. | + | | | | + | | | The value ranges from **30** to | + | | | **1200**, and the default value is | + | | | **30**. | + | | | | + | | | Minimum: **30** | + | | | | + | | | Maximum: **1200** | + | | | | + | | | Default: **30** | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Requests +^^^^^^^^^^^^^^^^ + +.. code:: screen + + PUT + + https://{elb_endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/pools/36ce7086-a496-4666-9064-5ba0e6840c75 + + { + "pool" : { + "name" : "My pool.", + "description" : "My pool update", + "lb_algorithm" : "LEAST_CONNECTIONS" + } + } + +Example Responses +^^^^^^^^^^^^^^^^^ + +**Status code: 200** + +Successful request. + +.. code:: screen + + { + "pool" : { + "lb_algorithm" : "LEAST_CONNECTIONS", + "protocol" : "TCP", + "description" : "My pool update", + "admin_state_up" : true, + "loadbalancers" : [ { + "id" : "098b2f68-af1c-41a9-8efd-69958722af62" + } ], + "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", + "listeners" : [ { + "id" : "0b11747a-b139-492f-9692-2df0b1c87193" + }, { + "id" : "61942790-2367-482a-8b0e-93840ea2a1c6" + }, { + "id" : "fd8f954c-f0f8-4d39-bb1d-41637cd6b1be" + } ], + "members" : [ ], + "id" : "36ce7086-a496-4666-9064-5ba0e6840c75", + "name" : "My pool.", + "ip_version" : "dualstack" + }, + "request_id" : "8f40128b-c72b-4b64-986a-f7e2c633d75f" + } + +Status Codes +^^^^^^^^^^^^ + +=========== =================== +Status Code Description +=========== =================== +200 Successful request. +=========== =================== + +Error Codes +^^^^^^^^^^^ + +See `Error Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/api-elb(chm).iml b/elb/api-ref/api-elb(chm).iml new file mode 100644 index 000000000..8021953ed --- /dev/null +++ b/elb/api-ref/api-elb(chm).iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/elb/api-ref/elb_dx_0000.html b/elb/api-ref/elb_dx_0000.html new file mode 100644 index 000000000..85208d757 --- /dev/null +++ b/elb/api-ref/elb_dx_0000.html @@ -0,0 +1,33 @@ + + +

      Dedicated Load Balancer APIs

      + + + + + diff --git a/elb/api-ref/elb_dx_0000.rst b/elb/api-ref/elb_dx_0000.rst new file mode 100644 index 000000000..54f4801e3 --- /dev/null +++ b/elb/api-ref/elb_dx_0000.rst @@ -0,0 +1,15 @@ +Dedicated Load Balancer APIs +============================ + +- `API Call Precaution `__ +- `Quota `__ +- `AZ `__ +- `Load Balancer Flavor `__ +- `Load Balancer `__ +- `Certificate `__ +- `Listener `__ +- `Backend Server Group `__ +- `Backend Server `__ +- `Health Check `__ +- `Forwarding Policy `__ +- `Forwarding Rule `__ diff --git a/elb/api-ref/elb_eg_v3_0000.html b/elb/api-ref/elb_eg_v3_0000.html new file mode 100644 index 000000000..09d647dbb --- /dev/null +++ b/elb/api-ref/elb_eg_v3_0000.html @@ -0,0 +1,15 @@ + + +

      Examples

      + + + + + diff --git a/elb/api-ref/elb_eg_v3_0000.rst b/elb/api-ref/elb_eg_v3_0000.rst new file mode 100644 index 000000000..037c9afc6 --- /dev/null +++ b/elb/api-ref/elb_eg_v3_0000.rst @@ -0,0 +1,6 @@ +Examples +======== + +- `Creating a Dedicated Load Balancer and Binding a New EIP to It `__ +- `Adding a Listener to a Dedicated Load Balancer `__ +- `Deleting a Dedicated Load Balancer `__ diff --git a/elb/api-ref/elb_eg_v3_0002.html b/elb/api-ref/elb_eg_v3_0002.html new file mode 100644 index 000000000..cd9e7117c --- /dev/null +++ b/elb/api-ref/elb_eg_v3_0002.html @@ -0,0 +1,65 @@ + + +

      Adding a Listener to a Dedicated Load Balancer

      +

      Scenarios

      Call the API to add a listener to a dedicated load balancer.

      + +

      Prerequisites

      • You have created a dedicated load balancer.
      • You have obtained the ID of the dedicated load balancer.
      + +

      Procedure

      1. Add a listener.
        1. Send POST https://{elb_endpoint}/v3/{project_id}/elb/listeners. project_id indicates the project ID.
        2. Add X-Auth-Token to the request header.
        3. Ensure that the following parameters are passed in the request body:
          {
          +	"listener": {
          + 		"protocol_port": 80, // Frontend port. The listener will use this port to receive requests.
          +		"protocol": "HTTP", // Frontend protocol. The listener will use this protocol to receive requests.
          +		"loadbalancer_id": "f77281cb-9f58-4347-8f82-2180d8bea789", // Load balancer that the listener is added to
          +		"name": "my_listener" // Listener name
          +	}
          +}
          +
        4. Check the response.
          • The request is successful if the following response is displayed:
            {
            +    "listener": {
            +        "id": "90ad2705-4ffd-43d3-8f75-af8086bde841",
            +        "name": "my_listener",
            +        "protocol_port": 80,
            +        "protocol": "HTTP",
            +        "description": "",
            +        "default_tls_container_ref": null,
            +        "admin_state_up": true,
            +        "loadbalancers": [
            +            {
            +                "id": "f77281cb-9f58-4347-8f82-2180d8bea789"
            +            }
            +        ],
            +        "client_ca_tls_container_ref": null,
            +        "project_id": "057ef081eb00d2732fd1c01a9be75e6f",
            +        "sni_container_refs": [],
            +        "connection_limit": -1,
            +        "default_pool_id": null,
            +        "tls_ciphers_policy": null,
            +        "tags": [],
            +        "created_at": "2020-11-21T03:09:13Z",
            +        "updated_at": "2020-11-21T03:09:13Z",
            +        "http2_enable": false,
            +        "insert_headers": {
            +            "X-Forwarded-ELB-IP": false,
            +            "X-Forwarded-Host": true,
            +            "X-Forwarded-For-Port": false,
            +            "X-Forwarded-Port": false
            +        },
            +        "member_timeout": 60,
            +        "client_timeout": 60,
            +        "keepalive_timeout": 60,
            +        "ipgroup": null,
            +        "enable_member_retry": true,
            +        "transparent_client_ip_enable": true
            +    },
            +    "request_id": "fcd61ee6a6a6c673c65fa0df0577fed9"
            +}
            +
          • If the request is abnormal, locate the fault by referring to HTTP Status Codes for Dedicated Load Balancers.
          +
        +
      + + + + +Parent topic: Examples + + + diff --git a/elb/api-ref/elb_eg_v3_0002.rst b/elb/api-ref/elb_eg_v3_0002.rst new file mode 100644 index 000000000..b2352d14c --- /dev/null +++ b/elb/api-ref/elb_eg_v3_0002.rst @@ -0,0 +1,85 @@ +Adding a Listener to a Dedicated Load Balancer +============================================== + +Scenarios +^^^^^^^^^ + +Call the API to add a listener to a dedicated load balancer. + +Prerequisites +^^^^^^^^^^^^^ + +- You have created a dedicated load balancer. +- You have obtained the ID of the dedicated load balancer. + +Procedure +^^^^^^^^^ + +#. Add a listener. + + a. Send **POST https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/listeners**. *project_id* indicates the project ID. + + b. Add **X-Auth-Token** to the request header. + + c. Ensure that the following parameters are passed in the request body: + + .. code:: screen + + { + "listener": { + "protocol_port": 80, // Frontend port. The listener will use this port to receive requests. + "protocol": "HTTP", // Frontend protocol. The listener will use this protocol to receive requests. + "loadbalancer_id": "f77281cb-9f58-4347-8f82-2180d8bea789", // Load balancer that the listener is added to + "name": "my_listener" // Listener name + } + } + + d. Check the response. + + - The request is successful if the following response is displayed: + + .. code:: screen + + { + "listener": { + "id": "90ad2705-4ffd-43d3-8f75-af8086bde841", + "name": "my_listener", + "protocol_port": 80, + "protocol": "HTTP", + "description": "", + "default_tls_container_ref": null, + "admin_state_up": true, + "loadbalancers": [ + { + "id": "f77281cb-9f58-4347-8f82-2180d8bea789" + } + ], + "client_ca_tls_container_ref": null, + "project_id": "057ef081eb00d2732fd1c01a9be75e6f", + "sni_container_refs": [], + "connection_limit": -1, + "default_pool_id": null, + "tls_ciphers_policy": null, + "tags": [], + "created_at": "2020-11-21T03:09:13Z", + "updated_at": "2020-11-21T03:09:13Z", + "http2_enable": false, + "insert_headers": { + "X-Forwarded-ELB-IP": false, + "X-Forwarded-Host": true, + "X-Forwarded-For-Port": false, + "X-Forwarded-Port": false + }, + "member_timeout": 60, + "client_timeout": 60, + "keepalive_timeout": 60, + "ipgroup": null, + "enable_member_retry": true, + "transparent_client_ip_enable": true + }, + "request_id": "fcd61ee6a6a6c673c65fa0df0577fed9" + } + + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +**Parent topic:** `Examples `__ diff --git a/elb/api-ref/elb_eg_v3_0003.html b/elb/api-ref/elb_eg_v3_0003.html new file mode 100644 index 000000000..c21e19e31 --- /dev/null +++ b/elb/api-ref/elb_eg_v3_0003.html @@ -0,0 +1,31 @@ + + +

      Deleting a Dedicated Load Balancer

      +

      Scenarios

      Call APIs to delete a dedicated load balancer.

      +

      Before you delete a dedicated load balancer, delete all resources associated with it. Figure 1 shows the associated resources.

      +Figure 1 Resources associated with a dedicated load balancer
      + +

      Procedure

      Perform the following steps to delete the associated resources and the load balancer. Skip the corresponding step if the associated resources do not exist. For example, you can skip 1 if no health check is configured.

      +
      1. Delete the health check configured for each associated backend server group.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elb/healthmonitors/{healthmonitor_id}. project_id indicates the project ID, and healthmonitor_id indicates the health check ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      2. Remove backend servers from each associated backend server group.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elb/pools/{pool_id}/members/{member_id}. project_id indicates the project ID, pool_id indicates the backend server group ID, and member_id indicates the backend server ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      3. Delete each associated backend server group.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elb/pools/{pool_id}. project_id indicates the project ID, and pool_id indicates the backend server group ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      4. Delete the forwarding rules added to each listener.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elb/l7policies/{policy_id}/rules/{rule_id}. project_id indicates the project ID, policy_id indicates the forwarding policy ID, and rule_id indicates the forwarding rule ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      5. Delete the forwarding policies added to each listener.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elb/l7policies/{policy_id}. project_id indicates the project ID, and policy_id indicates the forwarding policy ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      6. Delete each listener added to the load balancer.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elb/listeners/{listener_id}. project_id indicates the project ID, and listener_id indicates the listener ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      7. Delete the load balancer.
        1. Send DELETE https://{elb_endpoint}/v3/{project_id}/elbloadbalancers/{loadbalancer_id}. project_id indicates the project ID, and loadbalancer_id indicates the load balancer ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response. +
        +
      + + + + +Parent topic: Examples + + + diff --git a/elb/api-ref/elb_eg_v3_0003.rst b/elb/api-ref/elb_eg_v3_0003.rst new file mode 100644 index 000000000..ad1517ac2 --- /dev/null +++ b/elb/api-ref/elb_eg_v3_0003.rst @@ -0,0 +1,86 @@ +Deleting a Dedicated Load Balancer +================================== + +Scenarios +^^^^^^^^^ + +Call APIs to delete a dedicated load balancer. + +Before you delete a dedicated load balancer, delete all resources associated with it. `Figure 1 <#elb_eg_v3_0003__fig14527132320389>`__ shows the associated resources. + +| **Figure 1** Resources associated with a dedicated load balancer +| |image1| + +Procedure +^^^^^^^^^ + +Perform the following steps to delete the associated resources and the load balancer. Skip the corresponding step if the associated resources do not exist. For example, you can skip `1 <#elb_eg_v3_0003__li693163653915>`__ if no health check is configured. + +#. Delete the health check configured for each associated backend server group. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/healthmonitors/**\ *{healthmonitor_id}*. *project_id* indicates the project ID, and *healthmonitor_id* indicates the health check ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Remove backend servers from each associated backend server group. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/pools/**\ *{pool_id}*\ **/members/**\ *{member_id}*. *project_id* indicates the project ID, *pool_id* indicates the backend server group ID, and **member_id** indicates the backend server ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Delete each associated backend server group. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/{project_id}/elb/pools/**\ *{pool_id}*. *project_id* indicates the project ID, and *pool_id* indicates the backend server group ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Delete the forwarding rules added to each listener. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/l7policies/**\ *{policy_id}*\ **/rules/**\ *{rule_id}*. *project_id* indicates the project ID, *policy_id* indicates the forwarding policy ID, and *rule_id* indicates the forwarding rule ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Delete the forwarding policies added to each listener. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/l7policies/**\ *{policy_id}*. *project_id* indicates the project ID, and *policy_id* indicates the forwarding policy ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Delete each listener added to the load balancer. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/listeners/**\ *{listener_id}*. *project_id* indicates the project ID, and *listener_id* indicates the listener ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Delete the load balancer. + + a. Send **DELETE https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elbloadbalancers/**\ *{loadbalancer_id}*. *project_id* indicates the project ID, and *loadbalancer_id* indicates the load balancer ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - If the request is successful, 204 is returned, and the response body is empty. + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +**Parent topic:** `Examples `__ + +.. |image1| image:: en-us_image_0294158472.png + :class: eddx + :name: elb_eg_v3_0003__image9527192311384 diff --git a/elb/api-ref/elb_fl_0000.html b/elb/api-ref/elb_fl_0000.html new file mode 100644 index 000000000..9d97f9642 --- /dev/null +++ b/elb/api-ref/elb_fl_0000.html @@ -0,0 +1,15 @@ + + +

      Appendix

      + + + + + diff --git a/elb/api-ref/elb_fl_0000.rst b/elb/api-ref/elb_fl_0000.rst new file mode 100644 index 000000000..6c94ae061 --- /dev/null +++ b/elb/api-ref/elb_fl_0000.rst @@ -0,0 +1,6 @@ +Appendix +======== + +- `Status Codes `__ +- `ELB Metrics `__ +- `General Information About Shared Load Balancers `__ diff --git a/elb/api-ref/elb_fl_0002.html b/elb/api-ref/elb_fl_0002.html new file mode 100644 index 000000000..d9994a131 --- /dev/null +++ b/elb/api-ref/elb_fl_0002.html @@ -0,0 +1,177 @@ + + +

      ELB Metrics

      +

      Introduction

      This section describes the metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metrics of a monitored object and the generated alarms.

      + +

      Namespace

      SYS.ELB

      + +

      Metrics

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Metric

      +

      Metric Name

      +

      Description

      +

      Value Range

      +

      Remarks

      +

      m1_cps

      +

      Concurrent Connections

      +

      Total number of concurrent connections processed by the monitored object per second

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m2_act_conn

      +

      Active Connections

      +

      Total number of active connections processed by the monitored object per second

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m3_inact_conn

      +

      Inactive Connections

      +

      Total number of inactive connections processed by the monitored object per second

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m4_ncps

      +

      New Connections

      +

      Total number of new connections processed by the monitored object per second

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m5_in_pps

      +

      Incoming Packets

      +

      Incoming packets received by the monitored object per second

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m6_out_pps

      +

      Outgoing Packets

      +

      Outgoing packets sent from the monitored object per second

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m7_in_Bps

      +

      Inbound Rate

      +

      Incoming bytes received by the monitored object per second

      +

      Unit: Byte/s

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m8_out_Bps

      +

      Outbound Rate

      +

      Outgoing bytes sent from the monitored object per second

      +

      Unit: Byte/s

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer, elastic load balancer listener, or classic load balancer

      +

      m9_abnormal_servers

      +

      Unhealthy Servers

      +

      Number of backend servers considered unhealthy

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer or classic load balancer

      +

      ma_normal_servers

      +

      Healthy Servers

      +

      Number of backend servers considered healthy

      +

      Unit: count

      +

      ≥ 0

      +

      Monitored object: an elastic load balancer or classic load balancer

      +
      + + +

      Dimensions

      + + + + + + + + + + + + + + +

      Key

      +

      Value

      +

      lb_instance_id

      +

      ID of a classic load balancer

      +

      lbaas_instance_id

      +

      ID of an elastic load balancer

      +

      lbaas_listener_id

      +

      ID of an elastic load balancer listener

      +
      + + + + + +Parent topic: Appendix + + + diff --git a/elb/api-ref/elb_fl_0002.rst b/elb/api-ref/elb_fl_0002.rst new file mode 100644 index 000000000..d63ea1c0d --- /dev/null +++ b/elb/api-ref/elb_fl_0002.rst @@ -0,0 +1,103 @@ +ELB Metrics +=========== + +Introduction +^^^^^^^^^^^^ + +This section describes the metrics that can be monitored by Cloud Eye as well as their namespaces and dimensions. You can use APIs provided by Cloud Eye to query the metrics of a monitored object and the generated alarms. + +Namespace +^^^^^^^^^ + +SYS.ELB + +Metrics +^^^^^^^ + ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| Metric | Metric Name | Description | Value Range | Remarks | ++=======================+=======================+=======================+=======================+=======================+ +| m1_cps | Concurrent | Total number of | ≥ 0 | Monitored object: an | +| | Connections | concurrent | | elastic load | +| | | connections processed | | balancer, elastic | +| | | by the monitored | | load balancer | +| | | object per second | | listener, or classic | +| | | | | load balancer | +| | | Unit: count | | | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m2_act_conn | Active Connections | Total number of | ≥ 0 | Monitored object: an | +| | | active connections | | elastic load | +| | | processed by the | | balancer, elastic | +| | | monitored object per | | load balancer | +| | | second | | listener, or classic | +| | | | | load balancer | +| | | Unit: count | | | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m3_inact_conn | Inactive Connections | Total number of | ≥ 0 | Monitored object: an | +| | | inactive connections | | elastic load | +| | | processed by the | | balancer, elastic | +| | | monitored object per | | load balancer | +| | | second | | listener, or classic | +| | | | | load balancer | +| | | Unit: count | | | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m4_ncps | New Connections | Total number of new | ≥ 0 | Monitored object: an | +| | | connections processed | | elastic load | +| | | by the monitored | | balancer, elastic | +| | | object per second | | load balancer | +| | | | | listener, or classic | +| | | Unit: count | | load balancer | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m5_in_pps | Incoming Packets | Incoming packets | ≥ 0 | Monitored object: an | +| | | received by the | | elastic load | +| | | monitored object per | | balancer, elastic | +| | | second | | load balancer | +| | | | | listener, or classic | +| | | Unit: count | | load balancer | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m6_out_pps | Outgoing Packets | Outgoing packets sent | ≥ 0 | Monitored object: an | +| | | from the monitored | | elastic load | +| | | object per second | | balancer, elastic | +| | | | | load balancer | +| | | Unit: count | | listener, or classic | +| | | | | load balancer | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m7_in_Bps | Inbound Rate | Incoming bytes | ≥ 0 | Monitored object: an | +| | | received by the | | elastic load | +| | | monitored object per | | balancer, elastic | +| | | second | | load balancer | +| | | | | listener, or classic | +| | | Unit: Byte/s | | load balancer | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m8_out_Bps | Outbound Rate | Outgoing bytes sent | ≥ 0 | Monitored object: an | +| | | from the monitored | | elastic load | +| | | object per second | | balancer, elastic | +| | | | | load balancer | +| | | Unit: Byte/s | | listener, or classic | +| | | | | load balancer | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| m9_abnormal_servers | Unhealthy Servers | Number of backend | ≥ 0 | Monitored object: an | +| | | servers considered | | elastic load balancer | +| | | unhealthy | | or classic load | +| | | | | balancer | +| | | Unit: count | | | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| ma_normal_servers | Healthy Servers | Number of backend | ≥ 0 | Monitored object: an | +| | | servers considered | | elastic load balancer | +| | | healthy | | or classic load | +| | | | | balancer | +| | | Unit: count | | | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + +Dimensions +^^^^^^^^^^ + +================= ======================================= +Key Value +================= ======================================= +lb_instance_id ID of a classic load balancer +lbaas_instance_id ID of an elastic load balancer +lbaas_listener_id ID of an elastic load balancer listener +================= ======================================= + +**Parent topic:** `Appendix `__ diff --git a/elb/api-ref/elb_fl_0003.html b/elb/api-ref/elb_fl_0003.html new file mode 100644 index 000000000..b22c7fec2 --- /dev/null +++ b/elb/api-ref/elb_fl_0003.html @@ -0,0 +1,20 @@ + + +

      General Information About Shared Load Balancers

      +

      The following information applies only to shared load balancers.

      + + + + + +Parent topic: Appendix + + + diff --git a/elb/api-ref/elb_fl_0003.rst b/elb/api-ref/elb_fl_0003.rst new file mode 100644 index 000000000..71c5a4d92 --- /dev/null +++ b/elb/api-ref/elb_fl_0003.rst @@ -0,0 +1,10 @@ +General Information About Shared Load Balancers +=============================================== + +The following information applies only to shared load balancers. + +- `Querying Data in Pages `__ +- `Sequencing Query Results `__ +- `Basic Workflow `__ + +**Parent topic:** `Appendix `__ diff --git a/elb/api-ref/elb_fl_0004.html b/elb/api-ref/elb_fl_0004.html new file mode 100644 index 000000000..fcc7890de --- /dev/null +++ b/elb/api-ref/elb_fl_0004.html @@ -0,0 +1,93 @@ + + +

      Querying Data in Pages

      +

      APIs v2.0 allow users to query data in pages by adding the limit and marker parameters to the URL of the list request. The query results are displayed in the ascending order of IDs.

      +
      • next ref in the response indicates the URL of the next page.
      • previous ref in the response indicates the URL of the previous page.
      +

      Request

      + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Type

      +

      Mandatory

      +

      Description

      +

      limit

      +

      int

      +

      No

      +

      Specifies the number of records on each page.

      +

      marker

      +

      String

      +

      No

      +

      Specifies the resource ID of pagination query. If the parameter is left blank, only resources on the first page are queried.

      +

      page_reverse

      +

      Bool

      +

      No

      +

      Specifies the paging sequence. The value can be true or false.

      +
      + + +

      Response

      None

      + +

      Example

      • Example request
        GET /v2.0/networks?limit=2&marker=3d42a0d4-a980-4613-ae76-a2cddecff054&page_reverse=False
        +
      + +
      • Example response
        {
        +    "networks": [
        +        {
        +            "status": "ACTIVE",
        +            "subnets": [],
        +            "name": "liudongtest ",
        +            "admin_state_up": false,
        +            "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f",
        +            "id": "60c809cb-6731-45d0-ace8-3bf5626421a9"
        +        },
        +        {
        +            "status": "ACTIVE",
        +            "subnets": [
        +                "132dc12d-c02a-4c90-9cd5-c31669aace04"
        +            ],
        +            "name": "publicnet",
        +            "admin_state_up": true,
        +            "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f",
        +            "id": "9daeac7c-a98f-430f-8e38-67f9c044e299"
        +        }
        +    ],
        +    "networks_links": [
        +        {
        +            "href": "http://192.168.82.231:9696/v2.0/networks?limit=2&marker=9daeac7c-a98f-430f-8e38-67f9c044e299",
        +            "rel": "next"
        +        },
        +        {
        +            "href": "http://192.168.82.231:9696/v2.0/networks?limit=2&marker=60c809cb-6731-45d0-ace8-3bf5626421a9&page_reverse=True",
        +            "rel": "previous"
        +        }
        +    ]
        +}
        +
      +

      + + + +Parent topic: General Information About Shared Load Balancers + + + diff --git a/elb/api-ref/elb_fl_0004.rst b/elb/api-ref/elb_fl_0004.rst new file mode 100644 index 000000000..740e99f42 --- /dev/null +++ b/elb/api-ref/elb_fl_0004.rst @@ -0,0 +1,76 @@ +Querying Data in Pages +====================== + +APIs v2.0 allow users to query data in pages by adding the limit and marker parameters to the URL of the list request. The query results are displayed in the ascending order of IDs. + +- **next ref** in the response indicates the URL of the next page. +- **previous ref** in the response indicates the URL of the previous page. + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +---------------+----------+---------------+------------------------------------------------------------------------+ + | **Parameter** | **Type** | **Mandatory** | **Description** | + +===============+==========+===============+========================================================================+ + | limit | int | No | Specifies the number of records on each page. | + +---------------+----------+---------------+------------------------------------------------------------------------+ + | marker | String | No | Specifies the resource ID of pagination query. If the parameter is | + | | | | left blank, only resources on the first page are queried. | + +---------------+----------+---------------+------------------------------------------------------------------------+ + | page_reverse | Bool | No | Specifies the paging sequence. The value can be **true** or **false**. | + +---------------+----------+---------------+------------------------------------------------------------------------+ + +Response +^^^^^^^^ + +None + +Example +^^^^^^^ + +- Example request + + .. code:: screen + + GET /v2.0/networks?limit=2&marker=3d42a0d4-a980-4613-ae76-a2cddecff054&page_reverse=False + +- Example response + + .. code:: screen + + { + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "liudongtest ", + "admin_state_up": false, + "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", + "id": "60c809cb-6731-45d0-ace8-3bf5626421a9" + }, + { + "status": "ACTIVE", + "subnets": [ + "132dc12d-c02a-4c90-9cd5-c31669aace04" + ], + "name": "publicnet", + "admin_state_up": true, + "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", + "id": "9daeac7c-a98f-430f-8e38-67f9c044e299" + } + ], + "networks_links": [ + { + "href": "http://192.168.82.231:9696/v2.0/networks?limit=2&marker=9daeac7c-a98f-430f-8e38-67f9c044e299", + "rel": "next" + }, + { + "href": "http://192.168.82.231:9696/v2.0/networks?limit=2&marker=60c809cb-6731-45d0-ace8-3bf5626421a9&page_reverse=True", + "rel": "previous" + } + ] + } + +**Parent topic:** `General Information About Shared Load Balancers `__ diff --git a/elb/api-ref/elb_fl_0005.html b/elb/api-ref/elb_fl_0005.html new file mode 100644 index 000000000..aa2d2b1d3 --- /dev/null +++ b/elb/api-ref/elb_fl_0005.html @@ -0,0 +1,46 @@ + + +

      Sequencing Query Results

      +

      APIs v2.0 enable the system to sort queried results based on customized keys by adding the sort_key and sort_dir parameters to the URL of the list request. sort_key specifies the parameter used for sequencing results, and sort_dir specifies whether results are displayed in ascending or descending order. These APIs allow sorting query results by multiple criteria. The number of sort_key parameters must be equal to that of sort_dir parameters. Otherwise, 400 status code is returned.

      +

      Example Request

      GET /v2.0/networks?sort_key=name&sort_dir=asc&sort_key=status&sort_dir=desc
      + +

      Example Response

      {
      +    "networks": [
      +        {
      +            "status": "ACTIVE",
      +            "subnets": [],
      +            "name": "liudongtest ",
      +            "admin_state_up": false,
      +            "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f",
      +            "id": "60c809cb-6731-45d0-ace8-3bf5626421a9"
      +        },
      +        {
      +            "status": "ACTIVE",
      +            "subnets": [
      +                "132dc12d-c02a-4c90-9cd5-c31669aace04"
      +            ],
      +            "name": "publicnet",
      +            "admin_state_up": true,
      +            "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f",
      +            "id": "9daeac7c-a98f-430f-8e38-67f9c044e299"
      +        },
      +        {
      +            "status": "ACTIVE",
      +            "subnets": [
      +                "e25189a8-54df-4948-9396-d8291ffc92a0"
      +            ],
      +            "name": "testnet01",
      +            "admin_state_up": true,
      +            "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f",
      +            "id": "3d42a0d4-a980-4613-ae76-a2cddecff054"
      +        }
      +    ]
      +}
      + + + + +Parent topic: General Information About Shared Load Balancers + + + diff --git a/elb/api-ref/elb_fl_0005.rst b/elb/api-ref/elb_fl_0005.rst new file mode 100644 index 000000000..1c8814537 --- /dev/null +++ b/elb/api-ref/elb_fl_0005.rst @@ -0,0 +1,51 @@ +Sequencing Query Results +======================== + +APIs v2.0 enable the system to sort queried results based on customized keys by adding the **sort_key** and **sort_dir** parameters to the URL of the list request. **sort_key** specifies the parameter used for sequencing results, and **sort_dir** specifies whether results are displayed in ascending or descending order. These APIs allow sorting query results by multiple criteria. The number of **sort_key** parameters must be equal to that of **sort_dir** parameters. Otherwise, 400 status code is returned. + +Example Request +^^^^^^^^^^^^^^^ + +.. code:: screen + + GET /v2.0/networks?sort_key=name&sort_dir=asc&sort_key=status&sort_dir=desc + +Example Response +^^^^^^^^^^^^^^^^ + +.. code:: screen + + { + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "liudongtest ", + "admin_state_up": false, + "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", + "id": "60c809cb-6731-45d0-ace8-3bf5626421a9" + }, + { + "status": "ACTIVE", + "subnets": [ + "132dc12d-c02a-4c90-9cd5-c31669aace04" + ], + "name": "publicnet", + "admin_state_up": true, + "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", + "id": "9daeac7c-a98f-430f-8e38-67f9c044e299" + }, + { + "status": "ACTIVE", + "subnets": [ + "e25189a8-54df-4948-9396-d8291ffc92a0" + ], + "name": "testnet01", + "admin_state_up": true, + "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", + "id": "3d42a0d4-a980-4613-ae76-a2cddecff054" + } + ] + } + +**Parent topic:** `General Information About Shared Load Balancers `__ diff --git a/elb/api-ref/elb_fl_0006.html b/elb/api-ref/elb_fl_0006.html new file mode 100644 index 000000000..7e56fe71b --- /dev/null +++ b/elb/api-ref/elb_fl_0006.html @@ -0,0 +1,32 @@ + + +

      Querying Versions

      +

      Function

      Queries all available versions.

      +

      If there is no version added to the URL, all available versions are returned.

      + +

      URI

      GET /

      + +

      Request

      None

      + +

      Response

      None

      + +

      Example

      • Example request
        GET /
        +
      + +
      • Example response
        {
        +   "versions": [
        +      {
        +          "status": "CURRENT",
        +          "id": "v2.0",
        +          "links": [
        +         {
        +            "href": "http://192.168.82.231:9696/v2.0",
        +            "rel": "self"
        +         }
        +        ]
        +       }
        +     ]
        +}
        +
      + + diff --git a/elb/api-ref/elb_fl_0006.rst b/elb/api-ref/elb_fl_0006.rst new file mode 100644 index 000000000..6093a69c3 --- /dev/null +++ b/elb/api-ref/elb_fl_0006.rst @@ -0,0 +1,52 @@ +Querying Versions +================= + +Function +^^^^^^^^ + +Queries all available versions. + +If there is no version added to the URL, all available versions are returned. + +URI +^^^ + +GET / + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example +^^^^^^^ + +- Example request + + .. code:: screen + + GET / + +- Example response + + .. code:: screen + + { + "versions": [ + { + "status": "CURRENT", + "id": "v2.0", + "links": [ + { + "href": "http://192.168.82.231:9696/v2.0", + "rel": "self" + } + ] + } + ] + } diff --git a/elb/api-ref/elb_fl_0007.html b/elb/api-ref/elb_fl_0007.html new file mode 100644 index 000000000..dc9ea0c1c --- /dev/null +++ b/elb/api-ref/elb_fl_0007.html @@ -0,0 +1,15 @@ + + +

      Basic Workflow

      +

      The basic workflow of elastic load balancers contains the following: creating a load balancer, adding a listener to a specified load balancer, adding a backend server group to a specified listener, configuring a health check for a specified backend server group, and adding a backend server to a specified backend server group. Deletion operations include removing a backend server, deleting a health check, deleting a backend server group, deleting a listener, and deleting a load balancer.

      +

      Provision Resources

      • Creating a load balancer
      • Adding a listener to a specified load balancer
      • Adding a backend server group to a specified listener
      • Configuring a health check for a specified backend server group
      • Adding a backend server to a specified backend server group
      + +

      Reclaim Resources

      • Removing a backend server
      • Deleting a health check
      • Deleting a backend server group
      • Deleting a listener
      • Deleting a load balancer
      + + + + +Parent topic: General Information About Shared Load Balancers + + + diff --git a/elb/api-ref/elb_fl_0007.rst b/elb/api-ref/elb_fl_0007.rst new file mode 100644 index 000000000..c119b7408 --- /dev/null +++ b/elb/api-ref/elb_fl_0007.rst @@ -0,0 +1,24 @@ +Basic Workflow +============== + +The basic workflow of elastic load balancers contains the following: creating a load balancer, adding a listener to a specified load balancer, adding a backend server group to a specified listener, configuring a health check for a specified backend server group, and adding a backend server to a specified backend server group. Deletion operations include removing a backend server, deleting a health check, deleting a backend server group, deleting a listener, and deleting a load balancer. + +Provision Resources +^^^^^^^^^^^^^^^^^^^ + +- Creating a load balancer +- Adding a listener to a specified load balancer +- Adding a backend server group to a specified listener +- Configuring a health check for a specified backend server group +- Adding a backend server to a specified backend server group + +Reclaim Resources +^^^^^^^^^^^^^^^^^ + +- Removing a backend server +- Deleting a health check +- Deleting a backend server group +- Deleting a listener +- Deleting a load balancer + +**Parent topic:** `General Information About Shared Load Balancers `__ diff --git a/elb/api-ref/elb_gc_0000.html b/elb/api-ref/elb_gc_0000.html new file mode 100644 index 000000000..f9691cc17 --- /dev/null +++ b/elb/api-ref/elb_gc_0000.html @@ -0,0 +1,15 @@ + + +

      Common Parameters

      + + + + + diff --git a/elb/api-ref/elb_gc_0000.rst b/elb/api-ref/elb_gc_0000.rst new file mode 100644 index 000000000..c6efe965a --- /dev/null +++ b/elb/api-ref/elb_gc_0000.rst @@ -0,0 +1,6 @@ +Common Parameters +================= + +- `Error Codes `__ +- `HTTP Status Codes of Shared Load Balancers `__ +- `HTTP Status Codes for Dedicated Load Balancers `__ diff --git a/elb/api-ref/elb_gc_0001.html b/elb/api-ref/elb_gc_0001.html new file mode 100644 index 000000000..a109914fa --- /dev/null +++ b/elb/api-ref/elb_gc_0001.html @@ -0,0 +1,1249 @@ + + +

      Error Codes

      +

      The following error code descriptions are only suitable for classic load balancers.

      +

      Overview

      If an error occurs when using an API, an error response will be returned, which contains the error code and a piece of message, as shown in the following example. The following table lists error codes and their descriptions.

      + +

      Example of Returned Error Information

      { 
      +    "error": 
      +    { 
      +    "message": "listener exist, the port repeat", 
      +    "code": "ELB.6101" 
      +    } 
      +}
      + +

      Error Codes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Error codes

      Status Code

      +

      Error Code

      +

      Message

      +

      Description

      +

      Solution

      +

      400

      +

      ELB.0002

      +

      Api request is null.

      +

      The request is empty.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.0004

      +

      Api response is null or invaild.

      +

      The response is empty.

      +

      Ensure that the backend server is healthy.

      +

      400

      +

      ELB.0230

      +

      Tenant_id is empty.

      +

      The project ID is left blank.

      +

      Correct the project ID.

      +

      400

      +

      ELB.1000

      +

      The loadbalancer URL is too long.

      +

      The URL length exceeds the limit.

      +

      Correct the URL.

      +

      400

      +

      ELB.1010

      +

      Query elb quota error.

      +

      Failed to query the quota.

      +

      Contact customer service.

      +

      400

      +

      ELB.1020

      +

      Lb ID is not correct.

      +

      Incorrect load balancer ID.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1001

      +

      Request parameters error, private_key or certificate is nil or empty.

      +

      Request parameters error, lb type, name, admin_state_up one of them is empty.

      +

      Parameter type, name, or admin_status_up is left blank.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1001

      +

      Request parameter is not valid.

      +

      The length of the load balancer name exceeds the limit.

      +

      Change the listener name.

      +

      400

      +

      ELB.1021

      +

      Request parameters error, name invalid.

      +

      Invalid load balancer name.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1031

      +

      Request parameters error, lb len description too long.

      +

      The length of the load balancer description exceeds the limit.

      +

      Change the description.

      +

      400

      +

      ELB.1041

      +

      Request parameters error, lb type is not valid.

      +

      Invalid load balancer type.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1051

      +

      Request parameters error, lb bandwidth is not valid.

      +

      Invalid load balancer bandwidth.

      +

      Change the parameter settings.

      +

      4000

      +

      ELB.1061

      +

      Request parameters error, lb vip_address and vip_subnet_id are nil.

      +

      The floating IP address or subnet ID is left blank.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1071

      +

      Request parameters error, lb vip_address is not valid.

      +

      Invalid floating IP address.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1081

      +

      Request parameters error, lb vpc_id is empty.

      +

      The VPC ID is left blank.

      +

      Change the parameter settings.

      +

      403

      +

      ELB.1091

      +

      Lb number larger than quota.

      +

      The number of load balancers exceeds the quota.

      +

      Request a higher quota or delete load balancers that are no longer needed.

      +

      400

      +

      ELB.1101

      +

      Vip address is exist.

      +

      The floating IP address exists.

      +

      Enter a valid floating IP address.

      +

      404

      +

      ELB.1002

      +

      Find lb failed.

      +

      The load balancer does not exist.

      +

      Change the load balancer ID.

      +

      400

      +

      ELB.1008

      +

      There is at least one member under the lb.

      +

      Failed to delete the load balancer.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1018

      +

      There is at least one member under the lb.

      +

      The load balancer has backend ECSs added.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.1005

      +

      Update request paramters error.

      +

      Failed to modify the load balancer.

      +

      Check the parameters.

      +

      400

      +

      ELB.1015

      +

      Lb can not be updated.

      +

      The load balancer cannot be modified.

      +

      Check the parameters.

      +

      400

      +

      ELB.1025

      +

      Udpate request parameters error, name is too long.

      +

      The length of the load balancer name exceeds the limit.

      +

      Change the load balancer name.

      +

      400

      +

      ELB.1035

      +

      Update request parameters error, name is not valid.

      +

      Invalid load balancer name.

      +

      Change the load balancer name.

      +

      400

      +

      ELB.1045

      +

      Update request parameters error, description too long.

      +

      The length of the load balancer description exceeds the limit.

      +

      Change the description.

      +

      400

      +

      ELB.1003

      +

      Lb not exist.

      +

      The load balancer does not exist.

      +

      Check the load balancer ID.

      +

      400

      +

      ELB.1004

      +

      Query condition is not valid.

      +

      Invalid query condition.

      +

      Change the query condition.

      +

      400

      +

      ELB.6000

      +

      Listener ID length is not correct.

      +

      The length of the listener ID exceeds the limit.

      +

      Change the listener ID.

      +

      400

      +

      ELB.6010

      +

      Listener ID content is not correct.

      +

      Invalid listener ID.

      +

      Change the listener ID.

      +

      400

      +

      ELB.6030

      +

      Listener is not associated with loadbalancer id.

      +

      The listener does not belong to any load balancer.

      +

      Check the listener ID.

      +

      400

      +

      ELB.6040

      +

      The loadbalaner that the listener belongs to is not exist.

      +

      The load balancer to which the listener is added does not exist.

      +

      Check the load balancer ID.

      +

      400

      +

      ELB.6020

      +

      Listener url is not correct.

      +

      Incorrect listener URL.

      +

      Correct the URL.

      +

      400

      +

      ELB.6001

      +

      Request parameters error, "..nilKey.." is nil.

      +

      A mandatory parameter is left blank.

      +

      Specify the mandatory parameters.

      +

      400

      +

      ELB.6011

      +

      Request parameters error, listener name too long.

      +

      The length of the listener name exceeds the limit.

      +

      Change the listener name.

      +

      400

      +

      ELB.6021

      +

      Request parameters error, listener name is not valid.

      +

      Invalid listener name.

      +

      Change the listener name.

      +

      400

      +

      ELB.6031

      +

      Request parameters error, listener len description too long.

      +

      The length of the listener description exceeds the limit.

      +

      Change the description.

      +

      400

      +

      ELB.6041

      +

      Request parameters error, listener port is not in 1 ~ 65535.

      +

      Invalid port number.

      +

      Change the port number.

      +

      400

      +

      ELB.6051

      +

      Request parameters error, listener lb algorithm is not valid.

      +

      Invalid load balancing algorithm.

      +

      Change the load balancing algorithm.

      +

      400

      +

      ELB.6061

      +

      Request parameters error, listener protocol is not valid.

      +

      Invalid protocol used by the listener.

      +

      Change the protocol.

      +

      400

      +

      ELB.6071

      +

      Request parameters error, listener backend protocol is not valid.

      +

      Invalid backend ECS protocol.

      +

      Change the protocol.

      +

      400

      +

      ELB.6081

      +

      Request parameters error, listener sticky_session_type is not valid.

      +

      Invalid sticky session type.

      +

      Check the load balancer ID.

      +

      403

      +

      ELB.6091

      +

      Request lb has more than user listener quota.

      +

      The number of listeners reaches the limit.

      +

      No more listeners can be added.

      +

      400

      +

      ELB.6101

      +

      Listener port is repeated.

      +

      The port exists.

      +

      Use another port number.

      +

      503

      +

      ELB.6002

      +

      Delete listener failed, listener does not exist.

      +

      The listener does not exist.

      +

      Check the listener ID.

      +

      400

      +

      ELB.6015

      +

      This listener property cannot be updated

      +

      The property cannot be modified.

      +

      Select a property that can be modified.

      +

      400

      +

      ELB.6025

      +

      Udpate request parameters error, listener len name too long.

      +

      The length of the listener name exceeds the limit.

      +

      Change the listener name.

      +

      400

      +

      ELB.6035

      +

      Udpate request parameters error, listener name is not valid.

      +

      Invalid listener name.

      +

      Change the listener name.

      +

      400

      +

      ELB.6045

      +

      Update request parameters error, listener len description too long.

      +

      The length of the listener description exceeds the limit.

      +

      Change the description.

      +

      400

      +

      ELB.6003

      +

      Listener query condition is not valid.

      +

      Invalid query condition.

      +

      Change the query condition.

      +

      400

      +

      ELB.2000

      +

      Member url is not correct.

      +

      Incorrect backend ECS URL.

      +

      Correct the URL.

      +

      400

      +

      ELB.2003

      +

      Query member failed.

      +

      Failed to query the backend ECS.

      +

      Contact customer service.

      +

      400

      +

      ELB.2005

      +

      Update member failed.

      +

      Failed to update the backend ECS.

      +

      Contact customer service.

      +

      400

      +

      ELB.2010

      +

      Member listener ID length is not correct.

      +

      The length of the listener ID exceeds the limit.

      +

      Change the listener ID.

      +

      400

      +

      ELB.2020

      +

      Member listener ID content is not correct.

      +

      Incorrect listener ID.

      +

      Change the listener ID.

      +

      403

      +

      ELB.2001

      +

      Create member failed, the total amount of members exceeds the system setting.

      +

      Failed to add the ECS because the number of backend ECSs reaches the limit.

      +

      Check the maximum number of backend servers that can be added.

      +

      400

      +

      ELB.2011

      +

      Add member listener is not exist.

      +

      The listener does not exist.

      +

      Ensure that the listener exists.

      +

      400

      +

      ELB.2021

      +

      Request parameters error, member address is null.

      +

      Invalid address.

      +

      Check the IP address.

      +

      400

      +

      ELB.2002

      +

      Delete member input param error.

      +

      Incorrect parameters.

      +

      Change the parameter settings.

      +

      400

      +

      ELB.2012

      +

      This member is not exist.

      +

      The backend ECS does not exist.

      +

      Ensure that the backend server exists.

      +

      400

      +

      ELB.7000

      +

      Listener_id must not be null.

      +

      The listener ID is left blank.

      +

      Change the listener ID and deliver the request again.

      +

      400

      +

      ELB.7010

      +

      Healthcheck listener is not exist.

      +

      The listener with which the health check is associated does not exist.

      +

      Change the listener ID and deliver the request again.

      +

      400

      +

      ELB.7020

      +

      This healthcheck is not exist.

      +

      The health check does not exist.

      +

      Change the health check ID and deliver the request again.

      +

      400

      +

      ELB.7001

      +

      Healthcheck_interval is illegal.

      +

      Invalid health check interval.

      +

      Change the interval.

      +

      400

      +

      ELB.7002

      +

      Healthcheck delete condition is not valid.

      +

      Invalid query condition.

      +

      Change the query condition.

      +

      400

      +

      ELB.7001

      +

      Healthcheck update condition is not valid.

      +

      Invalid query condition.

      +

      Change the query condition.

      +

      400

      +

      ELB.7004

      +

      Healthcheck query condition is not valid.

      +

      Invalid query condition.

      +

      Change the query condition.

      +

      400

      +

      ELB.7014

      +

      Healthcheck configuration not exist.

      +

      The health check does not exist.

      +

      Check the health check ID.

      +

      400

      +

      ELB.8001

      +

      Create a SG error.

      +

      Failed to create the security group.

      +

      Contact customer service.

      +

      400

      +

      ELB.8101

      +

      Create VPC error.

      +

      Failed to create the VPC.

      +

      Contact customer service.

      +

      400

      +

      ELB.8102

      +

      Delete VPC error.

      +

      Failed to delete the VPC.

      +

      Contact customer service.

      +

      400

      +

      ELB.8103

      +

      Query VPC error.

      +

      Failed to query the VPC.

      +

      Contact customer service.

      +

      400

      +

      ELB.8201

      +

      Create subnet error.

      +

      Failed to create the subnet.

      +

      Contact customer service.

      +

      400

      +

      ELB.8202

      +

      Delete subnet error.

      +

      Failed to delete the subnet.

      +

      Contact customer service.

      +

      400

      +

      ELB.8203

      +

      Query subnet error.

      +

      Failed to query the subnet.

      +

      Contact customer service.

      +

      400

      +

      ELB.9001

      +

      Interval ELB create VM error.

      +

      Failed to add the ECS.

      +

      Contact customer service.

      +

      400

      +

      ELB.9002

      +

      Internal ELB delete VM error.

      +

      Failed to delete the ECS.

      +

      Contact customer service.

      +

      400

      +

      ELB.9003

      +

      Internal ELB query VM error.

      +

      Failed to query ECS details.

      +

      Contact customer service.

      +

      400

      +

      ELB.9006

      +

      Internal ELB update port fail.

      +

      Failed to update the port configured on the ECS data plane.

      +

      Contact customer service.

      +

      400

      +

      ELB.9007

      +

      Intenal ELB bind port fail.

      +

      Failed to bind the port configured on the ECS data plane.

      +

      Contact customer service.

      +

      400

      +

      ELB.9061

      +

      Internal ELB query topic fail.

      +

      Failed to query the SMN topic.

      +

      Contact customer service.

      +

      400

      +

      ELB.9062

      +

      Internal ELB create topic fail.

      +

      Failed to create the SMN topic.

      +

      Contact customer service.

      +

      400

      +

      ELB.9063

      +

      Internal ELB query subscription fail.

      +

      Failed to query the SMN subscription.

      +

      Contact customer service.

      +

      400

      +

      ELB.9064

      +

      Internal ELB create subscription fail.

      +

      Failed to create the SMN subscription.

      +

      Contact customer service.

      +

      400

      +

      ELB.9023

      +

      Internal ELB get image error.

      +

      Failed to query the image.

      +

      Contact customer service.

      +

      400

      +

      ELB.9033

      +

      Internal ELB get flavour error.

      +

      Failed to query ECS specifications.

      +

      Contact customer service.

      +

      400

      +

      ELB.9043

      +

      Internal ELB get interface error.

      +

      Failed to query the API bound to the ECS.

      +

      Contact customer service.

      +

      400

      +

      ELB.1007

      +

      Query internal ELB error.

      +

      Failed to query details of the private network load balancer.

      +

      Contact customer service.

      +

      400

      +

      ELB.1012

      +

      Create tenant resource relation error.

      +

      Failed to create the relationship between resources and the user.

      +

      Contact customer service.

      +

      400

      +

      ELB.1013

      +

      Update resource tenant allocation failed, cloud eye warning rule exceeds.

      +

      Failed to modify the quota of a resource because the quota set in the Cloud Eye alarm rule is too large.

      +

      Contact customer service.

      +

      400

      +

      ELB.1014

      +

      Query resouce tenant relation failed.

      +

      Failed to query the relationship between resources and the user.

      +

      Contact customer service.

      +

      400

      +

      ELB.1102

      +

      Token invalid

      +

      Invalid token.

      +

      Contact customer service.

      +

      400

      +

      ELB.1103

      +

      Token invalid

      +

      Invalid token.

      +

      Contact customer service.

      +

      400

      +

      ELB.1104

      +

      Token invalid

      +

      Invalid token.

      +

      Contact customer service.

      +

      400

      +

      ELB.1105

      +

      Token invalid

      +

      Invalid token.

      +

      Contact customer service.

      +

      400

      +

      ELB.1109

      +

      Authentication failed.

      +

      Real-name authentication failed.

      +

      Contact customer service.

      +

      400

      +

      ELB.1201

      +

      Get Token failed

      +

      Failed to obtain the token.

      +

      Contact customer service.

      +

      400

      +

      ELB.3001

      +

      Create floating IP failed.

      +

      Failed to assign the floating IP address.

      +

      Contact customer service.

      +

      400

      +

      ELB.3002

      +

      Delete floating IP failed.

      +

      Failed to release the floating IP address.

      +

      Contact customer service.

      +

      400

      +

      ELB.3003

      +

      Query floating IP failed.

      +

      Failed to query the floating IP address.

      +

      Contact customer service.

      +

      400

      +

      ELB.3004

      +

      Query floating IP list failed.

      +

      Failed to query floating IP addresses.

      +

      Contact customer service.

      +

      400

      +

      ELB.3005

      +

      Update floating IP failed.

      +

      Failed to update the floating IP address.

      +

      Contact customer service.

      +

      400

      +

      ELB.4001

      +

      Create elastic IP failed.

      +

      Failed to assign the EIP.

      +

      Contact customer service.

      +

      400

      +

      ELB.4002

      +

      Delete elastic IP failed.

      +

      Failed to release the EIP.

      +

      Contact customer service.

      +

      400

      +

      ELB.4003

      +

      Query elastic IP failed.

      +

      Failed to query the EIP.

      +

      Contact customer service.

      +

      400

      +

      ELB.4004

      +

      Query elastic IP list failed.

      +

      Failed to query EIPs.

      +

      Contact customer service.

      +

      400

      +

      ELB.4005

      +

      Update elastic IP failed.

      +

      Failed to update the EIP.

      +

      Contact customer service.

      +

      400

      +

      ELB.5003

      +

      Query bandwidth failed.

      +

      Failed to query the bandwidth.

      +

      Contact customer service.

      +

      400

      +

      ELB.5005

      +

      Update bandwidth failed.

      +

      Failed to update the bandwidth.

      +

      Contact customer service.

      +

      400

      +

      ELB.6004

      +

      Query listeners list failed.

      +

      Failed to query listeners.

      +

      Contact customer service.

      +

      400

      +

      ELB.6006

      +

      Query ECS failed.

      +

      Failed to query the ECS.

      +

      Contact customer service.

      +
      + + + + + +Parent topic: Common Parameters + + + diff --git a/elb/api-ref/elb_gc_0001.rst b/elb/api-ref/elb_gc_0001.rst new file mode 100644 index 000000000..5feea7a01 --- /dev/null +++ b/elb/api-ref/elb_gc_0001.rst @@ -0,0 +1,442 @@ +Error Codes +=========== + +The following error code descriptions are only suitable for classic load balancers. + +Overview +^^^^^^^^ + +If an error occurs when using an API, an error response will be returned, which contains the error code and a piece of message, as shown in the following example. The following table lists error codes and their descriptions. + +Example of Returned Error Information +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: screen + + { + "error": + { + "message": "listener exist, the port repeat", + "code": "ELB.6101" + } + } + +.. _error-codes-1: + +Error Codes +^^^^^^^^^^^ + +.. table:: **Table 1** Error codes + + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | Status Code | Error Code | Message | Description | Solution | + +=======================+=======================+=======================+=======================+=======================+ + | 400 | ELB.0002 | Api request is null. | The request is empty. | Change the parameter | + | | | | | settings. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.0004 | Api response is null | The response is | Ensure that the | + | | | or invaild. | empty. | backend server is | + | | | | | healthy. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.0230 | Tenant_id is empty. | The project ID is | Correct the project | + | | | | left blank. | ID. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1000 | The loadbalancer URL | The URL length | Correct the URL. | + | | | is too long. | exceeds the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1010 | Query elb quota | Failed to query the | Contact customer | + | | | error. | quota. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1020 | Lb ID is not correct. | Incorrect load | Change the parameter | + | | | | balancer ID. | settings. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1001 | Request parameters | Parameter **type**, | Change the parameter | + | | | error, private_key or | **name**, or | settings. | + | | | certificate is nil or | **admin_status_up** | | + | | | empty. | is left blank. | | + | | | | | | + | | | Request parameters | | | + | | | error, lb type, name, | | | + | | | admin_state_up one of | | | + | | | them is empty. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1001 | Request parameter is | The length of the | Change the listener | + | | | not valid. | load balancer name | name. | + | | | | exceeds the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1021 | Request parameters | Invalid load balancer | Change the parameter | + | | | error, name invalid. | name. | settings. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1031 | Request parameters | The length of the | Change the | + | | | error, lb len | load balancer | description. | + | | | description too long. | description exceeds | | + | | | | the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1041 | Request parameters | Invalid load balancer | Change the parameter | + | | | error, lb type is not | type. | settings. | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1051 | Request parameters | Invalid load balancer | Change the parameter | + | | | error, lb bandwidth | bandwidth. | settings. | + | | | is not valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 4000 | ELB.1061 | Request parameters | The floating IP | Change the parameter | + | | | error, lb vip_address | address or subnet ID | settings. | + | | | and vip_subnet_id are | is left blank. | | + | | | nil. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1071 | Request parameters | Invalid floating IP | Change the parameter | + | | | error, lb vip_address | address. | settings. | + | | | is not valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1081 | Request parameters | The VPC ID is left | Change the parameter | + | | | error, lb vpc_id is | blank. | settings. | + | | | empty. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 403 | ELB.1091 | Lb number larger than | The number of load | Request a higher | + | | | quota. | balancers exceeds the | quota or delete load | + | | | | quota. | balancers that are no | + | | | | | longer needed. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1101 | Vip address is exist. | The floating IP | Enter a valid | + | | | | address exists. | floating IP address. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 404 | ELB.1002 | Find lb failed. | The load balancer | Change the load | + | | | | does not exist. | balancer ID. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1008 | There is at least one | Failed to delete the | Change the parameter | + | | | member under the lb. | load balancer. | settings. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1018 | There is at least one | The load balancer has | Change the parameter | + | | | member under the lb. | backend ECSs added. | settings. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1005 | Update request | Failed to modify the | Check the parameters. | + | | | paramters error. | load balancer. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1015 | Lb can not be | The load balancer | Check the parameters. | + | | | updated. | cannot be modified. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1025 | Udpate request | The length of the | Change the load | + | | | parameters error, | load balancer name | balancer name. | + | | | name is too long. | exceeds the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1035 | Update request | Invalid load balancer | Change the load | + | | | parameters error, | name. | balancer name. | + | | | name is not valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1045 | Update request | The length of the | Change the | + | | | parameters error, | load balancer | description. | + | | | description too long. | description exceeds | | + | | | | the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1003 | Lb not exist. | The load balancer | Check the load | + | | | | does not exist. | balancer ID. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1004 | Query condition is | Invalid query | Change the query | + | | | not valid. | condition. | condition. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6000 | Listener ID length is | The length of the | Change the listener | + | | | not correct. | listener ID exceeds | ID. | + | | | | the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6010 | Listener ID content | Invalid listener ID. | Change the listener | + | | | is not correct. | | ID. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6030 | Listener is not | The listener does not | Check the listener | + | | | associated with | belong to any load | ID. | + | | | loadbalancer id. | balancer. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6040 | The loadbalaner that | The load balancer to | Check the load | + | | | the listener belongs | which the listener is | balancer ID. | + | | | to is not exist. | added does not exist. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6020 | Listener url is not | Incorrect listener | Correct the URL. | + | | | correct. | URL. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6001 | Request parameters | A mandatory parameter | Specify the mandatory | + | | | error, "..nilKey.." | is left blank. | parameters. | + | | | is nil. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6011 | Request parameters | The length of the | Change the listener | + | | | error, listener name | listener name exceeds | name. | + | | | too long. | the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6021 | Request parameters | Invalid listener | Change the listener | + | | | error, listener name | name. | name. | + | | | is not valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6031 | Request parameters | The length of the | Change the | + | | | error, listener len | listener description | description. | + | | | description too long. | exceeds the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6041 | Request parameters | Invalid port number. | Change the port | + | | | error, listener port | | number. | + | | | is not in 1 ~ 65535. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6051 | Request parameters | Invalid load | Change the load | + | | | error, listener lb | balancing algorithm. | balancing algorithm. | + | | | algorithm is not | | | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6061 | Request parameters | Invalid protocol used | Change the protocol. | + | | | error, listener | by the listener. | | + | | | protocol is not | | | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6071 | Request parameters | Invalid backend ECS | Change the protocol. | + | | | error, listener | protocol. | | + | | | backend protocol is | | | + | | | not valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6081 | Request parameters | Invalid sticky | Check the load | + | | | error, listener | session type. | balancer ID. | + | | | sticky_session_type | | | + | | | is not valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 403 | ELB.6091 | Request lb has more | The number of | No more listeners can | + | | | than user listener | listeners reaches the | be added. | + | | | quota. | limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6101 | Listener port is | The port exists. | Use another port | + | | | repeated. | | number. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 503 | ELB.6002 | Delete listener | The listener does not | Check the listener | + | | | failed, listener does | exist. | ID. | + | | | not exist. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6015 | This listener | The property cannot | Select a property | + | | | property cannot be | be modified. | that can be modified. | + | | | updated | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6025 | Udpate request | The length of the | Change the listener | + | | | parameters error, | listener name exceeds | name. | + | | | listener len name too | the limit. | | + | | | long. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6035 | Udpate request | Invalid listener | Change the listener | + | | | parameters error, | name. | name. | + | | | listener name is not | | | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6045 | Update request | The length of the | Change the | + | | | parameters error, | listener description | description. | + | | | listener len | exceeds the limit. | | + | | | description too long. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6003 | Listener query | Invalid query | Change the query | + | | | condition is not | condition. | condition. | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2000 | Member url is not | Incorrect backend ECS | Correct the URL. | + | | | correct. | URL. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2003 | Query member failed. | Failed to query the | Contact customer | + | | | | backend ECS. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2005 | Update member failed. | Failed to update the | Contact customer | + | | | | backend ECS. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2010 | Member listener ID | The length of the | Change the listener | + | | | length is not | listener ID exceeds | ID. | + | | | correct. | the limit. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2020 | Member listener ID | Incorrect listener | Change the listener | + | | | content is not | ID. | ID. | + | | | correct. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 403 | ELB.2001 | Create member failed, | Failed to add the ECS | Check the maximum | + | | | the total amount of | because the number of | number of backend | + | | | members exceeds the | backend ECSs reaches | servers that can be | + | | | system setting. | the limit. | added. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2011 | Add member listener | The listener does not | Ensure that the | + | | | is not exist. | exist. | listener exists. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2021 | Request parameters | Invalid address. | Check the IP address. | + | | | error, member address | | | + | | | is null. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2002 | Delete member input | Incorrect parameters. | Change the parameter | + | | | param error. | | settings. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.2012 | This member is not | The backend ECS does | Ensure that the | + | | | exist. | not exist. | backend server | + | | | | | exists. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7000 | Listener_id must not | The listener ID is | Change the listener | + | | | be null. | left blank. | ID and deliver the | + | | | | | request again. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7010 | Healthcheck listener | The listener with | Change the listener | + | | | is not exist. | which the health | ID and deliver the | + | | | | check is associated | request again. | + | | | | does not exist. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7020 | This healthcheck is | The health check does | Change the health | + | | | not exist. | not exist. | check ID and deliver | + | | | | | the request again. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7001 | Healthcheck_interval | Invalid health check | Change the interval. | + | | | is illegal. | interval. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7002 | Healthcheck delete | Invalid query | Change the query | + | | | condition is not | condition. | condition. | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7001 | Healthcheck update | Invalid query | Change the query | + | | | condition is not | condition. | condition. | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7004 | Healthcheck query | Invalid query | Change the query | + | | | condition is not | condition. | condition. | + | | | valid. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.7014 | Healthcheck | The health check does | Check the health | + | | | configuration not | not exist. | check ID. | + | | | exist. | | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8001 | Create a SG error. | Failed to create the | Contact customer | + | | | | security group. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8101 | Create VPC error. | Failed to create the | Contact customer | + | | | | VPC. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8102 | Delete VPC error. | Failed to delete the | Contact customer | + | | | | VPC. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8103 | Query VPC error. | Failed to query the | Contact customer | + | | | | VPC. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8201 | Create subnet error. | Failed to create the | Contact customer | + | | | | subnet. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8202 | Delete subnet error. | Failed to delete the | Contact customer | + | | | | subnet. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.8203 | Query subnet error. | Failed to query the | Contact customer | + | | | | subnet. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9001 | Interval ELB create | Failed to add the | Contact customer | + | | | VM error. | ECS. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9002 | Internal ELB delete | Failed to delete the | Contact customer | + | | | VM error. | ECS. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9003 | Internal ELB query VM | Failed to query ECS | Contact customer | + | | | error. | details. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9006 | Internal ELB update | Failed to update the | Contact customer | + | | | port fail. | port configured on | service. | + | | | | the ECS data plane. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9007 | Intenal ELB bind port | Failed to bind the | Contact customer | + | | | fail. | port configured on | service. | + | | | | the ECS data plane. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9061 | Internal ELB query | Failed to query the | Contact customer | + | | | topic fail. | SMN topic. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9062 | Internal ELB create | Failed to create the | Contact customer | + | | | topic fail. | SMN topic. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9063 | Internal ELB query | Failed to query the | Contact customer | + | | | subscription fail. | SMN subscription. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9064 | Internal ELB create | Failed to create the | Contact customer | + | | | subscription fail. | SMN subscription. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9023 | Internal ELB get | Failed to query the | Contact customer | + | | | image error. | image. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9033 | Internal ELB get | Failed to query ECS | Contact customer | + | | | flavour error. | specifications. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.9043 | Internal ELB get | Failed to query the | Contact customer | + | | | interface error. | API bound to the ECS. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1007 | Query internal ELB | Failed to query | Contact customer | + | | | error. | details of the | service. | + | | | | private network load | | + | | | | balancer. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1012 | Create tenant | Failed to create the | Contact customer | + | | | resource relation | relationship between | service. | + | | | error. | resources and the | | + | | | | user. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1013 | Update resource | Failed to modify the | Contact customer | + | | | tenant allocation | quota of a resource | service. | + | | | failed, cloud eye | because the quota set | | + | | | warning rule exceeds. | in the Cloud Eye | | + | | | | alarm rule is too | | + | | | | large. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1014 | Query resouce tenant | Failed to query the | Contact customer | + | | | relation failed. | relationship between | service. | + | | | | resources and the | | + | | | | user. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1102 | Token invalid | Invalid token. | Contact customer | + | | | | | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1103 | Token invalid | Invalid token. | Contact customer | + | | | | | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1104 | Token invalid | Invalid token. | Contact customer | + | | | | | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1105 | Token invalid | Invalid token. | Contact customer | + | | | | | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1109 | Authentication | Real-name | Contact customer | + | | | failed. | authentication | service. | + | | | | failed. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.1201 | Get Token failed | Failed to obtain the | Contact customer | + | | | | token. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.3001 | Create floating IP | Failed to assign the | Contact customer | + | | | failed. | floating IP address. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.3002 | Delete floating IP | Failed to release the | Contact customer | + | | | failed. | floating IP address. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.3003 | Query floating IP | Failed to query the | Contact customer | + | | | failed. | floating IP address. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.3004 | Query floating IP | Failed to query | Contact customer | + | | | list failed. | floating IP | service. | + | | | | addresses. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.3005 | Update floating IP | Failed to update the | Contact customer | + | | | failed. | floating IP address. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.4001 | Create elastic IP | Failed to assign the | Contact customer | + | | | failed. | EIP. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.4002 | Delete elastic IP | Failed to release the | Contact customer | + | | | failed. | EIP. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.4003 | Query elastic IP | Failed to query the | Contact customer | + | | | failed. | EIP. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.4004 | Query elastic IP list | Failed to query EIPs. | Contact customer | + | | | failed. | | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.4005 | Update elastic IP | Failed to update the | Contact customer | + | | | failed. | EIP. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.5003 | Query bandwidth | Failed to query the | Contact customer | + | | | failed. | bandwidth. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.5005 | Update bandwidth | Failed to update the | Contact customer | + | | | failed. | bandwidth. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6004 | Query listeners list | Failed to query | Contact customer | + | | | failed. | listeners. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | 400 | ELB.6006 | Query ECS failed. | Failed to query the | Contact customer | + | | | | ECS. | service. | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + +**Parent topic:** `Common Parameters `__ diff --git a/elb/api-ref/elb_gc_0002.html b/elb/api-ref/elb_gc_0002.html new file mode 100644 index 000000000..0c33ef6d4 --- /dev/null +++ b/elb/api-ref/elb_gc_0002.html @@ -0,0 +1,1094 @@ + + +

      HTTP Status Codes of Shared Load Balancers

      +

      The following code descriptions are only suitable for shared load balancers.

      + + + + + + + + + + + + + + + + + + + +
      Table 1 Normal response codes

      Status Code

      +

      Type

      +

      Description

      +

      200

      +

      OK

      +

      Normal response to GET and PUT requests.

      +

      201

      +

      Created

      +

      Normal response to POST requests.

      +

      204

      +

      No Content

      +

      Normal response to DELETE requests.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Error codes

      Status Code

      +

      Type

      +

      Possible Cause

      +

      400

      +

      Bad request

      +

      Malformed request URI or body.

      +

      Invalid admin _state_up value.

      +

      Invalid parameters.

      +

      Batch operations are not allowed.

      +

      Failed to verify the parameters.

      +

      Incorrect request method, for example, updating attributes that can be specified during creation only.

      +

      The network is not external (the value of router:external is set to false).

      +

      The IaaS OpenStack network port has no floating IP address bound.

      +

      The requested floating IP address is not in the IP address range of the external network.

      +

      Invalid fixed IP address.

      +

      The router port does not have a fixed IP address.

      +

      The subnet for the router interface must have a gateway IP address.

      +

      401

      +

      Unauthorized

      +

      Authentication required.

      +

      403

      +

      Forbidden

      +

      The URI does not exist.

      +

      The resource cannot be found.

      +

      404

      +

      Not Found

      +

      The URI does not exist.

      +

      The resource cannot be found.

      +

      Invalid port ID.

      +

      409

      +

      Conflict

      +

      The port is already in use.

      +

      The IP address is already in use.

      +

      The IP address pool cannot contain gateway and broadcast addresses.

      +

      The requested floating IP address is already in use.

      +

      The internal IaaS OpenStack network port and fixed IP address are already associated with another floating IP addresses.

      +

      500

      +

      Internal server error.

      +

      Internal IaaS OpenStack network error.

      +

      503

      +

      Service unavailable

      +

      Failed to assign the MAC address.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 Error codes

      Module

      +

      HTTP Status Code

      +

      Error Code

      +

      Error Message

      +

      Description

      +

      Handling Measure

      +

      Load balancer

      +

      400

      +

      ELB.0002

      +

      RequestBody is null or empty,request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      401

      +

      ELB.1102

      +

      Token is error, Authentication required.

      +

      Empty token.

      +

      Use a correct token that has not expired.

      +

      400

      +

      ELB.0002

      +

      RequestBody is null, request is invalid.

      +

      Failed to convert the request body.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody loadbalancer[vip_subnet_id] is null, this is a required parameter.

      +

      vip_subnet_id in the request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.1202

      +

      1.decoded token is null.

      +

      2.checkEnterpriseProject is error.

      +
      • The token is empty.
      • An error occurred during verification of ep_id.
      +

      Check the enterprise project ID.

      +

      403

      +

      ELB.9802

      +

      Policy doesn't allow elb:loadbalancers:list to be performed.

      +

      etc.

      +

      Authentication failure

      +

      Check whether you have the permission to perform this operation.

      +

      403

      +

      ELB.9803

      +

      Policy doesn't allow elb:loadbalancers:list to be performed.

      +

      etc.

      +

      Authentication failure

      +

      Check whether you have the permission to perform this operation.

      +

      403

      +

      ELB.9804

      +

      Policy doesn't allow elb:loadbalancers:list to be performed.

      +

      etc.

      +

      Authentication failure

      +

      Check whether you have the permission to perform this operation.

      +

      400

      +

      ELB.0004

      +

      Api response is null or invaild.

      +

      The response returned by Neutron is null.

      +

      Contact customer service.

      +

      400

      +

      ELB.9899

      +

      The default_tls_container_ref field of the TERMINATED_HTTPS listener does not allow updating to null

      +

      etc.

      +

      Combined API failed to send the request to Neutron.

      +

      Rectify the fault based on the error information.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['loadbalancer'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.1204

      +

      Bind fail.

      +

      Failed to associate the load balancer with the enterprise project.

      +

      Contact customer service.

      +

      400

      +

      ELB.9805

      +

      Ep_id is not uuid.

      +

      ep_id in the URI is not a valid UUID.

      +

      Check the enterprise project ID.

      +

      400

      +

      ELB.9806

      +

      Loadbalancer_id in url is null or empty.

      +

      etc.

      +

      loadbalancer_id in the URI is empty.

      +

      Check whether the load balancer ID in the URL is correct.

      +

      404

      +

      ELB.9800

      +

      Resource could not be found.

      +

      The specified load balancer does not exist when ep_id is queried.

      +

      Check the load balancer ID.

      +

      400

      +

      ELB.9808

      +

      Tenant_id in token mismatches with tenant_id in url.

      +

      The value of tenant_id in the token is different from that in the URL.

      +

      Check whether parameter tenant_id in the token and URL is correct.

      +

      403

      +

      ELB.9801

      +

      Not be list action, enterprise_project_id must not be null.

      +

      In the fine-grained authorization scenario, the enterprise ID is not transmitted in the request for querying the load balancers.

      +

      Check whether the parameters in the request for querying the load balancers are correct.

      +

      Listener

      +

      400

      +

      ELB.0002

      +

      Listener is null, request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody listener[protocol] is null, this is a required parameter.

      +

      protocol in the request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody listener[protocol_port] is null, this is a required parameter.

      +

      protocol_port is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody listener[loadbalancer_id] is null, this is a required parameter.

      +

      loadbalancer_id is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.6200

      +

      Load Balaner *** already has a listener with protocol_port of ***.

      +

      The port number is in use.

      +

      Change the port number.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['listener'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      Backend server group

      +

      400

      +

      ELB.0002

      +

      Pool is null, request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody pool[protocol] is null, this is a required parameter.

      +

      protocol is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody pool[lb_algorithm] is null, this is a required parameter.

      +

      lb_algorithm is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['pool'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.9805

      +

      RequestBody pool[loadbalancer_id] and pool[listener_id] both are null, this has at least one parameter.

      +

      listener_id is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      Backend server

      +

      400

      +

      ELB.9805

      +

      RequestBody pool[session_persistence][type] is null. when pool[session_persistence] exists, this is a required parameter.

      +

      session_persistence is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.0002

      +

      Member is null,request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody member[address] is null, this is a required parameter.

      +

      address is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['member'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.9805

      +

      RequestBody member[address]'s length is %s, greater than 64.

      +

      The value of address contains more than 64 characters.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody member[protocol_port] is null, this is a required parameter.

      +

      protocol_port is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      Health check

      +

      400

      +

      ELB.9805

      +

      RequestBody member[subnet_id] is null, this is a required parameter.

      +

      subnet_id is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.0002

      +

      healthmonitor is null,request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody healthmonitor[delay] is null, this is a required parameter.

      +

      delay is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody healthmonitor[max_retries] is null, this is a required parameter.

      +

      max_retries is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody healthmonitor[pool_id] is null, this is a required parameter.

      +

      pool_id is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['healthmonitor'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.9805

      +

      RequestBody healthmonitor[timeout] is null, this is a required parameter.

      +

      timeout is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      Forwarding policy

      +

      400

      +

      ELB.9805

      +

      RequestBody healthmonitor[type] is null, this is a required parameter.

      +

      type is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.0002

      +

      l7policy is null,request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['l7policiey'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.9805

      +

      RequestBody l7policy[listener_id] is null, this is a required parameter.

      +

      listener_id is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      Forwarding rule

      +

      400

      +

      ELB.9805

      +

      RequestBody l7policy[action] is null, this is a required parameter.

      +

      action is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.0002

      +

      Rule is null,request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody rule[type] is null, this is a required parameter.

      +

      type is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['l7policieyrule'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.9805

      +

      RequestBody rule[compare_type] is null, this is a required parameter.

      +

      compare_type is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody rule[value] is null, this is a required parameter.

      +

      value is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody rule[value]'s length is %s, greater than 128.

      +

      The parameter value contains more than 128 characters.

      +

      Set the parameter by following the instructions in this guide.

      +

      Whitelist

      +

      400

      +

      ELB.9807

      +

      Quota exceeded for resources:['whitelist'].

      +

      The quota has been used up.

      +

      To expand the quota, contact customer service.

      +

      400

      +

      ELB.0002

      +

      whitelist is null,request is invalid.

      +

      The request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody whitelist[listener_id] is null, this is a required parameter.

      +

      listener_id is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      400

      +

      ELB.9805

      +

      RequestBody whitelist[listener_id]'s length is %s, greater than 255.

      +

      The value of listener_id contains more than 255 characters.

      +

      Set the parameter by following the instructions in this guide.

      +

      Label Management

      +

      400

      +

      ELB.0002

      +

      RequestBody is null or empty.

      +

      Invalid request body.

      +

      Set the parameter by following the instructions in this guide.

      +

      401

      +

      ELB.1102

      +

      Token is error, Authentication required.

      +

      Invalid token.

      +

      Use a correct token that has not expired.

      +

      400

      +

      ELB.0002

      +

      LogTankRequestBody is null, request is invalid.

      +

      Invalid request body.

      +

      Set the parameter by following the instructions in this guide.

      +

      LoadbalancerId in requestBody is null.

      +

      loadbalancer_id in the request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      LoggroupId in requestBody is null.

      +

      log_group_id in the request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      LogtopicId in requestBody is null.

      +

      log_topic_id in the request body is empty.

      +

      Set the parameter by following the instructions in this guide.

      +

      403

      +

      ELB.9802

      +

      Policy doesn't allow elb:logtanks:create to be performed.

      +

      Permission verification failed.

      +

      Check whether you have the permission to perform this operation.

      +

      403

      +

      ELB.9803

      +

      Policy doesn't allow elb:loadbalancers:list to be performed.

      +

      etc.

      +

      Permission verification failed.

      +

      Check whether you have the permission to perform this operation.

      +

      403

      +

      ELB.9804

      +

      Policy doesn't allow elb:loadbalancers:list to be performed.

      +

      etc.

      +

      Permission verification failed.

      +

      Check whether you have the permission to perform this operation.

      +

      400

      +

      ELB.9899

      +

      The default_tls_container_ref field of the TERMINATED_HTTPS listener does not allow updating to null.

      +

      Parameter default_tls_container_ref cannot be left blank.

      +

      Rectify the fault based on the error information.

      +

      Certificate

      +

      400

      +

      ELB.1001

      +

      Request parameters invalid.

      +

      Invalid parameter.

      +

      Enter a valid parameter.

      +

      400

      +

      ELB.5010

      +

      The certificate URL contains more than four parts.

      +

      The certificate URL contains more than four parts.

      +

      Enter a valid certificate URL.

      +

      400

      +

      ELB.5020

      +

      The certificate ID must be 32 characters.

      +

      The certificate ID is not a 32-character string.

      +

      Enter a valid certificate ID.

      +

      400

      +

      ELB.5030

      +

      Incorrect certificate URL.

      +

      Incorrect certificate URL.

      +

      Enter a valid certificate URL.

      +

      404

      +

      ELB.5040

      +

      The certificate does not exist.

      +

      The certificate does not exist.

      +

      Ensure that the certificate exists.

      +

      400

      +

      ELB.5131

      +

      Failed to query the certificate quota.

      +

      Failed to query the certificate quota.

      +

      Contact customer service.

      +

      400

      +

      ELB.5141

      +

      Failed to query the user certificate quota.

      +

      Failed to query the used certificate quota.

      +

      Contact customer service.

      +

      400

      +

      ELB.5151

      +

      The certificate quantity exceeds the quota.

      +

      The quota has been used up.

      +

      Ensure that the quantity of certificates is less than the quota.

      +

      400

      +

      ELB.1011

      +

      Private_key or certificate content is not valid.

      +

      Invalid public or private key of the server certificate.

      +

      Enter a valid public or private key.

      +

      400

      +

      ELB.5051

      +

      CA certificate content is not valid.

      +

      Invalid CA certificate content.

      +

      Enter valid certificate content.

      +

      400

      +

      ELB.5002

      +

      Failed to delete the certificate.

      +

      Failed to delete the certificate.

      +

      Contact customer service.

      +

      400

      +

      ELB.5033

      +

      Failed to update certificate.

      +

      Failed to modify the certificate.

      +

      Contact customer service.

      +

      400

      +

      ELB.5013

      +

      Private_key or certificate content is not valid.

      +

      Invalid public or private key of the server certificate.

      +

      Enter a valid public or private key.

      +

      400

      +

      ELB.5053

      +

      CA certificate content is not valid.

      +

      Invalid CA certificate content.

      +

      Enter valid certificate content.

      +

      400

      +

      ELB.5004

      +

      Invalid search criteria.

      +

      Invalid query condition.

      +

      Ensure that the query condition is correct.

      +

      API version

      +

      404

      +

      ELB.1110

      +

      version not found.

      +

      The API version does not exist.

      +

      Contact customer service.

      +
      + + + + +Parent topic: Common Parameters + + + diff --git a/elb/api-ref/elb_gc_0002.rst b/elb/api-ref/elb_gc_0002.rst new file mode 100644 index 000000000..f98bbc268 --- /dev/null +++ b/elb/api-ref/elb_gc_0002.rst @@ -0,0 +1,571 @@ +HTTP Status Codes of Shared Load Balancers +========================================== + +The following code descriptions are only suitable for shared load balancers. + +.. table:: **Table 1** Normal response codes + + =========== ========== ======================================== + Status Code Type Description + =========== ========== ======================================== + 200 OK Normal response to GET and PUT requests. + 201 Created Normal response to POST requests. + 204 No Content Normal response to DELETE requests. + =========== ========== ======================================== + +.. table:: **Table 2** Error codes + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Status Code | Type | Possible Cause | + +=======================================+=======================================+=======================================+ + | 400 | Bad request | Malformed request URI or body. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid **admin \_state_up** value. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid parameters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Batch operations are not allowed. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Failed to verify the parameters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Incorrect request method, for | + | | | example, updating attributes that can | + | | | be specified during creation only. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The network is not external (the | + | | | value of **router:external** is set | + | | | to **false**). | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The IaaS OpenStack network port has | + | | | no floating IP address bound. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The requested floating IP address is | + | | | not in the IP address range of the | + | | | external network. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid fixed IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The router port does not have a fixed | + | | | IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The subnet for the router interface | + | | | must have a gateway IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 401 | Unauthorized | Authentication required. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 403 | Forbidden | The URI does not exist. | + | | | | + | | | The resource cannot be found. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 404 | Not Found | The URI does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The resource cannot be found. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid port ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 409 | Conflict | The port is already in use. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The IP address is already in use. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The IP address pool cannot contain | + | | | gateway and broadcast addresses. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The requested floating IP address is | + | | | already in use. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The internal IaaS OpenStack network | + | | | port and fixed IP address are already | + | | | associated with another floating IP | + | | | addresses. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 500 | Internal server error. | Internal IaaS OpenStack network | + | | | error. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 503 | Service unavailable | Failed to assign the MAC address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** Error codes + + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Module | HTTP Status Code | Error Code | Error Message | Description | Handling Measure | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Load balancer | 400 | ELB.0002 | RequestBody is | The request body | Set the parameter | + | | | | null or | is empty. | by following the | + | | | | empty,request is | | instructions in | + | | | | invalid. | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 401 | ELB.1102 | Token is error, | Empty token. | Use a correct | + | | | | Authentication | | token that has | + | | | | required. | | not expired. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | RequestBody is | Failed to convert | Set the parameter | + | | | | null, request is | the request body. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **vip_subnet_id** | Set the parameter | + | | | | loadbalanc | in the request | by following the | + | | | | er[vip_subnet_id] | body is empty. | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.1202 | 1.decoded token | - The token is | Check the | + | | | | is null. | empty. | enterprise | + | | | | | - An error | project ID. | + | | | | 2.check | occurred | | + | | | | EnterpriseProject | during | | + | | | | is error. | verification | | + | | | | | of **ep_id**. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9802 | Policy doesn't | Authentication | Check whether you | + | | | | allow | failure | have the | + | | | | elb:l | | permission to | + | | | | oadbalancers:list | | perform this | + | | | | to be performed. | | operation. | + | | | | | | | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9803 | Policy doesn't | Authentication | Check whether you | + | | | | allow | failure | have the | + | | | | elb:l | | permission to | + | | | | oadbalancers:list | | perform this | + | | | | to be performed. | | operation. | + | | | | | | | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9804 | Policy doesn't | Authentication | Check whether you | + | | | | allow | failure | have the | + | | | | elb:l | | permission to | + | | | | oadbalancers:list | | perform this | + | | | | to be performed. | | operation. | + | | | | | | | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0004 | Api response is | The response | Contact customer | + | | | | null or invaild. | returned by | service. | + | | | | | Neutron is | | + | | | | | **null**. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9899 | The | Combined API | Rectify the fault | + | | | | default_ | failed to send | based on the | + | | | | tls_container_ref | the request to | error | + | | | | field of the | Neutron. | information. | + | | | | TERMINATED_HTTPS | | | + | | | | listener does not | | | + | | | | allow updating to | | | + | | | | null | | | + | | | | | | | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | resources: | | customer service. | + | | | | ['loadbalancer']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.1204 | Bind fail. | Failed to | Contact customer | + | | | | | associate the | service. | + | | | | | load balancer | | + | | | | | with the | | + | | | | | enterprise | | + | | | | | project. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | Ep_id is not | **ep_id** in the | Check the | + | | | | uuid. | URI is not a | enterprise | + | | | | | valid UUID. | project ID. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9806 | Loadbalancer_id | ** | Check whether the | + | | | | in url is null or | loadbalancer_id** | load balancer ID | + | | | | empty. | in the URI is | in the URL is | + | | | | | empty. | correct. | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 404 | ELB.9800 | Resource could | The specified | Check the load | + | | | | not be found. | load balancer | balancer ID. | + | | | | | does not exist | | + | | | | | when **ep_id** is | | + | | | | | queried. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9808 | Tenant_id in | The value of | Check whether | + | | | | token mismatches | **tenant_id** in | parameter | + | | | | with tenant_id in | the token is | **tenant_id** in | + | | | | url. | different from | the token and URL | + | | | | | that in the URL. | is correct. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9801 | Not be list | In the | Check whether the | + | | | | action, | fine-grained | parameters in the | + | | | | ente | authorization | request for | + | | | | rprise_project_id | scenario, the | querying the load | + | | | | must not be null. | enterprise ID is | balancers are | + | | | | | not transmitted | correct. | + | | | | | in the request | | + | | | | | for querying the | | + | | | | | load balancers. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Listener | 400 | ELB.0002 | Listener is null, | The request body | Set the parameter | + | | | | request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **protocol** in | Set the parameter | + | | | | l | the request body | by following the | + | | | | istener[protocol] | is empty. | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **protocol_port** | Set the parameter | + | | | | listen | is empty. | by following the | + | | | | er[protocol_port] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | ** | Set the parameter | + | | | | listener | loadbalancer_id** | by following the | + | | | | [loadbalancer_id] | is empty. | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.6200 | Load Balaner | The port number | Change the port | + | | | | \**\* already has | is in use. | number. | + | | | | a listener with | | | + | | | | protocol_port of | | | + | | | | \***. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | resour | | customer service. | + | | | | ces:['listener']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Backend server | 400 | ELB.0002 | Pool is null, | The request body | Set the parameter | + | group | | | request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **protocol** is | Set the parameter | + | | | | pool[protocol] is | empty. | by following the | + | | | | null, this is a | | instructions in | + | | | | required | | this guide. | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **lb_algorithm** | Set the parameter | + | | | | p | is empty. | by following the | + | | | | ool[lb_algorithm] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | re | | customer service. | + | | | | sources:['pool']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **listener_id** | Set the parameter | + | | | | pool | is empty. | by following the | + | | | | [loadbalancer_id] | | instructions in | + | | | | and | | this guide. | + | | | | pool[listener_id] | | | + | | | | both are null, | | | + | | | | this has at least | | | + | | | | one parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Backend server | 400 | ELB.9805 | RequestBody | **sess | Set the parameter | + | | | | pool[session_p | ion_persistence** | by following the | + | | | | ersistence][type] | is empty. | instructions in | + | | | | is null. when | | this guide. | + | | | | pool[ses | | | + | | | | sion_persistence] | | | + | | | | exists, this is a | | | + | | | | required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | Member is | The request body | Set the parameter | + | | | | null,request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **address** is | Set the parameter | + | | | | member[address] | empty. | by following the | + | | | | is null, this is | | instructions in | + | | | | a required | | this guide. | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | reso | | customer service. | + | | | | urces:['member']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | The value of | Set the parameter | + | | | | member[address]'s | **address** | by following the | + | | | | length is %s, | contains more | instructions in | + | | | | greater than 64. | than 64 | this guide. | + | | | | | characters. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **protocol_port** | Set the parameter | + | | | | memb | is empty. | by following the | + | | | | er[protocol_port] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Health check | 400 | ELB.9805 | RequestBody | **subnet_id** is | Set the parameter | + | | | | member[subnet_id] | empty. | by following the | + | | | | is null, this is | | instructions in | + | | | | a required | | this guide. | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | healthmonitor is | The request body | Set the parameter | + | | | | null,request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **delay** is | Set the parameter | + | | | | hea | empty. | by following the | + | | | | lthmonitor[delay] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **max_retries** | Set the parameter | + | | | | healthmon | is empty. | by following the | + | | | | itor[max_retries] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **pool_id** is | Set the parameter | + | | | | healt | empty. | by following the | + | | | | hmonitor[pool_id] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | resources:[ | | customer service. | + | | | | 'healthmonitor']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **timeout** is | Set the parameter | + | | | | healt | empty. | by following the | + | | | | hmonitor[timeout] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Forwarding policy | 400 | ELB.9805 | RequestBody | **type** is | Set the parameter | + | | | | he | empty. | by following the | + | | | | althmonitor[type] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | l7policy is | The request body | Set the parameter | + | | | | null,request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | resource | | customer service. | + | | | | s:['l7policiey']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **listener_id** | Set the parameter | + | | | | l7po | is empty. | by following the | + | | | | licy[listener_id] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Forwarding rule | 400 | ELB.9805 | RequestBody | **action** is | Set the parameter | + | | | | l7policy[action] | empty. | by following the | + | | | | is null, this is | | instructions in | + | | | | a required | | this guide. | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | Rule is | The request body | Set the parameter | + | | | | null,request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **type** is | Set the parameter | + | | | | rule[type] is | empty. | by following the | + | | | | null, this is a | | instructions in | + | | | | required | | this guide. | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | resources:[' | | customer service. | + | | | | l7policieyrule']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **compare_type** | Set the parameter | + | | | | r | is empty. | by following the | + | | | | ule[compare_type] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **value** is | Set the parameter | + | | | | rule[value] is | empty. | by following the | + | | | | null, this is a | | instructions in | + | | | | required | | this guide. | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | The parameter | Set the parameter | + | | | | rule[value]'s | value contains | by following the | + | | | | length is %s, | more than 128 | instructions in | + | | | | greater than 128. | characters. | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Whitelist | 400 | ELB.9807 | Quota exceeded | The quota has | To expand the | + | | | | for | been used up. | quota, contact | + | | | | resourc | | customer service. | + | | | | es:['whitelist']. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | whitelist is | The request body | Set the parameter | + | | | | null,request is | is empty. | by following the | + | | | | invalid. | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | **listener_id** | Set the parameter | + | | | | white | is empty. | by following the | + | | | | list[listener_id] | | instructions in | + | | | | is null, this is | | this guide. | + | | | | a required | | | + | | | | parameter. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9805 | RequestBody | The value of | Set the parameter | + | | | | whiteli | **listener_id** | by following the | + | | | | st[listener_id]'s | contains more | instructions in | + | | | | length is %s, | than 255 | this guide. | + | | | | greater than 255. | characters. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Label Management | 400 | ELB.0002 | RequestBody is | Invalid request | Set the parameter | + | | | | null or empty. | body. | by following the | + | | | | | | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 401 | ELB.1102 | Token is error, | Invalid token. | Use a correct | + | | | | Authentication | | token that has | + | | | | required. | | not expired. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.0002 | L | Invalid request | Set the parameter | + | | | | ogTankRequestBody | body. | by following the | + | | | | is null, request | | instructions in | + | | | | is invalid. | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | | | LoadbalancerId in | ** | Set the parameter | + | | | | requestBody is | loadbalancer_id** | by following the | + | | | | null. | in the request | instructions in | + | | | | | body is empty. | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | | | LoggroupId in | **log_group_id** | Set the parameter | + | | | | requestBody is | in the request | by following the | + | | | | null. | body is empty. | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | | | LogtopicId in | **log_topic_id** | Set the parameter | + | | | | requestBody is | in the request | by following the | + | | | | null. | body is empty. | instructions in | + | | | | | | this guide. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9802 | Policy doesn't | Permission | Check whether you | + | | | | allow | verification | have the | + | | | | el | failed. | permission to | + | | | | b:logtanks:create | | perform this | + | | | | to be performed. | | operation. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9803 | Policy doesn't | Permission | Check whether you | + | | | | allow | verification | have the | + | | | | elb:l | failed. | permission to | + | | | | oadbalancers:list | | perform this | + | | | | to be performed. | | operation. | + | | | | | | | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 403 | ELB.9804 | Policy doesn't | Permission | Check whether you | + | | | | allow | verification | have the | + | | | | elb:l | failed. | permission to | + | | | | oadbalancers:list | | perform this | + | | | | to be performed. | | operation. | + | | | | | | | + | | | | etc. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.9899 | The | Parameter | Rectify the fault | + | | | | default_ | **default_tl | based on the | + | | | | tls_container_ref | s_container_ref** | error | + | | | | field of the | cannot be left | information. | + | | | | TERMINATED_HTTPS | blank. | | + | | | | listener does not | | | + | | | | allow updating to | | | + | | | | null. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | Certificate | 400 | ELB.1001 | Request | Invalid | Enter a valid | + | | | | parameters | parameter. | parameter. | + | | | | invalid. | | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5010 | The certificate | The certificate | Enter a valid | + | | | | URL contains more | URL contains more | certificate URL. | + | | | | than four parts. | than four parts. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5020 | The certificate | The certificate | Enter a valid | + | | | | ID must be 32 | ID is not a | certificate ID. | + | | | | characters. | 32-character | | + | | | | | string. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5030 | Incorrect | Incorrect | Enter a valid | + | | | | certificate URL. | certificate URL. | certificate URL. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 404 | ELB.5040 | The certificate | The certificate | Ensure that the | + | | | | does not exist. | does not exist. | certificate | + | | | | | | exists. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5131 | Failed to query | Failed to query | Contact customer | + | | | | the certificate | the certificate | service. | + | | | | quota. | quota. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5141 | Failed to query | Failed to query | Contact customer | + | | | | the user | the used | service. | + | | | | certificate | certificate | | + | | | | quota. | quota. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5151 | The certificate | The quota has | Ensure that the | + | | | | quantity exceeds | been used up. | quantity of | + | | | | the quota. | | certificates is | + | | | | | | less than the | + | | | | | | quota. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.1011 | Private_key or | Invalid public or | Enter a valid | + | | | | certificate | private key of | public or private | + | | | | content is not | the server | key. | + | | | | valid. | certificate. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5051 | CA certificate | Invalid CA | Enter valid | + | | | | content is not | certificate | certificate | + | | | | valid. | content. | content. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5002 | Failed to delete | Failed to delete | Contact customer | + | | | | the certificate. | the certificate. | service. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5033 | Failed to update | Failed to modify | Contact customer | + | | | | certificate. | the certificate. | service. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5013 | Private_key or | Invalid public or | Enter a valid | + | | | | certificate | private key of | public or private | + | | | | content is not | the server | key. | + | | | | valid. | certificate. | | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5053 | CA certificate | Invalid CA | Enter valid | + | | | | content is not | certificate | certificate | + | | | | valid. | content. | content. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | | 400 | ELB.5004 | Invalid search | Invalid query | Ensure that the | + | | | | criteria. | condition. | query condition | + | | | | | | is correct. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + | API version | 404 | ELB.1110 | version not | The API version | Contact customer | + | | | | found. | does not exist. | service. | + +-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+ + +**Parent topic:** `Common Parameters `__ diff --git a/elb/api-ref/elb_gc_1102.html b/elb/api-ref/elb_gc_1102.html new file mode 100644 index 000000000..039e5b6af --- /dev/null +++ b/elb/api-ref/elb_gc_1102.html @@ -0,0 +1,156 @@ + + +

      Status Codes

      + + + + + + + + + + + + + + + + + + + +
      Table 1 Normal status codes

      Status Code

      +

      Message

      +

      Description

      +

      200

      +

      OK

      +

      Normal response to GET and PUT requests.

      +

      201

      +

      Created

      +

      Normal response to POST requests.

      +

      204

      +

      No Content

      +

      Normal response to DELETE requests.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Error codes

      Status Code

      +

      Message

      +

      Description

      +

      400

      +

      Bad request

      +

      Malformed request URI or body.

      +

      Invalid admin _state_up value.

      +

      Invalid parameters.

      +

      Batch operations are not allowed.

      +

      Failed to verify the parameters.

      +

      The method is not allowed for the request body, for example, trying to update attributes that be specified only during creation.

      +

      The network is not external (the value of router:external is set to false).

      +

      The IaaS OpenStack network port has no floating IP address bound.

      +

      The requested floating IP address is not in the IP address range of the external network.

      +

      Invalid fixed IP address.

      +

      The router port does not have a fixed IP address.

      +

      The subnet for the router interface must have a gateway IP address.

      +

      401

      +

      Unauthorized

      +

      Authentication required.

      +

      403

      +

      Forbidden

      +

      The URI does not exist.

      +

      The resource cannot be found.

      +

      404

      +

      Not found

      +

      The URI does not exist.

      +

      The resource cannot be found.

      +

      The port UUID is not valid.

      +

      409

      +

      Conflict

      +

      The port is already in use.

      +

      The IP address is already in use.

      +

      The IP address pool cannot contain gateway and broadcast addresses.

      +

      The requested floating IP address is already in use.

      +

      The internal IaaS OpenStack network port and fixed IP address are already associated with another floating IP addresses.

      +

      500

      +

      Internal IaaS OpenStack network error.

      +

      Failed to assign the MAC address.

      +

      503

      +

      Service unavailable

      +

      Failed to assign the MAC address.

      +
      + + + + +Parent topic: Appendix + + + diff --git a/elb/api-ref/elb_gc_1102.rst b/elb/api-ref/elb_gc_1102.rst new file mode 100644 index 000000000..22e8248cb --- /dev/null +++ b/elb/api-ref/elb_gc_1102.rst @@ -0,0 +1,86 @@ +Status Codes +============ + +.. table:: **Table 1** Normal status codes + + =========== ========== ======================================== + Status Code Message Description + =========== ========== ======================================== + 200 OK Normal response to GET and PUT requests. + 201 Created Normal response to POST requests. + 204 No Content Normal response to DELETE requests. + =========== ========== ======================================== + +.. table:: **Table 2** Error codes + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Status Code | Message | Description | + +=======================================+=======================================+=======================================+ + | 400 | Bad request | Malformed request URI or body. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid **admin \_state_up** value. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid parameters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Batch operations are not allowed. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Failed to verify the parameters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The method is not allowed for the | + | | | request body, for example, trying to | + | | | update attributes that be specified | + | | | only during creation. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The network is not external (the | + | | | value of **router:external** is set | + | | | to **false**). | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The IaaS OpenStack network port has | + | | | no floating IP address bound. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The requested floating IP address is | + | | | not in the IP address range of the | + | | | external network. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | Invalid fixed IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The router port does not have a fixed | + | | | IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The subnet for the router interface | + | | | must have a gateway IP address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 401 | Unauthorized | Authentication required. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 403 | Forbidden | The URI does not exist. | + | | | | + | | | The resource cannot be found. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 404 | Not found | The URI does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The resource cannot be found. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The port UUID is not valid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 409 | Conflict | The port is already in use. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The IP address is already in use. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The IP address pool cannot contain | + | | | gateway and broadcast addresses. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The requested floating IP address is | + | | | already in use. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | | | The internal IaaS OpenStack network | + | | | port and fixed IP address are already | + | | | associated with another floating IP | + | | | addresses. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 500 | Internal IaaS OpenStack network | Failed to assign the MAC address. | + | | error. | | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 503 | Service unavailable | Failed to assign the MAC address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +**Parent topic:** `Appendix `__ diff --git a/elb/api-ref/elb_jd_0000.html b/elb/api-ref/elb_jd_0000.html new file mode 100644 index 000000000..c0758a14f --- /dev/null +++ b/elb/api-ref/elb_jd_0000.html @@ -0,0 +1,29 @@ + + +

      Classic Load Balancer APIs

      + + + + + diff --git a/elb/api-ref/elb_jd_0000.rst b/elb/api-ref/elb_jd_0000.rst new file mode 100644 index 000000000..4f97aec2d --- /dev/null +++ b/elb/api-ref/elb_jd_0000.rst @@ -0,0 +1,13 @@ +Classic Load Balancer APIs +========================== + +- `API Call Precaution `__ +- `Load Balancer `__ +- `Listener `__ +- `Health Check `__ +- `Backend ECS `__ +- `Quota `__ +- `Certificate `__ +- `Querying the Job Status `__ +- `Querying Monitoring Metrics `__ +- `API Version `__ diff --git a/elb/api-ref/elb_jd_bg_0000.html b/elb/api-ref/elb_jd_bg_0000.html new file mode 100644 index 000000000..e3440b215 --- /dev/null +++ b/elb/api-ref/elb_jd_bg_0000.html @@ -0,0 +1,17 @@ + + +

      API Version

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_bg_0000.rst b/elb/api-ref/elb_jd_bg_0000.rst new file mode 100644 index 000000000..4bf5f3480 --- /dev/null +++ b/elb/api-ref/elb_jd_bg_0000.rst @@ -0,0 +1,7 @@ +API Version +=========== + +- `Querying All API Versions `__ +- `Querying a Specific API Version `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_bg_0001.html b/elb/api-ref/elb_jd_bg_0001.html new file mode 100644 index 000000000..3e4f3c585 --- /dev/null +++ b/elb/api-ref/elb_jd_bg_0001.html @@ -0,0 +1,184 @@ + + +

      Querying All API Versions

      +

      Function

      This API is used to query all API versions of ELB.

      + +

      URI

      GET /

      + +

      Request

      • Request parameters

        None

        +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        versions

        +

        Array

        +

        Lists all API versions.

        +

        id

        +

        String

        +

        Specifies the version ID, for example, v1.

        +

        links

        +

        Array

        +

        Specifies the API URL.

        +

        href

        +

        String

        +

        Specifies the reference address of the current API version.

        +

        rel

        +

        String

        +

        Specifies the relationship between the current API version and the referenced address.

        +

        version

        +

        String

        +

        Specifies the version. If minor versions are supported, set this parameter to the latest minor version. If minor versions are not supported, leave this parameter blank.

        +

        status

        +

        String

        +

        Specifies the version status. Options are as follows:

        +
        • CURRENT: indicates the major version.
        • SUPPORTED: indicates that the version is an old one, but it is still supported.
        • DEPRECATED: indicates a deprecated version which may be deleted later.
        +

        updated

        +

        String

        +

        Specifies the version release time, which must be the UTC time. For example, the release time of v1 is 2014-06-28T12:20:21Z.

        +

        min_version

        +

        String

        +

        Specifies the minor version. If minor versions are supported, set this parameter to the earliest minor version. If minor versions are not supported, leave this parameter blank.

        +
        + +
      • Example response
        { 
        +   "versions": [ 
        +     { 
        +       "id": "v1.0", 
        +       "links": [ 
        +         { 
        +           "href": "https://{elb_endpoint}/v1.0/", 
        +           "rel": "self" 
        +         } 
        +       ], 
        +       "min_version": "", 
        +       "status": "CURRENT", 
        +       "updated": "2018-09-30T00:00:00Z", 
        +       "version": "" 
        +     } 
        +   ] 
        + }
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        Bad Request

        +

        Request error.

        +

        401

        +

        Unauthorized

        +

        The authentication information is not provided or is incorrect.

        +

        403

        +

        Forbidden

        +

        The request was forbidden.

        +

        404

        +

        Not Found

        +

        The requested resource does not exist.

        +

        408

        +

        Request Timeout

        +

        The request timed out.

        +

        429

        +

        Too Many Requests

        +

        The number requests exceeded the upper limit.

        +

        500

        +

        Internal Server Error

        +

        Failed to complete the request because of an internal service error.

        +

        503

        +

        Service Unavailable

        +

        The service is currently unavailable.

        +
        + +
      + + + + +Parent topic: API Version + + + diff --git a/elb/api-ref/elb_jd_bg_0001.rst b/elb/api-ref/elb_jd_bg_0001.rst new file mode 100644 index 000000000..440808873 --- /dev/null +++ b/elb/api-ref/elb_jd_bg_0001.rst @@ -0,0 +1,125 @@ +Querying All API Versions +========================= + +Function +^^^^^^^^ + +This API is used to query all API versions of ELB. + +URI +^^^ + +GET / + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 1** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | versions | Array | Lists all API versions. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the version ID, for | + | | | example, **v1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | links | Array | Specifies the API URL. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | href | String | Specifies the reference address of | + | | | the current API version. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the relationship between | + | | | the current API version and the | + | | | referenced address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | version | String | Specifies the version. If minor | + | | | versions are supported, set this | + | | | parameter to the latest minor | + | | | version. If minor versions are not | + | | | supported, leave this parameter | + | | | blank. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | Specifies the version status. Options | + | | | are as follows: | + | | | | + | | | - **CURRENT**: indicates the major | + | | | version. | + | | | - **SUPPORTED**: indicates that the | + | | | version is an old one, but it is | + | | | still supported. | + | | | - **DEPRECATED**: indicates a | + | | | deprecated version which may be | + | | | deleted later. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated | String | Specifies the version release time, | + | | | which must be the UTC time. For | + | | | example, the release time of v1 is | + | | | 2014-06-28T12:20:21Z. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | min_version | String | Specifies the minor version. If minor | + | | | versions are supported, set this | + | | | parameter to the earliest minor | + | | | version. If minor versions are not | + | | | supported, leave this parameter | + | | | blank. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "versions": [ + { + "id": "v1.0", + "links": [ + { + "href": "https://{elb_endpoint}/v1.0/", + "rel": "self" + } + ], + "min_version": "", + "status": "CURRENT", + "updated": "2018-09-30T00:00:00Z", + "version": "" + } + ] + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ===================== ==================================================================== + Status Code Message Description + =========== ===================== ==================================================================== + 400 Bad Request Request error. + 401 Unauthorized The authentication information is not provided or is incorrect. + 403 Forbidden The request was forbidden. + 404 Not Found The requested resource does not exist. + 408 Request Timeout The request timed out. + 429 Too Many Requests The number requests exceeded the upper limit. + 500 Internal Server Error Failed to complete the request because of an internal service error. + 503 Service Unavailable The service is currently unavailable. + =========== ===================== ==================================================================== + +**Parent topic:** `API Version `__ diff --git a/elb/api-ref/elb_jd_bg_0002.html b/elb/api-ref/elb_jd_bg_0002.html new file mode 100644 index 000000000..3fbf2000c --- /dev/null +++ b/elb/api-ref/elb_jd_bg_0002.html @@ -0,0 +1,203 @@ + + +

      Querying a Specific API Version

      +

      Function

      This API is used to query a specific ELB API version.

      + +

      URI

      GET /{api_version}

      + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Description

      +

      api_version

      +

      Yes

      +

      Specifies the API version.

      +
      + +
      • Example

        /v1.0

        +
      + +

      Request

      • Request parameters

        None

        +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Response parameters

        Parameter

        +

        Type

        +

        Description

        +

        version

        +

        Object

        +

        Specifies the API version.

        +

        id

        +

        String

        +

        Specifies the version ID, for example, v1.

        +

        links

        +

        Array

        +

        Specifies the API URL.

        +

        href

        +

        String

        +

        Specifies the reference address of the current API version.

        +

        rel

        +

        String

        +

        Specifies the relationship between the current API version and the referenced address.

        +

        version

        +

        String

        +

        Specifies the version. If minor versions are supported, set this parameter to the latest minor version. If minor versions are not supported, leave this parameter blank.

        +

        status

        +

        String

        +

        Specifies the version status. Options are as follows:

        +
        • CURRENT: indicates the major version.
        • SUPPORTED: indicates that the version is an old one, but it is still supported.
        • DEPRECATED: indicates a deprecated version which may be deleted later.
        +

        updated

        +

        String

        +

        Specifies the version release time, which must be the UTC time. For example, the release time of v1 is 2014-06-28T12:20:21Z.

        +

        min_version

        +

        String

        +

        Specifies the minor version. If minor versions are supported, set this parameter to the earliest minor version. If minor versions are not supported, leave this parameter blank.

        +
        + +
      • Example response
        {  
        +   "version": {  
        +       "id": "v1.0",  
        +       "links": [  
        +         {  
        +           "href": "https://{elb_endpoint}/v1.0/",  
        +           "rel": "self"  
        +         }  
        +       ],  
        +       "min_version": "",  
        +       "status": "CURRENT",  
        +       "updated": "2018-09-30T00:00:00Z",  
        +       "version": ""  
        +     }  
        + }
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        Bad Request

        +

        Request error.

        +

        401

        +

        Unauthorized

        +

        The authentication information is not provided or is incorrect.

        +

        403

        +

        Forbidden

        +

        The request was forbidden.

        +

        404

        +

        Not Found

        +

        The requested resource does not exist.

        +

        408

        +

        Request Timeout

        +

        The request timed out.

        +

        429

        +

        Too Many Requests

        +

        The number requests exceeded the upper limit.

        +

        500

        +

        Internal Server Error

        +

        Failed to complete the request because of an internal service error.

        +

        503

        +

        Service Unavailable

        +

        The service is currently unavailable.

        +
        + +
      + + + + +Parent topic: API Version + + + diff --git a/elb/api-ref/elb_jd_bg_0002.rst b/elb/api-ref/elb_jd_bg_0002.rst new file mode 100644 index 000000000..82bdcb6bb --- /dev/null +++ b/elb/api-ref/elb_jd_bg_0002.rst @@ -0,0 +1,135 @@ +Querying a Specific API Version +=============================== + +Function +^^^^^^^^ + +This API is used to query a specific ELB API version. + +URI +^^^ + +GET /{api_version} + +.. table:: **Table 1** Parameter description + + =========== ============= ========================== + Parameter **Mandatory** Description + =========== ============= ========================== + api_version Yes Specifies the API version. + =========== ============= ========================== + +- **Example** + + /v1.0 + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | version | Object | Specifies the API version. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the version ID, for | + | | | example, **v1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | links | Array | Specifies the API URL. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | href | String | Specifies the reference address of | + | | | the current API version. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the relationship between | + | | | the current API version and the | + | | | referenced address. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | version | String | Specifies the version. If minor | + | | | versions are supported, set this | + | | | parameter to the latest minor | + | | | version. If minor versions are not | + | | | supported, leave this parameter | + | | | blank. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | Specifies the version status. Options | + | | | are as follows: | + | | | | + | | | - **CURRENT**: indicates the major | + | | | version. | + | | | - **SUPPORTED**: indicates that the | + | | | version is an old one, but it is | + | | | still supported. | + | | | - **DEPRECATED**: indicates a | + | | | deprecated version which may be | + | | | deleted later. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated | String | Specifies the version release time, | + | | | which must be the UTC time. For | + | | | example, the release time of v1 is | + | | | 2014-06-28T12:20:21Z. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | min_version | String | Specifies the minor version. If minor | + | | | versions are supported, set this | + | | | parameter to the earliest minor | + | | | version. If minor versions are not | + | | | supported, leave this parameter | + | | | blank. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "version": { + "id": "v1.0", + "links": [ + { + "href": "https://{elb_endpoint}/v1.0/", + "rel": "self" + } + ], + "min_version": "", + "status": "CURRENT", + "updated": "2018-09-30T00:00:00Z", + "version": "" + } + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ===================== ==================================================================== + Status Code Message Description + =========== ===================== ==================================================================== + 400 Bad Request Request error. + 401 Unauthorized The authentication information is not provided or is incorrect. + 403 Forbidden The request was forbidden. + 404 Not Found The requested resource does not exist. + 408 Request Timeout The request timed out. + 429 Too Many Requests The number requests exceeded the upper limit. + 500 Internal Server Error Failed to complete the request because of an internal service error. + 503 Service Unavailable The service is currently unavailable. + =========== ===================== ==================================================================== + +**Parent topic:** `API Version `__ diff --git a/elb/api-ref/elb_jd_cj_0000.html b/elb/api-ref/elb_jd_cj_0000.html new file mode 100644 index 000000000..d963a478a --- /dev/null +++ b/elb/api-ref/elb_jd_cj_0000.html @@ -0,0 +1,172 @@ + + +

      Querying Monitoring Metrics

      +

      Function

      This API is used to query all metrics at Layer 4 and Layer 7.

      +

      Only users can query these metrics.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/monitor

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Response parameters

        Parameter

        +

        Type

        +

        Description

        +

        act_conn

        +

        Integer

        +

        Specifies the number of active connections.

        +

        cps

        +

        Integer

        +

        Specifies the number of concurrent connections.

        +

        create_time

        +

        String

        +

        Specifies the report time.

        +

        in_Bps

        +

        Integer

        +

        Specifies the inbound rate (bytes/s).

        +

        in_pps

        +

        Integer

        +

        Specifies the number of incoming data packets.

        +

        inact_conn

        +

        Integer

        +

        Specifies the number of inactive connections.

        +

        loadbalancer_id

        +

        String

        +

        Specifies the load balancer ID.

        +

        loadbalancer_ip

        +

        String

        +

        Specifies the load balancer IP address.

        +

        loadbalancer_name

        +

        String

        +

        Specifies the load balancer name.

        +

        ncps

        +

        Integer

        +

        Specifies the number of new connections.

        +

        out_Bps

        +

        Integer

        +

        Specifies the outbound rate (bytes/s).

        +

        out_pps

        +

        Integer

        +

        Specifies the number of outgoing data packets.

        +
        + +
      +
      • Example response
        [ 
        +      { 
        +          "act_conn": 0,
        +          "cps": 0,
        +          "create_time": "2016-05-20 16:46:49",
        +          "in_Bps": 0,
        +          "in_pps": 0,
        +          "inact_conn": 0,
        +          "loadbalancer_id": "34cf6520808d4766ae1455586ab94ba8",
        +          "loadbalancer_ip": "10.10.1.233",
        +          "loadbalancer_name": "lb0721",
        +          "ncps": 0,
        +          "out_Bps": 0,
        +          "out_pps": 0
        +       },
        +       {
        +          "act_conn": 0,
        +          "cps": 0,
        +          "create_time": "2016-05-20 16:46:49",
        +          "in_Bps": 0,
        +          "in_pps": 0,
        +          "inact_conn": 0,
        +          "loadbalancer_id": "b44533cce271437bb692365b0c450543",
        +          "loadbalancer_ip": "10.10.1.253",
        +          "loadbalancer_name": "lb0721",
        +          "ncps": 0,
        +          "out_Bps": 0,
        +          "out_pps": 0
        +       }
        +]
        +
      + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_cj_0000.rst b/elb/api-ref/elb_jd_cj_0000.rst new file mode 100644 index 000000000..b6466c61e --- /dev/null +++ b/elb/api-ref/elb_jd_cj_0000.rst @@ -0,0 +1,94 @@ +Querying Monitoring Metrics +=========================== + +Function +^^^^^^^^ + +This API is used to query all metrics at Layer 4 and Layer 7. + +Only users can query these metrics. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/monitor + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ========================= + Parameter **Mandatory** **Type** Description + ========== ============= ======== ========================= + project_id Yes String Specifies the project ID. + ========== ============= ======== ========================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Response parameters + + ================= ======== =============================================== + Parameter **Type** Description + ================= ======== =============================================== + act_conn Integer Specifies the number of active connections. + cps Integer Specifies the number of concurrent connections. + create_time String Specifies the report time. + in_Bps Integer Specifies the inbound rate (bytes/s). + in_pps Integer Specifies the number of incoming data packets. + inact_conn Integer Specifies the number of inactive connections. + loadbalancer_id String Specifies the load balancer ID. + loadbalancer_ip String Specifies the load balancer IP address. + loadbalancer_name String Specifies the load balancer name. + ncps Integer Specifies the number of new connections. + out_Bps Integer Specifies the outbound rate (bytes/s). + out_pps Integer Specifies the number of outgoing data packets. + ================= ======== =============================================== + +- Example response + + .. code:: screen + + [ + { + "act_conn": 0, + "cps": 0, + "create_time": "2016-05-20 16:46:49", + "in_Bps": 0, + "in_pps": 0, + "inact_conn": 0, + "loadbalancer_id": "34cf6520808d4766ae1455586ab94ba8", + "loadbalancer_ip": "10.10.1.233", + "loadbalancer_name": "lb0721", + "ncps": 0, + "out_Bps": 0, + "out_pps": 0 + }, + { + "act_conn": 0, + "cps": 0, + "create_time": "2016-05-20 16:46:49", + "in_Bps": 0, + "in_pps": 0, + "inact_conn": 0, + "loadbalancer_id": "b44533cce271437bb692365b0c450543", + "loadbalancer_ip": "10.10.1.253", + "loadbalancer_name": "lb0721", + "ncps": 0, + "out_Bps": 0, + "out_pps": 0 + } + ] + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_fz_0000.html b/elb/api-ref/elb_jd_fz_0000.html new file mode 100644 index 000000000..5db998bcc --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0000.html @@ -0,0 +1,25 @@ + + +

      Load Balancer

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_fz_0000.rst b/elb/api-ref/elb_jd_fz_0000.rst new file mode 100644 index 000000000..8857efe7e --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0000.rst @@ -0,0 +1,11 @@ +Load Balancer +============= + +- `Creating a Load Balancer `__ +- `Deleting a Load Balancer `__ +- `Deleting a Public Network Load Balancer `__ +- `Modifying a Load Balancer `__ +- `Querying Details of a Load Balancer `__ +- `Querying Load Balancers `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_fz_0001.html b/elb/api-ref/elb_jd_fz_0001.html new file mode 100644 index 000000000..da265f2be --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0001.html @@ -0,0 +1,283 @@ + + +

      Creating a Load Balancer

      +

      Function

      This API is used to create a load balancer.

      + +

      URI

      POST /v1.0/{project_id}/elbaas/loadbalancers

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + +

      + +

      Request

      • Request parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Mandatory

        +

        Type

        +

        Description

        +

        name

        +

        Yes

        +

        String

        +
        • Specifies the load balancer name.
        • The value can contain 1 to 64 characters that consist of letters, digits, underscores (_), and hyphens (-).
        +

        description

        +

        No

        +

        String

        +
        • Provides supplementary information about the load balancer.
        • The value contains 0 to 128 characters and cannot contain angle brackets (< and >).
        +

        vpc_id

        +

        Yes

        +

        String

        +

        Specifies the VPC ID.

        +

        bandwidth

        +

        No

        +

        Integer

        +
        • Specifies the bandwidth (Mbit/s). This parameter is mandatory when type is set to External.
        • The value ranges from 1 to 500.

          (The specific range may vary depending on the configuration in each region. You can see the bandwidth range of each region on the management console.)

          +
        +

        type

        +

        Yes

        +

        String

        +
        • Specifies the network type of the load balancer.
        • The value is Internal or External.
        +

        admin_state_up

        +

        Yes

        +

        Integer/Boolean

        +
        • Specifies the administrative status of the load balancer.
        • Optional values:

          0 or false: indicates that the load balancer is stopped. Only users are allowed to enter the two values.

          +

          1 or true: indicates that the load balancer is running properly.

          +

          2 or false: indicates that the load balancer is frozen. Only the administrator is allowed to enter the two values.

          +
        +

        vip_subnet_id

        +

        No

        +

        String

        +

        Specifies the subnet ID of backend ECSs. This parameter is mandatory when type is set to Internal. Only IPv4 subnets can be specified.

        +

        az

        +

        No

        +

        String

        +

        Specifies the AZ of the load balancer. This parameter is invalid when type is set to External and is optional when type is set to Internal. If type is set to Internal and an AZ is specified, the specified AZ must support private network load balancers. Otherwise, an error message is returned. For more details, see Regions and Endpoints.

        +

        +

        charge_mode

        +

        No

        +

        String

        +
        • Specifies how a new elastic IP address (EIP) is billed. This is a reserved parameter. If the system supports billing by traffic and this parameter is specified, the EIP will be billed by traffic.
        • Specifies whether the EIP is billed by traffic or fixed bandwidth. If this parameter is left blank or incorrectly set, the EIP is billed by traffic by default.
        • The value is traffic.
        +

        eip_type

        +

        No

        +

        String

        +
        • This parameter is reserved.
        +

        security_group_id

        +

        No

        +

        String

        +
        • Specifies the security group ID.
        • The value can contain 1 to 200 characters that consists of letters, digits, and hyphens (-).
        • This parameter is mandatory if the value of type is Internal, while it is ignored when the value of type is External.
        +

        vip_address

        +

        No

        +

        String

        +
        • Specifies the private IP address of the load balancer. When type is set to External, the parameter value is the EIP. When type is set to Internal, the parameter value is the private network IP address.
        • You can select an existing EIP to create a public network load balancer. When this parameter is configured, parameters bandwidth, charge_mode, and eip_type are invalid.
        +

        tenantId

        +

        No

        +

        String

        +
        • Specifies the project ID.
        • This parameter is mandatory when type is set to Internal.
        +
        + +
      + +
      • Example request 1
        {
        +    "name": "loadbalancer1",
        +    "description": "simple lb",
        +    "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107",
        +    "bandwidth": 200,
        +    "type": "External",
        +    "admin_state_up": true
        +}
        +
      +
      • Example request 2
        {
        +    "name": "loadbalancer1",
        +    "description": "simple lb",
        +    "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107",
        +    "vip_address": "192.144.164.74",
        +    "type": "External",
        +    "admin_state_up": true
        +}
        +
      +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 3 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        uri

        +

        String

        +

        Specifies the URI returned by Combined API after the job for creating a load balancer is delivered.

        +

        job_id

        +

        String

        +

        Specifies the unique ID assigned to the job for creating a load balancer in Combined API.

        +
        + +
      • Example response
        {
        +    "uri": "/v1/73cd9140bec7427ab9952b4ed75924e0/jobs/4010b39b4fbb4645014fcfc8f2d178d1",
        +    "job_id": "4010b39b4fbb4645014fcfc8f2d178d1"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_jd_fz_0001.rst b/elb/api-ref/elb_jd_fz_0001.rst new file mode 100644 index 000000000..2c03376c3 --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0001.rst @@ -0,0 +1,256 @@ +Creating a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to create a load balancer. + +URI +^^^ + +POST /v1.0/{project_id}/elbaas/loadbalancers + +.. table:: **Table 1** Parameter description + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request +^^^^^^^ + +- Request parameters + + .. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | Yes | String | - Specifies the load | + | | | | balancer name. | + | | | | - The value can contain 1 | + | | | | to 64 characters that | + | | | | consist of letters, | + | | | | digits, underscores (_), | + | | | | and hyphens (-). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | - Provides supplementary | + | | | | information about the | + | | | | load balancer. | + | | | | - The value contains 0 to | + | | | | 128 characters and | + | | | | cannot contain angle | + | | | | brackets (< and >). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vpc_id | Yes | String | Specifies the VPC ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | bandwidth | No | Integer | - Specifies the bandwidth | + | | | | (Mbit/s). This parameter | + | | | | is mandatory when | + | | | | **type** is set to | + | | | | **External**. | + | | | | | + | | | | - The value ranges from | + | | | | **1** to **500**. | + | | | | | + | | | | (The specific range may | + | | | | vary depending on the | + | | | | configuration in each | + | | | | region. You can see the | + | | | | bandwidth range of each | + | | | | region on the management | + | | | | console.) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | - Specifies the network | + | | | | type of the load | + | | | | balancer. | + | | | | - The value is | + | | | | **Internal** or | + | | | | **External**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | Yes | Integer/Boolean | - Specifies the | + | | | | administrative status of | + | | | | the load balancer. | + | | | | | + | | | | - Optional values: | + | | | | | + | | | | **0** or **false**: | + | | | | indicates that the load | + | | | | balancer is stopped. | + | | | | Only users are allowed | + | | | | to enter the two values. | + | | | | | + | | | | **1** or **true**: | + | | | | indicates that the load | + | | | | balancer is running | + | | | | properly. | + | | | | | + | | | | **2** or **false**: | + | | | | indicates that the load | + | | | | balancer is frozen. Only | + | | | | the administrator is | + | | | | allowed to enter the two | + | | | | values. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_subnet_id | No | String | Specifies the subnet ID of | + | | | | backend ECSs. This | + | | | | parameter is mandatory when | + | | | | **type** is set to | + | | | | **Internal**. Only IPv4 | + | | | | subnets can be specified. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | az | No | String | Specifies the AZ of the | + | | | | load balancer. This | + | | | | parameter is invalid when | + | | | | type is set to **External** | + | | | | and is optional when type | + | | | | is set to **Internal**. If | + | | | | **type** is set to | + | | | | **Internal** and an AZ is | + | | | | specified, the specified AZ | + | | | | must support private | + | | | | network load balancers. | + | | | | Otherwise, an error message | + | | | | is returned. For more | + | | | | details, see `Regions and | + | | | | Endpoints `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | charge_mode | No | String | - Specifies how a new | + | | | | elastic IP address (EIP) | + | | | | is billed. This is a | + | | | | reserved parameter. If | + | | | | the system supports | + | | | | billing by traffic and | + | | | | this parameter is | + | | | | specified, the EIP will | + | | | | be billed by traffic. | + | | | | - Specifies whether the | + | | | | EIP is billed by traffic | + | | | | or fixed bandwidth. If | + | | | | this parameter is left | + | | | | blank or incorrectly | + | | | | set, the EIP is billed | + | | | | by traffic by default. | + | | | | - The value is | + | | | | **traffic**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | eip_type | No | String | - This parameter is | + | | | | reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | security_group_id | No | String | - Specifies the security | + | | | | group ID. | + | | | | - The value can contain 1 | + | | | | to 200 characters that | + | | | | consists of letters, | + | | | | digits, and hyphens (-). | + | | | | - This parameter is | + | | | | mandatory if the value | + | | | | of **type** is | + | | | | **Internal**, while it | + | | | | is ignored when the | + | | | | value of **type** is | + | | | | **External**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_address | No | String | - Specifies the private IP | + | | | | address of the load | + | | | | balancer. When **type** | + | | | | is set to **External**, | + | | | | the parameter value is | + | | | | the EIP. When **type** | + | | | | is set to **Internal**, | + | | | | the parameter value is | + | | | | the private network IP | + | | | | address. | + | | | | - You can select an | + | | | | existing EIP to create a | + | | | | public network load | + | | | | balancer. When this | + | | | | parameter is configured, | + | | | | parameters | + | | | | **bandwidth**, | + | | | | **charge_mode**, and | + | | | | **eip_type** are | + | | | | invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenantId | No | String | - Specifies the project | + | | | | ID. | + | | | | - This parameter is | + | | | | mandatory when **type** | + | | | | is set to **Internal**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +- Example request 1 + + .. code:: screen + + { + "name": "loadbalancer1", + "description": "simple lb", + "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107", + "bandwidth": 200, + "type": "External", + "admin_state_up": true + } + +- Example request 2 + + .. code:: screen + + { + "name": "loadbalancer1", + "description": "simple lb", + "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107", + "vip_address": "192.144.164.74", + "type": "External", + "admin_state_up": true + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 3** Parameter description + + ========= ====== =================================================================================================== + Parameter Type Description + ========= ====== =================================================================================================== + uri String Specifies the URI returned by Combined API after the job for creating a load balancer is delivered. + job_id String Specifies the unique ID assigned to the job for creating a load balancer in Combined API. + ========= ====== =================================================================================================== + +- Example response + + .. code:: screen + + { + "uri": "/v1/73cd9140bec7427ab9952b4ed75924e0/jobs/4010b39b4fbb4645014fcfc8f2d178d1", + "job_id": "4010b39b4fbb4645014fcfc8f2d178d1" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_jd_fz_0002.html b/elb/api-ref/elb_jd_fz_0002.html new file mode 100644 index 000000000..0920597fc --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0002.html @@ -0,0 +1,142 @@ + + +

      Deleting a Load Balancer

      +

      Function

      This API is used to delete a load balancer. If the load balancer is a public network load balancer, this API deletes the EIP bound to the load balancer.

      + +

      Constraints

      For a public network load balancer, you need to delete the backend ECSs added to all listeners of the load balancer before deleting it.

      + +

      URI

      DELETE /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        uri

        +

        String

        +

        Specifies the URI returned by Combined API after the job for deleting a load balancer is delivered.

        +

        job_id

        +

        String

        +

        Specifies the unique ID assigned to the job for deleting a load balancer in Combined API.

        +
        + +
      • Example response
        {
        +    "uri": "/v1/73cd9140bec7427ab9952b4ed75924e0/jobs/4010b39c4fbb4649014fcfd2ab7903b0",
        +    "job_id": "4010b39c4fbb4649014fcfd2ab7903b0"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_jd_fz_0002.rst b/elb/api-ref/elb_jd_fz_0002.rst new file mode 100644 index 000000000..2275c4812 --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0002.rst @@ -0,0 +1,82 @@ +Deleting a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to delete a load balancer. If the load balancer is a public network load balancer, this API deletes the EIP bound to the load balancer. + +Constraints +^^^^^^^^^^^ + +For a public network load balancer, you need to delete the backend ECSs added to all listeners of the load balancer before deleting it. + +URI +^^^ + +DELETE /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Parameter description + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ========= ====== =================================================================================================== + Parameter Type Description + ========= ====== =================================================================================================== + uri String Specifies the URI returned by Combined API after the job for deleting a load balancer is delivered. + job_id String Specifies the unique ID assigned to the job for deleting a load balancer in Combined API. + ========= ====== =================================================================================================== + +- Example response + + .. code:: screen + + { + "uri": "/v1/73cd9140bec7427ab9952b4ed75924e0/jobs/4010b39c4fbb4649014fcfd2ab7903b0", + "job_id": "4010b39c4fbb4649014fcfd2ab7903b0" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_jd_fz_0003.html b/elb/api-ref/elb_jd_fz_0003.html new file mode 100644 index 000000000..a27e3aeee --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0003.html @@ -0,0 +1,144 @@ + + +

      Deleting a Public Network Load Balancer

      +

      Function

      This API is used to delete a public network load balancer. The EIP bound to the load balancer will not be deleted. If you need to delete this IP address, refer to Deleting a Load Balancer.

      + +

      Constraints

      Before deleting a public network load balancer, you must remove all backend ECSs from the listener. This API cannot be used to delete a private network load balancer.

      + +

      URI

      DELETE /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}/keep-eip

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        uri

        +

        String

        +

        Specifies the URI returned by Combined API after the job for deleting a load balancer is delivered.

        +

        job_id

        +

        String

        +

        Specifies the unique ID assigned to the job for deleting a load balancer in Combined API.

        +
        + +
      +
      • Example response
        {
        +    "uri": "/v1/8263303061de4b5d95c9cb68c3a257f4/jobs/ff808082615b23aa01616b90efc65298", 
        +    "job_id": "ff808082615b23aa01616b90efc65298"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisable

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_jd_fz_0003.rst b/elb/api-ref/elb_jd_fz_0003.rst new file mode 100644 index 000000000..9db4e9e98 --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0003.rst @@ -0,0 +1,82 @@ +Deleting a Public Network Load Balancer +======================================= + +Function +^^^^^^^^ + +This API is used to delete a public network load balancer. The EIP bound to the load balancer will not be deleted. If you need to delete this IP address, refer to `Deleting a Load Balancer `__. + +Constraints +^^^^^^^^^^^ + +Before deleting a public network load balancer, you must remove all backend ECSs from the listener. This API cannot be used to delete a private network load balancer. + +URI +^^^ + +DELETE /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}/keep-eip + +.. table:: **Table 1** Parameter description + + =============== ============= ======== =============================== + Parameter **Mandatory** **Type** Description + =============== ============= ======== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ============= ======== =============================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ========= ======== =================================================================================================== + Parameter **Type** Description + ========= ======== =================================================================================================== + uri String Specifies the URI returned by Combined API after the job for deleting a load balancer is delivered. + job_id String Specifies the unique ID assigned to the job for deleting a load balancer in Combined API. + ========= ======== =================================================================================================== + +- Example response + + .. code:: screen + + { + "uri": "/v1/8263303061de4b5d95c9cb68c3a257f4/jobs/ff808082615b23aa01616b90efc65298", + "job_id": "ff808082615b23aa01616b90efc65298" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisable You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_jd_fz_0004.html b/elb/api-ref/elb_jd_fz_0004.html new file mode 100644 index 000000000..7c4a0533d --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0004.html @@ -0,0 +1,186 @@ + + +

      Modifying a Load Balancer

      +

      Function

      This API is used to modify the name, description, bandwidth, and administrative status of a load balancer.

      + +

      URI

      PUT /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +

      name

      +

      No

      +

      String

      +
      • Specifies the load balancer name.
      • The value can contain 1 to 64 characters that consist of letters, digits, underscores (_), and hyphens (-).
      +

      description

      +

      No

      +

      String

      +
      • Provides supplementary information about the load balancer.
      • The value contains 0 to 128 characters and cannot contain angle brackets (< and >).
      +

      bandwidth

      +

      No

      +

      Integer

      +
      • Specifies the bandwidth (Mbit/s). This parameter is mandatory when type is set to External.
      • The value ranges from 1 to 500.

        (The specific range may vary depending on the configuration in each region. You can see the bandwidth range of each region on the management console.)

        +
      +

      admin_state_up

      +

      No

      +

      Integer/Boolean

      +
      • Specifies the administrative status of the load balancer.
      • Optional values:

        0 or false: indicates that the load balancer is stopped. Only users are allowed to enter the two values.

        +

        1 or true: indicates that the load balancer is running properly.

        +

        2 or false: indicates that the load balancer is frozen. Only the administrator is allowed to enter the two values.

        +
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "description": "simple lb",
        +    "name": "loadbalancer1",
        +    "bandwidth": 200,
        +    "admin_state_up": true
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        uri

        +

        String

        +

        Specifies the URI returned by Combined API after the job for modifying a load balancer is delivered.

        +

        job_id

        +

        String

        +

        Specifies the unique ID assigned to the job for modifying a load balancer in Combined API.

        +
        + +
      +
      • Example response
        {
        +    "uri": "/v1/73cd9140bec7427ab9952b4ed75924e0/jobs/4010b39d4fbb4645014fcfddf4b32d15",
        +    "job_id": "4010b39d4fbb4645014fcfddf4b32d15"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_jd_fz_0004.rst b/elb/api-ref/elb_jd_fz_0004.rst new file mode 100644 index 000000000..fba8cc124 --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0004.rst @@ -0,0 +1,143 @@ +Modifying a Load Balancer +========================= + +Function +^^^^^^^^ + +This API is used to modify the name, description, bandwidth, and administrative status of a load balancer. + +URI +^^^ + +PUT /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | Yes | String | Specifies the load balancer | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | - Specifies the load | + | | | | balancer name. | + | | | | - The value can contain 1 | + | | | | to 64 characters that | + | | | | consist of letters, | + | | | | digits, underscores (_), | + | | | | and hyphens (-). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | - Provides supplementary | + | | | | information about the | + | | | | load balancer. | + | | | | - The value contains 0 to | + | | | | 128 characters and | + | | | | cannot contain angle | + | | | | brackets (< and >). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | bandwidth | No | Integer | - Specifies the bandwidth | + | | | | (Mbit/s). This parameter | + | | | | is mandatory when | + | | | | **type** is set to | + | | | | **External**. | + | | | | | + | | | | - The value ranges from 1 | + | | | | to 500. | + | | | | | + | | | | (The specific range may | + | | | | vary depending on the | + | | | | configuration in each | + | | | | region. You can see the | + | | | | bandwidth range of each | + | | | | region on the management | + | | | | console.) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Integer/Boolean | - Specifies the | + | | | | administrative status of | + | | | | the load balancer. | + | | | | | + | | | | - Optional values: | + | | | | | + | | | | **0** or **false**: | + | | | | indicates that the load | + | | | | balancer is stopped. | + | | | | Only users are allowed | + | | | | to enter the two values. | + | | | | | + | | | | **1** or **true**: | + | | | | indicates that the load | + | | | | balancer is running | + | | | | properly. | + | | | | | + | | | | **2** or **false**: | + | | | | indicates that the load | + | | | | balancer is frozen. Only | + | | | | the administrator is | + | | | | allowed to enter the two | + | | | | values. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "description": "simple lb", + "name": "loadbalancer1", + "bandwidth": 200, + "admin_state_up": true + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ========= ====== ==================================================================================================== + Parameter Type Description + ========= ====== ==================================================================================================== + uri String Specifies the URI returned by Combined API after the job for modifying a load balancer is delivered. + job_id String Specifies the unique ID assigned to the job for modifying a load balancer in Combined API. + ========= ====== ==================================================================================================== + +- Example response + + .. code:: screen + + { + "uri": "/v1/73cd9140bec7427ab9952b4ed75924e0/jobs/4010b39d4fbb4645014fcfddf4b32d15", + "job_id": "4010b39d4fbb4645014fcfddf4b32d15" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_jd_fz_0005.html b/elb/api-ref/elb_jd_fz_0005.html new file mode 100644 index 000000000..19c1949a5 --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0005.html @@ -0,0 +1,232 @@ + + +

      Querying Details of a Load Balancer

      +

      Function

      This API is used to query details about a load balancer.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        vip_address

        +

        String

        +

        Specifies the private IP address of the load balancer.

        +

        update_time

        +

        String

        +

        Specifies the time when the load balancer was updated.

        +

        create_time

        +

        String

        +

        Specifies the time when the load balancer was created.

        +

        id

        +

        String

        +

        Specifies the load balancer ID.

        +

        status

        +

        String

        +
        • Specifies the load balancer status.
        • The value can be ACTIVE, PENDING_CREATE, or ERROR.
        +

        bandwidth

        +

        Integer

        +

        Specifies the bandwidth (Mbit/s).

        +

        vpc_id

        +

        String

        +

        Specifies the VPC ID.

        +

        admin_state_up

        +

        Integer

        +
        • Specifies the administrative status of the load balancer.
        • The following options are available:

          0: The load balancer is disabled.

          +

          1: The load balancer is running properly.

          +

          2: The load balancer is frozen.

          +
        +

        vip_subnet_id

        +

        String

        +

        This parameter is unavailable now.

        +

        type

        +

        String

        +

        Specifies the network type of the load balancer. The value is External.

        +

        name

        +

        String

        +

        Specifies the load balancer name.

        +

        description

        +

        String

        +

        Provides supplementary information about the load balancer.

        +

        security_group_id

        +

        String

        +
        • Specifies the security group ID.
        • null is displayed for this parameter when type is set to External.
        +
        + +
      + +
      • Example response
        {
        +    "vip_address": "192.144.62.114",
        +    "update_time": "2015-09-14 02:34:32",
        +    "create_time": "2015-09-14 02:34:32",
        +    "id": "0b07acf06d243925bc24a0ac7445267a",
        +    "status": "ACTIVE",
        +    "bandwidth": 1,
        +    "security_group_id": null,
        +    "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107",
        +    "admin_state_up": 1,
        +    "vip_subnet_id": null,
        +    "type": "External",
        +    "name": "MY_ELB",
        +    "description": null
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_jd_fz_0005.rst b/elb/api-ref/elb_jd_fz_0005.rst new file mode 100644 index 000000000..7d48121ed --- /dev/null +++ b/elb/api-ref/elb_jd_fz_0005.rst @@ -0,0 +1,136 @@ +Querying Details of a Load Balancer +=================================== + +Function +^^^^^^^^ + +This API is used to query details about a load balancer. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Parameter description + + =============== ============= ======== =============================== + Parameter **Mandatory** **Type** Description + =============== ============= ======== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ============= ======== =============================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | vip_address | String | Specifies the private IP address of | + | | | the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | update_time | String | Specifies the time when the load | + | | | balancer was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the load | + | | | balancer was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | - Specifies the load balancer | + | | | status. | + | | | - The value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | bandwidth | Integer | Specifies the bandwidth (Mbit/s). | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vpc_id | String | Specifies the VPC ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Integer | - Specifies the administrative | + | | | status of the load balancer. | + | | | | + | | | - The following options are | + | | | available: | + | | | | + | | | **0**: The load balancer is | + | | | disabled. | + | | | | + | | | **1**: The load balancer is | + | | | running properly. | + | | | | + | | | **2**: The load balancer is | + | | | frozen. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_id | String | This parameter is unavailable now. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the network type of the | + | | | load balancer. The value is | + | | | **External**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | security_group_id | String | - Specifies the security group ID. | + | | | - **null** is displayed for this | + | | | parameter when **type** is set to | + | | | **External**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "vip_address": "192.144.62.114", + "update_time": "2015-09-14 02:34:32", + "create_time": "2015-09-14 02:34:32", + "id": "0b07acf06d243925bc24a0ac7445267a", + "status": "ACTIVE", + "bandwidth": 1, + "security_group_id": null, + "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107", + "admin_state_up": 1, + "vip_subnet_id": null, + "type": "External", + "name": "MY_ELB", + "description": null + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_jd_hd_0000.html b/elb/api-ref/elb_jd_hd_0000.html new file mode 100644 index 000000000..53a9e8e37 --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0000.html @@ -0,0 +1,19 @@ + + +

      Backend ECS

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_hd_0000.rst b/elb/api-ref/elb_jd_hd_0000.rst new file mode 100644 index 000000000..35ab82733 --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0000.rst @@ -0,0 +1,8 @@ +Backend ECS +=========== + +- `Adding Backend ECSs `__ +- `Removing Backend ECSs `__ +- `Querying Backend ECSs `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_hd_0001.html b/elb/api-ref/elb_jd_hd_0001.html new file mode 100644 index 000000000..91d5c0cbb --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0001.html @@ -0,0 +1,164 @@ + + +

      Adding Backend ECSs

      +

      Function

      This API is used to add backend ECSs to a listener for monitoring.

      +

      To add backend ECSs to a UDP listener, IP addresses can be pinged and UDP services must be enabled.

      + +

      URI

      POST /v1.0/{project_id}/elbaas/listeners/{listener_id}/members

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +

      server_id

      +

      Yes

      +

      String

      +

      Specifies the backend ECS ID.

      +

      address

      +

      Yes

      +

      String

      +

      Specifies the private IP address of the backend ECS.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        [
        +    {
        +        "server_id": "dbecb618-2259-405f-ab17-9b68c4f541b0",
        +        "address": "172.16.0.31"
        +    }
        +]
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        uri

        +

        String

        +

        Specifies the URI of the job for adding a backend ECS. It is returned by Combined API.

        +

        job_id

        +

        String

        +

        Specifies the unique ID assigned to the job for adding a backend ECS in Combined API.

        +
        + +
      • Example response
        {
        +    "uri": "/v1/55300f3c8f764c06b1a32e2302edc305/jobs/4010b39b4fd3d5ff014fd3ec3ed8002d",
        +    "job_id": "4010b39b4fd3d5ff014fd3ec3ed8002d"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Backend ECS + + + diff --git a/elb/api-ref/elb_jd_hd_0001.rst b/elb/api-ref/elb_jd_hd_0001.rst new file mode 100644 index 000000000..c30dfa135 --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0001.rst @@ -0,0 +1,88 @@ +Adding Backend ECSs +=================== + +Function +^^^^^^^^ + +This API is used to add backend ECSs to a listener for monitoring. + +To add backend ECSs to a UDP listener, IP addresses can be pinged and UDP services must be enabled. + +URI +^^^ + +POST /v1.0/{project_id}/elbaas/listeners/{listener_id}/members + +.. table:: **Table 1** Parameter description + + =========== ========= ====== ==================================================== + Parameter Mandatory Type Description + =========== ========= ====== ==================================================== + project_id Yes String Specifies the project ID. + listener_id Yes String Specifies the listener ID. + server_id Yes String Specifies the backend ECS ID. + address Yes String Specifies the private IP address of the backend ECS. + =========== ========= ====== ==================================================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + [ + { + "server_id": "dbecb618-2259-405f-ab17-9b68c4f541b0", + "address": "172.16.0.31" + } + ] + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ========= ====== ====================================================================================== + Parameter Type Description + ========= ====== ====================================================================================== + uri String Specifies the URI of the job for adding a backend ECS. It is returned by Combined API. + job_id String Specifies the unique ID assigned to the job for adding a backend ECS in Combined API. + ========= ====== ====================================================================================== + +- Example response + + .. code:: screen + + { + "uri": "/v1/55300f3c8f764c06b1a32e2302edc305/jobs/4010b39b4fd3d5ff014fd3ec3ed8002d", + "job_id": "4010b39b4fd3d5ff014fd3ec3ed8002d" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Backend ECS `__ diff --git a/elb/api-ref/elb_jd_hd_0002.html b/elb/api-ref/elb_jd_hd_0002.html new file mode 100644 index 000000000..6c3761dbf --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0002.html @@ -0,0 +1,179 @@ + + +

      Removing Backend ECSs

      +

      Function

      This API is used to remove backend ECSs from a listener. Multiple backend ECSs can be removed concurrently.

      + +

      URI

      POST /v1.0/{project_id}/elbaas/listeners/{listener_id}/members/action

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +

      removeMember

      +

      Yes

      +

      Array

      +

      Lists the removed backend ECSs.

      +
      + + + + + + + + + + + + + + +
      Table 2 removeMember parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      id

      +

      Yes

      +

      String

      +

      Specifies the backend ECS ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "removeMember": [
        +        {
        +            "id": "34695d664b182fa69b98228032b0e239"
        +        }
        +    ]
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 3 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        uri

        +

        String

        +

        Specifies the URI returned by Combined API after the job for removing a backend ECS is delivered.

        +

        job_id

        +

        String

        +

        Specifies the unique ID assigned to the job for removing a backend ECS in Combined API.

        +
        + +
      +
      • Example response
        {
        +    "uri": "/v1/55300f3c8f764c06b1a32e2302edc305/jobs/4010b39b4fd3d5ff014fd3f160fd006c",
        +    "job_id": "4010b39b4fd3d5ff014fd3f160fd006c"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Backend ECS + + + diff --git a/elb/api-ref/elb_jd_hd_0002.rst b/elb/api-ref/elb_jd_hd_0002.rst new file mode 100644 index 000000000..a7115a722 --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0002.rst @@ -0,0 +1,94 @@ +Removing Backend ECSs +===================== + +Function +^^^^^^^^ + +This API is used to remove backend ECSs from a listener. Multiple backend ECSs can be removed concurrently. + +URI +^^^ + +POST /v1.0/{project_id}/elbaas/listeners/{listener_id}/members/action + +.. table:: **Table 1** Parameter description + + ============ ========= ====== =============================== + Parameter Mandatory Type Description + ============ ========= ====== =============================== + project_id Yes String Specifies the project ID. + listener_id Yes String Specifies the listener ID. + removeMember Yes Array Lists the removed backend ECSs. + ============ ========= ====== =============================== + +.. table:: **Table 2** **removeMember** parameter description + + ========= ========= ====== ============================= + Parameter Mandatory Type Description + ========= ========= ====== ============================= + id Yes String Specifies the backend ECS ID. + ========= ========= ====== ============================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "removeMember": [ + { + "id": "34695d664b182fa69b98228032b0e239" + } + ] + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 3** Parameter description + + ========= ====== ================================================================================================= + Parameter Type Description + ========= ====== ================================================================================================= + uri String Specifies the URI returned by Combined API after the job for removing a backend ECS is delivered. + job_id String Specifies the unique ID assigned to the job for removing a backend ECS in Combined API. + ========= ====== ================================================================================================= + +- Example response + + .. code:: screen + + { + "uri": "/v1/55300f3c8f764c06b1a32e2302edc305/jobs/4010b39b4fd3d5ff014fd3f160fd006c", + "job_id": "4010b39b4fd3d5ff014fd3f160fd006c" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Backend ECS `__ diff --git a/elb/api-ref/elb_jd_hd_0003.html b/elb/api-ref/elb_jd_hd_0003.html new file mode 100644 index 000000000..e8d076aef --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0003.html @@ -0,0 +1,272 @@ + + +

      Querying Backend ECSs

      +

      Function

      This API is used to query backend ECSs added to a listener. If you are the administrator, the backend ECS list will be empty.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/listeners/{listener_id}/members?limit=10&marker=0

      +

      Enter a question mark (?) and an ampersand (&) at the end of the URI to define multiple search criteria. This API allows filtering backend ECSs by each parameter in the response message except listeners, server_name, update_time, and create_time.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +

      marker

      +

      No

      +

      String

      +

      Specifies the resource ID of pagination query. If the parameter is left blank, only resources on the first page are queried.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of records on each page.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        server_address

        +

        String

        +

        Specifies the private IP address of the backend ECS.

        +

        id

        +

        String

        +

        Specifies the backend ECS ID.

        +

        address

        +

        String

        +

        Specifies the floating IP address assigned to the backend ECS.

        +

        status

        +

        String

        +

        Specifies the status of the backend ECS. The value can be ACTIVE, PENDING, or ERROR.

        +

        health_status

        +

        String

        +

        Specifies the health check result. The value is NORMAL, ABNORMAL, or UNAVAILABLE.

        +

        update_time

        +

        String

        +

        Specifies the time when the backend ECS was updated.

        +

        create_time

        +

        String

        +

        Specifies the time when the backend ECS was added.

        +

        server_name

        +

        String

        +

        Specifies the backend ECS name.

        +

        server_id

        +

        String

        +

        Specifies the backend ECS ID.

        +

        listeners

        +

        Array

        +

        Specifies the listener with which the backend ECS is associated.

        +
        + + + + + + + + + + + + +
        Table 3 listeners parameter description

        Parameter

        +

        Type

        +

        Description

        +

        id

        +

        String

        +

        Specifies the listener with which the backend ECS is associated.

        +
        + +
      +
      • Example response
        [
        +    {
        +        "server_address": "172.16.0.16",
        +        "id": "4ac8777333bc20777147ab160ea61baf",
        +        "status": "ACTIVE",
        +        "address": "100.64.27.96",
        +        "listeners": [
        +            {
        +                "id": "65093734fb966b3d70f6af26cc63e125"
        +            },
        +            {
        +                "id": "a659fe780a542e1adf204db767a021a3"
        +            }
        +        ],
        +        "update_time": "2015-12-28 10:35:51",
        +        "create_time": "2015-12-28 10:35:50",
        +        "server_name": null,
        +        "server_id": "97444148-7afb-47cc-b4a3-6e1c94d1ade4",
        +        "health_status": "NORMAL"
        +    },
        +    {
        +        "server_address": "172.16.0.15",
        +        "id": "d8a21f107a19d7bd1d05a1f764eb623a",
        +        "status": "ACTIVE",
        +        "address": "100.64.27.95",
        +        "listeners": [
        +            {
        +                "id": "65093734fb966b3d70f6af26cc63e125"
        +            },
        +            {
        +                "id": "a659fe780a542e1adf204db767a021a3"
        +            }
        +        ],
        +        "update_time": "2015-12-28 10:35:51",
        +        "create_time": "2015-12-28 10:35:50",
        +        "server_name": null,
        +        "server_id": "05b731db-d457-41dc-a824-862daba91a59",
        +        "health_status": "ABNORMAL"
        +    }
        +]
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Backend ECS + + + diff --git a/elb/api-ref/elb_jd_hd_0003.rst b/elb/api-ref/elb_jd_hd_0003.rst new file mode 100644 index 000000000..c68095037 --- /dev/null +++ b/elb/api-ref/elb_jd_hd_0003.rst @@ -0,0 +1,141 @@ +Querying Backend ECSs +===================== + +Function +^^^^^^^^ + +This API is used to query backend ECSs added to a listener. If you are the administrator, the backend ECS list will be empty. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/listeners/{listener_id}/members?limit=10&marker=0 + +|image1| + +Enter a question mark (?) and an ampersand (&) at the end of the URI to define multiple search criteria. This API allows filtering backend ECSs by each parameter in the response message except **listeners**, **server_name**, **update_time**, and **create_time**. + +.. table:: **Table 1** Parameter description + + +-------------+---------------+----------+--------------------------------------------------------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============+===============+==========+==========================================================================+ + | project_id | Yes | String | Specifies the project ID. | + +-------------+---------------+----------+--------------------------------------------------------------------------+ + | listener_id | Yes | String | Specifies the listener ID. | + +-------------+---------------+----------+--------------------------------------------------------------------------+ + | marker | No | String | Specifies the resource ID of pagination query. If the parameter is left | + | | | | blank, only resources on the first page are queried. | + +-------------+---------------+----------+--------------------------------------------------------------------------+ + | limit | No | Integer | Specifies the number of records on each page. | + +-------------+---------------+----------+--------------------------------------------------------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ============== ======== ================================================================================================ + Parameter **Type** Description + ============== ======== ================================================================================================ + server_address String Specifies the private IP address of the backend ECS. + id String Specifies the backend ECS ID. + address String Specifies the floating IP address assigned to the backend ECS. + status String Specifies the status of the backend ECS. The value can be **ACTIVE**, **PENDING**, or **ERROR**. + health_status String Specifies the health check result. The value is **NORMAL**, **ABNORMAL**, or **UNAVAILABLE**. + update_time String Specifies the time when the backend ECS was updated. + create_time String Specifies the time when the backend ECS was added. + server_name String Specifies the backend ECS name. + server_id String Specifies the backend ECS ID. + listeners Array Specifies the listener with which the backend ECS is associated. + ============== ======== ================================================================================================ + + .. table:: **Table 3** **listeners** parameter description + + ========= ======== ================================================================ + Parameter **Type** Description + ========= ======== ================================================================ + id String Specifies the listener with which the backend ECS is associated. + ========= ======== ================================================================ + +- Example response + + .. code:: screen + + [ + { + "server_address": "172.16.0.16", + "id": "4ac8777333bc20777147ab160ea61baf", + "status": "ACTIVE", + "address": "100.64.27.96", + "listeners": [ + { + "id": "65093734fb966b3d70f6af26cc63e125" + }, + { + "id": "a659fe780a542e1adf204db767a021a3" + } + ], + "update_time": "2015-12-28 10:35:51", + "create_time": "2015-12-28 10:35:50", + "server_name": null, + "server_id": "97444148-7afb-47cc-b4a3-6e1c94d1ade4", + "health_status": "NORMAL" + }, + { + "server_address": "172.16.0.15", + "id": "d8a21f107a19d7bd1d05a1f764eb623a", + "status": "ACTIVE", + "address": "100.64.27.95", + "listeners": [ + { + "id": "65093734fb966b3d70f6af26cc63e125" + }, + { + "id": "a659fe780a542e1adf204db767a021a3" + } + ], + "update_time": "2015-12-28 10:35:51", + "create_time": "2015-12-28 10:35:50", + "server_name": null, + "server_id": "05b731db-d457-41dc-a824-862daba91a59", + "health_status": "ABNORMAL" + } + ] + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Backend ECS `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_jd_jk_0000.html b/elb/api-ref/elb_jd_jk_0000.html new file mode 100644 index 000000000..5949dd8a6 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0000.html @@ -0,0 +1,21 @@ + + +

      Health Check

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_jk_0000.rst b/elb/api-ref/elb_jd_jk_0000.rst new file mode 100644 index 000000000..de84a24f3 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0000.rst @@ -0,0 +1,9 @@ +Health Check +============ + +- `Configuring a Health Check `__ +- `Deleting a Health Check `__ +- `Modifying a Health Check `__ +- `Querying Details of a Health Check `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_jk_0001.html b/elb/api-ref/elb_jd_jk_0001.html new file mode 100644 index 000000000..613634089 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0001.html @@ -0,0 +1,308 @@ + + +

      Configuring a Health Check

      +

      Function

      This API is used to configure a health check for backend ECSs.

      + +

      URI

      POST /v1.0/{project_id}/elbaas/healthcheck

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener with which the health check is associated.

      +

      healthcheck_protocol

      +

      No

      +

      String

      +
      • Specifies the health check protocol. A listener using UDP is not allowed for a private network load balancer.
      • The value can be HTTP, TCP, or UDP.
      +

      healthcheck_uri

      +

      No

      +

      String

      +
      • Specifies the health check URI. This parameter is valid when healthcheck_protocol is HTTP.
      • The value can contain 1 to 80 characters that must start with a slash (/) and can contain only letters, digits, and special characters such as -/.%?#&_=
      +

      healthcheck_connect_port

      +

      No

      +

      Integer

      +
      • Specifies the health check port.
      • The port number ranges from 1 to 65535.
      +

      healthy_threshold

      +

      No

      +

      Integer

      +
      • Specifies the number of consecutive health checks when the health check result of a backend ECS changes from fail to success.
      • The value ranges from 1 to 10.
      +

      unhealthy_threshold

      +

      No

      +

      Integer

      +
      • Specifies the number of consecutive health checks when the health check result of a backend ECS changes from success to fail.
      • The value ranges from 1 to 10.
      +

      healthcheck_timeout

      +

      No

      +

      Integer

      +
      • Specifies the maximum time required for waiting for a response from the health check in the unit of second.
      • The value ranges from 1 to 50.
      +

      healthcheck_interval

      +

      No

      +

      Integer

      +
      • Specifies the maximum time between health checks in the unit of second.
      • The value ranges from 1 to 50.
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request 1: Configuring an HTTP health check
        {
        +    "healthcheck_connect_port": 80,
        +    "healthcheck_interval": 5,
        +    "healthcheck_protocol": "HTTP",
        +    "healthcheck_timeout": 10,
        +    "healthcheck_uri": "/",
        +    "healthy_threshold": 3,
        +    "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28",
        +    "unhealthy_threshold": 3
        +}
        +
      • Example request 2: Configuring a TCP health check
        {
        +    "healthcheck_connect_port": 80,
        +    "healthcheck_interval": 5,
        +    "healthcheck_protocol": "TCP",
        +    "healthcheck_timeout": 10,
        +    "healthcheck_uri": "",
        +    "healthy_threshold": 3,
        +    "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28",
        +    "unhealthy_threshold": 3
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        healthcheck_interval

        +

        Integer

        +

        Specifies the maximum time between health checks in the unit of second.

        +

        listener_id

        +

        String

        +

        Specifies the ID of the listener with which the health check is associated.

        +

        id

        +

        String

        +

        Specifies the health check ID.

        +

        healthcheck_protocol

        +

        String

        +

        Specifies the health check protocol.

        +

        unhealthy_threshold

        +

        Integer

        +

        Specifies the number of consecutive health checks when the health check result of a backend ECS changes from success to fail.

        +

        update_time

        +

        String

        +

        Specifies the time when the health check was updated.

        +

        create_time

        +

        String

        +

        Specifies the time when the health check was configured.

        +

        healthcheck_connect_port

        +

        Integer

        +

        Specifies the health check port.

        +

        healthcheck_timeout

        +

        Integer

        +

        Specifies the maximum time required for waiting for a response from the health check in the unit of second.

        +

        healthcheck_uri

        +

        String

        +

        Specifies the health check URI. This parameter is valid when healthcheck_protocol is HTTP.

        +

        healthy_threshold

        +

        Integer

        +

        Specifies the number of consecutive health checks when the health check result of a backend ECS changes from fail to success.

        +
        + +
      + +
      • Example response 1: Configuring an HTTP health check
        {
        +     "healthcheck_interval":5,
        +     "listener_id":"3ce8c4429478a5eb6ef4930de2d75b28",
        +     "id":"134e5ea962327c6a574b83e6e7f31f35",
        +     "healthcheck_protocol":"HTTP",
        +     "unhealthy_threshold":3,
        +     "update_time":"2015-12-25 03:57:23",
        +     "create_time":"2015-12-25 03:57:23",
        +     "healthcheck_connect_port":80,
        +     "healthcheck_timeout":10,
        +     "healthcheck_uri":"\/",
        +     "healthy_threshold":3
        +}
        +
      • Example response 2: Configuring a TCP health check
        {
        +     "healthcheck_interval":5,
        +     "listener_id":"3ce8c4429478a5eb6ef4930de2d75b28",
        +     "id":"134e5ea962327c6a574b83e6e7f31f35",
        +     "healthcheck_protocol":"TCP",
        +     "unhealthy_threshold":3,
        +     "update_time":"2015-12-25 03:57:23",
        +     "create_time":"2015-12-25 03:57:23",
        +     "healthcheck_connect_port":80,
        +     "healthcheck_timeout":10,
        +     "healthcheck_uri":"",
        +     "healthy_threshold":3
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_jd_jk_0001.rst b/elb/api-ref/elb_jd_jk_0001.rst new file mode 100644 index 000000000..398b1f478 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0001.rst @@ -0,0 +1,217 @@ +Configuring a Health Check +========================== + +Function +^^^^^^^^ + +This API is used to configure a health check for backend ECSs. + +URI +^^^ + +POST /v1.0/{project_id}/elbaas/healthcheck + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | Yes | String | Specifies the ID of the | + | | | | listener with which the | + | | | | health check is associated. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_protocol | No | String | - Specifies the health | + | | | | check protocol. A | + | | | | listener using UDP is | + | | | | not allowed for a | + | | | | private network load | + | | | | balancer. | + | | | | - The value can be | + | | | | **HTTP**, **TCP**, or | + | | | | **UDP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_uri | No | String | - Specifies the health | + | | | | check URI. This | + | | | | parameter is valid when | + | | | | **healthcheck_protocol** | + | | | | is **HTTP**. | + | | | | - The value can contain 1 | + | | | | to 80 characters that | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters such | + | | | | as -/.%?#&_= | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_connect_port | No | Integer | - Specifies the health | + | | | | check port. | + | | | | - The port number ranges | + | | | | from 1 to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthy_threshold | No | Integer | - Specifies the number of | + | | | | consecutive health | + | | | | checks when the health | + | | | | check result of a | + | | | | backend ECS changes from | + | | | | **fail** to **success**. | + | | | | - The value ranges from | + | | | | **1** to **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | unhealthy_threshold | No | Integer | - Specifies the number of | + | | | | consecutive health | + | | | | checks when the health | + | | | | check result of a | + | | | | backend ECS changes from | + | | | | **success** to **fail**. | + | | | | - The value ranges from | + | | | | **1** to **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_timeout | No | Integer | - Specifies the maximum | + | | | | time required for | + | | | | waiting for a response | + | | | | from the health check in | + | | | | the unit of second. | + | | | | - The value ranges from | + | | | | **1** to **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_interval | No | Integer | - Specifies the maximum | + | | | | time between health | + | | | | checks in the unit of | + | | | | second. | + | | | | - The value ranges from | + | | | | **1** to **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request 1: Configuring an HTTP health check + + .. code:: screen + + { + "healthcheck_connect_port": 80, + "healthcheck_interval": 5, + "healthcheck_protocol": "HTTP", + "healthcheck_timeout": 10, + "healthcheck_uri": "/", + "healthy_threshold": 3, + "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28", + "unhealthy_threshold": 3 + } + +- Example request 2: Configuring a TCP health check + + .. code:: screen + + { + "healthcheck_connect_port": 80, + "healthcheck_interval": 5, + "healthcheck_protocol": "TCP", + "healthcheck_timeout": 10, + "healthcheck_uri": "", + "healthy_threshold": 3, + "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28", + "unhealthy_threshold": 3 + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +--------------------------+---------+-------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +==========================+=========+===============================================================================+ + | healthcheck_interval | Integer | Specifies the maximum time between health checks in the unit of second. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | listener_id | String | Specifies the ID of the listener with which the health check is associated. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | id | String | Specifies the health check ID. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | healthcheck_protocol | String | Specifies the health check protocol. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | unhealthy_threshold | Integer | Specifies the number of consecutive health checks when the health check | + | | | result of a backend ECS changes from **success** to **fail**. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | update_time | String | Specifies the time when the health check was updated. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | create_time | String | Specifies the time when the health check was configured. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | healthcheck_connect_port | Integer | Specifies the health check port. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | healthcheck_timeout | Integer | Specifies the maximum time required for waiting for a response from the | + | | | health check in the unit of second. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | healthcheck_uri | String | Specifies the health check URI. This parameter is valid when | + | | | **healthcheck_protocol** is **HTTP**. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + | healthy_threshold | Integer | Specifies the number of consecutive health checks when the health check | + | | | result of a backend ECS changes from **fail** to **success**. | + +--------------------------+---------+-------------------------------------------------------------------------------+ + +- Example response 1: Configuring an HTTP health check + + .. code:: screen + + { + "healthcheck_interval":5, + "listener_id":"3ce8c4429478a5eb6ef4930de2d75b28", + "id":"134e5ea962327c6a574b83e6e7f31f35", + "healthcheck_protocol":"HTTP", + "unhealthy_threshold":3, + "update_time":"2015-12-25 03:57:23", + "create_time":"2015-12-25 03:57:23", + "healthcheck_connect_port":80, + "healthcheck_timeout":10, + "healthcheck_uri":"\/", + "healthy_threshold":3 + } + +- Example response 2: Configuring a TCP health check + + .. code:: screen + + { + "healthcheck_interval":5, + "listener_id":"3ce8c4429478a5eb6ef4930de2d75b28", + "id":"134e5ea962327c6a574b83e6e7f31f35", + "healthcheck_protocol":"TCP", + "unhealthy_threshold":3, + "update_time":"2015-12-25 03:57:23", + "create_time":"2015-12-25 03:57:23", + "healthcheck_connect_port":80, + "healthcheck_timeout":10, + "healthcheck_uri":"", + "healthy_threshold":3 + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_jd_jk_0002.html b/elb/api-ref/elb_jd_jk_0002.html new file mode 100644 index 000000000..a48fb3b27 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0002.html @@ -0,0 +1,113 @@ + + +

      Deleting a Health Check

      +

      Function

      This API is used to delete a health check.

      + +

      URI

      DELETE /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      healthcheck_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters

        None

        +
      +
      • Example response

        None

        +
      + +

      Status Code

      • Normal

        204

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_jd_jk_0002.rst b/elb/api-ref/elb_jd_jk_0002.rst new file mode 100644 index 000000000..ac6e28dec --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0002.rst @@ -0,0 +1,65 @@ +Deleting a Health Check +======================= + +Function +^^^^^^^^ + +This API is used to delete a health check. + +URI +^^^ + +DELETE /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id} + +.. table:: **Table 1** Parameter description + + ============== ============= ======== ============================== + Parameter **Mandatory** **Type** Description + ============== ============= ======== ============================== + project_id Yes String Specifies the project ID. + healthcheck_id Yes String Specifies the health check ID. + ============== ============= ======== ============================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + None + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +- Normal + + 204 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_jd_jk_0003.html b/elb/api-ref/elb_jd_jk_0003.html new file mode 100644 index 000000000..491b0df6a --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0003.html @@ -0,0 +1,284 @@ + + +

      Modifying a Health Check

      +

      Function

      This API is used to modify information about a health check.

      + +

      URI

      PUT /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      healthcheck_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +

      healthcheck_protocol

      +

      No

      +

      String

      +
      • Specifies the health check protocol.
      • The value can be HTTP or TCP (case-insensitive).
      +

      healthcheck_uri

      +

      No

      +

      String

      +
      • Specifies the health check URI. This parameter is valid when healthcheck_protocol is HTTP.
      • The value can contain 1 to 80 characters that must start with a slash (/) and can contain only letters, digits, and special characters such as -/.%?#&_=
      +

      healthcheck_connect_port

      +

      No

      +

      Integer

      +
      • Specifies the health check port.
      • The port number ranges from 1 to 65535.
      +

      healthy_threshold

      +

      No

      +

      Integer

      +
      • Specifies the number of consecutive health checks when the health check result of a backend ECS changes from fail to success.
      • The value ranges from 1 to 10.
      +

      unhealthy_threshold

      +

      No

      +

      Integer

      +
      • Specifies the number of consecutive health checks when the health check result of a backend ECS changes from success to fail.
      • The value ranges from 1 to 10.
      +

      healthcheck_timeout

      +

      No

      +

      Integer

      +
      • Specifies the maximum time required for waiting for a response from the health check in the unit of second.
      • The value ranges from 1 to 50.
      +

      healthcheck_interval

      +

      No

      +

      Integer

      +
      • Specifies the maximum time between health checks in the unit of second.
      • The value ranges from 1 to 50.
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "healthcheck_connect_port": 88,
        +    "healthcheck_interval": 5,
        +    "healthcheck_protocol": "HTTP",
        +    "healthcheck_timeout": 10,
        +    "healthcheck_uri": "/",
        +    "healthy_threshold": 3,
        +    "unhealthy_threshold": 2
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        healthcheck_interval

        +

        Integer

        +

        Specifies the maximum time between health checks in the unit of second.

        +

        listener_id

        +

        String

        +

        Specifies the ID of the listener with which the health check is associated.

        +

        id

        +

        String

        +

        Specifies the health check ID.

        +

        healthcheck_protocol

        +

        String

        +

        Specifies the health check protocol.

        +

        unhealthy_threshold

        +

        Integer

        +

        Specifies the number of consecutive health checks when the health check result of a backend ECS changes from success to fail.

        +

        update_time

        +

        String

        +

        Specifies the time when the certificate was updated.

        +

        create_time

        +

        String

        +

        Specifies the time when the health check was created.

        +

        healthcheck_connect_port

        +

        Integer

        +

        Specifies the health check port.

        +

        healthcheck_timeout

        +

        Integer

        +

        Specifies the maximum time required for waiting for a response from the health check in the unit of second.

        +

        healthcheck_uri

        +

        String

        +

        Specifies the health check URI. This parameter is valid when healthcheck_protocol is HTTP.

        +

        healthy_threshold

        +

        Integer

        +

        Specifies the threshold at which the health check result is success, that is, the number of consecutive successful health checks when the health check result of a backend ECS changes from fail to success.

        +
        + +
      + +
      • Example response
        {
        +    "healthcheck_interval": 5,
        +    "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28",
        +    "id": "134e5ea962327c6a574b83e6e7f31f35",
        +    "healthcheck_protocol": "HTTP",
        +    "unhealthy_threshold": 2,
        +    "update_time": "2015-12-25 03:57:23",
        +    "create_time": "2015-12-25 03:57:23",
        +    "healthcheck_connect_port": 88,
        +    "healthcheck_timeout": 10,
        +    "healthcheck_uri": "/",
        +    "healthy_threshold": 3
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_jd_jk_0003.rst b/elb/api-ref/elb_jd_jk_0003.rst new file mode 100644 index 000000000..5d6761115 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0003.rst @@ -0,0 +1,179 @@ +Modifying a Health Check +======================== + +Function +^^^^^^^^ + +This API is used to modify information about a health check. + +URI +^^^ + +PUT /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_id | Yes | String | Specifies the health check | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_protocol | No | String | - Specifies the health | + | | | | check protocol. | + | | | | - The value can be | + | | | | **HTTP** or **TCP** | + | | | | (case-insensitive). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_uri | No | String | - Specifies the health | + | | | | check URI. This | + | | | | parameter is valid when | + | | | | **healthcheck_protocol** | + | | | | is **HTTP**. | + | | | | - The value can contain 1 | + | | | | to 80 characters that | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters such | + | | | | as -/.%?#&_= | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_connect_port | No | Integer | - Specifies the health | + | | | | check port. | + | | | | - The port number ranges | + | | | | from 1 to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthy_threshold | No | Integer | - Specifies the number of | + | | | | consecutive health | + | | | | checks when the health | + | | | | check result of a | + | | | | backend ECS changes from | + | | | | **fail** to **success**. | + | | | | - The value ranges from | + | | | | **1** to **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | unhealthy_threshold | No | Integer | - Specifies the number of | + | | | | consecutive health | + | | | | checks when the health | + | | | | check result of a | + | | | | backend ECS changes from | + | | | | **success** to **fail**. | + | | | | - The value ranges from | + | | | | **1** to **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_timeout | No | Integer | - Specifies the maximum | + | | | | time required for | + | | | | waiting for a response | + | | | | from the health check in | + | | | | the unit of second. | + | | | | - The value ranges from | + | | | | **1** to **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthcheck_interval | No | Integer | - Specifies the maximum | + | | | | time between health | + | | | | checks in the unit of | + | | | | second. | + | | | | - The value ranges from | + | | | | **1** to **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "healthcheck_connect_port": 88, + "healthcheck_interval": 5, + "healthcheck_protocol": "HTTP", + "healthcheck_timeout": 10, + "healthcheck_uri": "/", + "healthy_threshold": 3, + "unhealthy_threshold": 2 + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +--------------------------+----------+------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +==========================+==========+==============================================================================+ + | healthcheck_interval | Integer | Specifies the maximum time between health checks in the unit of second. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | listener_id | String | Specifies the ID of the listener with which the health check is associated. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | id | String | Specifies the health check ID. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_protocol | String | Specifies the health check protocol. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | unhealthy_threshold | Integer | Specifies the number of consecutive health checks when the health check | + | | | result of a backend ECS changes from **success** to **fail**. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | update_time | String | Specifies the time when the certificate was updated. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | create_time | String | Specifies the time when the health check was created. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_connect_port | Integer | Specifies the health check port. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_timeout | Integer | Specifies the maximum time required for waiting for a response from the | + | | | health check in the unit of second. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_uri | String | Specifies the health check URI. This parameter is valid when | + | | | **healthcheck_protocol** is **HTTP**. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthy_threshold | Integer | Specifies the threshold at which the health check result is **success**, | + | | | that is, the number of consecutive successful health checks when the health | + | | | check result of a backend ECS changes from **fail** to **success**. | + +--------------------------+----------+------------------------------------------------------------------------------+ + +- Example response + + .. code:: screen + + { + "healthcheck_interval": 5, + "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28", + "id": "134e5ea962327c6a574b83e6e7f31f35", + "healthcheck_protocol": "HTTP", + "unhealthy_threshold": 2, + "update_time": "2015-12-25 03:57:23", + "create_time": "2015-12-25 03:57:23", + "healthcheck_connect_port": 88, + "healthcheck_timeout": 10, + "healthcheck_uri": "/", + "healthy_threshold": 3 + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_jd_jk_0004.html b/elb/api-ref/elb_jd_jk_0004.html new file mode 100644 index 000000000..2a0b4c559 --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0004.html @@ -0,0 +1,213 @@ + + +

      Querying Details of a Health Check

      +

      Function

      This API is used to query details about a health check.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      healthcheck_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        healthcheck_interval

        +

        Integer

        +

        Specifies the maximum time between health checks in the unit of second.

        +

        listener_id

        +

        String

        +

        Specifies the ID of the listener with which the health check is associated.

        +

        id

        +

        String

        +

        Specifies the health check ID.

        +

        healthcheck_protocol

        +

        String

        +

        Specifies the health check protocol.

        +

        unhealthy_threshold

        +

        Integer

        +

        Specifies the number of consecutive health checks when the health check result of a backend ECS changes from success to fail.

        +

        update_time

        +

        String

        +

        Specifies the time when the health check was updated.

        +

        create_time

        +

        String

        +

        Specifies the time when the health check was configured.

        +

        healthcheck_connect_port

        +

        Integer

        +

        Specifies the health check port.

        +

        healthcheck_timeout

        +

        Integer

        +

        Specifies the maximum time required for waiting for a response from the health check in the unit of second.

        +

        healthcheck_uri

        +

        String

        +

        Specifies the health check URI. This parameter is valid when healthcheck_protocol is HTTP.

        +

        healthy_threshold

        +

        Integer

        +

        Specifies the threshold at which the health check result is success, that is, the number of consecutive successful health checks when the health check result of a backend ECS changes from fail to success.

        +
        + +
      +
      • Example response
        {
        +    "healthcheck_interval": 5,
        +    "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28",
        +    "id": "134e5ea962327c6a574b83e6e7f31f35",
        +    "healthcheck_protocol": "HTTP",
        +    "unhealthy_threshold": 2,
        +    "update_time": "2015-12-25 03:57:23",
        +    "create_time": "2015-12-25 03:57:23",
        +    "healthcheck_connect_port": 88,
        +    "healthcheck_timeout": 10,
        +    "healthcheck_uri": "/",
        +    "healthy_threshold": 3
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_jd_jk_0004.rst b/elb/api-ref/elb_jd_jk_0004.rst new file mode 100644 index 000000000..7b23c976e --- /dev/null +++ b/elb/api-ref/elb_jd_jk_0004.rst @@ -0,0 +1,110 @@ +Querying Details of a Health Check +================================== + +Function +^^^^^^^^ + +This API is used to query details about a health check. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/healthcheck/{healthcheck_id} + +.. table:: **Table 1** Parameter description + + ============== ============= ======== ============================== + Parameter **Mandatory** **Type** Description + ============== ============= ======== ============================== + project_id Yes String Specifies the project ID. + healthcheck_id Yes String Specifies the health check ID. + ============== ============= ======== ============================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +--------------------------+----------+------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +==========================+==========+==============================================================================+ + | healthcheck_interval | Integer | Specifies the maximum time between health checks in the unit of second. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | listener_id | String | Specifies the ID of the listener with which the health check is associated. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | id | String | Specifies the health check ID. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_protocol | String | Specifies the health check protocol. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | unhealthy_threshold | Integer | Specifies the number of consecutive health checks when the health check | + | | | result of a backend ECS changes from **success** to **fail**. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | update_time | String | Specifies the time when the health check was updated. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | create_time | String | Specifies the time when the health check was configured. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_connect_port | Integer | Specifies the health check port. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_timeout | Integer | Specifies the maximum time required for waiting for a response from the | + | | | health check in the unit of second. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthcheck_uri | String | Specifies the health check URI. This parameter is valid when | + | | | **healthcheck_protocol** is **HTTP**. | + +--------------------------+----------+------------------------------------------------------------------------------+ + | healthy_threshold | Integer | Specifies the threshold at which the health check result is **success**, | + | | | that is, the number of consecutive successful health checks when the health | + | | | check result of a backend ECS changes from **fail** to **success**. | + +--------------------------+----------+------------------------------------------------------------------------------+ + +- Example response + + .. code:: screen + + { + "healthcheck_interval": 5, + "listener_id": "3ce8c4429478a5eb6ef4930de2d75b28", + "id": "134e5ea962327c6a574b83e6e7f31f35", + "healthcheck_protocol": "HTTP", + "unhealthy_threshold": 2, + "update_time": "2015-12-25 03:57:23", + "create_time": "2015-12-25 03:57:23", + "healthcheck_connect_port": 88, + "healthcheck_timeout": 10, + "healthcheck_uri": "/", + "healthy_threshold": 3 + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_jd_job_0000.html b/elb/api-ref/elb_jd_job_0000.html new file mode 100644 index 000000000..59d45f0c9 --- /dev/null +++ b/elb/api-ref/elb_jd_job_0000.html @@ -0,0 +1,305 @@ + + +

      Querying the Job Status

      +

      Function

      This API is used to query the job status, such as the execution status of creating or deleting a load balancer.

      + +

      URI

      GET /v1.0/{project_id}/jobs/{job_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      job_id

      +

      Yes

      +

      String

      +

      Specifies the job ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Mandatory

        +

        Type

        +

        Description

        +

        status

        +

        Yes

        +

        String

        +

        Specifies the job status.

        +
        • SUCCESS: The job was successfully executed.
        • RUNNING: The job is in progress.
        • FAIL: The job failed.
        • INIT: The job is being initialized.
        +

        entities

        +

        Yes

        +

        Object

        +

        Specifies the response to the job. Each type of job has different contents.

        +

        job_id

        +

        Yes

        +

        String

        +

        Specifies the job ID.

        +

        job_type

        +

        Yes

        +

        String

        +

        Specifies the job type.

        +

        begin_time

        +

        Yes

        +

        String

        +

        Specifies the time when the job started.

        +

        end_time

        +

        Yes

        +

        String

        +

        Specifies the time when the job ended.

        +

        error_code

        +

        Yes

        +

        String

        +

        Specifies the error code returned after the job fails to execute.

        +

        fail_reason

        +

        Yes

        +

        String

        +

        Indicates the cause of the execution failure.

        +

        message

        +

        No

        +

        String

        +

        Specifies the message returned when an error occurs.

        +

        code

        +

        No

        +

        String

        +

        Specifies the error code returned when an error occurs.

        +

        For details of error code, see Error Codes.

        +

        sub_jobs

        +

        No

        +

        String

        +

        Specifies the execution information of a subjob. When no subjob exists, the value of this parameter is left empty. The structure of each subjob is similar to that of the parent job.

        +
        + +
      • Example response
        { 
        +    "status": "SUCCESS", 
        +    "entities": 
        +     {
        +      "elb": 
        +       {
        +        "id": "ef265755daf84333baf4ddc1d91cbc2f",
        +        "name": "1",
        +        "type": "External",
        +        "status": "ACTIVE", 
        +        "bandwidth": 1, 
        +        "vip_address": "10.154.53.4", 
        +        "tenant_id": "cbc08e2f8c354c7aa7abb88d0a7d11dc", 
        +        "admin_state_up": false, 
        +        "vpc_id": "21838be1-c1ce-4c09-9184-228cdb43038d" 
        +        } 
        +      }, 
        +     "job_id": "ff8080825ecc523f015ecd0a98f82f77", 
        +     "job_type": "createELB", 
        +     "begin_time": "2017-09-29T09:49:37.399Z", 
        +     "end_time": "2017-09-29T09:50:03.272Z", 
        +     "error_code": null, 
        +     "fail_reason": null 
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        Bad Request

        +

        The server failed to process the request.

        +

        401

        +

        Unauthorized

        +

        You must enter a username and the password to access the requested page.

        +

        403

        +

        Forbidden

        +

        You are forbidden to access the requested page.

        +

        404

        +

        Not Found

        +

        The server could not find the requested page.

        +

        405

        +

        Method Not Allowed

        +

        You are not allowed to use the method specified in the request.

        +

        406

        +

        Not Acceptable

        +

        Response generated by the server is not acceptable to the client.

        +

        407

        +

        Proxy Authentication Required

        +

        You must use the proxy server for authentication so that the request can be processed.

        +

        408

        +

        Request Timeout

        +

        The request timed out.

        +

        409

        +

        Conflict

        +

        The request could not be processed due to a conflict.

        +

        500

        +

        Internal Server Error

        +

        Failed to complete the request because of an internal service error.

        +

        501

        +

        Not Implemented

        +

        Failed to complete the request because the server does not support the requested function.

        +

        502

        +

        Bad Gateway

        +

        Failed to complete the request because the server has received an invalid response.

        +

        503

        +

        Service Unavailable

        +

        Failed to complete the request because the system is out of service temporarily.

        +

        504

        +

        Gateway Timeout

        +

        A gateway timeout error occurred.

        +
        + +
      + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_job_0000.rst b/elb/api-ref/elb_jd_job_0000.rst new file mode 100644 index 000000000..523dbd4e4 --- /dev/null +++ b/elb/api-ref/elb_jd_job_0000.rst @@ -0,0 +1,173 @@ +Querying the Job Status +======================= + +Function +^^^^^^^^ + +This API is used to query the job status, such as the execution status of creating or deleting a load balancer. + +URI +^^^ + +GET /v1.0/{project_id}/jobs/{job_id} + +.. table:: **Table 1** Parameter description + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + job_id Yes String Specifies the job ID. + ========== ========= ====== ========================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | status | Yes | String | Specifies the job status. | + | | | | | + | | | | - **SUCCESS**: The job was | + | | | | successfully executed. | + | | | | - **RUNNING**: The job is | + | | | | in progress. | + | | | | - **FAIL**: The job | + | | | | failed. | + | | | | - **INIT**: The job is | + | | | | being initialized. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | entities | Yes | Object | Specifies the response to | + | | | | the job. Each type of job | + | | | | has different contents. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | job_id | Yes | String | Specifies the job ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | job_type | Yes | String | Specifies the job type. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | begin_time | Yes | String | Specifies the time when the | + | | | | job started. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | end_time | Yes | String | Specifies the time when the | + | | | | job ended. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | error_code | Yes | String | Specifies the error code | + | | | | returned after the job | + | | | | fails to execute. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | fail_reason | Yes | String | Indicates the cause of the | + | | | | execution failure. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | message | No | String | Specifies the message | + | | | | returned when an error | + | | | | occurs. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | code | No | String | Specifies the error code | + | | | | returned when an error | + | | | | occurs. | + | | | | | + | | | | For details of error code, | + | | | | see `Error | + | | | | Codes `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sub_jobs | No | String | Specifies the execution | + | | | | information of a subjob. | + | | | | When no subjob exists, the | + | | | | value of this parameter is | + | | | | left empty. The structure | + | | | | of each subjob is similar | + | | | | to that of the parent job. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +- Example response + + .. code:: screen + + { + "status": "SUCCESS", + "entities": + { + "elb": + { + "id": "ef265755daf84333baf4ddc1d91cbc2f", + "name": "1", + "type": "External", + "status": "ACTIVE", + "bandwidth": 1, + "vip_address": "10.154.53.4", + "tenant_id": "cbc08e2f8c354c7aa7abb88d0a7d11dc", + "admin_state_up": false, + "vpc_id": "21838be1-c1ce-4c09-9184-228cdb43038d" + } + }, + "job_id": "ff8080825ecc523f015ecd0a98f82f77", + "job_type": "createELB", + "begin_time": "2017-09-29T09:49:37.399Z", + "end_time": "2017-09-29T09:50:03.272Z", + "error_code": null, + "fail_reason": null + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + +-------------+-------------------------------+----------------------------------------------------------------------+ + | Status Code | Message | Description | + +=============+===============================+======================================================================+ + | 400 | Bad Request | The server failed to process the request. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 401 | Unauthorized | You must enter a username and the password to access the requested | + | | | page. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 403 | Forbidden | You are forbidden to access the requested page. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 404 | Not Found | The server could not find the requested page. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 405 | Method Not Allowed | You are not allowed to use the method specified in the request. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 406 | Not Acceptable | Response generated by the server is not acceptable to the client. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 407 | Proxy Authentication Required | You must use the proxy server for authentication so that the request | + | | | can be processed. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 408 | Request Timeout | The request timed out. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 409 | Conflict | The request could not be processed due to a conflict. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 500 | Internal Server Error | Failed to complete the request because of an internal service error. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 501 | Not Implemented | Failed to complete the request because the server does not support | + | | | the requested function. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 502 | Bad Gateway | Failed to complete the request because the server has received an | + | | | invalid response. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 503 | Service Unavailable | Failed to complete the request because the system is out of service | + | | | temporarily. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + | 504 | Gateway Timeout | A gateway timeout error occurred. | + +-------------+-------------------------------+----------------------------------------------------------------------+ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_jt_0000.html b/elb/api-ref/elb_jd_jt_0000.html new file mode 100644 index 000000000..09a3361b9 --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0000.html @@ -0,0 +1,23 @@ + + +

      Listener

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_jt_0000.rst b/elb/api-ref/elb_jd_jt_0000.rst new file mode 100644 index 000000000..73f883041 --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0000.rst @@ -0,0 +1,10 @@ +Listener +======== + +- `Adding a Listener `__ +- `Deleting a Listener `__ +- `Modifying a Listener `__ +- `Querying Details of a Listener `__ +- `Querying Listeners `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_jt_0001.html b/elb/api-ref/elb_jd_jt_0001.html new file mode 100644 index 000000000..fc637f5c0 --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0001.html @@ -0,0 +1,485 @@ + + +

      Adding a Listener

      +

      Function

      This API is used to add a listener to a load balancer.

      + +

      URI

      POST /v1.0/{project_id}/elbaas/listeners

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      name

      +

      Yes

      +

      String

      +
      • Specifies the listener name.
      • The value can contain 1 to 64 characters that consist of letters, digits, underscores (_), and hyphens (-).
      +

      description

      +

      No

      +

      String

      +
      • Provides supplementary information about the listener.
      • The value contains 0 to 128 characters and cannot contain angle brackets (< and >).
      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +

      protocol

      +

      Yes

      +

      String

      +
      • Specifies the protocol used by the listener.
      • The value can be HTTP, TCP, HTTPS, SSL, or UDP.
      • A UDP listener cannot be added to a private network load balancer.
      +

      port

      +

      Yes

      +

      Integer

      +
      • Specifies the port used by the listener.
      • The port number ranges from 1 to 65535.
      +

      backend_protocol

      +

      Yes

      +

      String

      +
      • Specifies the backend ECS protocol.

        If protocol is set to UDP, the value of this parameter can only be UDP.

        +

        If protocol is set to SSL, the value of this parameter can only be TCP.

        +
      • The value can be HTTP, TCP, or UDP.
      +

      backend_port

      +

      Yes

      +

      Integer

      +
      • Specifies the port used by backend ECSs.
      • The port number ranges from 1 to 65535.
      +

      lb_algorithm

      +

      Yes

      +

      String

      +
      • Specifies the load balancing algorithm.
      • The value can be roundrobin, leastconn, or source.
      +

      session_sticky

      +

      No

      +

      Boolean

      +
      • Specifies whether to enable the sticky session feature.
      • The value can be true or false. The feature is enabled when the value is true.
      • If protocol is set to SSL, the sticky session feature is not supported and the parameter is invalid.
      • If protocol is set to HTTP, HTTPS, or TCP and lb_algorithm is not roundrobin, the value of this parameter can only be false.
      +

      sticky_session_type

      +

      No

      +

      String

      +

      Specifies where the cookie is from. The only value is insert, indicating that the cookie is inserted by the load balancer.

      +
      • This parameter is valid when protocol is set to HTTP and session_sticky to true.
      • This parameter is invalid when protocol is set to TCP, SSL, or UDP, which means that the parameter is unavailable or its value is set to null.
      +

      cookie_timeout

      +

      No

      +

      Integer

      +
      • Specifies the cookie timeout duration. This parameter is valid when protocol is set to HTTP, session_sticky to true, and sticky_session_type to insert. This parameter is invalid when protocol is set to TCP, SSL, or UDP.
      • The value ranges from 1 to 1440.
      +

      tcp_timeout

      +

      No

      +

      Integer

      +
      • Specifies the TCP session timeout duration. This parameter is valid when protocol is set to TCP.
      • The value ranges from 1 to 1440.
      +

      tcp_draining

      +

      No

      +

      Boolean

      +
      • Specifies whether to maintain TCP connections to a backend ECS that has been removed. This parameter is valid when protocol is set to TCP.
      • The value can be true or false.
      +

      tcp_draining_timeout

      +

      No

      +

      Integer

      +
      • Specifies the timeout duration for maintaining TCP connections to a backend ECS that has been removed in the unit of minute.

        This parameter is valid when protocol is set to TCP and tcp_draining to true.

        +
      • The value ranges from 0 to 60.
      +

      certificate_id

      +

      No

      +

      String

      +
      • Specifies the certificate ID. This parameter is mandatory when protocol is set to HTTPS or SSL.
      • The ID can be obtained from the certificate list.
      +

      certificates

      +

      No

      +

      String

      +
      • Lists the certificate IDs if protocol is set to HTTPS.
      • This parameter is mandatory in the SNI scenario and is valid only when the load balancer is a public network load balancer.
      +

      udp_timeout

      +

      No

      +

      Integer

      +
      • Specifies the UDP session timeout duration. This parameter is valid when protocol is set to UDP.
      • The value ranges from 1 to 1440.
      +

      ssl_protocols

      +

      No

      +

      String

      +
      • Specifies the supported SSL/TLS protocol version. This parameter is available only when protocol is set to HTTPS or SSL.
      • The value can be TLS 1.2 or TLS 1.2 TLS 1.1 TLS 1.0, and the default value is TLS 1.2.
      +

      ssl_ciphers

      +

      No

      +

      String

      +
      • Specifies the cipher suites supported by a specific SSL/TLS protocol version. This parameter is available only when protocol is set to HTTPS or SSL.
      • The value is Default, Extended, or Strict.

        The value of Default is ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256.

        +

        The value of Extended is ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SHA:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA.

        +

        The value of Strict is ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256.

        +

        The default value is Default. When ssl_protocols is set to TLS 1.2 TLS 1.1 TLS 1.0, this parameter can only be set to Extended.

        +
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "name": "listener1",
        +    "description": "",
        +    "loadbalancer_id": "0b07acf06d243925bc24a0ac7445267a",
        +    "protocol": "HTTP",
        +    "port": 88,
        +    "backend_protocol": "HTTP",
        +    "backend_port": 80,
        +    "lb_algorithm": "roundrobin",
        +    "session_sticky": true,
        +    "sticky_session_type": "insert",
        +    "cookie_timeout": 100,
        +    "tcp_draining": true,
        +    "tcp_draining_timeout": 5
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        update_time

        +

        String

        +

        Specifies the time when the listener was updated.

        +

        backend_port

        +

        Integer

        +

        Specifies the port used by backend ECSs.

        +

        id

        +

        String

        +

        Specifies the listener ID.

        +

        backend_protocol

        +

        String

        +

        Specifies the protocol used by backend ECSs.

        +

        sticky_session_type

        +

        String

        +

        Specifies where the cookie is from. The only value is insert, indicating that the cookie is inserted by the load balancer. This parameter is valid when protocol is set to HTTP and session_sticky to true.

        +

        description

        +

        String

        +

        Provides supplementary information about the listener.

        +

        loadbalancer_id

        +

        String

        +

        Specifies the load balancer ID.

        +

        create_time

        +

        String

        +

        Specifies the time when the listener was created.

        +

        status

        +

        String

        +

        Specifies the listener status. The value can be ACTIVE, PENDING_CREATE, or ERROR.

        +

        protocol

        +

        String

        +

        Specifies the protocol used for load balancing at Layer 4 or Layer 7.

        +

        port

        +

        Integer

        +

        Specifies the port used by the listener.

        +

        cookie_timeout

        +

        Integer

        +
        • Specifies the cookie timeout duration in the unit of minute. This parameter is valid when session_sticky is set to true and sticky_session_type to insert.
        • The value ranges from 1 to 1440.
        +

        admin_state_up

        +

        Boolean

        +
        • Specifies the administrative status of the load balancer.
        • Two options are available:

          false: The load balancer is disabled.

          +

          true: The load balancer is running properly.

          +
        +

        session_sticky

        +

        Boolean

        +

        Specifies whether to enable the sticky session feature. The feature is enabled when the value is true.

        +

        lb_algorithm

        +

        String

        +

        Specifies the load balancing algorithm.

        +

        name

        +

        String

        +

        Specifies the listener name.

        +

        tcp_draining

        +

        Boolean

        +
        • Specifies whether to maintain TCP connections to a backend ECS that has been removed. This parameter is valid when protocol is set to TCP.
        • The value can be true or false.
        +

        tcp_draining_timeout

        +

        Integer

        +
        • Specifies the timeout duration for maintaining TCP connections to a backend ECS that has been removed in the unit of minute.

          This parameter is valid when protocol is set to TCP and tcp_draining to true.

          +
        • The value ranges from 0 to 60.
        +

        ssl_protocols

        +

        String

        +
        • Specifies the supported SSL/TLS protocol version.
        • This parameter is available only when protocol is set to HTTPS or SSL.
        +

        ssl_ciphers

        +

        String

        +
        • Specifies the cipher suite of an encryption protocol.
        • This parameter is available only when protocol is set to HTTPS or SSL.
        +

        certificate_id

        +

        String

        +
        • Specifies the default certificate ID.
        • This parameter is available only when protocol is set to HTTPS or SSL.
        +

        certificates

        +

        String

        +
        • Lists the certificate IDs if protocol is set to HTTPS.
        • This parameter is mandatory in the SNI scenario.
        +
        + +
      + +
      • Example response
        {
        +    "update_time": "2015-09-15 07:41:17",
        +    "backend_port": 80,
        +    "tcp_draining": true,
        +    "id": "248425d7b97dc26920eb23720115e068",
        +    "backend_protocol": "HTTP",
        +    "sticky_session_type": "insert",
        +    "description": "",
        +    "loadbalancer_id": "0b07acf06d243925bc24a0ac7445267a",
        +    "create_time": "2015-09-15 07:41:17",
        +    "status": "ACTIVE",
        +    "protocol": "TCP",
        +    "port": 88,
        +    "cookie_timeout": 100,
        +    "admin_state_up": true,
        +    "session_sticky": true,
        +    "lb_algorithm": "roundrobin",
        +    "name": "listener1",
        +    "tcp_draining": true,
        +    "tcp_draining_timeout": 5
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_jd_jt_0001.rst b/elb/api-ref/elb_jd_jt_0001.rst new file mode 100644 index 000000000..de5ed2a07 --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0001.rst @@ -0,0 +1,471 @@ +Adding a Listener +================= + +Function +^^^^^^^^ + +This API is used to add a listener to a load balancer. + +URI +^^^ + +POST /v1.0/{project_id}/elbaas/listeners + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | Yes | String | - Specifies the listener | + | | | | name. | + | | | | - The value can contain 1 | + | | | | to 64 characters that | + | | | | consist of letters, | + | | | | digits, underscores (_), | + | | | | and hyphens (-). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | - Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | - The value contains 0 to | + | | | | 128 characters and | + | | | | cannot contain angle | + | | | | brackets (< and >). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | Yes | String | Specifies the load balancer | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | Yes | String | - Specifies the protocol | + | | | | used by the listener. | + | | | | - The value can be | + | | | | **HTTP**, **TCP**, | + | | | | **HTTPS**, **SSL**, or | + | | | | **UDP**. | + | | | | - A UDP listener cannot be | + | | | | added to a private | + | | | | network load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | port | Yes | Integer | - Specifies the port used | + | | | | by the listener. | + | | | | - The port number ranges | + | | | | from 1 to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | backend_protocol | Yes | String | - Specifies the backend | + | | | | ECS protocol. | + | | | | | + | | | | If **protocol** is set | + | | | | to **UDP**, the value of | + | | | | this parameter can only | + | | | | be **UDP**. | + | | | | | + | | | | If **protocol** is set | + | | | | to **SSL**, the value of | + | | | | this parameter can only | + | | | | be **TCP**. | + | | | | | + | | | | - The value can be | + | | | | **HTTP**, **TCP**, or | + | | | | **UDP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | backend_port | Yes | Integer | - Specifies the port used | + | | | | by backend ECSs. | + | | | | - The port number ranges | + | | | | from 1 to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | Yes | String | - Specifies the load | + | | | | balancing algorithm. | + | | | | - The value can be | + | | | | **roundrobin**, | + | | | | **leastconn**, or | + | | | | **source**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | session_sticky | No | Boolean | - Specifies whether to | + | | | | enable the sticky | + | | | | session feature. | + | | | | - The value can be | + | | | | **true** or **false**. | + | | | | The feature is enabled | + | | | | when the value is | + | | | | **true**. | + | | | | - If **protocol** is set | + | | | | to **SSL**, the sticky | + | | | | session feature is not | + | | | | supported and the | + | | | | parameter is invalid. | + | | | | - If **protocol** is set | + | | | | to **HTTP**, **HTTPS**, | + | | | | or **TCP** and | + | | | | **lb_algorithm** is not | + | | | | **roundrobin**, the | + | | | | value of this parameter | + | | | | can only be **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sticky_session_type | No | String | Specifies where the cookie | + | | | | is from. The only value is | + | | | | **insert**, indicating that | + | | | | the cookie is inserted by | + | | | | the load balancer. | + | | | | | + | | | | - This parameter is valid | + | | | | when **protocol** is set | + | | | | to **HTTP** and | + | | | | **session_sticky** to | + | | | | **true**. | + | | | | - This parameter is | + | | | | invalid when | + | | | | **protocol** is set to | + | | | | **TCP**, **SSL**, or | + | | | | **UDP**, which means | + | | | | that the parameter is | + | | | | unavailable or its value | + | | | | is set to **null**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | cookie_timeout | No | Integer | - Specifies the cookie | + | | | | timeout duration. This | + | | | | parameter is valid when | + | | | | **protocol** is set to | + | | | | **HTTP**, | + | | | | **session_sticky** to | + | | | | **true**, and | + | | | | **sticky_session_type** | + | | | | to **insert**. This | + | | | | parameter is invalid | + | | | | when **protocol** is set | + | | | | to **TCP**, **SSL**, or | + | | | | **UDP**. | + | | | | - The value ranges from | + | | | | **1** to **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tcp_timeout | No | Integer | - Specifies the TCP | + | | | | session timeout | + | | | | duration. This parameter | + | | | | is valid when | + | | | | **protocol** is set to | + | | | | **TCP**. | + | | | | - The value ranges from | + | | | | **1** to **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tcp_draining | No | Boolean | - Specifies whether to | + | | | | maintain TCP connections | + | | | | to a backend ECS that | + | | | | has been removed. This | + | | | | parameter is valid when | + | | | | **protocol** is set to | + | | | | **TCP**. | + | | | | - The value can be | + | | | | **true** or **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tcp_draining_timeout | No | Integer | - Specifies the timeout | + | | | | duration for maintaining | + | | | | TCP connections to a | + | | | | backend ECS that has | + | | | | been removed in the unit | + | | | | of minute. | + | | | | | + | | | | This parameter is valid | + | | | | when **protocol** is set | + | | | | to **TCP** and | + | | | | **tcp_draining** to | + | | | | **true**. | + | | | | | + | | | | - The value ranges from | + | | | | **0** to **60**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate_id | No | String | - Specifies the | + | | | | certificate ID. This | + | | | | parameter is mandatory | + | | | | when **protocol** is set | + | | | | to **HTTPS** or **SSL**. | + | | | | - The ID can be obtained | + | | | | from the certificate | + | | | | list. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificates | No | String | - Lists the certificate | + | | | | IDs if **protocol** is | + | | | | set to **HTTPS**. | + | | | | - This parameter is | + | | | | mandatory in the SNI | + | | | | scenario and is valid | + | | | | only when the load | + | | | | balancer is a public | + | | | | network load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | udp_timeout | No | Integer | - Specifies the UDP | + | | | | session timeout | + | | | | duration. This parameter | + | | | | is valid when | + | | | | **protocol** is set to | + | | | | **UDP**. | + | | | | - The value ranges from | + | | | | **1** to **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ssl_protocols | No | String | - Specifies the supported | + | | | | SSL/TLS protocol | + | | | | version. This parameter | + | | | | is available only when | + | | | | **protocol** is set to | + | | | | **HTTPS** or **SSL**. | + | | | | - The value can be **TLS | + | | | | 1.2** or **TLS 1.2 TLS | + | | | | 1.1 TLS 1.0**, and the | + | | | | default value is **TLS | + | | | | 1.2**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ssl_ciphers | No | String | - Specifies the cipher | + | | | | suites supported by a | + | | | | specific SSL/TLS | + | | | | protocol version. This | + | | | | parameter is available | + | | | | only when **protocol** | + | | | | is set to **HTTPS** or | + | | | | **SSL**. | + | | | | | + | | | | - The value is | + | | | | **Default**, | + | | | | **Extended**, or | + | | | | **Strict**. | + | | | | | + | | | | The value of **Default** | + | | | | is | + | | | | | + | | | | **ECDHE-RSA-AES256-GCM-SHA3 | + | | | | 84:ECDHE-RSA-AES128-GCM-SHA | + | | | | 256:ECDHE-RSA-AES256-SHA384 | + | | | | :ECDHE-RSA-AES128-SHA256**. | + | | | | | + | | | | The value of | + | | | | **Extended** is | + | | | | **ECDHE-ECDSA- | + | | | | AES128-SHA256:ECDHE-RSA-AES | + | | | | 128-SHA256:AES128-SHA256:AE | + | | | | S256-SHA256:ECDHE-ECDSA-AES | + | | | | 256-SHA384:ECDHE-RSA-AES256 | + | | | | -SHA384:ECDHE-ECDSA-AES128- | + | | | | SHA:ECDHE-RSA-AES128-SHA:DH | + | | | | E-RSA-AES128-SHA:ECDHE-RSA- | + | | | | AES256-SHA:ECDHE-ECDSA-AES2 | + | | | | 56-SHA:AES128-SHA:AES256-SH | + | | | | A:DHE-DSS-AES128-SHA:CAMELL | + | | | | IA128-SHA:EDH-RSA-DES-CBC3- | + | | | | SHA:DES-CBC3-SHA:ECDHE-RSA- | + | | | | RC4-SHA:RC4-SHA:DHE-RSA-AES | + | | | | 256-SHA:DHE-DSS-AES256-SHA: | + | | | | DHE-RSA-CAMELLIA256-SHA:DHE | + | | | | -DSS-CAMELLIA256-SHA:CAMELL | + | | | | IA256-SHA:EDH-DSS-DES-CBC3- | + | | | | SHA:DHE-RSA-CAMELLIA128-SHA | + | | | | :DHE-DSS-CAMELLIA128-SHA**. | + | | | | | + | | | | The value of **Strict** | + | | | | is | + | | | | **ECDH | + | | | | E-RSA-AES256-GCM-SHA384:ECD | + | | | | HE-RSA-AES128-GCM-SHA256**. | + | | | | | + | | | | The default value is | + | | | | **Default**. When | + | | | | **ssl_protocols** is set | + | | | | to **TLS 1.2 TLS 1.1 TLS | + | | | | 1.0**, this parameter | + | | | | can only be set to | + | | | | **Extended**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "name": "listener1", + "description": "", + "loadbalancer_id": "0b07acf06d243925bc24a0ac7445267a", + "protocol": "HTTP", + "port": 88, + "backend_protocol": "HTTP", + "backend_port": 80, + "lb_algorithm": "roundrobin", + "session_sticky": true, + "sticky_session_type": "insert", + "cookie_timeout": 100, + "tcp_draining": true, + "tcp_draining_timeout": 5 + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | update_time | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_port | Integer | Specifies the port used by backend | + | | | ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_protocol | String | Specifies the protocol used by | + | | | backend ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sticky_session_type | String | Specifies where the cookie is from. | + | | | The only value is **insert**, | + | | | indicating that the cookie is | + | | | inserted by the load balancer. This | + | | | parameter is valid when **protocol** | + | | | is set to **HTTP** and | + | | | **session_sticky** to **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancer_id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | Specifies the listener status. The | + | | | value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used for load | + | | | balancing at Layer 4 or Layer 7. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | Integer | Specifies the port used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_timeout | Integer | - Specifies the cookie timeout | + | | | duration in the unit of minute. | + | | | This parameter is valid when | + | | | **session_sticky** is set to | + | | | **true** and | + | | | **sticky_session_type** to | + | | | **insert**. | + | | | - The value ranges from **1** to | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | - Specifies the administrative | + | | | status of the load balancer. | + | | | | + | | | - Two options are available: | + | | | | + | | | **false**: The load balancer is | + | | | disabled. | + | | | | + | | | **true**: The load balancer is | + | | | running properly. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_sticky | Boolean | Specifies whether to enable the | + | | | sticky session feature. The feature | + | | | is enabled when the value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tcp_draining | Boolean | - Specifies whether to maintain TCP | + | | | connections to a backend ECS that | + | | | has been removed. This parameter | + | | | is valid when **protocol** is set | + | | | to **TCP**. | + | | | - The value can be **true** or | + | | | **false**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tcp_draining_timeout | Integer | - Specifies the timeout duration for | + | | | maintaining TCP connections to a | + | | | backend ECS that has been removed | + | | | in the unit of minute. | + | | | | + | | | This parameter is valid when | + | | | **protocol** is set to **TCP** and | + | | | **tcp_draining** to **true**. | + | | | | + | | | - The value ranges from **0** to | + | | | **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ssl_protocols | String | - Specifies the supported SSL/TLS | + | | | protocol version. | + | | | - This parameter is available only | + | | | when **protocol** is set to | + | | | **HTTPS** or **SSL**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ssl_ciphers | String | - Specifies the cipher suite of an | + | | | encryption protocol. | + | | | - This parameter is available only | + | | | when **protocol** is set to | + | | | **HTTPS** or **SSL**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate_id | String | - Specifies the default certificate | + | | | ID. | + | | | - This parameter is available only | + | | | when **protocol** is set to | + | | | **HTTPS** or **SSL**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificates | String | - Lists the certificate IDs if | + | | | **protocol** is set to **HTTPS**. | + | | | - This parameter is mandatory in the | + | | | SNI scenario. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "update_time": "2015-09-15 07:41:17", + "backend_port": 80, + "tcp_draining": true, + "id": "248425d7b97dc26920eb23720115e068", + "backend_protocol": "HTTP", + "sticky_session_type": "insert", + "description": "", + "loadbalancer_id": "0b07acf06d243925bc24a0ac7445267a", + "create_time": "2015-09-15 07:41:17", + "status": "ACTIVE", + "protocol": "TCP", + "port": 88, + "cookie_timeout": 100, + "admin_state_up": true, + "session_sticky": true, + "lb_algorithm": "roundrobin", + "name": "listener1", + "tcp_draining": true, + "tcp_draining_timeout": 5 + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_jd_jt_0002.html b/elb/api-ref/elb_jd_jt_0002.html new file mode 100644 index 000000000..4646e6ede --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0002.html @@ -0,0 +1,113 @@ + + +

      Deleting a Listener

      +

      Function

      This API is used to delete a listener.

      + +

      URI

      DELETE /v1.0/{project_id}/elbaas/listeners/{listener_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters

        None

        +
      +
      • Example response

        None

        +
      + +

      Status Code

      • Normal

        204

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_jd_jt_0002.rst b/elb/api-ref/elb_jd_jt_0002.rst new file mode 100644 index 000000000..fd761dc8c --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0002.rst @@ -0,0 +1,65 @@ +Deleting a Listener +=================== + +Function +^^^^^^^^ + +This API is used to delete a listener. + +URI +^^^ + +DELETE /v1.0/{project_id}/elbaas/listeners/{listener_id} + +.. table:: **Table 1** Parameter description + + =========== ============= ======== ========================== + Parameter **Mandatory** **Type** Description + =========== ============= ======== ========================== + project_id Yes String Specifies the project ID. + listener_id Yes String Specifies the listener ID. + =========== ============= ======== ========================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + None + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +- Normal + + 204 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_jd_jt_0003.html b/elb/api-ref/elb_jd_jt_0003.html new file mode 100644 index 000000000..be50937c7 --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0003.html @@ -0,0 +1,428 @@ + + +

      Modifying a Listener

      +

      Function

      This API is used to modify the listener information, including the listener name, description, and status.

      + +

      URI

      PUT /v1.0/{project_id}/elbaas/listeners/{listener_id}

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +

      name

      +

      No

      +

      String

      +
      • Specifies the listener name.
      • The value can contain 1 to 64 characters that consist of letters, digits, underscores (_), and hyphens (-).
      +

      description

      +

      No

      +

      String

      +
      • Provides supplementary information about the listener.
      • The value contains 0 to 128 characters and cannot contain angle brackets (< and >).
      +

      port

      +

      No

      +

      Integer

      +
      • Specifies the port used by the listener.
      • The port number ranges from 1 to 65535.
      +

      backend_port

      +

      No

      +

      Integer

      +
      • Specifies the port used by backend ECSs.
      • The port number ranges from 1 to 65535.
      +

      lb_algorithm

      +

      No

      +

      String

      +
      • Specifies the load balancing algorithm.
      • The value can be roundrobin, leastconn, or source.
      +

      tcp_timeout

      +

      No

      +

      Integer

      +
      • Specifies the TCP session timeout duration. This parameter is valid when protocol is set to TCP.
      • The value ranges from 1 to 1440.
      +

      tcp_draining

      +

      No

      +

      Boolean

      +
      • Specifies whether to maintain TCP connections to a backend ECS that has been removed. This parameter is valid when protocol is set to TCP.
      • The value can be true or false.
      +

      tcp_draining_timeout

      +

      No

      +

      Integer

      +
      • Specifies the timeout duration for maintaining TCP connections to a backend ECS that has been removed in the unit of minute.

        This parameter is valid when protocol is set to TCP and tcp_draining to true.

        +
      • The value ranges from 0 to 60.
      +

      udp_timeout

      +

      No

      +

      Integer

      +
      • Specifies the UDP session timeout duration. This parameter is valid when protocol is set to UDP.
      • The value ranges from 1 to 1440.
      +

      ssl_protocols

      +

      No

      +

      String

      +
      • Specifies the supported SSL/TLS protocol version. This parameter is available only when protocol is set to HTTPS or SSL.
      • The value can be TLS 1.2 or TLS 1.2 TLS 1.1 TLS 1.0, and the default value is TLS 1.2.
      +

      ssl_ciphers

      +

      No

      +

      String

      +
      • Specifies the cipher suites supported by a specific SSL/TLS protocol version. This parameter is available only when protocol is set to HTTPS or SSL.
      • The value is Default, Extended, or Strict.

        The value of Default is ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256.

        +

        The value of Extended is ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SHA:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA.

        +

        The value of Strict is ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256.

        +

        The default value is Default. When ssl_protocols is set to TLS 1.2 TLS 1.1 TLS 1.0, this parameter can only be set to Extended.

        +
      +

      certificate_id

      +

      No

      +

      String

      +
      • Specifies the default certificate ID. This parameter is mandatory when protocol is set to HTTPS or SSL.
      • The ID can be obtained from the certificate list.
      +

      certificates

      +

      No

      +

      String

      +
      • Lists the certificate IDs if protocol is set to HTTPS.
      • This parameter is mandatory in the SNI scenario.
      • This parameter is valid only when the load balancer is a public network load balancer.
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "name": "lis",
        +    "description": "",
        +    "port": 9090,
        +    "backend_port": 9090,
        +    "lb_algorithm": "roundrobin"
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        update_time

        +

        String

        +

        Specifies the time when the listener was updated.

        +

        backend_port

        +

        Integer

        +

        Specifies the port used by backend ECSs.

        +

        id

        +

        String

        +

        Specifies the listener ID in UUID format.

        +

        backend_protocol

        +

        String

        +

        Specifies the protocol used by backend ECSs.

        +

        sticky_session_type

        +

        String

        +

        Specifies where the cookie is from. The only value is insert, indicating that the cookie is inserted by the load balancer.

        +
        • This parameter is valid when protocol is set to HTTP and session_sticky to true.
        • This parameter is invalid when protocol is set to TCP, SSL, or UDP, which means that the parameter is unavailable or its value is set to null.
        +

        description

        +

        String

        +

        Provides supplementary information about the listener.

        +

        loadbalancer_id

        +

        String

        +

        Specifies the load balancer ID.

        +

        create_time

        +

        String

        +

        Specifies the time when the listener was created.

        +

        status

        +

        String

        +

        Specifies the listener status. The value can be ACTIVE, PENDING_CREATE, or ERROR.

        +

        protocol

        +

        String

        +

        Specifies the protocol used for load balancing at Layer 4 or Layer 7.

        +

        port

        +

        Integer

        +

        Specifies the port used by the listener.

        +

        cookie_timeout

        +

        Integer

        +
        • Specifies the cookie timeout duration. This parameter is valid when session_sticky is set to true and sticky_session_type to insert.
        • The value ranges from 1 to 1440.
        +

        admin_state_up

        +

        Boolean

        +
        • Specifies the administrative status of the load balancer.
        • Two options are available:

          false: The load balancer is disabled.

          +

          true: The load balancer is running properly.

          +
        +

        healthcheck_id

        +

        String

        +

        Specifies the health check ID.

        +

        session_sticky

        +

        Boolean

        +

        Specifies whether to enable the sticky session feature. The feature is enabled when the value is true. This parameter is valid only when protocol is set to HTTP.

        +

        lb_algorithm

        +

        String

        +

        Specifies the load balancing algorithm.

        +

        name

        +

        String

        +

        Specifies the listener name.

        +

        tcp_draining

        +

        Boolean

        +
        • Specifies whether to maintain TCP connections to a backend ECS that has been removed. This parameter is valid when protocol is set to TCP.
        • The value can be true or false.
        +

        tcp_draining_timeout

        +

        Integer

        +
        • Specifies the timeout duration for maintaining TCP connections to a backend ECS that has been removed. The unit is minute.

          This parameter is valid when protocol is set to TCP and tcp_draining to true.

          +
        • The value ranges from 0 to 60.
        +

        certificate_id

        +

        String

        +

        Specifies the ID of the SSL certificate for security authentication.

        +

        This parameter is mandatory when protocol is set to HTTPS or SSL. Otherwise, the parameter value is null.

        +

        certificates

        +

        String

        +

        Lists the certificate IDs if protocol is set to HTTPS.

        +

        This parameter is mandatory in the SNI scenario.

        +
        + +
      +
      • Example response
        {
        +    "update_time": "2016-12-01 07:12:59",
        +    "backend_port": 9090,
        +    "id": "a824584fb3ba4d39ba0cf372c7cbbb67",
        +    "backend_protocol": "TCP",
        +    "sticky_session_type": null,
        +    "certificate_id": null,
        +    "description": "",
        +    "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013",
        +    "create_time": "2016-12-01 07:12:43",
        +    "admin_state_up": false,
        +    "status": "ACTIVE",
        +    "protocol": "TCP",
        +    "cookie_timeout": 100,
        +    "port": 9092,
        +    "tcp_draining": true,
        +    "tcp_timeout": 1,
        +    "lb_algorithm": "roundrobin",
        +    "healthcheck_id": null,
        +    "session_sticky": true,
        +    "tcp_draining_timeout": 5,
        +    "name": "lis"
        +
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_jd_jt_0003.rst b/elb/api-ref/elb_jd_jt_0003.rst new file mode 100644 index 000000000..75aafc50b --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0003.rst @@ -0,0 +1,385 @@ +Modifying a Listener +==================== + +Function +^^^^^^^^ + +This API is used to modify the listener information, including the listener name, description, and status. + +URI +^^^ + +PUT /v1.0/{project_id}/elbaas/listeners/{listener_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | Yes | String | Specifies the listener ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | - Specifies the listener | + | | | | name. | + | | | | - The value can contain 1 | + | | | | to 64 characters that | + | | | | consist of letters, | + | | | | digits, underscores (_), | + | | | | and hyphens (-). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | - Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | - The value contains 0 to | + | | | | 128 characters and | + | | | | cannot contain angle | + | | | | brackets (< and >). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | port | No | Integer | - Specifies the port used | + | | | | by the listener. | + | | | | - The port number ranges | + | | | | from 1 to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | backend_port | No | Integer | - Specifies the port used | + | | | | by backend ECSs. | + | | | | - The port number ranges | + | | | | from 1 to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | No | String | - Specifies the load | + | | | | balancing algorithm. | + | | | | - The value can be | + | | | | **roundrobin**, | + | | | | **leastconn**, or | + | | | | **source**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tcp_timeout | No | Integer | - Specifies the TCP | + | | | | session timeout | + | | | | duration. This parameter | + | | | | is valid when | + | | | | **protocol** is set to | + | | | | **TCP**. | + | | | | - The value ranges from | + | | | | **1** to **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tcp_draining | No | Boolean | - Specifies whether to | + | | | | maintain TCP connections | + | | | | to a backend ECS that | + | | | | has been removed. This | + | | | | parameter is valid when | + | | | | **protocol** is set to | + | | | | **TCP**. | + | | | | - The value can be | + | | | | **true** or **false**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tcp_draining_timeout | No | Integer | - Specifies the timeout | + | | | | duration for maintaining | + | | | | TCP connections to a | + | | | | backend ECS that has | + | | | | been removed in the unit | + | | | | of minute. | + | | | | | + | | | | This parameter is valid | + | | | | when **protocol** is set | + | | | | to **TCP** and | + | | | | **tcp_draining** to | + | | | | **true**. | + | | | | | + | | | | - The value ranges from | + | | | | **0** to **60**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | udp_timeout | No | Integer | - Specifies the UDP | + | | | | session timeout | + | | | | duration. This parameter | + | | | | is valid when | + | | | | **protocol** is set to | + | | | | **UDP**. | + | | | | - The value ranges from | + | | | | **1** to **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ssl_protocols | No | String | - Specifies the supported | + | | | | SSL/TLS protocol | + | | | | version. This parameter | + | | | | is available only when | + | | | | **protocol** is set to | + | | | | **HTTPS** or **SSL**. | + | | | | - The value can be **TLS | + | | | | 1.2** or **TLS 1.2 TLS | + | | | | 1.1 TLS 1.0**, and the | + | | | | default value is **TLS | + | | | | 1.2**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ssl_ciphers | No | String | - Specifies the cipher | + | | | | suites supported by a | + | | | | specific SSL/TLS | + | | | | protocol version. This | + | | | | parameter is available | + | | | | only when **protocol** | + | | | | is set to **HTTPS** or | + | | | | **SSL**. | + | | | | | + | | | | - The value is | + | | | | **Default**, | + | | | | **Extended**, or | + | | | | **Strict**. | + | | | | | + | | | | The value of **Default** | + | | | | is | + | | | | | + | | | | **ECDHE-RSA-AES256-GCM-SHA3 | + | | | | 84:ECDHE-RSA-AES128-GCM-SHA | + | | | | 256:ECDHE-RSA-AES256-SHA384 | + | | | | :ECDHE-RSA-AES128-SHA256**. | + | | | | | + | | | | The value of | + | | | | **Extended** is | + | | | | **ECDHE-ECDSA- | + | | | | AES128-SHA256:ECDHE-RSA-AES | + | | | | 128-SHA256:AES128-SHA256:AE | + | | | | S256-SHA256:ECDHE-ECDSA-AES | + | | | | 256-SHA384:ECDHE-RSA-AES256 | + | | | | -SHA384:ECDHE-ECDSA-AES128- | + | | | | SHA:ECDHE-RSA-AES128-SHA:DH | + | | | | E-RSA-AES128-SHA:ECDHE-RSA- | + | | | | AES256-SHA:ECDHE-ECDSA-AES2 | + | | | | 56-SHA:AES128-SHA:AES256-SH | + | | | | A:DHE-DSS-AES128-SHA:CAMELL | + | | | | IA128-SHA:EDH-RSA-DES-CBC3- | + | | | | SHA:DES-CBC3-SHA:ECDHE-RSA- | + | | | | RC4-SHA:RC4-SHA:DHE-RSA-AES | + | | | | 256-SHA:DHE-DSS-AES256-SHA: | + | | | | DHE-RSA-CAMELLIA256-SHA:DHE | + | | | | -DSS-CAMELLIA256-SHA:CAMELL | + | | | | IA256-SHA:EDH-DSS-DES-CBC3- | + | | | | SHA:DHE-RSA-CAMELLIA128-SHA | + | | | | :DHE-DSS-CAMELLIA128-SHA**. | + | | | | | + | | | | The value of **Strict** | + | | | | is | + | | | | **ECDH | + | | | | E-RSA-AES256-GCM-SHA384:ECD | + | | | | HE-RSA-AES128-GCM-SHA256**. | + | | | | | + | | | | The default value is | + | | | | **Default**. When | + | | | | **ssl_protocols** is set | + | | | | to **TLS 1.2 TLS 1.1 TLS | + | | | | 1.0**, this parameter | + | | | | can only be set to | + | | | | **Extended**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate_id | No | String | - Specifies the default | + | | | | certificate ID. This | + | | | | parameter is mandatory | + | | | | when **protocol** is set | + | | | | to **HTTPS** or **SSL**. | + | | | | - The ID can be obtained | + | | | | from the certificate | + | | | | list. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificates | No | String | - Lists the certificate | + | | | | IDs if **protocol** is | + | | | | set to **HTTPS**. | + | | | | - This parameter is | + | | | | mandatory in the SNI | + | | | | scenario. | + | | | | - This parameter is valid | + | | | | only when the load | + | | | | balancer is a public | + | | | | network load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "name": "lis", + "description": "", + "port": 9090, + "backend_port": 9090, + "lb_algorithm": "roundrobin" + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | update_time | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_port | Integer | Specifies the port used by backend | + | | | ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID in UUID | + | | | format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_protocol | String | Specifies the protocol used by | + | | | backend ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sticky_session_type | String | Specifies where the cookie is from. | + | | | The only value is **insert**, | + | | | indicating that the cookie is | + | | | inserted by the load balancer. | + | | | | + | | | - This parameter is valid when | + | | | **protocol** is set to **HTTP** | + | | | and **session_sticky** to | + | | | **true**. | + | | | - This parameter is invalid when | + | | | **protocol** is set to **TCP**, | + | | | **SSL**, or **UDP**, which means | + | | | that the parameter is unavailable | + | | | or its value is set to **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancer_id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | Specifies the listener status. The | + | | | value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used for load | + | | | balancing at Layer 4 or Layer 7. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | Integer | Specifies the port used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_timeout | Integer | - Specifies the cookie timeout | + | | | duration. This parameter is valid | + | | | when **session_sticky** is set to | + | | | **true** and | + | | | **sticky_session_type** to | + | | | **insert**. | + | | | - The value ranges from **1** to | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | - Specifies the administrative | + | | | status of the load balancer. | + | | | | + | | | - Two options are available: | + | | | | + | | | **false**: The load balancer is | + | | | disabled. | + | | | | + | | | **true**: The load balancer is | + | | | running properly. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthcheck_id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_sticky | Boolean | Specifies whether to enable the | + | | | sticky session feature. The feature | + | | | is enabled when the value is | + | | | **true**. This parameter is valid | + | | | only when **protocol** is set to | + | | | **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tcp_draining | Boolean | - Specifies whether to maintain TCP | + | | | connections to a backend ECS that | + | | | has been removed. This parameter | + | | | is valid when **protocol** is set | + | | | to **TCP**. | + | | | - The value can be **true** or | + | | | **false**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tcp_draining_timeout | Integer | - Specifies the timeout duration for | + | | | maintaining TCP connections to a | + | | | backend ECS that has been removed. | + | | | The unit is minute. | + | | | | + | | | This parameter is valid when | + | | | **protocol** is set to **TCP** and | + | | | **tcp_draining** to **true**. | + | | | | + | | | - The value ranges from **0** to | + | | | **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate_id | String | Specifies the ID of the SSL | + | | | certificate for security | + | | | authentication. | + | | | | + | | | This parameter is mandatory when | + | | | **protocol** is set to **HTTPS** or | + | | | **SSL**. Otherwise, the parameter | + | | | value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificates | String | Lists the certificate IDs if | + | | | **protocol** is set to **HTTPS**. | + | | | | + | | | This parameter is mandatory in the | + | | | SNI scenario. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "update_time": "2016-12-01 07:12:59", + "backend_port": 9090, + "id": "a824584fb3ba4d39ba0cf372c7cbbb67", + "backend_protocol": "TCP", + "sticky_session_type": null, + "certificate_id": null, + "description": "", + "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013", + "create_time": "2016-12-01 07:12:43", + "admin_state_up": false, + "status": "ACTIVE", + "protocol": "TCP", + "cookie_timeout": 100, + "port": 9092, + "tcp_draining": true, + "tcp_timeout": 1, + "lb_algorithm": "roundrobin", + "healthcheck_id": null, + "session_sticky": true, + "tcp_draining_timeout": 5, + "name": "lis" + + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_jd_jt_0004.html b/elb/api-ref/elb_jd_jt_0004.html new file mode 100644 index 000000000..8406a216b --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0004.html @@ -0,0 +1,345 @@ + + +

      Querying Details of a Listener

      +

      Function

      This API is used to query details about a listener.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/listeners/{listener_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        update_time

        +

        String

        +

        Specifies the time when the listener was updated.

        +

        backend_port

        +

        Integer

        +

        Specifies the port used by backend ECSs.

        +

        id

        +

        String

        +

        Specifies the listener ID.

        +

        backend_protocol

        +

        String

        +

        Specifies the protocol used by backend ECSs.

        +

        sticky_session_type

        +

        String

        +

        Specifies where the cookie is from. The only value is insert, indicating that the cookie is inserted by the load balancer.

        +
        • This parameter is valid when protocol is set to HTTP and session_sticky to true. The default value is insert.
        • This parameter is invalid when protocol is set to TCP, which means that the parameter is unavailable or its value is set to null.
        +

        description

        +

        String

        +

        Provides supplementary information about the listener.

        +

        loadbalancer_id

        +

        String

        +

        Specifies the load balancer ID.

        +

        create_time

        +

        String

        +

        Specifies the time when the listener was created.

        +

        status

        +

        String

        +

        Specifies the listener status. The value can be ACTIVE, PENDING_CREATE, or ERROR.

        +

        protocol

        +

        String

        +

        Specifies the protocol used for load balancing at Layer 4 or Layer 7.

        +

        port

        +

        Integer

        +

        Specifies the port used by the listener.

        +

        cookie_timeout

        +

        Integer

        +
        • Specifies the cookie timeout duration. This parameter is valid when session_sticky is set to true and sticky_session_type to insert.
        • The value ranges from 1 to 1440.
        +

        admin_state_up

        +

        Boolean

        +
        • Specifies the administrative status of the load balancer.
        • Two options are available:

          false: The load balancer is disabled.

          +

          true: The load balancer is running properly.

          +
        +

        member_number

        +

        Integer

        +

        Specifies the quantity of backend ECSs.

        +

        healthcheck_id

        +

        String

        +

        Specifies the health check ID.

        +

        session_sticky

        +

        Boolean

        +

        Specifies whether to enable the sticky session feature. The feature is enabled when the value is true.

        +

        lb_algorithm

        +

        String

        +

        Specifies the load balancing algorithm.

        +

        name

        +

        String

        +

        Specifies the listener name.

        +

        certificate_id

        +

        String

        +

        Specifies the ID of the SSL certificate for security authentication.

        +

        This parameter is mandatory when protocol is set to HTTPS or SSL. Otherwise, the parameter value is null.

        +

        certificates

        +

        String

        +

        Lists the certificate IDs if protocol is set to HTTPS.

        +

        This parameter is mandatory in the SNI scenario.

        +

        tcp_timeout

        +

        Integer

        +

        Specifies the TCP session timeout duration.

        +

        udp_timeout

        +

        Integer

        +

        Specifies the UDP session timeout duration.

        +

        ssl_protocols

        +

        String

        +

        Specifies the supported SSL/TLS protocol version. This parameter is available only when protocol is set to HTTPS or SSL.

        + NOTE:

        For HTTPS listeners in versions earlier than 1.2.8, the parameter value is TLS 1.2.

        + +

        ssl_ciphers

        +

        String

        +

        Specifies the cipher suite of an encryption protocol. This parameter is available only when protocol is set to HTTPS or SSL.

        +
        + +
      +
      • Example response
        {
        +    "update_time": "2015-09-15 07:41:17",
        +    "backend_port": 80,
        +    "id": "248425d7b97dc26920eb23720115e068",
        +    "backend_protocol": "TCP",
        +    "sticky_session_type": "insert",
        +    "description": "",
        +    "loadbalancer_id": "0b07acf06d243925bc24a0ac7445267a",
        +    "create_time": "2015-09-15 07:41:17",
        +    "status": "ACTIVE",
        +    "protocol": "TCP",
        +    "port": 88,
        +    "cookie_timeout": 100,
        +    "admin_state_up": true,
        +    "member_number": 0,
        +    "healthcheck_id": null,
        +    "session_sticky": true,
        +    "lb_algorithm": "roundrobin",
        +    "name": "listener1",
        +    "tcp_draining": true,
        +    "tcp_draining_timeout": 5
        +}
        +
        +
        {
        +     "update_time": "2016-12-01 07:12:59",
        +     "backend_port": 9090,
        +     "id": "a824584fb3ba4d39ba0cf372c7cbbb67",
        +     "backend_protocol": "TCP",
        +     "sticky_session_type": null,
        +     "certificate_id": null,
        +     "description": "",
        +     "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013",
        +     "lb_algorithm": "roundrobin",
        +     "create_time": "2016-12-01 07:12:43",
        +     "admin_state_up": false,
        +     "status": "ACTIVE",
        +     "protocol": "TCP",
        +     "cookie_timeout": 100,
        +     "port": 9092,
        +     "tcp_draining": 1,
        +     "tcp_timeout": 1,
        +     "member_number": 0,
        +     "healthcheck_id": null,
        +     "session_sticky": true,
        +     "tcp_draining_timeout": 5,
        +     "name": "lis"
        +}
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_jd_jt_0004.rst b/elb/api-ref/elb_jd_jt_0004.rst new file mode 100644 index 000000000..6709dbc3a --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0004.rst @@ -0,0 +1,235 @@ +Querying Details of a Listener +============================== + +Function +^^^^^^^^ + +This API is used to query details about a listener. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/listeners/{listener_id} + +.. table:: **Table 1** Parameter description + + =========== ============= ======== ========================== + Parameter **Mandatory** **Type** Description + =========== ============= ======== ========================== + project_id Yes String Specifies the project ID. + listener_id Yes String Specifies the listener ID. + =========== ============= ======== ========================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | update_time | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_port | Integer | Specifies the port used by backend | + | | | ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_protocol | String | Specifies the protocol used by | + | | | backend ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sticky_session_type | String | Specifies where the cookie is from. | + | | | The only value is **insert**, | + | | | indicating that the cookie is | + | | | inserted by the load balancer. | + | | | | + | | | - This parameter is valid when | + | | | **protocol** is set to **HTTP** | + | | | and **session_sticky** to | + | | | **true**. The default value is | + | | | **insert**. | + | | | - This parameter is invalid when | + | | | **protocol** is set to **TCP**, | + | | | which means that the parameter is | + | | | unavailable or its value is set to | + | | | **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancer_id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | Specifies the listener status. The | + | | | value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used for load | + | | | balancing at Layer 4 or Layer 7. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | Integer | Specifies the port used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_timeout | Integer | - Specifies the cookie timeout | + | | | duration. This parameter is valid | + | | | when **session_sticky** is set to | + | | | **true** and | + | | | **sticky_session_type** to | + | | | **insert**. | + | | | - The value ranges from **1** to | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | - Specifies the administrative | + | | | status of the load balancer. | + | | | | + | | | - Two options are available: | + | | | | + | | | **false**: The load balancer is | + | | | disabled. | + | | | | + | | | **true**: The load balancer is | + | | | running properly. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_number | Integer | Specifies the quantity of backend | + | | | ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthcheck_id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_sticky | Boolean | Specifies whether to enable the | + | | | sticky session feature. The feature | + | | | is enabled when the value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate_id | String | Specifies the ID of the SSL | + | | | certificate for security | + | | | authentication. | + | | | | + | | | This parameter is mandatory when | + | | | **protocol** is set to **HTTPS** or | + | | | **SSL**. Otherwise, the parameter | + | | | value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificates | String | Lists the certificate IDs if | + | | | **protocol** is set to **HTTPS**. | + | | | | + | | | This parameter is mandatory in the | + | | | SNI scenario. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tcp_timeout | Integer | Specifies the TCP session timeout | + | | | duration. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | udp_timeout | Integer | Specifies the UDP session timeout | + | | | duration. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ssl_protocols | String | Specifies the supported SSL/TLS | + | | | protocol version. This parameter is | + | | | available only when **protocol** is | + | | | set to **HTTPS** or **SSL**. | + | | | | + | | | NOTE: | + | | | For HTTPS listeners in versions | + | | | earlier than 1.2.8, the parameter | + | | | value is **TLS 1.2**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ssl_ciphers | String | Specifies the cipher suite of an | + | | | encryption protocol. This parameter | + | | | is available only when **protocol** | + | | | is set to **HTTPS** or **SSL**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "update_time": "2015-09-15 07:41:17", + "backend_port": 80, + "id": "248425d7b97dc26920eb23720115e068", + "backend_protocol": "TCP", + "sticky_session_type": "insert", + "description": "", + "loadbalancer_id": "0b07acf06d243925bc24a0ac7445267a", + "create_time": "2015-09-15 07:41:17", + "status": "ACTIVE", + "protocol": "TCP", + "port": 88, + "cookie_timeout": 100, + "admin_state_up": true, + "member_number": 0, + "healthcheck_id": null, + "session_sticky": true, + "lb_algorithm": "roundrobin", + "name": "listener1", + "tcp_draining": true, + "tcp_draining_timeout": 5 + } + + .. code:: screen + + { + "update_time": "2016-12-01 07:12:59", + "backend_port": 9090, + "id": "a824584fb3ba4d39ba0cf372c7cbbb67", + "backend_protocol": "TCP", + "sticky_session_type": null, + "certificate_id": null, + "description": "", + "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013", + "lb_algorithm": "roundrobin", + "create_time": "2016-12-01 07:12:43", + "admin_state_up": false, + "status": "ACTIVE", + "protocol": "TCP", + "cookie_timeout": 100, + "port": 9092, + "tcp_draining": 1, + "tcp_timeout": 1, + "member_number": 0, + "healthcheck_id": null, + "session_sticky": true, + "tcp_draining_timeout": 5, + "name": "lis" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_jd_jt_0005.html b/elb/api-ref/elb_jd_jt_0005.html new file mode 100644 index 000000000..ac4dbe3ca --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0005.html @@ -0,0 +1,350 @@ + + +

      Querying Listeners

      +

      Function

      This API is used to query listeners using search criteria and display them in a list.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/listeners?loadbalancer_id={loadbalancer_id}

      +

      Enter a question mark (?) and an ampersand (&) at the end of the URI to define multiple search criteria. You can filter the listeners using the parameters in the response except update_time, create_time, admin_state_up, session_sticky, and member_number.

      + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the load balancer ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        update_time

        +

        String

        +

        Specifies the time when the listener was updated.

        +

        backend_port

        +

        Integer

        +

        Specifies the port used by backend ECSs.

        +

        id

        +

        String

        +

        Specifies the listener ID.

        +

        backend_protocol

        +

        String

        +

        Specifies the protocol used by backend ECSs.

        +

        sticky_session_type

        +

        String

        +

        Specifies where the cookie is from. The only value is insert, indicating that the cookie is inserted by the load balancer.

        +
        • This parameter is valid when protocol is set to HTTP and session_sticky to true. The default value is insert.
        • This parameter is invalid when protocol is set to TCP, which means that the parameter is unavailable or its value is set to null.
        +

        description

        +

        String

        +

        Provides supplementary information about the listener.

        +

        loadbalancer_id

        +

        String

        +

        Specifies the load balancer ID.

        +

        create_time

        +

        String

        +

        Specifies the time when the listener was created.

        +

        status

        +

        String

        +

        Specifies the listener status. The value can be ACTIVE, PENDING_CREATE, or ERROR.

        +

        protocol

        +

        String

        +

        Specifies the protocol used for load balancing at Layer 4 or Layer 7.

        +

        lb_algorithm

        +

        String

        +

        Specifies the load balancing algorithm.

        +

        admin_state_up

        +

        Boolean

        +
        • Specifies the administrative status of the load balancer.
        • Two options are available:

          false: The load balancer is disabled.

          +

          true: The load balancer is running properly.

          +
        +

        cookie_timeout

        +

        Integer

        +
        • Specifies the cookie timeout duration. This parameter is valid when session_sticky is set to true and sticky_session_type to insert.
        • The value ranges from 1 to 1440.
        +

        member_number

        +

        Integer

        +

        Specifies the quantity of backend ECSs.

        +

        healthcheck_id

        +

        String

        +

        Specifies the health check ID.

        +

        session_sticky

        +

        Boolean

        +

        Specifies whether to enable the sticky session feature. The feature is enabled when the value is true.

        +

        port

        +

        Integer

        +

        Specifies the port used by the listener.

        +

        name

        +

        String

        +

        Specifies the listener name.

        +

        certificate_id

        +

        String

        +

        Specifies the ID of the SSL certificate for security authentication. This parameter is mandatory when protocol is set to HTTPS or SSL. Otherwise, the parameter value is null.

        +

        certificates

        +

        String

        +

        Lists the certificate IDs if protocol is set to HTTPS.

        +

        This parameter is mandatory in the SNI scenario.

        +

        tcp_timeout

        +

        Integer

        +

        Specifies the TCP session timeout duration.

        +

        udp_timeout

        +

        Integer

        +

        Specifies the UDP session timeout duration.

        +

        ssl_protocols

        +

        String

        +

        Specifies the supported SSL/TLS protocol version. This parameter is available only when protocol is set to HTTPS or SSL.

        + NOTE:

        For HTTPS listeners in versions earlier than 1.2.8, the parameter value is TLS 1.2.

        + +

        ssl_ciphers

        +

        String

        +

        Specifies the cipher suite of an encryption protocol. This parameter is available only when protocol is set to HTTPS or SSL.

        +
        + +
      +
      • Example response
        [
        + {
        +     "update_time": "2016-12-01 07:12:59",
        +     "backend_port": 9090,
        +     "id": "a824584fb3ba4d39ba0cf372c7cbbb67",
        +     "backend_protocol": "TCP",
        +     "sticky_session_type": null,
        +     "certificate_id": null,
        +     "description": "",
        +     "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013",
        +     "lb_algorithm": "roundrobin",
        +     "create_time": "2016-12-01 07:12:43",
        +     "admin_state_up": false,
        +     "status": "ACTIVE",
        +     "protocol": "TCP",
        +     "cookie_timeout": 100,
        +     "port": 9092,
        +     "tcp_draining": true,
        +     "tcp_timeout": 1,
        +     "member_number": 0,
        +     "healthcheck_id": null,
        +     "session_sticky": true,
        +     "tcp_draining_timeout": 5,
        +     "name": "lis"
        +},
        +
        +{
        +     "update_time": "2016-12-01 07:11:49",
        +     "backend_port": 9090,
        +     "id": "4818300858fc43e0a4d843ce74ee83a4",
        +     "backend_protocol": "HTTP",
        +     "sticky_session_type": "insert",
        +     "certificate_id": null,
        +     "description": "",
        +     "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013",
        +     "lb_algorithm": "roundrobin",
        +     "create_time": "2016-12-01 07:11:30",
        +     "admin_state_up": false,
        +     "status": "ACTIVE",
        +     "protocol": "HTTP",
        +     "cookie_timeout": 100,
        +     "port": 9091,
        +     "tcp_draining": true,
        +     "tcp_timeout": null,
        +     "member_number": 0,
        +     "healthcheck_id": null,
        +     "session_sticky": true,
        +     "tcp_draining_timeout": 5,
        +     "name": "lis"
        + }
        +]
        +
      + +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_jd_jt_0005.rst b/elb/api-ref/elb_jd_jt_0005.rst new file mode 100644 index 000000000..a4750850a --- /dev/null +++ b/elb/api-ref/elb_jd_jt_0005.rst @@ -0,0 +1,241 @@ +Querying Listeners +================== + +Function +^^^^^^^^ + +This API is used to query listeners using search criteria and display them in a list. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/listeners?loadbalancer_id={loadbalancer_id} + +|image1| + +Enter a question mark (?) and an ampersand (&) at the end of the URI to define multiple search criteria. You can filter the listeners using the parameters in the response except **update_time**, **create_time**, **admin_state_up**, **session_sticky**, and **member_number**. + +.. table:: **Table 1** Parameter description + + =============== ============= ======== =============================== + Parameter **Mandatory** **Type** Description + =============== ============= ======== =============================== + project_id Yes String Specifies the project ID. + loadbalancer_id No String Specifies the load balancer ID. + =============== ============= ======== =============================== + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | update_time | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_port | Integer | Specifies the port used by backend | + | | | ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | backend_protocol | String | Specifies the protocol used by | + | | | backend ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sticky_session_type | String | Specifies where the cookie is from. | + | | | The only value is **insert**, | + | | | indicating that the cookie is | + | | | inserted by the load balancer. | + | | | | + | | | - This parameter is valid when | + | | | **protocol** is set to **HTTP** | + | | | and **session_sticky** to | + | | | **true**. The default value is | + | | | **insert**. | + | | | - This parameter is invalid when | + | | | **protocol** is set to **TCP**, | + | | | which means that the parameter is | + | | | unavailable or its value is set to | + | | | **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancer_id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | Specifies the listener status. The | + | | | value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used for load | + | | | balancing at Layer 4 or Layer 7. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | - Specifies the administrative | + | | | status of the load balancer. | + | | | | + | | | - Two options are available: | + | | | | + | | | **false**: The load balancer is | + | | | disabled. | + | | | | + | | | **true**: The load balancer is | + | | | running properly. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_timeout | Integer | - Specifies the cookie timeout | + | | | duration. This parameter is valid | + | | | when **session_sticky** is set to | + | | | **true** and | + | | | **sticky_session_type** to | + | | | **insert**. | + | | | - The value ranges from **1** to | + | | | **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_number | Integer | Specifies the quantity of backend | + | | | ECSs. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthcheck_id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_sticky | Boolean | Specifies whether to enable the | + | | | sticky session feature. The feature | + | | | is enabled when the value is | + | | | **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | port | Integer | Specifies the port used by the | + | | | listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate_id | String | Specifies the ID of the SSL | + | | | certificate for security | + | | | authentication. This parameter is | + | | | mandatory when **protocol** is set to | + | | | **HTTPS** or **SSL**. Otherwise, the | + | | | parameter value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificates | String | Lists the certificate IDs if | + | | | **protocol** is set to **HTTPS**. | + | | | | + | | | This parameter is mandatory in the | + | | | SNI scenario. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tcp_timeout | Integer | Specifies the TCP session timeout | + | | | duration. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | udp_timeout | Integer | Specifies the UDP session timeout | + | | | duration. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ssl_protocols | String | Specifies the supported SSL/TLS | + | | | protocol version. This parameter is | + | | | available only when **protocol** is | + | | | set to **HTTPS** or **SSL**. | + | | | | + | | | NOTE: | + | | | For HTTPS listeners in versions | + | | | earlier than 1.2.8, the parameter | + | | | value is **TLS 1.2**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | ssl_ciphers | String | Specifies the cipher suite of an | + | | | encryption protocol. This parameter | + | | | is available only when **protocol** | + | | | is set to **HTTPS** or **SSL**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + [ + { + "update_time": "2016-12-01 07:12:59", + "backend_port": 9090, + "id": "a824584fb3ba4d39ba0cf372c7cbbb67", + "backend_protocol": "TCP", + "sticky_session_type": null, + "certificate_id": null, + "description": "", + "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013", + "lb_algorithm": "roundrobin", + "create_time": "2016-12-01 07:12:43", + "admin_state_up": false, + "status": "ACTIVE", + "protocol": "TCP", + "cookie_timeout": 100, + "port": 9092, + "tcp_draining": true, + "tcp_timeout": 1, + "member_number": 0, + "healthcheck_id": null, + "session_sticky": true, + "tcp_draining_timeout": 5, + "name": "lis" + }, + + { + "update_time": "2016-12-01 07:11:49", + "backend_port": 9090, + "id": "4818300858fc43e0a4d843ce74ee83a4", + "backend_protocol": "HTTP", + "sticky_session_type": "insert", + "certificate_id": null, + "description": "", + "loadbalancer_id": "f54c65b1b5dd4a4f95b71b44796ac013", + "lb_algorithm": "roundrobin", + "create_time": "2016-12-01 07:11:30", + "admin_state_up": false, + "status": "ACTIVE", + "protocol": "HTTP", + "cookie_timeout": 100, + "port": 9091, + "tcp_draining": true, + "tcp_timeout": null, + "member_number": 0, + "healthcheck_id": null, + "session_sticky": true, + "tcp_draining_timeout": 5, + "name": "lis" + } + ] + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Listener `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_jd_pe_0000.html b/elb/api-ref/elb_jd_pe_0000.html new file mode 100644 index 000000000..f59e49e64 --- /dev/null +++ b/elb/api-ref/elb_jd_pe_0000.html @@ -0,0 +1,15 @@ + + +

      Quota

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_pe_0000.rst b/elb/api-ref/elb_jd_pe_0000.rst new file mode 100644 index 000000000..2f99882d9 --- /dev/null +++ b/elb/api-ref/elb_jd_pe_0000.rst @@ -0,0 +1,6 @@ +Quota +===== + +- `Querying Load Balancer or Listener Quotas `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_pe_0001.html b/elb/api-ref/elb_jd_pe_0001.html new file mode 100644 index 000000000..e6f5d3fa3 --- /dev/null +++ b/elb/api-ref/elb_jd_pe_0001.html @@ -0,0 +1,208 @@ + + +

      Querying Load Balancer or Listener Quotas

      +

      Function

      This API is used to query the load balancer or listener quotas.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/quotas

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        quotas

        +

        Object

        +

        Specifies the resource quotas.

        +
        + + + + + + + + + + + + +
        Table 3 quotas parameter description

        Parameter

        +

        Type

        +

        Description

        +

        resources

        +

        Array

        +

        Lists the resource quotas.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 4 resources parameter description

        Parameter

        +

        Type

        +

        Description

        +

        type

        +

        String

        +

        Specifies the resource type. The value can be elb or listener.

        +

        used

        +

        Integer

        +

        Specifies the quantity of used resources.

        +

        quota

        +

        Integer

        +

        Specifies the total resource quotas.

        +

        max

        +

        Integer

        +

        Specifies the maximum number of resources.

        +

        min

        +

        Integer

        +

        Specifies the minimum number of resources.

        +
        + +
      + +
      • Example response
        {
        +    "quotas": {
        +        "resources": [
        +            {
        +                "type": "elb",
        +                "used": 2,
        +                "quota": 5,
        +                "max": 100,
        +                "min": 1
        +            },
        +            {
        +                "type": "listener",
        +                "quota": 5,
        +                "max": 200,
        +                "min": 1
        +            }
        +        ]
        +    }
        +}
        +

        The used parameter is unavailable for listeners, for which an empty character string is returned.

        + +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Quota + + + diff --git a/elb/api-ref/elb_jd_pe_0001.rst b/elb/api-ref/elb_jd_pe_0001.rst new file mode 100644 index 000000000..c0b6dcfb1 --- /dev/null +++ b/elb/api-ref/elb_jd_pe_0001.rst @@ -0,0 +1,116 @@ +Querying Load Balancer or Listener Quotas +========================================= + +Function +^^^^^^^^ + +This API is used to query the load balancer or listener quotas. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/quotas + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ========================= + Parameter **Mandatory** **Type** Description + ========== ============= ======== ========================= + project_id Yes String Specifies the project ID. + ========== ============= ======== ========================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ========= ======== ============================== + Parameter **Type** Description + ========= ======== ============================== + quotas Object Specifies the resource quotas. + ========= ======== ============================== + + .. table:: **Table 3** **quotas** parameter description + + ========= ======== ========================== + Parameter **Type** Description + ========= ======== ========================== + resources Array Lists the resource quotas. + ========= ======== ========================== + + .. table:: **Table 4** **resources** parameter description + + ========= ======== ====================================================================== + Parameter **Type** Description + ========= ======== ====================================================================== + type String Specifies the resource type. The value can be **elb** or **listener**. + used Integer Specifies the quantity of used resources. + quota Integer Specifies the total resource quotas. + max Integer Specifies the maximum number of resources. + min Integer Specifies the minimum number of resources. + ========= ======== ====================================================================== + +- Example response + + .. code:: screen + + { + "quotas": { + "resources": [ + { + "type": "elb", + "used": 2, + "quota": 5, + "max": 100, + "min": 1 + }, + { + "type": "listener", + "quota": 5, + "max": 200, + "min": 1 + } + ] + } + } + + |image1| + + The **used** parameter is unavailable for listeners, for which an empty character string is returned. + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Quota `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_jd_zs_0000.html b/elb/api-ref/elb_jd_zs_0000.html new file mode 100644 index 000000000..71d5c9464 --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0000.html @@ -0,0 +1,21 @@ + + +

      Certificate

      + + + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/elb_jd_zs_0000.rst b/elb/api-ref/elb_jd_zs_0000.rst new file mode 100644 index 000000000..4ccca87fa --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0000.rst @@ -0,0 +1,9 @@ +Certificate +=========== + +- `Creating a Certificate `__ +- `Deleting a Certificate `__ +- `Modifying a Certificate `__ +- `Querying Certificates `__ + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/elb_jd_zs_0001.html b/elb/api-ref/elb_jd_zs_0001.html new file mode 100644 index 000000000..3a22d4f01 --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0001.html @@ -0,0 +1,237 @@ + + +

      Creating a Certificate

      +

      Function

      This API is used to create a certificate for an HTTPS listener.

      + +

      URI

      POST /v1.0/{project_id}/elbaas/certificate

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      name

      +

      No

      +

      String

      +
      • Specifies the certificate name.
      • The value can contain 0 to 64 characters that consist of letters, digits, underscores (_), and hyphens (-).
      +

      description

      +

      No

      +

      String

      +
      • Provides supplementary information about the certificate.
      • The value contains a maximum of 128 characters and cannot contain angle brackets (< and >).
      +

      domain

      +

      No

      +

      String

      +
      • Specifies the domain name associated with the server certificate.
      • The value can contain a maximum of 254 characters that consist of letters, digits, hyphens (-), and periods (.), and must start with uppercase letters or digits.
      +

      certificate

      +

      Yes

      +

      String

      +
      • Specifies the certificate content.
      • The value is in PEM coding format.
      +

      private_key

      +

      Yes

      +

      String

      +
      • Specifies the private key of the certificate.
      • The value is in PEM coding format.
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "name": "cert-bky",
        +    "description": "certificate",
        +    "certificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----",
        +    "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----"
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Response parameters

        Parameter

        +

        Type

        +

        Description

        +

        tenant_id

        +

        String

        +

        Specifies the project ID.

        +

        id

        +

        String

        +

        Specifies the certificate ID.

        +

        name

        +

        String

        +

        Specifies the certificate name.

        +

        description

        +

        String

        +

        Provides supplementary information about the certificate.

        +

        domain

        +

        String

        +

        Specifies the domain name associated with the server certificate.

        +

        certificate

        +

        String

        +

        Specifies the certificate content.

        +

        private_key

        +

        String

        +

        Specifies the private key of the certificate.

        +

        create_time

        +

        String

        +

        Specifies the time when the certificate was created.

        +

        update_time

        +

        String

        +

        Specifies the time when the certificate was updated.

        +
        + +
      + +
      • Example response
        {
        +"name":"cert-bky",
        +"description":"certificate",
        +"certificate":"-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----",
        +"private_key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----",
        +"tenant_id":"ed9edbc66b8b47c09f5d2fcd89430b33",
        +"id":"5b8f908b5495452aa13beede0afc5d99",
        +"create_time":"2016-06-27 08:14:42",
        +"update_time":"2016-06-27 08:14:42"
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_jd_zs_0001.rst b/elb/api-ref/elb_jd_zs_0001.rst new file mode 100644 index 000000000..5ccac0705 --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0001.rst @@ -0,0 +1,135 @@ +Creating a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to create a certificate for an HTTPS listener. + +URI +^^^ + +POST /v1.0/{project_id}/elbaas/certificate + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | - Specifies the | + | | | | certificate name. | + | | | | - The value can contain 0 | + | | | | to 64 characters that | + | | | | consist of letters, | + | | | | digits, underscores (_), | + | | | | and hyphens (-). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | - Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | - The value contains a | + | | | | maximum of 128 | + | | | | characters and cannot | + | | | | contain angle brackets | + | | | | (< and >). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | String | - Specifies the domain | + | | | | name associated with the | + | | | | server certificate. | + | | | | - The value can contain a | + | | | | maximum of 254 | + | | | | characters that consist | + | | | | of letters, digits, | + | | | | hyphens (-), and periods | + | | | | (.), and must start with | + | | | | uppercase letters or | + | | | | digits. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate | Yes | String | - Specifies the | + | | | | certificate content. | + | | | | - The value is in PEM | + | | | | coding format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | private_key | Yes | String | - Specifies the private | + | | | | key of the certificate. | + | | | | - The value is in PEM | + | | | | coding format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "name": "cert-bky", + "description": "certificate", + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----", + "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----" + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Response parameters + + =========== ======== ================================================================= + Parameter **Type** Description + =========== ======== ================================================================= + tenant_id String Specifies the project ID. + id String Specifies the certificate ID. + name String Specifies the certificate name. + description String Provides supplementary information about the certificate. + domain String Specifies the domain name associated with the server certificate. + certificate String Specifies the certificate content. + private_key String Specifies the private key of the certificate. + create_time String Specifies the time when the certificate was created. + update_time String Specifies the time when the certificate was updated. + =========== ======== ================================================================= + +- Example response + + .. code:: screen + + { + "name":"cert-bky", + "description":"certificate", + "certificate":"-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----", + "private_key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----", + "tenant_id":"ed9edbc66b8b47c09f5d2fcd89430b33", + "id":"5b8f908b5495452aa13beede0afc5d99", + "create_time":"2016-06-27 08:14:42", + "update_time":"2016-06-27 08:14:42" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_jd_zs_0002.html b/elb/api-ref/elb_jd_zs_0002.html new file mode 100644 index 000000000..3fb6c5c7b --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0002.html @@ -0,0 +1,113 @@ + + +

      Deleting a Certificate

      +

      Function

      This API is used to delete a certificate.

      + +

      URI

      DELETE /v1.0/{project_id}/elbaas/certificate/{certificate_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies the certificate ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters

        None

        +
      +
      • Example response

        None

        +
      + +

      Status Code

      • Normal

        204

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_jd_zs_0002.rst b/elb/api-ref/elb_jd_zs_0002.rst new file mode 100644 index 000000000..6badb1f69 --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0002.rst @@ -0,0 +1,65 @@ +Deleting a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to delete a certificate. + +URI +^^^ + +DELETE /v1.0/{project_id}/elbaas/certificate/{certificate_id} + +.. table:: **Table 1** Parameter description + + ============== ============= ======== ============================= + Parameter **Mandatory** **Type** Description + ============== ============= ======== ============================= + project_id Yes String Specifies the project ID. + certificate_id Yes String Specifies the certificate ID. + ============== ============= ======== ============================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + None + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +- Normal + + 204 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_jd_zs_0003.html b/elb/api-ref/elb_jd_zs_0003.html new file mode 100644 index 000000000..d0332c22b --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0003.html @@ -0,0 +1,210 @@ + + +

      Modifying a Certificate

      +

      Function

      This API is used to modify the name and description of a certificate.

      + +

      URI

      PUT /v1.0/{project_id}/elbaas/certificate/{certificate_id}

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies the certificate ID.

      +

      name

      +

      No

      +

      String

      +
      • Specifies the certificate name.
      • The value can contain 0 to 64 characters that consist of letters, digits, underscores (_), and hyphens (-).
      +

      description

      +

      No

      +

      String

      +
      • Provides supplementary information about the certificate.
      • The value contains a maximum of 128 characters and cannot contain angle brackets (< and >).
      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request
        {
        +    "name": "cert-bky",
        +    "description": "certificate"
        +}
        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        id

        +

        String

        +

        Specifies the certificate ID.

        +

        name

        +

        String

        +

        Specifies the certificate name.

        +

        description

        +

        String

        +

        Provides supplementary information about the certificate.

        +

        domain

        +

        String

        +

        Specifies the domain name associated with the server certificate.

        +

        certificate

        +

        String

        +

        Specifies the certificate content.

        +

        private_key

        +

        String

        +

        Specifies the private key of the certificate.

        +

        create_time

        +

        String

        +

        Specifies the time when the certificate was created.

        +

        update_time

        +

        String

        +

        Specifies the time when the certificate was updated.

        +
        + +
      + +
      • Example response
        {
        +    "name": "cert-bky",
        +    "description": "certificate",
        +    "domain": null,
        +    "certificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----",
        +    "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----",
        +    "id": "5b8f908b5495452aa13beede0afc5d99",
        +    "create_time": "2016-06-27 08:14:42",
        +    "update_time": "2016-06-27 08:14:42"
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_jd_zs_0003.rst b/elb/api-ref/elb_jd_zs_0003.rst new file mode 100644 index 000000000..67c5f0788 --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0003.rst @@ -0,0 +1,113 @@ +Modifying a Certificate +======================= + +Function +^^^^^^^^ + +This API is used to modify the name and description of a certificate. + +URI +^^^ + +PUT /v1.0/{project_id}/elbaas/certificate/{certificate_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | project_id | Yes | String | Specifies the project ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate_id | Yes | String | Specifies the certificate | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | - Specifies the | + | | | | certificate name. | + | | | | - The value can contain 0 | + | | | | to 64 characters that | + | | | | consist of letters, | + | | | | digits, underscores (_), | + | | | | and hyphens (-). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | - Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | - The value contains a | + | | | | maximum of 128 | + | | | | characters and cannot | + | | | | contain angle brackets | + | | | | (< and >). | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + .. code:: screen + + { + "name": "cert-bky", + "description": "certificate" + } + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + =========== ======== ================================================================= + Parameter **Type** Description + =========== ======== ================================================================= + id String Specifies the certificate ID. + name String Specifies the certificate name. + description String Provides supplementary information about the certificate. + domain String Specifies the domain name associated with the server certificate. + certificate String Specifies the certificate content. + private_key String Specifies the private key of the certificate. + create_time String Specifies the time when the certificate was created. + update_time String Specifies the time when the certificate was updated. + =========== ======== ================================================================= + +- Example response + + .. code:: screen + + { + "name": "cert-bky", + "description": "certificate", + "domain": null, + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----", + "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----", + "id": "5b8f908b5495452aa13beede0afc5d99", + "create_time": "2016-06-27 08:14:42", + "update_time": "2016-06-27 08:14:42" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_jd_zs_0004.html b/elb/api-ref/elb_jd_zs_0004.html new file mode 100644 index 000000000..3d86c5ceb --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0004.html @@ -0,0 +1,211 @@ + + +

      Querying Certificates

      +

      Function

      This API is used to query all the certificates.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/certificate

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 2 Response parameters

        Parameter

        +

        Type

        +

        Description

        +

        certificates

        +

        Array

        +

        Lists the certificates.

        +

        instance_num

        +

        String

        +

        Specifies the number of certificates.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 3 certificates parameter description

        Parameter

        +

        Type

        +

        Description

        +

        id

        +

        String

        +

        Specifies the certificate ID.

        +

        name

        +

        String

        +

        Specifies the certificate name.

        +

        description

        +

        String

        +

        Provides supplementary information about the certificate.

        +

        domain

        +

        String

        +

        Specifies the domain name associated with the server certificate.

        +

        certificate

        +

        String

        +

        Specifies the certificate content.

        +

        private_key

        +

        String

        +

        Specifies the private key of the certificate.

        +

        create_time

        +

        String

        +

        Specifies the time when the certificate was created.

        +

        update_time

        +

        String

        +

        Specifies the time when the certificate was updated.

        +
        + +
      + +
      • Example response
        {
        +    "certificates": [
        +        {
        +            "name": "cert-bky",
        +            "description": "certificate",
        +            "domain": null,
        +            "certificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----",
        +            "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----",
        +            "id": "5b8f908b5495452aa13beede0afc5d99",
        +            "create_time": "2016-06-27 08:14:42",
        +            "update_time": "2016-06-27 08:14:42"
        +        }
        +    ],
        +    "instance_num": "1"
        +}
        +
      +

      Status Code

      • Normal

        200

        +
      • Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        System error.

        +

        503

        +

        serviceUnavailable

        +

        The service is unavailable.

        +
        + +
      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_jd_zs_0004.rst b/elb/api-ref/elb_jd_zs_0004.rst new file mode 100644 index 000000000..a55e27d10 --- /dev/null +++ b/elb/api-ref/elb_jd_zs_0004.rst @@ -0,0 +1,102 @@ +Querying Certificates +===================== + +Function +^^^^^^^^ + +This API is used to query all the certificates. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/certificate + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ========================= + Parameter **Mandatory** **Type** Description + ========== ============= ======== ========================= + project_id Yes String Specifies the project ID. + ========== ============= ======== ========================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Response parameters + + ============ ======== ===================================== + Parameter **Type** Description + ============ ======== ===================================== + certificates Array Lists the certificates. + instance_num String Specifies the number of certificates. + ============ ======== ===================================== + + .. table:: **Table 3** **certificates** parameter description + + =========== ======== ================================================================= + Parameter **Type** Description + =========== ======== ================================================================= + id String Specifies the certificate ID. + name String Specifies the certificate name. + description String Provides supplementary information about the certificate. + domain String Specifies the domain name associated with the server certificate. + certificate String Specifies the certificate content. + private_key String Specifies the private key of the certificate. + create_time String Specifies the time when the certificate was created. + update_time String Specifies the time when the certificate was updated. + =========== ======== ================================================================= + +- Example response + + .. code:: screen + + { + "certificates": [ + { + "name": "cert-bky", + "description": "certificate", + "domain": null, + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJANoPUy2NktS6MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwNjIyMDMyOTU5WhcNMTkwNjIyMDMyOTU5WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP64DjDPny9\n+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQhIOIaP1Y\nNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcsS5v3kw88\n9gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39cHX/NpIHC\nHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTams0ThvSlZ\no6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABo1AwTjAdBgNVHQ4EFgQUlXhcABza\n2SdXPYpp8RkWvKblCNIwHwYDVR0jBBgwFoAUlXhcABza2SdXPYpp8RkWvKblCNIw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAHmsFDOwbkD45PF4oYdX+\ncCoEGNjsLfi0spJ6b1CHQMEy2tPqYZJh8nGuUtB9Zd7+rbwm6NS38eGQVA5vbWZH\nMk+uq5un7YFwkM+fdjgCxbe/3PMkk/ZDYPHhpc1W8e/+aZVUBB2EpfzBC6tcP/DV\nSsjq+tG+JZIVADMxvEqVIF94JMpuY7o6U74SnUUrAi0h9GkWmeYh/Ucb3PLMe5sF\noZriRdAKc96KB0eUphfWZNtptOCqV6qtYqZZ/UCotp99xzrDkf8jGkm/iBljxb+v\n0NTg8JwfmykCj63YhTKpHf0+N/EK5yX1KUYtlkLaf8OPlsp/1lqAL6CdnydGEd/s\nAA==\n-----END CERTIFICATE-----", + "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEArmUUhzm5sxxVr/ku4+6cKqnKgZvDl+e/6CNCAq8YMZXTpJP6\n4DjDPny9+8s9MbFabEG3HqjHSKh3b/Ew3FXr8LFa9YuWuAi3W9ii29sZsOwmzIfQ\nhIOIaP1YNR50DDjbAGTaxzRhV40ZKSOCkaUTvl3do5d8ttD1VlF2r0w0DfclrVcs\nS5v3kw889gJ3s3hNkatfQiSt4qLNMehZ8Xofx58DIAOk/f3Vusj3372PsJwKX39c\nHX/NpIHCHKE8qaGCpDqv0daH766eJ065dqO9DuorXPaPT/nxw4PAccb9fByLrTam\ns0ThvSlZo6V3yvHR4KN7mmvbViEmWRy+9oiJEwIDAQABAoIBACV47rpHuxEza24O\nevbbFI9OQIcs8xA26dN1j/+HpAkzinB4o5V+XOWWZDQwbYu58hYE4NYjqf6AxHk3\nOCqAA9yKH2NXhSEyLkP7/rKDF7geZg/YtwNiR/NXTJbNXl4p8VTaVvAq3yey188x\nJCMrd1yWSsOWD2Qw7iaIBpqQIzdEovPE4CG6GmaIRSuqYuoCfbVTFa6YST7jmOTv\nEpG+x6yJZzJ4o0vvfKbKfvPmQizjL+3nAW9g+kgXJmA1xTujiky7bzm2sLK2Slrx\n5rY73mXMElseSlhkYzWwyRmC6M+rWALXqOhVDgIGbaBV4IOzuyH/CUt0wy3ZMIpv\nMOWMNoECgYEA1LHsepCmwjlDF3yf/OztCr/DYqM4HjAY6FTmH+xz1Zjd5R1XOq60\nYFRkhs/e2D6M/gSX6hMqS9sCkg25yRJk3CsPeoS9v5MoiZQA8XlQNovcpWUI2DCm\naZRIsdovFgIqMHYh/Y4CYouee7Nz7foICzO9svrYrbOIVmMwDVJ8vzMCgYEA0ebg\nm0lCuOunyxaSBqOv4Q4sk7Ix0702dIrW0tsUJyU+xuXYH1P/0m+t4/KUU2cNwsg3\njiNzQR9QKvF8yTB5TB4Ye/9dKlu+BEOskvCpuErxc6iVJ+TZOrQDDPNcq56qez5b\nvv9EDdgzpjkjO+hS1j3kYOuG11hrP4Pox4PijqECgYEAz6RTZORKqFoWsZss5VK3\np0LGkEkfw/jYmBgqAQhpnSD7n20hd1yPI2vAKAxPVXTbWDFLzWygYiWRQNy9fxrB\n9F7lYYqtY5VagdVHhnYUZOvtoFoeZFA6ZeAph9elGCtM3Lq3PD2i/mmncsQibTUn\nHSiKDWzuk8UtWIjEpHze5BkCgYEAifD9eG+bzqTnn1qU2pIl2nQTLXj0r97v84Tu\niqF4zAT5DYMtFeGBBI1qLJxVh7342CH2CI4ZhxmJ+L68sAcQH8rDcnGui1DBPlIv\nDl3kW3280bJfW1lUvPRh8NfZ9dsO1HF1n75nveVwg/OWyR7zmWIRPPRrqAeua45H\nox5z/CECgYBqwlEBjue8oOkVVu/lKi6fo6jr+0u25K9dp9azHYwE0KNHX0MwRALw\nWbPgcjge23sfhbeqVvHo0JYBdRsk/OBuW73/9Sb5E+6auDoubCjC0cAIvs23MPju\nsMvKak4mQkI19foRXBydB/DDkK26iei/l0xoygrw50v2HErsQ7JcHw==\n-----END RSA PRIVATE KEY-----", + "id": "5b8f908b5495452aa13beede0afc5d99", + "create_time": "2016-06-27 08:14:42", + "update_time": "2016-06-27 08:14:42" + } + ], + "instance_num": "1" + } + +Status Code +^^^^^^^^^^^ + +- Normal + + 200 + +- Error + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault System error. + 503 serviceUnavailable The service is unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_xd_0000.html b/elb/api-ref/elb_xd_0000.html new file mode 100644 index 000000000..d8dfd3d61 --- /dev/null +++ b/elb/api-ref/elb_xd_0000.html @@ -0,0 +1,106 @@ + + +

      Change History

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Released On

      +

      Description

      +

      2021-07-27

      +

      Modified the following content:

      +

      Added fields and descriptions about idle timeout duration.

      +

      2021-06-10

      +

      Modified the following content:

      +

      Added fields and descriptions about session stickiness duration.

      +

      2021-06-08

      +

      This release incorporates the following changes:

      +

      Added notes in Tag to state that the APIs can also be used to add tags to or remove tags from dedicated load balancers or their listeners.

      +

      2021-05-28

      +

      This release incorporates the following changes:

      +

      Changed enhanced load balancer to shared load balancer.

      +

      2021-02-05

      +

      This release incorporates the following changes:

      +

      Added Dedicated Load Balancer APIs.

      +

      Added API Call Precaution.

      +

      Added API Call Precaution.

      +

      Added API Call Precaution.

      +

      2020-02-26

      +

      This release incorporates the following changes:

      +

      Added Tag.

      +

      2019-06-11

      +

      This release incorporates the following changes:

      +

      Changed the value descriptions of the tag key and value in section "Tag".

      +

      2019-05-16

      +

      This release incorporates the following changes:

      +

      Added parameter project_id in sections of enhanced load balancer APIs.

      +

      2019-03-20

      +

      This release incorporates the following changes:

      +

      Added parameters created_at and updated_at in sections related to enhanced load balancers and listeners.

      +

      2018-11-30

      +

      This release incorporates the following changes:

      +

      Added the sni_container_refs parameter for enhanced load balancer APIs.

      +

      2018-10-12

      +

      Added API Version.

      +

      2018-09-13

      +

      This release incorporates the following changes:

      +

      Added descriptions of parameters loadbalancer_id and listener_id in Load Balancer and Listener.

      +

      2018-08-30

      +

      This release incorporates the following changes:

      +

      Changed the full name of the service to Elastic Load Balancing.

      +

      2018-07-20

      +

      This release incorporates the following changes:

      +

      Modified the constraints for adding a listener using the IP protocol (or in DR mode).

      +

      2018-05-30

      +

      This issue is the first official release.

      +
      + + + diff --git a/elb/api-ref/elb_xd_0000.rst b/elb/api-ref/elb_xd_0000.rst new file mode 100644 index 000000000..07f23df06 --- /dev/null +++ b/elb/api-ref/elb_xd_0000.rst @@ -0,0 +1,86 @@ +Change History +============== + ++-----------------------------------------------------------+-----------------------------------------------------------+ +| **Released On** | **Description** | ++===========================================================+===========================================================+ +| 2021-07-27 | Modified the following content: | +| | | +| | Added fields and descriptions about idle timeout | +| | duration. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2021-06-10 | Modified the following content: | +| | | +| | Added fields and descriptions about session stickiness | +| | duration. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2021-06-08 | This release incorporates the following changes: | +| | | +| | Added notes in `Tag `__ to state | +| | that the APIs can also be used to add tags to or remove | +| | tags from dedicated load balancers or their listeners. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2021-05-28 | This release incorporates the following changes: | +| | | +| | Changed enhanced load balancer to shared load balancer. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2021-02-05 | This release incorporates the following changes: | +| | | +| | Added `Dedicated Load Balancer | +| | APIs `__. | +| | | +| | Added `API Call | +| | Precaution `__. | +| | | +| | Added `API Call | +| | Precaution `__. | +| | | +| | Added `API Call | +| | Precaution `__. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2020-02-26 | This release incorporates the following changes: | +| | | +| | Added `Tag `__. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2019-06-11 | This release incorporates the following changes: | +| | | +| | Changed the value descriptions of the tag key and value | +| | in section "Tag". | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2019-05-16 | This release incorporates the following changes: | +| | | +| | Added parameter **project_id** in sections of enhanced | +| | load balancer APIs. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2019-03-20 | This release incorporates the following changes: | +| | | +| | Added parameters **created_at** and **updated_at** in | +| | sections related to enhanced load balancers and | +| | listeners. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2018-11-30 | This release incorporates the following changes: | +| | | +| | Added the **sni_container_refs** parameter for enhanced | +| | load balancer APIs. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2018-10-12 | Added `API Version `__. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2018-09-13 | This release incorporates the following changes: | +| | | +| | Added descriptions of parameters **loadbalancer_id** and | +| | **listener_id** in `Load | +| | Balancer `__ and | +| | `Listener `__. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2018-08-30 | This release incorporates the following changes: | +| | | +| | Changed the full name of the service to Elastic Load | +| | Balancing. | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2018-07-20 | This release incorporates the following changes: | +| | | +| | Modified the constraints for adding a listener using the | +| | IP protocol (or in DR mode). | ++-----------------------------------------------------------+-----------------------------------------------------------+ +| 2018-05-30 | This issue is the first official release. | ++-----------------------------------------------------------+-----------------------------------------------------------+ diff --git a/elb/api-ref/elb_zq_0000.html b/elb/api-ref/elb_zq_0000.html new file mode 100644 index 000000000..1c946874d --- /dev/null +++ b/elb/api-ref/elb_zq_0000.html @@ -0,0 +1,31 @@ + + +

      Shared Load Balancer APIs

      + + + + + diff --git a/elb/api-ref/elb_zq_0000.rst b/elb/api-ref/elb_zq_0000.rst new file mode 100644 index 000000000..b1c8b7945 --- /dev/null +++ b/elb/api-ref/elb_zq_0000.rst @@ -0,0 +1,14 @@ +Shared Load Balancer APIs +========================= + +- `API Call Precaution `__ +- `Load Balancer `__ +- `Listener `__ +- `Backend Server Group `__ +- `Backend Server `__ +- `Health Check `__ +- `Forwarding Policy `__ +- `Forwarding Rule `__ +- `Whitelist `__ +- `Certificate `__ +- `Tag `__ diff --git a/elb/api-ref/elb_zq_bm_0000.html b/elb/api-ref/elb_zq_bm_0000.html new file mode 100644 index 000000000..77c2ff1ed --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0000.html @@ -0,0 +1,23 @@ + + +

      Whitelist

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_bm_0000.rst b/elb/api-ref/elb_zq_bm_0000.rst new file mode 100644 index 000000000..07d19bdaf --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0000.rst @@ -0,0 +1,10 @@ +Whitelist +========= + +- `Adding a Whitelist `__ +- `Querying Whitelists `__ +- `Querying Details of a Whitelist `__ +- `Updating a Whitelist `__ +- `Deleting a Whitelist `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_bm_0001.html b/elb/api-ref/elb_zq_bm_0001.html new file mode 100644 index 000000000..14553d967 --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0001.html @@ -0,0 +1,192 @@ + + +

      Adding a Whitelist

      +

      Function

      This API is used to add a whitelist to control access to a specific listener. After a whitelist is added, only IP addresses in the whitelist can access the listener.

      + +

      URI

      POST /v2.0/lbaas/whitelists

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      whitelist

      +

      Yes

      +

      Object

      +

      Specifies the whitelist. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 whitelist parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the whitelist is used.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +

      Only one whitelist can be created for a listener.

      +

      enable_whitelist

      +

      No

      +

      Boolean

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      The default value is true.

      +

      whitelist

      +

      No

      +

      String

      +

      Specifies the IP addresses in the whitelist. Use commas (,) to separate multiple IP addresses.

      +

      You can specify an IP address, for example, 192.168.11.1.

      +

      You can also specify an IP address range, for example, 192.168.0.1/24.

      +

      The default value is an empty string, that is, "".

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 3 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      whitelist

      +

      Object

      +

      Specifies the whitelist. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 whitelist parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the whitelist ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the whitelist is used.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the whitelist is added.

      +

      enable_whitelist

      +

      Boolean

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      whitelist

      +

      String

      +

      Specifies the IP addresses in the whitelist.

      +
      + + +

      Example Request

      • Example request: Adding a whitelist
        POST https://{Endpoint}/v2.0/lbaas/whitelists 
        +
        +{ 
        +    "whitelist": { 
        +        "listener_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "enable_whitelist": true,  
        +        "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +    } 
        +}
        +
      + +

      Example Response

      • Example response
        { 
        +    "whitelist": { 
        +        "id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "listener_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "tenant_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "enable_whitelist": true,  
        +        "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +    } 
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Whitelist + + + diff --git a/elb/api-ref/elb_zq_bm_0001.rst b/elb/api-ref/elb_zq_bm_0001.rst new file mode 100644 index 000000000..2665e9a03 --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0001.rst @@ -0,0 +1,157 @@ +Adding a Whitelist +================== + +Function +^^^^^^^^ + +This API is used to add a whitelist to control access to a specific listener. After a whitelist is added, only IP addresses in the whitelist can access the listener. + +URI +^^^ + +POST /v2.0/lbaas/whitelists + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | whitelist | Yes | Object | Specifies the whitelist. For details, see `Table | + | | | | 2 <#elb_zq_bm_0001__en-us_topic_0143878053_table7163025>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 2** **whitelist** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the whitelist | + | | | | is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | Yes | String | Specifies the listener ID. | + | | | | | + | | | | Only one whitelist can be | + | | | | created for a listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_whitelist | No | Boolean | Specifies whether to enable | + | | | | access control. | + | | | | | + | | | | **true**: Access control is | + | | | | enabled. | + | | | | | + | | | | **false**: Access control | + | | | | is disabled. | + | | | | | + | | | | The default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | whitelist | No | String | Specifies the IP addresses | + | | | | in the whitelist. Use | + | | | | commas (,) to separate | + | | | | multiple IP addresses. | + | | | | | + | | | | You can specify an IP | + | | | | address, for example, | + | | | | 192.168.11.1. | + | | | | | + | | | | You can also specify an IP | + | | | | address range, for example, | + | | | | 192.168.0.1/24. | + | | | | | + | | | | The default value is an | + | | | | empty string, that is, | + | | | | **""**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | whitelist | Object | Specifies the whitelist. For details, see `Table | + | | | 4 <#elb_zq_bm_0001__en-us_topic_0143878053_table24244005>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 4** **whitelist** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the whitelist ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the whitelist is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the whitelist is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_whitelist | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | **true**: Access control is enabled. | + | | | | + | | | **false**: Access control is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | whitelist | String | Specifies the IP addresses in the | + | | | whitelist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Adding a whitelist + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/whitelists + + { + "whitelist": { + "listener_id": "eabfefa3fd1740a88a47ad98e132d238", + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "whitelist": { + "id": "eabfefa3fd1740a88a47ad98e132d238", + "listener_id": "eabfefa3fd1740a88a47ad98e132d238", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Whitelist `__ diff --git a/elb/api-ref/elb_zq_bm_0002.html b/elb/api-ref/elb_zq_bm_0002.html new file mode 100644 index 000000000..2f7506a4d --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0002.html @@ -0,0 +1,258 @@ + + +

      Querying Whitelists

      +

      Function

      This API is used to query the whitelists. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/whitelists

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the whitelist from which pagination query starts, that is, the ID of the last whitelist on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of whitelists on each page. If this parameter is not set, all whitelists are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the whitelist ID.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the whitelist is used.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which the whitelist is added.

      +

      enable_whitelist

      +

      No

      +

      Boolean

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      whitelist

      +

      No

      +

      String

      +

      Specifies the IP addresses in the whitelist.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      whitelists

      +

      Array

      +

      Lists the whitelists. For details, see Table 3.

      +

      whitelists_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query.

      +

      For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 whitelist parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the whitelist ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the whitelist is used.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the whitelist is added.

      +

      enable_whitelist

      +

      Bool

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      whitelist

      +

      String

      +

      Specifies the IP addresses in the whitelist.

      +
      + + + + + + + + + + + + + + + + +
      Table 4 whitelists_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page.

      +

      The value can be next or previous. The value next indicates the href containing the URL of the next page, and previous indicates the href containing the URL of the previous page.

      +
      + + +

      Example Request

      • Example request 1: Querying all whitelists
        GET https://{Endpoint}/v2.0/lbaas/whitelists
        +
      • Example request 2: Querying the whitelists added to listener eabfefa3fd1740a88a47ad98e132d230
        GET https://{Endpoint}/v2.0/lbaas/whitelists?listener_id=eabfefa3fd1740a88a47ad98e132d230
        +
      + +

      Example Response

      • Example response 1
        { 
        +    "whitelists": [ 
        +        { 
        +            "id": "eabfefa3fd1740a88a47ad98e132d238",  
        +            "listener_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +            "tenant_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +            "enable_whitelist": true,  
        +            "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +        },  
        +        { 
        +            "id": "eabfefa3fd1740a88a47ad98e132d326",  
        +            "listener_id": "eabfefa3fd1740a88a47ad98e132d327",  
        +            "tenant_id": "eabfefa3fd1740a88a47ad98e132d436",  
        +            "enable_whitelist": true,  
        +            "whiltelist": "192.168.12.1,192.168.1.1/24,192.168.203.18/8,100.164.5.1/24" 
        +        } 
        +    ] 
        +}
        +
      • Example response 2
        { 
        +    "whitelists": [ 
        +        { 
        +            "id": "eabfefa3fd1740a88a47ad98e132d238",  
        +            "listener_id": "eabfefa3fd1740a88a47ad98e132d230",  
        +            "tenant_id": "eabfefa3fd1740a88a47ad98e132d239",  
        +            "enable_whitelist": true,  
        +            "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +        },  
        +        { 
        +            "id": "eabfefa3fd1740a88a47ad98e132d326",  
        +            "listener_id": "eabfefa3fd1740a88a47ad98e132d327",  
        +            "tenant_id": "eabfefa3fd1740a88a47ad98e132d439",  
        +            "enable_whitelist": true,  
        +            "whiltelist": "192.168.12.1,192.168.1.1/24,192.168.203.18/8,100.164.5.1/24" 
        +        } 
        +    ] 
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Whitelist + + + diff --git a/elb/api-ref/elb_zq_bm_0002.rst b/elb/api-ref/elb_zq_bm_0002.rst new file mode 100644 index 000000000..818b7801d --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0002.rst @@ -0,0 +1,229 @@ +Querying Whitelists +=================== + +Function +^^^^^^^^ + +This API is used to query the whitelists. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/whitelists + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | whitelist from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | whitelist on the previous | + | | | | page. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | whitelists on each page. If | + | | | | this parameter is not set, | + | | | | all whitelists are queried | + | | | | by default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the whitelist ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the whitelist | + | | | | is used. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | No | String | Specifies the ID of the | + | | | | listener to which the | + | | | | whitelist is added. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enable_whitelist | No | Boolean | Specifies whether to enable | + | | | | access control. | + | | | | | + | | | | **true**: Access control is | + | | | | enabled. | + | | | | | + | | | | **false**: Access control | + | | | | is disabled. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | whitelist | No | String | Specifies the IP addresses | + | | | | in the whitelist. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | whitelists | Array | Lists the whitelists. For details, | + | | | see `Table | + | | | 3 <#elb_zq_bm_0002__en-u | + | | | s_topic_0143878052_table10368864>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | whitelists_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | | + | | | For details, see `Table | + | | | 4 <#elb_zq_bm_0002__en-u | + | | | s_topic_0143878052_table24944072>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** **whitelist** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the whitelist ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the whitelist is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the whitelist is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_whitelist | Bool | Specifies whether to enable access | + | | | control. | + | | | | + | | | **true**: Access control is enabled. | + | | | | + | | | **false**: Access control is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | whitelist | String | Specifies the IP addresses in the | + | | | whitelist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **whitelists_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. | + | | | | + | | | The value can be **next** or | + | | | **previous**. The value **next** | + | | | indicates the href containing the URL | + | | | of the next page, and **previous** | + | | | indicates the href containing the URL | + | | | of the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all whitelists + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/whitelists + +- Example request 2: Querying the whitelists added to listener eabfefa3fd1740a88a47ad98e132d230 + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/whitelists?listener_id=eabfefa3fd1740a88a47ad98e132d230 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "whitelists": [ + { + "id": "eabfefa3fd1740a88a47ad98e132d238", + "listener_id": "eabfefa3fd1740a88a47ad98e132d238", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + }, + { + "id": "eabfefa3fd1740a88a47ad98e132d326", + "listener_id": "eabfefa3fd1740a88a47ad98e132d327", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d436", + "enable_whitelist": true, + "whiltelist": "192.168.12.1,192.168.1.1/24,192.168.203.18/8,100.164.5.1/24" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "whitelists": [ + { + "id": "eabfefa3fd1740a88a47ad98e132d238", + "listener_id": "eabfefa3fd1740a88a47ad98e132d230", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d239", + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + }, + { + "id": "eabfefa3fd1740a88a47ad98e132d326", + "listener_id": "eabfefa3fd1740a88a47ad98e132d327", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d439", + "enable_whitelist": true, + "whiltelist": "192.168.12.1,192.168.1.1/24,192.168.203.18/8,100.164.5.1/24" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Whitelist `__ diff --git a/elb/api-ref/elb_zq_bm_0003.html b/elb/api-ref/elb_zq_bm_0003.html new file mode 100644 index 000000000..7cc6394d0 --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0003.html @@ -0,0 +1,125 @@ + + +

      Querying Details of a Whitelist

      +

      Function

      This API is used to query details about a whitelist using its ID.

      + +

      URI

      GET /v2.0/lbaas/whitelists/{whitelist_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      whitelist_id

      +

      Yes

      +

      String

      +

      Specifies the whitelist ID.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      whitelist

      +

      Object

      +

      Specifies the whitelist. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 whitelist parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the whitelist ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the whitelist is added.

      +

      enable_whitelist

      +

      Boolean

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      whitelist

      +

      String

      +

      Specifies the IP addresses in the whitelist.

      +
      + + +

      Example Request

      • Example request: Querying details of a whitelist
        GET https://{Endpoint}/v2.0/lbaas/whitelists/09e64049-2ab0-4763-a8c5-f4207875dc3e
        +
      + +

      Example Response

      • Example response
        { 
        +    "whitelist": { 
        +        "id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "listener_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "tenant_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "enable_whitelist": true,  
        +        "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +    } 
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Whitelist + + + diff --git a/elb/api-ref/elb_zq_bm_0003.rst b/elb/api-ref/elb_zq_bm_0003.rst new file mode 100644 index 000000000..8bf0aaf0e --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0003.rst @@ -0,0 +1,98 @@ +Querying Details of a Whitelist +=============================== + +Function +^^^^^^^^ + +This API is used to query details about a whitelist using its ID. + +URI +^^^ + +GET /v2.0/lbaas/whitelists/{whitelist_id} + +.. table:: **Table 1** Parameter description + + ============ ========= ====== =========================== + Parameter Mandatory Type Description + ============ ========= ====== =========================== + whitelist_id Yes String Specifies the whitelist ID. + ============ ========= ====== =========================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | whitelist | Object | Specifies the whitelist. For details, see `Table | + | | | 3 <#elb_zq_bm_0003__en-us_topic_0143878051_table21950591>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **whitelist** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the whitelist ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding rule is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the whitelist is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_whitelist | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | **true**: Access control is enabled. | + | | | | + | | | **false**: Access control is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | whitelist | String | Specifies the IP addresses in the | + | | | whitelist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a whitelist + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/whitelists/09e64049-2ab0-4763-a8c5-f4207875dc3e + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "whitelist": { + "id": "eabfefa3fd1740a88a47ad98e132d238", + "listener_id": "eabfefa3fd1740a88a47ad98e132d238", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Whitelist `__ diff --git a/elb/api-ref/elb_zq_bm_0004.html b/elb/api-ref/elb_zq_bm_0004.html new file mode 100644 index 000000000..9d8d91500 --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0004.html @@ -0,0 +1,192 @@ + + +

      Updating a Whitelist

      +

      Function

      This API is used to update a whitelist. You can enable or disable the whitelist function or change IP addresses in the whitelist. If you change IP addresses in the whitelist, it will be deleted, and a new one is generated.

      + +

      URI

      PUT /v2.0/lbaas/whitelists/{whitelist_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      whitelist_id

      +

      Yes

      +

      String

      +

      Specifies the whitelist ID.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      whitelist

      +

      Yes

      +

      Object

      +

      Specifies the whitelist. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 whitelist parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      enable_whitelist

      +

      No

      +

      Boolean

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      The default value is true.

      +

      whitelist

      +

      No

      +

      String

      +

      Specifies the IP addresses in the whitelist. Use commas (,) to separate multiple IP addresses.

      +

      You can specify an IP address, for example, 192.168.11.1.

      +

      You can also specify an IP address range, for example, 192.168.0.1/24.

      +

      The default value is an empty string, that is, "".

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      whitelist

      +

      Object

      +

      Specifies the whitelist. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 whitelist parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the whitelist ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the whitelist is used.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the whitelist is added.

      +

      enable_whitelist

      +

      Boolean

      +

      Specifies whether to enable access control.

      +

      true: Access control is enabled.

      +

      false: Access control is disabled.

      +

      whitelist

      +

      String

      +

      Specifies the IP addresses in the whitelist.

      +
      + + +

      Example Request

      • Example request: Updating a whitelist
        PUT https://{Endpoint}/v2.0/lbaas/whitelists/dcaf46f1-037c-4f63-a31f-e0c4c18032c7 
        +
        +{ 
        +    "whitelist": { 
        +        "enable_whitelist": true,  
        +        "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +    } 
        +}
        +
      + +

      Example Response

      • Example response
        { 
        +    "whitelist": { 
        +        "id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "listener_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "tenant_id": "eabfefa3fd1740a88a47ad98e132d238",  
        +        "enable_whitelist": true,  
        +        "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" 
        +    } 
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Whitelist + + + diff --git a/elb/api-ref/elb_zq_bm_0004.rst b/elb/api-ref/elb_zq_bm_0004.rst new file mode 100644 index 000000000..37e197c7b --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0004.rst @@ -0,0 +1,147 @@ +Updating a Whitelist +==================== + +Function +^^^^^^^^ + +This API is used to update a whitelist. You can enable or disable the whitelist function or change IP addresses in the whitelist. If you change IP addresses in the whitelist, it will be deleted, and a new one is generated. + +URI +^^^ + +PUT /v2.0/lbaas/whitelists/{whitelist_id} + +.. table:: **Table 1** Parameter description + + ============ ========= ====== =========================== + Parameter Mandatory Type Description + ============ ========= ====== =========================== + whitelist_id Yes String Specifies the whitelist ID. + ============ ========= ====== =========================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | whitelist | Yes | Object | Specifies the whitelist. For details, see `Table | + | | | | 3 <#elb_zq_bm_0004__en-us_topic_0143878054_table8047771>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **whitelist** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | enable_whitelist | No | Boolean | Specifies whether to enable | + | | | | access control. | + | | | | | + | | | | **true**: Access control is | + | | | | enabled. | + | | | | | + | | | | **false**: Access control | + | | | | is disabled. | + | | | | | + | | | | The default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | whitelist | No | String | Specifies the IP addresses | + | | | | in the whitelist. Use | + | | | | commas (,) to separate | + | | | | multiple IP addresses. | + | | | | | + | | | | You can specify an IP | + | | | | address, for example, | + | | | | 192.168.11.1. | + | | | | | + | | | | You can also specify an IP | + | | | | address range, for example, | + | | | | 192.168.0.1/24. | + | | | | | + | | | | The default value is an | + | | | | empty string, that is, | + | | | | **""**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Parameter description + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | whitelist | Object | Specifies the whitelist. For details, see `Table | + | | | 5 <#elb_zq_bm_0004__en-us_topic_0143878054_table5548368>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **whitelist** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the whitelist ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the whitelist is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the whitelist is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | enable_whitelist | Boolean | Specifies whether to enable access | + | | | control. | + | | | | + | | | **true**: Access control is enabled. | + | | | | + | | | **false**: Access control is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | whitelist | String | Specifies the IP addresses in the | + | | | whitelist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating a whitelist + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/whitelists/dcaf46f1-037c-4f63-a31f-e0c4c18032c7 + + { + "whitelist": { + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "whitelist": { + "id": "eabfefa3fd1740a88a47ad98e132d238", + "listener_id": "eabfefa3fd1740a88a47ad98e132d238", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "enable_whitelist": true, + "whitelist": "192.168.11.1,192.168.0.1/24,192.168.201.18/8,100.164.0.1/24" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Whitelist `__ diff --git a/elb/api-ref/elb_zq_bm_0005.html b/elb/api-ref/elb_zq_bm_0005.html new file mode 100644 index 000000000..01d3dee14 --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0005.html @@ -0,0 +1,49 @@ + + +

      Deleting a Whitelist

      +

      Function

      This API is used to delete a specific whitelist.

      + +

      URI

      DELETE /v2.0/lbaas/whitelists/{whitelist_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      whitelist_id

      +

      Yes

      +

      String

      +

      Specifies the whitelist ID.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Deleting a whitelist
        DELETE https://{Endpoint}/v2.0/lbaas/whitelists/35cb8516-1173-4035-8dae-0dae3453f37f
        +
      + +

      Example Response

      • Example response 1

        None

        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Whitelist + + + diff --git a/elb/api-ref/elb_zq_bm_0005.rst b/elb/api-ref/elb_zq_bm_0005.rst new file mode 100644 index 000000000..2041e1b0a --- /dev/null +++ b/elb/api-ref/elb_zq_bm_0005.rst @@ -0,0 +1,53 @@ +Deleting a Whitelist +==================== + +Function +^^^^^^^^ + +This API is used to delete a specific whitelist. + +URI +^^^ + +DELETE /v2.0/lbaas/whitelists/{whitelist_id} + +.. table:: **Table 1** Parameter description + + ============ ========= ====== =========================== + Parameter Mandatory Type Description + ============ ========= ====== =========================== + whitelist_id Yes String Specifies the whitelist ID. + ============ ========= ====== =========================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a whitelist + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/whitelists/35cb8516-1173-4035-8dae-0dae3453f37f + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + None + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Whitelist `__ diff --git a/elb/api-ref/elb_zq_bq_0000.html b/elb/api-ref/elb_zq_bq_0000.html new file mode 100644 index 000000000..9d0c53bab --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0000.html @@ -0,0 +1,39 @@ + + +

      Tag

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_bq_0000.rst b/elb/api-ref/elb_zq_bq_0000.rst new file mode 100644 index 000000000..49476001b --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0000.rst @@ -0,0 +1,18 @@ +Tag +=== + +- `Adding a Tag to a Load Balancer `__ +- `Batch Adding or Deleting Load Balancer Tags `__ +- `Querying All Tags of a Load Balancer `__ +- `Querying the Tags of All Load Balancers `__ +- `Querying Load Balancers by Tag `__ +- `Deleting a Tag from a Load Balancer `__ +- `Adding a Tag to a Listener `__ +- `Batch Adding or Deleting Listener Tags `__ +- `Querying All Tags of a Listener `__ +- `Querying the Tags of All Listeners `__ +- `Querying Listeners by Tag `__ +- `Deleting a Tag from a Listener `__ +- `Status Codes `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_bq_0001.html b/elb/api-ref/elb_zq_bq_0001.html new file mode 100644 index 000000000..c29f56f55 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0001.html @@ -0,0 +1,130 @@ + + +

      Adding a Tag to a Load Balancer

      +

      Function

      This API is used to add a tag to a specific load balancer for easier management.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      A maximum of 20 tags can be added to a load balancer.

      +Note the following when you add tags:
      • If there are duplicate keys in the request body, an error is reported.
      • If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten.
      + + +

      URI

      POST /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the load balancer to which a tag is to be added.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tag

      +

      Yes

      +

      Object

      +

      Specifies the tag. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 tag parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a load balancer must be unique.
      +

      value

      +

      Yes

      +

      String

      +

      Specifies the tag value.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Response

      None

      + +

      Example Request

      • Example request
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags
        +
        +{
        +    "tag": {
        +        "key": "key1", 
        +        "value": "value1"
        +    }
        +}
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0001.rst b/elb/api-ref/elb_zq_bq_0001.rst new file mode 100644 index 000000000..5fa541ecd --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0001.rst @@ -0,0 +1,125 @@ +Adding a Tag to a Load Balancer +=============================== + +Function +^^^^^^^^ + +This API is used to add a tag to a specific load balancer for easier management. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +A maximum of 20 tags can be added to a load balancer. + +Note the following when you add tags: + +- If there are duplicate keys in the request body, an error is reported. +- If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten. + +URI +^^^ + +POST /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags + +.. table:: **Table 1** Parameter description + + =============== ============= ======== ==================================================================== + Parameter **Mandatory** **Type** Description + =============== ============= ======== ==================================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + loadbalancer_id Yes String Specifies the ID of the load balancer to which a tag is to be added. + =============== ============= ======== ==================================================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+---------------+----------+----------------------------------------------------------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +===========+===============+==========+============================================================================+ + | tag | Yes | Object | Specifies the tag. For details, see `Table | + | | | | 3 <#elb_zq_bq_0 | + | | | | 001__en-us_topic_0109852830_en-us_topic_0101985069_table3507237511564>`__. | + +-----------+---------------+----------+----------------------------------------------------------------------------+ + +.. table:: **Table 3** **tag** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key. | + | | | | | + | | | | - Cannot be left blank. | + | | | | - Can contain a maximum of | + | | | | 36 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + | | | | | + | | | | - The tag key of a load | + | | | | balancer must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the tag value. | + | | | | | + | | | | - Can contain a maximum of | + | | | | 43 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags + + { + "tag": { + "key": "key1", + "value": "value1" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0002.html b/elb/api-ref/elb_zq_bq_0002.html new file mode 100644 index 000000000..1882c4db0 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0002.html @@ -0,0 +1,166 @@ + + +

      Batch Adding or Deleting Load Balancer Tags

      +

      Function

      This API is used to batch add tags to or delete tags from a load balancer.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      A maximum of 20 tags can be added to a load balancer.

      +

      This API is idempotent.

      +
      • Note the following when you add tags:
        • If there are duplicate keys in the request body, an error is reported.
        • If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten.
        +
      • Note the following when you delete the tags:
        • If the tag to be deleted does not exist, the deletion is considered successful by default.
        • The value range of the tag character set is not verified.
        • The tag structure body cannot be missing, and the key cannot be left blank or set to an empty string.
        +
      + +

      URI

      POST /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags/action

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the load balancer to which tags are to be added or from which tags are to be deleted.

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tags

      +

      Yes

      +

      Array

      +

      Lists the tags. For details, see Table 3.

      +

      action

      +

      Yes

      +

      String

      +

      Specifies the operation type.

      +

      The value can be one of the following:

      +
      • create: adds tags to the load balancer.
      • delete: deletes tags from the load balancer.
      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a load balancer must be unique.
      +

      value

      +

      Yes

      +

      String

      +

      Specifies the tag value.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Response

      None

      + +

      Example Request

      • Example request 1
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action
        +
        +{
        +    "action": "create", 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "value": "value1"
        +        }, 
        +        {
        +            "key": "key2", 
        +            "value": "value2"
        +        }
        +    ]
        +}
        +
      • Example request 2
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action
        +
        +{
        +    "action": "delete", 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "value": "value1"
        +        }, 
        +        {
        +            "key": "key2", 
        +            "value": "value2"
        +        }
        +    ]
        +}
        +
      + +

      Example Response

      • Example response 1

        None

        +
      • Example response 2

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0002.rst b/elb/api-ref/elb_zq_bq_0002.rst new file mode 100644 index 000000000..79970176a --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0002.rst @@ -0,0 +1,180 @@ +Batch Adding or Deleting Load Balancer Tags +=========================================== + +Function +^^^^^^^^ + +This API is used to batch add tags to or delete tags from a load balancer. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +A maximum of 20 tags can be added to a load balancer. + +This API is idempotent. + +- Note the following when you add tags: + + - If there are duplicate keys in the request body, an error is reported. + - If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten. + +- Note the following when you delete the tags: + + - If the tag to be deleted does not exist, the deletion is considered successful by default. + - The value range of the tag character set is not verified. + - The tag structure body cannot be missing, and the key cannot be left blank or set to an empty string. + +URI +^^^ + +POST /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags/action + +.. table:: **Table 1** Parameter description + + +-----------------+---------------+----------+----------------------------------------------------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=================+===============+==========+======================================================================+ + | project_id | Yes | String | Specifies the ID of the project where the tag is used. | + +-----------------+---------------+----------+----------------------------------------------------------------------+ + | loadbalancer_id | Yes | String | Specifies the ID of the load balancer to which tags are to be added | + | | | | or from which tags are to be deleted. | + +-----------------+---------------+----------+----------------------------------------------------------------------+ + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | tags | Yes | Array | Lists the tags. For | + | | | | details, see `Table | + | | | | 3 <#elb_z | + | | | | q_bq_0002__en-us_topic_0109 | + | | | | 852827_en-us_topic_00941159 | + | | | | 25_table16812991114447>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | Yes | String | Specifies the operation | + | | | | type. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **create**: adds tags to | + | | | | the load balancer. | + | | | | - **delete**: deletes tags | + | | | | from the load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key. | + | | | | | + | | | | - Cannot be left blank. | + | | | | - Can contain a maximum of | + | | | | 36 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + | | | | | + | | | | - The tag key of a load | + | | | | balancer must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the tag value. | + | | | | | + | | | | - Can contain a maximum of | + | | | | 43 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1 + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action + + { + "action": "create", + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value2" + } + ] + } + +- Example request 2 + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action + + { + "action": "delete", + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value2" + } + ] + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + None + +- Example response 2 + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0003.html b/elb/api-ref/elb_zq_bq_0003.html new file mode 100644 index 000000000..f4ebfa8f2 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0003.html @@ -0,0 +1,120 @@ + + +

      Querying All Tags of a Load Balancer

      +

      Function

      This API is used to query all the tags of one load balancer.

      +

      You can also use this API for dedicated load balancers.

      + + +

      URI

      GET /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the load balancer whose tags are to be queried.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      tags

      +

      Array

      +

      Lists the tags. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a load balancer must be unique.
      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Example Request

      • Example request
        GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags
        +
      + +

      Example Response

      • Example response
        {
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "value": "value1"
        +        }, 
        +        {
        +            "key": "key2", 
        +            "value": "value2"
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0003.rst b/elb/api-ref/elb_zq_bq_0003.rst new file mode 100644 index 000000000..fb8ad72e6 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0003.rst @@ -0,0 +1,116 @@ +Querying All Tags of a Load Balancer +==================================== + +Function +^^^^^^^^ + +This API is used to query all the tags of one load balancer. + +|image1| + +You can also use this API for dedicated load balancers. + +URI +^^^ + +GET /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags + +.. table:: **Table 1** Parameter description + + =============== ============= ======== =================================================================== + Parameter **Mandatory** **Type** Description + =============== ============= ======== =================================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + loadbalancer_id Yes String Specifies the ID of the load balancer whose tags are to be queried. + =============== ============= ======== =================================================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+----------+---------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===========+==========+=============================================================================================+ + | tags | Array | Lists the tags. For details, see `Table | + | | | 3 <#elb_zq_bq_0003__en-us_topic_0109852826_en-us_topic_0094115924_table57471170114349>`__. | + +-----------+----------+---------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the tag key. | + | | | | + | | | - Cannot be left blank. | + | | | - Can contain a maximum of 36 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + | | | | + | | | - The tag key of a load balancer | + | | | must be unique. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the tag value. | + | | | | + | | | - Can contain a maximum of 43 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value2" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0004.html b/elb/api-ref/elb_zq_bq_0004.html new file mode 100644 index 000000000..d0d8f6ab3 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0004.html @@ -0,0 +1,117 @@ + + +

      Querying the Tags of All Load Balancers

      +

      Function

      This API is used to query the tags of all the load balancers.

      +

      You can also use this API for dedicated load balancers.

      + + +

      URI

      GET /v2.0/{project_id}/loadbalancers/tags

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      tags

      +

      Array

      +

      Lists the tags. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a load balancer must be unique.
      +

      values

      +

      Array

      +

      Lists the tag values.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Example Request

      • Example request
        GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/tags
        +
      + +

      Example Response

      • Example response
        {
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }, 
        +        {
        +            "key": "key2", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0004.rst b/elb/api-ref/elb_zq_bq_0004.rst new file mode 100644 index 000000000..82ff89dc3 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0004.rst @@ -0,0 +1,121 @@ +Querying the Tags of All Load Balancers +======================================= + +Function +^^^^^^^^ + +This API is used to query the tags of all the load balancers. + +|image1| + +You can also use this API for dedicated load balancers. + +URI +^^^ + +GET /v2.0/{project_id}/loadbalancers/tags + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ====================================================== + Parameter **Mandatory** **Type** Description + ========== ============= ======== ====================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + ========== ============= ======== ====================================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+----------+---------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===========+==========+=============================================================================================+ + | tags | Array | Lists the tags. For details, see `Table | + | | | 3 <#elb_zq_bq_0004__en-us_topic_0109852828_en-us_topic_0101983303_table1878907810595>`__. | + +-----------+----------+---------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the tag key. | + | | | | + | | | - Cannot be left blank. | + | | | - Can contain a maximum of 36 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + | | | | + | | | - The tag key of a load balancer | + | | | must be unique. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | values | Array | Lists the tag values. | + | | | | + | | | - Can contain a maximum of 43 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/tags + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "tags": [ + { + "key": "key1", + "values": [ + "value1", + "value2" + ] + }, + { + "key": "key2", + "values": [ + "value1", + "value2" + ] + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0005.html b/elb/api-ref/elb_zq_bq_0005.html new file mode 100644 index 000000000..611d7a5e6 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0005.html @@ -0,0 +1,352 @@ + + +

      Querying Load Balancers by Tag

      +

      Function

      This API is used to query load balancers using tags.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      None

      + +

      URI

      POST /v2.0/{project_id}/loadbalancers/resource_instances/action

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tags

      +

      No

      +

      Array

      +

      Specifies the included tags. A maximum of 20 keys are allowed for each query operation, and each key can have a maximum of 20 values.

      +

      The tag key cannot be left blank or set to an empty string.

      +

      Each tag key and each tag value of the same tag key must be unique.

      +

      limit

      +

      No

      +

      Integer

      +

      Sets the page size. This parameter is available when action is set to filter. Both the default value and maximum value are 1000, and the minimum value is 1. The value cannot be a negative integer.

      +

      offset

      +

      No

      +

      Integer

      +

      Specifies the index position. The query starts from the next load balancer indexed by this parameter. This parameter is not required when you query load balancers on the first page. The value in the response returned for querying the load balancers on the previous page will be included in this parameter for querying the load balancers on subsequent pages. This parameter is not available when action is set to count. If action is set to filter, the value must be a positive integer, and the default value is 0.

      +

      action

      +

      Yes

      +

      String

      +

      Identifies the operation. The value can be filter or count.

      +

      filter: indicates pagination query.

      +

      count: indicates that all load balancers meeting the search criteria will be returned.

      +

      matches

      +

      No

      +

      Array

      +

      Specifies the search criteria. The tag key is the parameter to match, for example, resource_name. value indicates the value of the match content. The key is a fixed dictionary value.

      +

      Currently, only resource_name can be used for search. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key. It contains a maximum of 127 Unicode characters and cannot be left blank. (This parameter is not verified in the search process.)

      +

      values

      +

      Yes

      +

      Array

      +

      Lists the tag values. Each tag value can contain a maximum of 255 Unicode characters. The values are in the OR relationship.

      +

      If no tag values in the list, the tag key is used for full search. If each value in the list starts with an asterisk (*), fuzzy match is performed based on the part after the asterisk.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 4 matches parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key for match.

      +

      The value can be one of the following:

      +
      • resource_name: indicates the resource name.
      +

      value

      +

      Yes

      +

      String

      +

      Specifies the tag value for match. Each tag value can contain a maximum of 255 Unicode characters.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 5 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      resources

      +

      Array

      +

      Lists the load balancers. For details, see Table 6.

      +

      total_count

      +

      Integer

      +

      Specifies the total number of queried records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 resource parameter description

      Parameter

      +

      Type

      +

      Description

      +

      resource_id

      +

      String

      +

      Specifies the resource ID.

      +

      resource_detail

      +

      Object

      +

      Specifies the resource details. The value is a resource object, used for extension. The value is left blank by default.

      +

      tags

      +

      Array

      +

      Lists the tags. If there is no tag, an empty array is used by default. For details, see Table 7.

      +

      resource_name

      +

      String

      +

      Specifies the resource name. This parameter is an empty string by default if there is no resource name.

      +

      super_resource_id

      +

      String

      +

      Specifies the parent resource ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 7 tags parameter description

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key. It contains a maximum of 127 Unicode characters and cannot be left blank. (This parameter is not verified in the search process.)

      +

      value

      +

      String

      +

      Specifies the tag value. Each tag value can contain a maximum of 255 Unicode characters.

      +
      + + +

      Example Request

      • Example request 1 (when action is set to filter)
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/resource_instances/action
        +
        +{
        +    "offset": "100", 
        +    "limit": "100", 
        +    "action": "filter", 
        +    "matches": [
        +        {
        +            "key": "resource_name", 
        +            "value": "resource1"
        +        }
        +    ], 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "values": [
        +                "*value1", 
        +                "value2"
        +            ]
        +        }
        +    ]
        +}
        +
      • Example request 2 (when action is set to count)
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/resource_instances/action
        +
        +{
        +    "action": "count", 
        +    "tags": [
        +        {
        +            "key": "key1",
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }, 
        +        {
        +            "key": "key2", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }
        +    ], 
        +    "matches": [
        +        {
        +            "key": "resource_name", 
        +            "value": "resource1"
        +        }
        +    ]
        +}
        +
      + +

      Example Response

      • Example response 1
        {
        +    "resources": [
        +        {
        +            "resource_detail": "", 
        +            "resource_id": "154d135b-3a89-4e89-8023-06efb9acdc05", 
        +            "resource_name": "resouece1", 
        +            "tags": [
        +                {
        +                    "key": "key1",
        +                    "value": "value1"
        +                }, 
        +                {
        +                    "key": "key2", 
        +                    "value": "value1"
        +                }
        +            ]
        +        }
        +    ], 
        +    "total_count": 1000
        +}
        +
      • Example response 2
        {
        +    "total_count": 1000
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0005.rst b/elb/api-ref/elb_zq_bq_0005.rst new file mode 100644 index 000000000..5373b39b4 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0005.rst @@ -0,0 +1,317 @@ +Querying Load Balancers by Tag +============================== + +Function +^^^^^^^^ + +This API is used to query load balancers using tags. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +None + +URI +^^^ + +POST /v2.0/{project_id}/loadbalancers/resource_instances/action + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ====================================================== + Parameter **Mandatory** **Type** Description + ========== ============= ======== ====================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + ========== ============= ======== ====================================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | tags | No | Array | Specifies the included | + | | | | tags. A maximum of 20 keys | + | | | | are allowed for each query | + | | | | operation, and each key can | + | | | | have a maximum of 20 | + | | | | values. | + | | | | | + | | | | The tag key cannot be left | + | | | | blank or set to an empty | + | | | | string. | + | | | | | + | | | | Each tag key and each tag | + | | | | value of the same tag key | + | | | | must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Sets the page size. This | + | | | | parameter is available when | + | | | | **action** is set to | + | | | | **filter**. Both the | + | | | | default value and maximum | + | | | | value are **1000**, and the | + | | | | minimum value is **1**. The | + | | | | value cannot be a negative | + | | | | integer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | offset | No | Integer | Specifies the index | + | | | | position. The query starts | + | | | | from the next load balancer | + | | | | indexed by this parameter. | + | | | | This parameter is not | + | | | | required when you query | + | | | | load balancers on the first | + | | | | page. The value in the | + | | | | response returned for | + | | | | querying the load balancers | + | | | | on the previous page will | + | | | | be included in this | + | | | | parameter for querying the | + | | | | load balancers on | + | | | | subsequent pages. This | + | | | | parameter is not available | + | | | | when **action** is set to | + | | | | **count**. If **action** is | + | | | | set to **filter**, the | + | | | | value must be a positive | + | | | | integer, and the default | + | | | | value is **0**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | Yes | String | Identifies the operation. | + | | | | The value can be **filter** | + | | | | or **count**. | + | | | | | + | | | | **filter**: indicates | + | | | | pagination query. | + | | | | | + | | | | **count**: indicates that | + | | | | all load balancers meeting | + | | | | the search criteria will be | + | | | | returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | matches | No | Array | Specifies the search | + | | | | criteria. The tag key is | + | | | | the parameter to match, for | + | | | | example, **resource_name**. | + | | | | **value** indicates the | + | | | | value of the match content. | + | | | | The key is a fixed | + | | | | dictionary value. | + | | | | | + | | | | Currently, only | + | | | | **resource_name** can be | + | | | | used for search. For | + | | | | details, see `Table | + | | | | 4 <#elb_z | + | | | | q_bq_0005__en-us_topic_0109 | + | | | | 852829_en-us_topic_01019850 | + | | | | 68_table17701361113436>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key. It | + | | | | contains a maximum of 127 | + | | | | Unicode characters and | + | | | | cannot be left blank. (This | + | | | | parameter is not verified | + | | | | in the search process.) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | values | Yes | Array | Lists the tag values. Each | + | | | | tag value can contain a | + | | | | maximum of 255 Unicode | + | | | | characters. The values are | + | | | | in the OR relationship. | + | | | | | + | | | | If no tag values in the | + | | | | list, the tag key is used | + | | | | for full search. If each | + | | | | value in the list starts | + | | | | with an asterisk (*), fuzzy | + | | | | match is performed based on | + | | | | the part after the | + | | | | asterisk. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 4** **matches** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key for | + | | | | match. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **resource_name**: | + | | | | indicates the resource | + | | | | name. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the tag value for | + | | | | match. Each tag value can | + | | | | contain a maximum of 255 | + | | | | Unicode characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 5** Response parameters + + +-------------+----------+-------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +=============+==========+===========================================================================================+ + | resources | Array | Lists the load balancers. For details, see `Table | + | | | 6 | + | | | <#elb_zq_bq_0005__en-us_topic_0109852829_en-us_topic_0101985068_table19523872114014>`__. | + +-------------+----------+-------------------------------------------------------------------------------------------+ + | total_count | Integer | Specifies the total number of queried records. | + +-------------+----------+-------------------------------------------------------------------------------------------+ + +.. table:: **Table 6** **resource** parameter description + + +-------------------+----------+-------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===================+==========+=====================================================================================+ + | resource_id | String | Specifies the resource ID. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | resource_detail | Object | Specifies the resource details. The value is a resource object, used for extension. | + | | | The value is left blank by default. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | tags | Array | Lists the tags. If there is no tag, an empty array is used by default. For details, | + | | | see `Table 7 <#elb_zq_bq_0005__en-us_topic_0109852829_table15683233145412>`__. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | resource_name | String | Specifies the resource name. This parameter is an empty string by default if there | + | | | is no resource name. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | super_resource_id | String | Specifies the parent resource ID. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + +.. table:: **Table 7** **tags** parameter description + + +-----------+----------+---------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===========+==========+=============================================================================================+ + | key | String | Specifies the tag key. It contains a maximum of 127 Unicode characters and cannot be left | + | | | blank. (This parameter is not verified in the search process.) | + +-----------+----------+---------------------------------------------------------------------------------------------+ + | value | String | Specifies the tag value. Each tag value can contain a maximum of 255 Unicode characters. | + +-----------+----------+---------------------------------------------------------------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1 (when **action** is set to **filter**) + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/resource_instances/action + + { + "offset": "100", + "limit": "100", + "action": "filter", + "matches": [ + { + "key": "resource_name", + "value": "resource1" + } + ], + "tags": [ + { + "key": "key1", + "values": [ + "*value1", + "value2" + ] + } + ] + } + +- Example request 2 (when **action** is set to **count**) + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/resource_instances/action + + { + "action": "count", + "tags": [ + { + "key": "key1", + "values": [ + "value1", + "value2" + ] + }, + { + "key": "key2", + "values": [ + "value1", + "value2" + ] + } + ], + "matches": [ + { + "key": "resource_name", + "value": "resource1" + } + ] + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "resources": [ + { + "resource_detail": "", + "resource_id": "154d135b-3a89-4e89-8023-06efb9acdc05", + "resource_name": "resouece1", + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value1" + } + ] + } + ], + "total_count": 1000 + } + +- Example response 2 + + .. code:: screen + + { + "total_count": 1000 + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0006.html b/elb/api-ref/elb_zq_bq_0006.html new file mode 100644 index 000000000..0bf15a81d --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0006.html @@ -0,0 +1,63 @@ + + +

      Deleting a Tag from a Load Balancer

      +

      Function

      This API is used to delete a tag with a specific key from a load balancer.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      None

      + +

      URI

      DELETE /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags/{key}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the load balancer from which a tag is to be deleted.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request
        DELETE https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags/key1
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0006.rst b/elb/api-ref/elb_zq_bq_0006.rst new file mode 100644 index 000000000..4bd537c16 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0006.rst @@ -0,0 +1,65 @@ +Deleting a Tag from a Load Balancer +=================================== + +Function +^^^^^^^^ + +This API is used to delete a tag with a specific key from a load balancer. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +None + +URI +^^^ + +DELETE /v2.0/{project_id}/loadbalancers/{loadbalancer_id}/tags/{key} + +.. table:: **Table 1** Parameter description + + =============== ============= ======== ======================================================================== + Parameter **Mandatory** **Type** Description + =============== ============= ======== ======================================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + loadbalancer_id Yes String Specifies the ID of the load balancer from which a tag is to be deleted. + =============== ============= ======== ======================================================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/loadbalancers/7add33ad-11dc-4ab9-a50f-419703f13163/tags/key1 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0007.html b/elb/api-ref/elb_zq_bq_0007.html new file mode 100644 index 000000000..df577d80a --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0007.html @@ -0,0 +1,129 @@ + + +

      Adding a Tag to a Listener

      +

      Function

      This API is used to add a tag to a specific listener.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      • A maximum of 20 tags can be added to a listener.
      • Note the following when you add tags:
        • If there are duplicate keys in the request body, an error is reported.
        • If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten.
        +
      + +

      URI

      POST /v2.0/{project_id}/listeners/{listener_id}/tags

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener to which a tag is to be added.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tag

      +

      Yes

      +

      Object

      +

      Specifies the tag. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 tag parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a listener must be unique.
      +

      value

      +

      Yes

      +

      String

      +

      Specifies the tag value.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Response

      None

      + +

      Example Request

      • Example request
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags
        +
        +{
        +    "tag": {
        +        "key": "key1", 
        +        "value": "value1"
        +    }
        +}
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0007.rst b/elb/api-ref/elb_zq_bq_0007.rst new file mode 100644 index 000000000..eb421a022 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0007.rst @@ -0,0 +1,123 @@ +Adding a Tag to a Listener +========================== + +Function +^^^^^^^^ + +This API is used to add a tag to a specific listener. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +- A maximum of 20 tags can be added to a listener. +- Note the following when you add tags: + + - If there are duplicate keys in the request body, an error is reported. + - If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten. + +URI +^^^ + +POST /v2.0/{project_id}/listeners/{listener_id}/tags + +.. table:: **Table 1** Parameter description + + =========== ============= ======== =============================================================== + Parameter **Mandatory** **Type** Description + =========== ============= ======== =============================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + listener_id Yes String Specifies the ID of the listener to which a tag is to be added. + =========== ============= ======== =============================================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+---------------+----------+----------------------------------------------------------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +===========+===============+==========+============================================================================+ + | tag | Yes | Object | Specifies the tag. For details, see `Table | + | | | | 3 <#elb_zq_bq_0007__en-us_topic_0112614719_table1537216133220>`__. | + +-----------+---------------+----------+----------------------------------------------------------------------------+ + +.. table:: **Table 3** **tag** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key. | + | | | | | + | | | | - Cannot be left blank. | + | | | | - Can contain a maximum of | + | | | | 36 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + | | | | | + | | | | - The tag key of a | + | | | | listener must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the tag value. | + | | | | | + | | | | - Can contain a maximum of | + | | | | 43 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags + + { + "tag": { + "key": "key1", + "value": "value1" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0008.html b/elb/api-ref/elb_zq_bq_0008.html new file mode 100644 index 000000000..41897c0ec --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0008.html @@ -0,0 +1,165 @@ + + +

      Batch Adding or Deleting Listener Tags

      +

      Function

      This API is used to batch add tags to or delete tags from a listener.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      • A maximum of 20 tags can be added to a listener.
      • This API is idempotent.
      • Note the following when you add tags:
        • If there are duplicate keys in the request body, an error is reported.
        • If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten.
        +
      • Note the following when you delete the tags:
        • If the tag to be deleted does not exist, the deletion is considered successful by default.
        • The value range of the tag character set is not verified.
        • The tag structure body cannot be missing, and the key cannot be left blank or set to an empty string.
        +
      + +

      URI

      POST /v2.0/{project_id}/listeners/{listener_id}/tags/action

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener to which tags are to be added or from which tags are to be deleted.

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tags

      +

      Yes

      +

      Array

      +

      Lists the tags. For details, see Table 3.

      +

      action

      +

      Yes

      +

      String

      +

      Specifies the operation identifier.

      +

      The value can be one of the following:

      +
      • create: adds tags to the listener.
      • delete: deletes tags from the listener.
      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 resource_tag parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a listener must be unique.
      +

      value

      +

      Yes

      +

      String

      +

      Specifies the tag value.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Response

      None

      + +

      Example Request

      • Example request 1
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action
        +
        +{
        +    "action": "create", 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "value": "value1"
        +        }, 
        +        {
        +            "key": "key2", 
        +            "value": "value2"
        +        }
        +    ]
        +}
        +
      + +
      • Example request 2
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action
        +
        +{
        +    "action": "delete", 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "value": "value1"
        +        }, 
        +        {
        +            "key": "key2", 
        +            "value": "value2"
        +        }
        +    ]
        +}
        +
      +

      Example Response

      • Example response 1

        None

        +
      • Example response 2

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0008.rst b/elb/api-ref/elb_zq_bq_0008.rst new file mode 100644 index 000000000..03483d3c5 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0008.rst @@ -0,0 +1,178 @@ +Batch Adding or Deleting Listener Tags +====================================== + +Function +^^^^^^^^ + +This API is used to batch add tags to or delete tags from a listener. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +- A maximum of 20 tags can be added to a listener. +- This API is idempotent. +- Note the following when you add tags: + + - If there are duplicate keys in the request body, an error is reported. + - If there are no duplicate keys in the request body but the key in the request body exists in the database, the key in the database is overwritten. + +- Note the following when you delete the tags: + + - If the tag to be deleted does not exist, the deletion is considered successful by default. + - The value range of the tag character set is not verified. + - The tag structure body cannot be missing, and the key cannot be left blank or set to an empty string. + +URI +^^^ + +POST /v2.0/{project_id}/listeners/{listener_id}/tags/action + +.. table:: **Table 1** Parameter description + + +-------------+---------------+----------+--------------------------------------------------------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============+===============+==========+==========================================================================+ + | project_id | Yes | String | Specifies the ID of the project where the tag is used. | + +-------------+---------------+----------+--------------------------------------------------------------------------+ + | listener_id | Yes | String | Specifies the ID of the listener to which tags are to be added or from | + | | | | which tags are to be deleted. | + +-------------+---------------+----------+--------------------------------------------------------------------------+ + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | tags | Yes | Array | Lists the tags. For | + | | | | details, see `Table | + | | | | 3 <#elb_z | + | | | | q_bq_0008__en-us_topic_0109 | + | | | | 852833_en-us_topic_00941159 | + | | | | 27_table27826557114623>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | Yes | String | Specifies the operation | + | | | | identifier. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **create**: adds tags to | + | | | | the listener. | + | | | | - **delete**: deletes tags | + | | | | from the listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **resource_tag** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key. | + | | | | | + | | | | - Cannot be left blank. | + | | | | - Can contain a maximum of | + | | | | 36 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + | | | | | + | | | | - The tag key of a | + | | | | listener must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the tag value. | + | | | | | + | | | | - Can contain a maximum of | + | | | | 43 characters. | + | | | | - Can contain only the | + | | | | following character | + | | | | types: | + | | | | | + | | | | - Uppercase letters | + | | | | - Lowercase letters | + | | | | - Digits | + | | | | - Special characters, | + | | | | including hyphens (-) | + | | | | and underscores (_) | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1 + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action + + { + "action": "create", + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value2" + } + ] + } + +- Example request 2 + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags/action + + { + "action": "delete", + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value2" + } + ] + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + None + +- Example response 2 + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0009.html b/elb/api-ref/elb_zq_bq_0009.html new file mode 100644 index 000000000..77433fa1b --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0009.html @@ -0,0 +1,122 @@ + + +

      Querying All Tags of a Listener

      +

      Function

      This API is used to query all tags of one listener.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      None

      + +

      URI

      GET /v2.0/{project_id}/listeners/{listener_id}/tags

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener whose tags are to be queried.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      tags

      +

      Array

      +

      Lists the tags. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a listener must be unique.
      +

      value

      +

      String

      +

      Specifies the tag value.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Example Request

      • Example request
        GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags
        +
      + +

      Example Response

      • Example response
        {
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "value": "value1"
        +        }, 
        +        {
        +            "key": "key2", 
        +            "value": "value2"
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0009.rst b/elb/api-ref/elb_zq_bq_0009.rst new file mode 100644 index 000000000..a1d77a25e --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0009.rst @@ -0,0 +1,121 @@ +Querying All Tags of a Listener +=============================== + +Function +^^^^^^^^ + +This API is used to query all tags of one listener. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +None + +URI +^^^ + +GET /v2.0/{project_id}/listeners/{listener_id}/tags + +.. table:: **Table 1** Parameter description + + =========== ============= ======== ============================================================== + Parameter **Mandatory** **Type** Description + =========== ============= ======== ============================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + listener_id Yes String Specifies the ID of the listener whose tags are to be queried. + =========== ============= ======== ============================================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+----------+---------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===========+==========+=============================================================================================+ + | tags | Array | Lists the tags. For details, see `Table | + | | | 3 <#elb_zq_bq_0009__en-us_topic_0112614717_table9829182310517>`__. | + +-----------+----------+---------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the tag key. | + | | | | + | | | - Cannot be left blank. | + | | | - Can contain a maximum of 36 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + | | | | + | | | - The tag key of a listener must be | + | | | unique. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the tag value. | + | | | | + | | | - Can contain a maximum of 43 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value2" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0010.html b/elb/api-ref/elb_zq_bq_0010.html new file mode 100644 index 000000000..7c4e58619 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0010.html @@ -0,0 +1,120 @@ + + +

      Querying the Tags of All Listeners

      +

      Function

      This API is used to query the tags of all listeners.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      None

      + +

      URI

      GET /v2.0/{project_id}/listeners/tags

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      tags

      +

      Array

      +

      Lists the tags, which are aggregated by the tag key. For details, see Table 3.

      +

      For example, if you have two listeners, the tag key of both listeners is "test", the tag value of listener A is "value1", and the tag value of listener B is "value2", two tags are queried, the key of both tags is "test", and the tag values are ["value1","value2"].

      +
      + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key.

      +
      • Cannot be left blank.
      • Can contain a maximum of 36 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      • The tag key of a listener must be unique.
      +

      values

      +

      Array

      +

      Lists the tag values.

      +
      • Can contain a maximum of 43 characters.
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +
      + + +

      Example Request

      • Example request
        GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/tags
        +
      + +

      Example Response

      • Example response
        {
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }, 
        +        {
        +            "key": "key2", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0010.rst b/elb/api-ref/elb_zq_bq_0010.rst new file mode 100644 index 000000000..fdfe475ac --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0010.rst @@ -0,0 +1,138 @@ +Querying the Tags of All Listeners +================================== + +Function +^^^^^^^^ + +This API is used to query the tags of all listeners. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +None + +URI +^^^ + +GET /v2.0/{project_id}/listeners/tags + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ====================================================== + Parameter **Mandatory** **Type** Description + ========== ============= ======== ====================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + ========== ============= ======== ====================================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | tags | Array | Lists the tags, which are aggregated | + | | | by the tag key. For details, see | + | | | `Table | + | | | 3 <#elb_zq_bq_0010__en-us_topi | + | | | c_0112614718_table13591257182417>`__. | + | | | | + | | | For example, if you have two | + | | | listeners, the tag key of both | + | | | listeners is "test", the tag value of | + | | | listener A is "value1", and the tag | + | | | value of listener B is "value2", two | + | | | tags are queried, the key of both | + | | | tags is "test", and the tag values | + | | | are ["value1","value2"]. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | **Type** | Description | + +=======================================+=======================================+=======================================+ + | key | String | Specifies the tag key. | + | | | | + | | | - Cannot be left blank. | + | | | - Can contain a maximum of 36 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + | | | | + | | | - The tag key of a listener must be | + | | | unique. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | values | Array | Lists the tag values. | + | | | | + | | | - Can contain a maximum of 43 | + | | | characters. | + | | | - Can contain only the following | + | | | character types: | + | | | | + | | | - Uppercase letters | + | | | - Lowercase letters | + | | | - Digits | + | | | - Special characters, including | + | | | hyphens (-) and underscores (_) | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + GET https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/tags + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "tags": [ + { + "key": "key1", + "values": [ + "value1", + "value2" + ] + }, + { + "key": "key2", + "values": [ + "value1", + "value2" + ] + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0011.html b/elb/api-ref/elb_zq_bq_0011.html new file mode 100644 index 000000000..3a3f71c98 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0011.html @@ -0,0 +1,350 @@ + + +

      Querying Listeners by Tag

      +

      Function

      This API is used to query listeners by tag.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      None

      + +

      URI

      POST /v2.0/{project_id}/listeners/resource_instances/action

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tags

      +

      No

      +

      Array

      +

      Specifies the included tags. A maximum of 20 tag keys are allowed for each query operation. Each tag key can have up to 20 tag values. The structure body must be included. The tag key cannot be left blank or set to an empty string. Each tag key and each tag value of the same tag key must be unique. For details, see Table 3.

      +

      limit

      +

      No

      +

      Integer

      +

      Sets the page size. This parameter is available when action is set to filter. Both the default value and maximum value are 1000, and the minimum value is 1. The value cannot be a negative integer.

      +

      offset

      +

      No

      +

      Integer

      +

      Specifies the index position. The query starts from the next listener indexed by this parameter. This parameter is not required when you query listeners on the first page. The value in the response returned for querying the listeners on the previous page will be included in this parameter for querying the listeners on subsequent pages. This parameter is not available when action is set to count. If action is set to filter, the value must be a positive integer, and the default value is 0.

      +

      action

      +

      Yes

      +

      String

      +

      Identifies the operation. The value can be filter or count.

      +
      • filter: indicates pagination query.
      • count: indicates that all listeners meeting the search criteria will be returned.
      +

      matches

      +

      No

      +

      Array

      +

      Specifies the search criteria. The tag key is the parameter to match, for example, resource_name. value indicates the value of the match content. The key is a fixed dictionary value.

      +

      Determine whether fuzzy match is required based on different parameters. For example, if the key is resource_name, fuzzy search is used by default. If value is an empty string, exact match is used. If the key is resource_id, exact match is used. Currently, only resource_name can be used for search. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 3 tags parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key. It contains a maximum of 127 Unicode characters and cannot be left blank. (This parameter is not verified in the search process.)

      +

      values

      +

      Yes

      +

      Array

      +

      Lists the tag values. Each tag value can contain a maximum of 255 Unicode characters. The values are in the OR relationship.

      +
      + + + + + + + + + + + + + + + + + + + +
      Table 4 matches parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      key

      +

      Yes

      +

      String

      +

      Specifies the tag key.

      +

      The value can be one of the following:

      +
      • resource_name: indicates the resource name.
      +

      value

      +

      Yes

      +

      String

      +

      Specifies the tag value. Each tag value can contain a maximum of 255 Unicode characters.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 5 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      resources

      +

      Array

      +

      Lists the listeners. For details, see Table 6.

      +

      total_count

      +

      Integer

      +

      Specifies the total number of queried records.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 resource parameter description

      Parameter

      +

      Type

      +

      Description

      +

      resource_id

      +

      String

      +

      Specifies the resource ID.

      +

      resource_detail

      +

      Object

      +

      Specifies the resource details. The value is a resource object, used for extension. The value is left blank by default.

      +

      tags

      +

      Array

      +

      Lists the tags. If there is no tag, an empty array is used by default. For details, see Table 7.

      +

      resource_name

      +

      String

      +

      Specifies the resource name. This parameter is an empty string by default if there is no resource name.

      +

      super_resource_id

      +

      String

      +

      Specifies the parent resource ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 7 tags parameter description

      Parameter

      +

      Type

      +

      Description

      +

      key

      +

      String

      +

      Specifies the tag key. It contains a maximum of 127 Unicode characters and cannot be left blank. (This parameter is not verified in the search process.)

      +

      value

      +

      String

      +

      Specifies the tag value. Each tag value can contain a maximum of 255 Unicode characters.

      +
      + + +

      Example Request

      • Example request 1 (when action is set to filter)
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/resource_instances/action
        +
        +{
        +    "offset": "100", 
        +    "limit": "100", 
        +    "action": "filter", 
        +    "matches": [
        +        {
        +            "key": "resource_name", 
        +            "value": "resource1"
        +        }
        +    ], 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }
        +    ]
        +}
        +
      +
      • Example request 2 (when action is set to count)
        POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/resource_instances/action
        +
        +{
        +    "action": "count", 
        +    "tags": [
        +        {
        +            "key": "key1", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }, 
        +        {
        +            "key": "key2", 
        +            "values": [
        +                "value1", 
        +                "value2"
        +            ]
        +        }
        +    ], 
        +    "matches": [
        +        {
        +            "key": "resource_name", 
        +            "value": "resource1"
        +        }
        +    ]
        +}
        +
      + +

      Example Response

      • Example response 1
        {
        +    "resources": [
        +        {
        +            "resource_detail":"", 
        +            "resource_id": "154d135b-3a89-4e89-8023-06efb9acdc05", 
        +            "resource_name": "resouece1", 
        +            "tags": [
        +                {
        +                    "key": "key1", 
        +                    "value": "value1"
        +                }, 
        +                {
        +                    "key": "key2", 
        +                    "value": "value1"
        +                }
        +            ]
        +        }
        +    ], 
        +    "total_count": 1000
        +}
        +
      +
      • Example response 2
        {
        +    "total_count": 1000
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0011.rst b/elb/api-ref/elb_zq_bq_0011.rst new file mode 100644 index 000000000..aa535b9ee --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0011.rst @@ -0,0 +1,310 @@ +Querying Listeners by Tag +========================= + +Function +^^^^^^^^ + +This API is used to query listeners by tag. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +None + +URI +^^^ + +POST /v2.0/{project_id}/listeners/resource_instances/action + +.. table:: **Table 1** Parameter description + + ========== ============= ======== ====================================================== + Parameter **Mandatory** **Type** Description + ========== ============= ======== ====================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + ========== ============= ======== ====================================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | tags | No | Array | Specifies the included | + | | | | tags. A maximum of 20 tag | + | | | | keys are allowed for each | + | | | | query operation. Each tag | + | | | | key can have up to 20 tag | + | | | | values. The structure body | + | | | | must be included. The tag | + | | | | key cannot be left blank or | + | | | | set to an empty string. | + | | | | Each tag key and each tag | + | | | | value of the same tag key | + | | | | must be unique. For | + | | | | details, see `Table | + | | | | 3 <#elb_zq_ | + | | | | bq_0011__en-us_topic_010985 | + | | | | 2832_table202620276214>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Sets the page size. This | + | | | | parameter is available when | + | | | | **action** is set to | + | | | | **filter**. Both the | + | | | | default value and maximum | + | | | | value are **1000**, and the | + | | | | minimum value is **1**. The | + | | | | value cannot be a negative | + | | | | integer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | offset | No | Integer | Specifies the index | + | | | | position. The query starts | + | | | | from the next listener | + | | | | indexed by this parameter. | + | | | | This parameter is not | + | | | | required when you query | + | | | | listeners on the first | + | | | | page. The value in the | + | | | | response returned for | + | | | | querying the listeners on | + | | | | the previous page will be | + | | | | included in this parameter | + | | | | for querying the listeners | + | | | | on subsequent pages. This | + | | | | parameter is not available | + | | | | when **action** is set to | + | | | | **count**. If **action** is | + | | | | set to **filter**, the | + | | | | value must be a positive | + | | | | integer, and the default | + | | | | value is **0**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | Yes | String | Identifies the operation. | + | | | | The value can be **filter** | + | | | | or **count**. | + | | | | | + | | | | - **filter**: indicates | + | | | | pagination query. | + | | | | - **count**: indicates | + | | | | that all listeners | + | | | | meeting the search | + | | | | criteria will be | + | | | | returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | matches | No | Array | Specifies the search | + | | | | criteria. The tag key is | + | | | | the parameter to match, for | + | | | | example, **resource_name**. | + | | | | **value** indicates the | + | | | | value of the match content. | + | | | | The key is a fixed | + | | | | dictionary value. | + | | | | | + | | | | Determine whether fuzzy | + | | | | match is required based on | + | | | | different parameters. For | + | | | | example, if the **key** is | + | | | | **resource_name**, fuzzy | + | | | | search is used by default. | + | | | | If **value** is an empty | + | | | | string, exact match is | + | | | | used. If the key is | + | | | | **resource_id**, exact | + | | | | match is used. Currently, | + | | | | only **resource_name** can | + | | | | be used for search. For | + | | | | details, see `Table | + | | | | 4 <#elb_zq_b | + | | | | q_0011__en-us_topic_0109852 | + | | | | 832_table5401017132210>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **tags** parameter description + + +-----------+---------------+----------+----------------------------------------------------------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +===========+===============+==========+============================================================================+ + | key | Yes | String | Specifies the tag key. It contains a maximum of 127 Unicode characters and | + | | | | cannot be left blank. (This parameter is not verified in the search | + | | | | process.) | + +-----------+---------------+----------+----------------------------------------------------------------------------+ + | values | Yes | Array | Lists the tag values. Each tag value can contain a maximum of 255 Unicode | + | | | | characters. The values are in the OR relationship. | + +-----------+---------------+----------+----------------------------------------------------------------------------+ + +.. table:: **Table 4** **matches** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | key | Yes | String | Specifies the tag key. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **resource_name**: | + | | | | indicates the resource | + | | | | name. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the tag value. | + | | | | Each tag value can contain | + | | | | a maximum of 255 Unicode | + | | | | characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 5** Response parameters + + +-------------+----------+-------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +=============+==========+===========================================================================================+ + | resources | Array | Lists the listeners. For details, see `Table | + | | | 6 <#elb_zq_bq_0011__en-us_topic_0109852832_table2019842119305>`__. | + +-------------+----------+-------------------------------------------------------------------------------------------+ + | total_count | Integer | Specifies the total number of queried records. | + +-------------+----------+-------------------------------------------------------------------------------------------+ + +.. table:: **Table 6** **resource** parameter description + + +-------------------+----------+-------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===================+==========+=====================================================================================+ + | resource_id | String | Specifies the resource ID. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | resource_detail | Object | Specifies the resource details. The value is a resource object, used for extension. | + | | | The value is left blank by default. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | tags | Array | Lists the tags. If there is no tag, an empty array is used by default. For details, | + | | | see `Table 7 <#elb_zq_bq_0011__en-us_topic_0109852832_table15683233145412>`__. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | resource_name | String | Specifies the resource name. This parameter is an empty string by default if there | + | | | is no resource name. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + | super_resource_id | String | Specifies the parent resource ID. | + +-------------------+----------+-------------------------------------------------------------------------------------+ + +.. table:: **Table 7** **tags** parameter description + + +-----------+----------+---------------------------------------------------------------------------------------------+ + | Parameter | **Type** | Description | + +===========+==========+=============================================================================================+ + | key | String | Specifies the tag key. It contains a maximum of 127 Unicode characters and cannot be left | + | | | blank. (This parameter is not verified in the search process.) | + +-----------+----------+---------------------------------------------------------------------------------------------+ + | value | String | Specifies the tag value. Each tag value can contain a maximum of 255 Unicode characters. | + +-----------+----------+---------------------------------------------------------------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1 (when **action** is set to **filter**) + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/resource_instances/action + + { + "offset": "100", + "limit": "100", + "action": "filter", + "matches": [ + { + "key": "resource_name", + "value": "resource1" + } + ], + "tags": [ + { + "key": "key1", + "values": [ + "value1", + "value2" + ] + } + ] + } + +- Example request 2 (when **action** is set to **count**) + + .. code:: screen + + POST https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/resource_instances/action + + { + "action": "count", + "tags": [ + { + "key": "key1", + "values": [ + "value1", + "value2" + ] + }, + { + "key": "key2", + "values": [ + "value1", + "value2" + ] + } + ], + "matches": [ + { + "key": "resource_name", + "value": "resource1" + } + ] + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "resources": [ + { + "resource_detail":"", + "resource_id": "154d135b-3a89-4e89-8023-06efb9acdc05", + "resource_name": "resouece1", + "tags": [ + { + "key": "key1", + "value": "value1" + }, + { + "key": "key2", + "value": "value1" + } + ] + } + ], + "total_count": 1000 + } + +- Example response 2 + + .. code:: screen + + { + "total_count": 1000 + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0012.html b/elb/api-ref/elb_zq_bq_0012.html new file mode 100644 index 000000000..8885530c9 --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0012.html @@ -0,0 +1,62 @@ + + +

      Deleting a Tag from a Listener

      +

      Function

      This API is used to delete a tag with a specific key from a listener.

      +

      You can also use this API for dedicated load balancers.

      + + +

      Constraints

      None

      + +

      URI

      DELETE /v2.0/{project_id}/listeners/{listener_id}/tags/{key}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the project where the tag is used.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener from which a tag is to be deleted.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request
        DELETE https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags/key1
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0012.rst b/elb/api-ref/elb_zq_bq_0012.rst new file mode 100644 index 000000000..27de2f6fe --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0012.rst @@ -0,0 +1,65 @@ +Deleting a Tag from a Listener +============================== + +Function +^^^^^^^^ + +This API is used to delete a tag with a specific key from a listener. + +|image1| + +You can also use this API for dedicated load balancers. + +Constraints +^^^^^^^^^^^ + +None + +URI +^^^ + +DELETE /v2.0/{project_id}/listeners/{listener_id}/tags/{key} + +.. table:: **Table 1** Parameter description + + =========== ============= ======== =================================================================== + Parameter **Mandatory** **Type** Description + =========== ============= ======== =================================================================== + project_id Yes String Specifies the ID of the project where the tag is used. + listener_id Yes String Specifies the ID of the listener from which a tag is to be deleted. + =========== ============= ======== =================================================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/6a0de1c3-7d74-4f4a-b75e-e57135bd2b97/listeners/7add33ad-11dc-4ab9-a50f-419703f13163/tags/key1 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Tag `__ + +.. |image1| image:: public_sys-resources/note_3.0-en-us.png diff --git a/elb/api-ref/elb_zq_bq_0013.html b/elb/api-ref/elb_zq_bq_0013.html new file mode 100644 index 000000000..9fbe8b2cb --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0013.html @@ -0,0 +1,252 @@ + + +

      Status Codes

      + + + + + + + + + + + + + + + +
      Table 1 Normal codes

      Status Code

      +

      Message

      +

      Description

      +

      200

      +

      OK

      +

      Specifies the normal response code for the GET operation.

      +

      This code is returned when a response body is returned for the POST operation.

      +

      204

      +

      No Content

      +

      Specifies the normal response code for the DELETE operation.

      +

      This code is returned when no response body is returned for the POST operation.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Error codes

      Status Code

      +

      Error Code

      +

      Description

      +

      Error Message

      +

      Measure

      +

      400

      +

      VPC.1801

      +

      The ID is incorrect.

      +

      resource id is invalid/Getting id is invalid.

      +

      Use a correct resource ID.

      +

      400

      +

      VPC.1801

      +

      An action error occurs.

      +

      action is invalid.

      +

      Ensure that the value of action is create or delete.

      +

      400

      +

      VPC.1801

      +

      The key length is invalid.

      +

      Tag length is invalid. The key length must be in range [1,36] and value in range [0,43]

      +

      Input a valid key.

      +

      400

      +

      VPC.0007

      +

      The project ID is incorrect.

      +

      urlTenantId is not equal token TenantId.

      +

      Check the project ID.

      +

      401

      +

      VPC.0008

      +

      The token in the request is invalid or the request does not contain the token.

      +

      Invalid token in the header./Authorization information is wrong.

      +

      Check whether the token is valid.

      +

      400

      +

      VPC.1801

      +

      The value length is invalid.

      +

      Tag length is invalid. The key length must be in range [1,36] and value in range [0,43]

      +

      Input a valid value.

      +

      400

      +

      VPC.1801

      +

      The key or value contains invalid characters.

      +

      InvalidInput/Tag value xxx is invalid.

      +

      Check the validity of the key or value.

      +

      400

      +

      VPC.1801

      +

      The key or value is left blank.

      +

      Tag xxx can not be null.

      +

      Check whether the key or value is left blank.

      +

      400

      +

      VPC.1801

      +

      The tag is null.

      +

      Tag can not be null.

      +

      Check whether the tag is null.

      +

      400

      +

      VPC.1801

      +

      A resource type error occurs.

      +

      Resource xxx is invalid.

      +

      Ensure that the value of resource_type is loadbalancers or listeners.

      +

      400

      +

      VPC.1801

      +

      The total number of tags added at a time exceeds 10.

      +

      number of tags exceeds max unm of 10.

      +

      Reduce the number of tags.

      +

      400

      +

      VPC.1814

      +

      The total number of existing tags and newly added tags exceeds 10.

      +

      Invalid input for operation: resource_id: XXXX, number of tags exceed max num of 10.

      +

      Reduce the number of tags.

      +

      400

      +

      VPC.1814

      +

      The key values of newly added tags are duplicate.

      +

      Invalid input for operation: tags key is duplicated.

      +

      Change the tag values.

      +

      400

      +

      VPC.1814

      +

      The resource ID does not exist.

      +

      Resource XXX XXX could not be found.

      +

      Check whether the resource is available.

      +

      400

      +

      VPC.1814

      +

      The specified key to be deleted does not exist, or the key is an empty string.

      +

      The resource could not be found.

      +

      Enter a correct key and send the request again.

      +

      400

      +

      VPC.1814

      +

      More than 10 tags are added to a specified resource.

      +

      Invalid input for operation:resource_id:xxx, number of tags exceeds max num of 10.

      +

      Each resource supports up to 10 tags.

      +

      400

      +

      VPC.1801

      +

      Tags are duplicate.

      +

      Tag key is repeated.

      +

      Delete duplicate tags and resend the request.

      +

      500

      +

      -

      +

      The request format is incorrect.

      +

      Internal Server Error.

      +

      Use the correct request body format.

      +
      + + + + +Parent topic: Tag + + + diff --git a/elb/api-ref/elb_zq_bq_0013.rst b/elb/api-ref/elb_zq_bq_0013.rst new file mode 100644 index 000000000..1bab3fbdc --- /dev/null +++ b/elb/api-ref/elb_zq_bq_0013.rst @@ -0,0 +1,102 @@ +Status Codes +============ + +.. table:: **Table 1** Normal codes + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Status Code | Message | Description | + +=======================================+=======================================+=======================================+ + | 200 | OK | Specifies the normal response code | + | | | for the GET operation. | + | | | | + | | | This code is returned when a response | + | | | body is returned for the POST | + | | | operation. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | 204 | No Content | Specifies the normal response code | + | | | for the DELETE operation. | + | | | | + | | | This code is returned when no | + | | | response body is returned for the | + | | | POST operation. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 2** Error codes + + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | Status Code | Error Code | Description | Error Message | Measure | + +=============+============+============================+============================+============================+ + | 400 | VPC.1801 | The ID is incorrect. | resource id is | Use a correct resource ID. | + | | | | invalid/Getting id is | | + | | | | invalid. | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | An action error occurs. | action is invalid. | Ensure that the value of | + | | | | | **action** is **create** | + | | | | | or **delete**. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | The key length is invalid. | Tag length is invalid. The | Input a valid key. | + | | | | key length must be in | | + | | | | range [1,36] and value in | | + | | | | range [0,43] | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.0007 | The project ID is | urlTenantId is not equal | Check the project ID. | + | | | incorrect. | token TenantId. | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 401 | VPC.0008 | The token in the request | Invalid token in the | Check whether the token is | + | | | is invalid or the request | header./Authorization | valid. | + | | | does not contain the | information is wrong. | | + | | | token. | | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | The value length is | Tag length is invalid. The | Input a valid value. | + | | | invalid. | key length must be in | | + | | | | range [1,36] and value in | | + | | | | range [0,43] | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | The key or value contains | InvalidInput/Tag value xxx | Check the validity of the | + | | | invalid characters. | is invalid. | key or value. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | The key or value is left | Tag xxx can not be null. | Check whether the key or | + | | | blank. | | value is left blank. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | The tag is null. | Tag can not be null. | Check whether the tag is | + | | | | | null. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | A resource type error | Resource xxx is invalid. | Ensure that the value of | + | | | occurs. | | **resource_type** is | + | | | | | **loadbalancers** or | + | | | | | **listeners**. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | The total number of tags | number of tags exceeds max | Reduce the number of tags. | + | | | added at a time exceeds | unm of 10. | | + | | | 10. | | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1814 | The total number of | Invalid input for | Reduce the number of tags. | + | | | existing tags and newly | operation: resource_id: | | + | | | added tags exceeds 10. | XXXX, number of tags | | + | | | | exceed max num of 10. | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1814 | The key values of newly | Invalid input for | Change the tag values. | + | | | added tags are duplicate. | operation: tags key is | | + | | | | duplicated. | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1814 | The resource ID does not | Resource XXX XXX could not | Check whether the resource | + | | | exist. | be found. | is available. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1814 | The specified key to be | The resource could not be | Enter a correct key and | + | | | deleted does not exist, or | found. | send the request again. | + | | | the key is an empty | | | + | | | string. | | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1814 | More than 10 tags are | Invalid input for | Each resource supports up | + | | | added to a specified | operation:resource_id:xxx, | to 10 tags. | + | | | resource. | number of tags exceeds max | | + | | | | num of 10. | | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 400 | VPC.1801 | Tags are duplicate. | Tag key is repeated. | Delete duplicate tags and | + | | | | | resend the request. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + | 500 | - | The request format is | Internal Server Error. | Use the correct request | + | | | incorrect. | | body format. | + +-------------+------------+----------------------------+----------------------------+----------------------------+ + +**Parent topic:** `Tag `__ diff --git a/elb/api-ref/elb_zq_fz_0000.html b/elb/api-ref/elb_zq_fz_0000.html new file mode 100644 index 000000000..f6130b506 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0000.html @@ -0,0 +1,25 @@ + + +

      Load Balancer

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_fz_0000.rst b/elb/api-ref/elb_zq_fz_0000.rst new file mode 100644 index 000000000..2fcd8d242 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0000.rst @@ -0,0 +1,11 @@ +Load Balancer +============= + +- `Creating a Load Balancer `__ +- `Querying Load Balancers `__ +- `Querying Details of a Load Balancer `__ +- `Querying the Status Tree of a Load Balancer `__ +- `Updating a Load Balancer `__ +- `Deleting a Load Balancer `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_fz_0002.html b/elb/api-ref/elb_zq_fz_0002.html new file mode 100644 index 000000000..c0ca04b53 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0002.html @@ -0,0 +1,526 @@ + + +

      Querying Load Balancers

      +

      Function

      This API is used to query load balancers and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/loadbalancers

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the load balancer from which pagination query starts, that is, the ID of the last load balancer on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of load balancers on each page.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the load balancer is used.

      +

      +

      id

      +

      No

      +

      String

      +

      Specifies the load balancer ID.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      operating_status

      +

      No

      +

      String

      +

      This parameter is reserved, and its value can only be ONLINE.

      +

      It specifies the operating status of the load balancer.

      +

      provisioning_status

      +

      No

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the load balancer.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      This parameter is reserved, and its value can only be true.

      +

      It specifies the administrative status of the load balancer.

      +

      vip_address

      +

      No

      +

      String

      +

      Specifies the private IP address of the load balancer.

      +

      The value contains a maximum of 64 characters.

      +

      vip_port_id

      +

      No

      +

      String

      +

      Specifies the ID of the port bound to the private IP address of the load balancer.

      +

      vip_subnet_id

      +

      No

      +

      String

      +

      Specifies the ID of the subnet where the load balancer works.

      +

      member_address

      +

      No

      +

      String

      +

      Specifies the IP address of the backend server associated with the load balancer.

      +

      member_device_id

      +

      No

      +

      String

      +

      Specifies the ID of the cloud server used as the backend server associated with the load balancer.

      +

      vpc_id

      +

      No

      +

      String

      +

      Specifies the ID of the VPC where the load balancer works.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancers

      +

      Array

      +

      Lists the load balancers. For details, see Table 3.

      +

      loadbalancers_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively. This parameter exists only in the response body of pagination query. For details, see Table 6.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 loadbalancer parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the load balancer is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      vip_subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the load balancer works.

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the private IP address of the load balancer.

      +

      When you create a load balancer, the system automatically creates a port and associates it with a security group. However, the security group will not take effect.

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer.

      +

      vip_address

      +

      String

      +

      Specifies the private IP address of the load balancer.

      +

      The value contains a maximum of 64 characters.

      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners added to the load balancer. For details, see Table 4.

      +

      pools

      +

      Array

      +

      Lists the IDs of backend server groups associated with the load balancer. For details, see Table 5.

      +

      operating_status

      +

      String

      +

      This parameter is reserved, and its value can only be ONLINE.

      +

      It specifies the operating status of the load balancer.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the load balancer.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      tags

      +

      Array

      +

      Lists load balancer tags.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +
      + + + + + + + + + + + + +
      Table 4 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated listener.

      +
      + + + + + + + + + + + + +
      Table 5 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + + + + + + + + + + + + + + + +
      Table 6 loadbalancers_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page.

      +

      The value can be next or previous. The value next indicates the Hypertext Reference (href) containing the URL of the next page, and previous indicates the href containing the URL of the previous page.

      +
      + + +

      Example Request

      • Example request 1: Querying all load balancers
        GET https://{Endpoint}/v2.0/lbaas/loadbalancers
        +
      • Example request 2: Querying load balancers by page (Each page contains one load balancer. The ID of the start load balancer is 165b6a38-5278-4569-b747-b2ee65ea84a4. The load balancer after 165b6a38-5278-4569-b747-b2ee65ea84a4 is the queried load balancer.)
        GET https://{Endpoint}/v2.0/lbaas/loadbalancers?limit=1&marker=165b6a38-5278-4569-b747-b2ee65ea84a4
        +
      • Example request 3: Querying the load balancer using the IP address of a backend server (192.168.0.191)
        GET https://{Endpoint}/v2.0/lbaas/loadbalancers?member_address=192.168.0.181
        +
      + +

      Example Response

      • Example response 1
        {
        +    "loadbalancers": [
        +        {
        +            "description": "simple lb",
        +            "admin_state_up": true,
        +            "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
        + 
        +            "provisioning_status": "ACTIVE",
        +            "vip_subnet_id": "5328f1e6-ce29-44f1-9493-b128a5653350",
        +            "listeners": [
        +                {
        +                    "id": "45196943-2907-4369-87b1-c009b1d7ac35"
        +                }
        +            ],
        +            "vip_address": "10.0.0.2",
        +            "vip_port_id": "cbced4fe-6f6f-4fd6-9348-0c3d1219d6ca",
        +            "provider": "vlb",
        +            "pools": [
        +                {
        +                    "id": "21d49cf7-4fd3-4cb6-8c48-b7fc6c259aab"
        +            }
        +            ],
        +            "id": "a9729389-6147-41a3-ab22-a24aed8692b2",
        +            "operating_status": "ONLINE",
        +            "tags": [],
        +            "name": "loadbalancer1",
        +            "created_at": "2018-07-25T01:54:13", 
        +            "updated_at": "2018-07-25T01:54:14"
        +        }
        +    ]
        +}
        +
      • Example response 2
        {
        +    "loadbalancers": [
        +        {
        +            "description": "",
        +            "provisioning_status": "ACTIVE",
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +  
        +            "admin_state_up": true,
        +            "provider": "vlb",
        +            "pools": [
        +                {
        +                    "id": "b13dba4c-a44c-4c40-8f6e-ce7a162b9f22"
        +                },
        +                {
        +                    "id": "4b9e765f-82ee-4128-911b-0a2d9ebc74c7"
        +                }
        +            ],
        +            "listeners": [
        +                {
        +                    "id": "21c41336-d0d3-4349-8641-6e82b4a4d097"
        +                }
        +            ],
        +            "vip_port_id": "44ac5d9b-b0c0-4810-9a9d-c4dbf541e47e",
        +            "operating_status": "ONLINE",
        +            "vip_address": "192.168.0.234",
        +            "vip_subnet_id": "9d60827e-0e5c-490a-8183-0b6ebf9084ca",
        +            "id": "e79a7dd6-3a38-429a-95f9-c7f78b346cbe",
        +            "tags": [],
        +            "name": "elb-robot",
        +            "created_at": "2018-07-25T01:54:13", 
        +            "updated_at": "2018-07-25T01:54:14"
        +        }
        +    ],
        +    "loadbalancers_links": [
        +        {
        +            "href": "https://network.Region.dc1.domainname.com/v2.0/lbaas/loadbalancers?limit=10&marker=e79a7dd6-3a38-429a-95f9-c7f78b346cbe&page_reverse=True",
        +              "rel": "previous"
        +        }
        +    ]
        +}
        +
      + +
      • Example response 3
        {
        +    "loadbalancers": [
        +        {
        +            "description": "",
        +            "provisioning_status": "ACTIVE",
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        + 
        +            "created_at": "2018-11-29T13:55:20",
        +            "admin_state_up": true,
        +            "update_at": "2018-11-29T13:55:21",
        +            "id": "c1127125-64a9-4394-a08a-ef3be8f7ef9c",
        +            "pools": [
        +                {
        +                    "id": "2f6895be-019b-4c82-9b53-c4a2ac009e20"
        +                }
        +            ],
        +            "listeners": [
        +                {
        +                    "id": "5c63d176-444f-4c75-9cfe-bcb8a05a845c"
        +                }
        +            ],
        +            "vip_port_id": "434ac600-b779-4428-b7a7-830e047511f1",
        +            "operating_status": "ONLINE",
        +            "vip_address": "192.168.0.181",
        +            "vip_subnet_id": "9a303536-417c-45dc-a6db-1234b9e1c2b2",
        +            "provider": "vlb",
        +            "tags": [],
        +            "name": "elb-ftci"
        +
        +        }
        +    ]
        +}
        +
      +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_zq_fz_0002.rst b/elb/api-ref/elb_zq_fz_0002.rst new file mode 100644 index 000000000..b6c291330 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0002.rst @@ -0,0 +1,437 @@ +Querying Load Balancers +======================= + +Function +^^^^^^^^ + +This API is used to query load balancers and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/loadbalancers + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | load balancer from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | load balancer on the | + | | | | previous page. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | load balancers on each | + | | | | page. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the load | + | | | | balancer is used. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the load balancer | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the load | + | | | | balancer. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the load balancer | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | operating_status | No | String | This parameter is reserved, | + | | | | and its value can only be | + | | | | **ONLINE**. | + | | | | | + | | | | It specifies the operating | + | | | | status of the load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provisioning_status | No | String | This parameter is reserved, | + | | | | and its value can only be | + | | | | **ACTIVE**. | + | | | | | + | | | | It specifies the | + | | | | provisioning status of the | + | | | | load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | This parameter is reserved, | + | | | | and its value can only be | + | | | | **true**. | + | | | | | + | | | | It specifies the | + | | | | administrative status of | + | | | | the load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_address | No | String | Specifies the private IP | + | | | | address of the load | + | | | | balancer. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_port_id | No | String | Specifies the ID of the | + | | | | port bound to the private | + | | | | IP address of the load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_subnet_id | No | String | Specifies the ID of the | + | | | | subnet where the load | + | | | | balancer works. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_address | No | String | Specifies the IP address of | + | | | | the backend server | + | | | | associated with the load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_device_id | No | String | Specifies the ID of the | + | | | | cloud server used as the | + | | | | backend server associated | + | | | | with the load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vpc_id | No | String | Specifies the ID of the VPC | + | | | | where the load balancer | + | | | | works. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +---------------------+-------+--------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=====================+=======+======================================================================================+ + | loadbalancers | Array | Lists the load balancers. For details, see `Table | + | | | 3 <#el | + | | | b_zq_fz_0002__en-us_topic_0141008270_en-us_topic_0096561531_table10274202983318>`__. | + +---------------------+-------+--------------------------------------------------------------------------------------+ + | loadbalancers_links | Array | Provides links to the previous or next page during pagination query, respectively. | + | | | This parameter exists only in the response body of pagination query. For details, | + | | | see `Table | + | | | 6 <# | + | | | elb_zq_fz_0002__en-us_topic_0141008270_en-us_topic_0096561531_table661975283313>`__. | + +---------------------+-------+--------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **loadbalancer** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the load balancer is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_id | String | Specifies the ID of the subnet where | + | | | the load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the private IP address of the load | + | | | balancer. | + | | | | + | | | When you create a load balancer, the | + | | | system automatically creates a port | + | | | and associates it with a security | + | | | group. However, the security group | + | | | will not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IP address of | + | | | the load balancer. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners added to | + | | | the load balancer. For details, see | + | | | `Table | + | | | 4 <#elb_zq_fz_0002__en-us_to | + | | | pic_0141008270_table107875111574>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the IDs of backend server | + | | | groups associated with the load | + | | | balancer. For details, see `Table | + | | | 5 <#elb_zq_fz_0002__en-us_top | + | | | ic_0141008270_table1566642411246>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This parameter is reserved, and its | + | | | value can only be **ONLINE**. | + | | | | + | | | It specifies the operating status of | + | | | the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Lists load balancer tags. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **listeners** parameter description + + ========= ====== ============================================ + Parameter Type Description + ========= ====== ============================================ + id String Specifies the ID of the associated listener. + ========= ====== ============================================ + +.. table:: **Table 5** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +.. table:: **Table 6** **loadbalancers_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. | + | | | | + | | | The value can be **next** or | + | | | **previous**. The value **next** | + | | | indicates the Hypertext Reference | + | | | (href) containing the URL of the next | + | | | page, and **previous** indicates the | + | | | href containing the URL of the | + | | | previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all load balancers + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/loadbalancers + +- Example request 2: Querying load balancers by page (Each page contains one load balancer. The ID of the start load balancer is **165b6a38-5278-4569-b747-b2ee65ea84a4**. The load balancer after **165b6a38-5278-4569-b747-b2ee65ea84a4** is the queried load balancer.) + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/loadbalancers?limit=1&marker=165b6a38-5278-4569-b747-b2ee65ea84a4 + +- Example request 3: Querying the load balancer using the IP address of a backend server (192.168.0.191) + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/loadbalancers?member_address=192.168.0.181 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "loadbalancers": [ + { + "description": "simple lb", + "admin_state_up": true, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + + "provisioning_status": "ACTIVE", + "vip_subnet_id": "5328f1e6-ce29-44f1-9493-b128a5653350", + "listeners": [ + { + "id": "45196943-2907-4369-87b1-c009b1d7ac35" + } + ], + "vip_address": "10.0.0.2", + "vip_port_id": "cbced4fe-6f6f-4fd6-9348-0c3d1219d6ca", + "provider": "vlb", + "pools": [ + { + "id": "21d49cf7-4fd3-4cb6-8c48-b7fc6c259aab" + } + ], + "id": "a9729389-6147-41a3-ab22-a24aed8692b2", + "operating_status": "ONLINE", + "tags": [], + "name": "loadbalancer1", + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "loadbalancers": [ + { + "description": "", + "provisioning_status": "ACTIVE", + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "admin_state_up": true, + "provider": "vlb", + "pools": [ + { + "id": "b13dba4c-a44c-4c40-8f6e-ce7a162b9f22" + }, + { + "id": "4b9e765f-82ee-4128-911b-0a2d9ebc74c7" + } + ], + "listeners": [ + { + "id": "21c41336-d0d3-4349-8641-6e82b4a4d097" + } + ], + "vip_port_id": "44ac5d9b-b0c0-4810-9a9d-c4dbf541e47e", + "operating_status": "ONLINE", + "vip_address": "192.168.0.234", + "vip_subnet_id": "9d60827e-0e5c-490a-8183-0b6ebf9084ca", + "id": "e79a7dd6-3a38-429a-95f9-c7f78b346cbe", + "tags": [], + "name": "elb-robot", + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + } + ], + "loadbalancers_links": [ + { + "href": "https://network.Region.dc1.domainname.com/v2.0/lbaas/loadbalancers?limit=10&marker=e79a7dd6-3a38-429a-95f9-c7f78b346cbe&page_reverse=True", + "rel": "previous" + } + ] + } + +- Example response 3 + + .. code:: screen + + { + "loadbalancers": [ + { + "description": "", + "provisioning_status": "ACTIVE", + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "created_at": "2018-11-29T13:55:20", + "admin_state_up": true, + "update_at": "2018-11-29T13:55:21", + "id": "c1127125-64a9-4394-a08a-ef3be8f7ef9c", + "pools": [ + { + "id": "2f6895be-019b-4c82-9b53-c4a2ac009e20" + } + ], + "listeners": [ + { + "id": "5c63d176-444f-4c75-9cfe-bcb8a05a845c" + } + ], + "vip_port_id": "434ac600-b779-4428-b7a7-830e047511f1", + "operating_status": "ONLINE", + "vip_address": "192.168.0.181", + "vip_subnet_id": "9a303536-417c-45dc-a6db-1234b9e1c2b2", + "provider": "vlb", + "tags": [], + "name": "elb-ftci" + + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_zq_fz_0004.html b/elb/api-ref/elb_zq_fz_0004.html new file mode 100644 index 000000000..6f313e745 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0004.html @@ -0,0 +1,498 @@ + + +

      Querying the Status Tree of a Load Balancer

      +

      Function

      This API is used to query the status tree of a load balancer. You can use this API to query details about the associated listeners, backend server groups, backend servers, health checks, forwarding policies, and forwarding rules, helping you understand the topology of resources associated with the load balancer.

      + +

      URI

      GET /v2.0/lbaas/loadbalancers/{loadbalancer_id}/statuses

      + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      statuses

      +

      Object

      +

      Specifies the status tree of a load balancer. For details, see Table 3.

      +
      + + + + + + + + + + + + +
      Table 3 statuses parameter description

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Object

      +

      Specifies the load balancer. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 loadbalancer parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      name

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      listeners

      +

      Array

      +

      Lists the listeners added to the load balancer. For details of this parameter, see Table 5.

      +

      pools

      +

      Array

      +

      Lists the backend server groups associated with the load balancer. For details of this parameter, see Table 6.

      +

      operating_status

      +

      String

      +

      This field is reserved.

      +

      It specifies the operating status of the load balancer. The value can be one of the following:

      +
      • ONLINE (default): The load balancer is running normally.
      • DEGRADED: This status is displayed only when provisioning_status of a forwarding policy or forwarding rule added to a listener of the load balancer is set to ERROR and the API for querying the load balancer status tree is called.
      • DISABLED: This status is displayed only when admin_state_up of the load balancer is set to false and the API for querying the load balancer status tree is called.
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      l7policies

      +

      Array

      +

      Lists associated forwarding policies. For details of this parameter, see Table 9.

      +

      pools

      +

      Array

      +

      Lists the backend server groups associated with the listener. For details of this parameter, see Table 6.

      +

      operating_status

      +

      String

      +

      This parameter is reserved, and its value can only be ONLINE.

      +

      It specifies the operating status of the listener.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the listener.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      name

      +

      String

      +

      Specifies the name of the backend server group.

      +

      healthmonitor

      +

      Object

      +

      Provides health check details of the backend server group. For details of this parameter, see Table 7.

      +

      members

      +

      Array

      +

      Lists the members contained in the backend server group. For details of this parameter, see Table 8.

      +

      operating_status

      +

      String

      +

      This parameter is reserved, and its value can only be ONLINE.

      +

      It specifies the operating status of the backend server group.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the backend server group.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 7 healthmonitor parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      type

      +

      String

      +
      • Specifies the health check protocol.
      • The value can be UDP_CONNECT, TCP, or HTTP.
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the health check.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 8 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      +

      address

      +

      String

      +

      Specifies the private IP address of the backend server, for example, 192.168.3.11.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 0 to 65535.

      +

      operating_status

      +

      String

      +

      This parameter is reserved. It specifies the operating status of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.
      • NO_MONITOR: No health check is configured for the backend server group that the backend server belongs to.
      • DISABLED: The backend server is not available. This status is displayed only when admin_state_up of the backend server, or the backend server group to which it belongs, or the associated load balancer is set to false and the API for querying the load balancer status tree is called.
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.
      + NOTE:

      When admin_state_up is set to false and operating_status is set to OFFLINE for a backend server, DISABLED is returned for operating_status of the backend server in the response of this API.

      + +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the backend server.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 9 l7policies parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      rules

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details of this parameter, see Table 10.

      +

      action

      +

      String

      +
      • Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.
      • The value can be REDIRECT_TO_POOL or REDIRECT_TO_LISTENER.
        • REDIRECT_TO_POOL: Requests are forwarded to another backend server group.
        • REDIRECT_TO_LISTENER: Requests are redirected to an HTTPS listener.
        +
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved.

      +

      It specifies the provisioning status of the forwarding policy. Value options:

      +
      • ACTIVE (default): The forwarding policy is normal.
      • ERROR: Another forwarding policy of the same listener has the same forwarding rule.
      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 10 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      type

      +

      String

      +
      • Specifies the match type of a forwarding rule.
      • The value can be PATH or HOST_NAME.
        • PATH: matches the path in the request.
        • HOST_NAME: matches the domain name in the request.
        +
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved.

      +

      It specifies the provisioning status of the forwarding rule. The value can be one of the following:

      +
      • ACTIVE (default): The forwarding rule is normal.
      • ERROR: Another forwarding policy of the same listener has the same forwarding rule.
      +
      + + +

      Example Request

      • Example request
        GET https://{Endpoint}/v2.0/lbaas/loadbalancers/38278031-cfca-44be-81be-a412f618773b/statuses
        +
      + +

      Example Response

      • Example response
        {
        +    "statuses": {
        +        "loadbalancer": {
        +            "name": "lb-jy",
        +            "provisioning_status": "ACTIVE",
        +            "listeners": [
        +                {
        +                    "name": "listener-jy-1",
        +                    "provisioning_status": "ACTIVE",
        +                    "pools": [
        +                        {
        +                            "name": "pool-jy-1",
        +                            "provisioning_status": "ACTIVE",
        +                            "healthmonitor": {
        +                                "type": "TCP",
        +                                "id": "7422b51a-0ed2-4702-9429-4f88349276c6",
        +                                "name": "",
        +                                "provisioning_status": "ACTIVE"
        +                            },
        +                            "members": [
        +                                {
        +                                    "protocol_port": 80,
        +                                    "address": "192.168.44.11",
        +                                    "id": "7bbf7151-0dce-4087-b316-06c7fa17b894",
        +                                    "operating_status": "ONLINE",
        +                                    "provisioning_status": "ACTIVE"
        +                                }
        +                            ],
        +                            "id": "c54b3286-2349-4c5c-ade1-e6bb0b26ad18",
        +                            "operating_status": "ONLINE"
        +                        }
        +                    ],
        +                    "l7policies": [],
        +                    "id": "eb84c5b4-9bc5-4bee-939d-3900fb05dc7b",
        +                    "operating_status": "ONLINE"
        +                }
        +            ],
        +            "pools": [
        +                {
        +                    "name": "pool-jy-1",
        +                    "provisioning_status": "ACTIVE",
        +                    "healthmonitor": {
        +                        "type": "TCP",
        +                        "id": "7422b51a-0ed2-4702-9429-4f88349276c6",
        +                        "name": "",
        +                        "provisioning_status": "ACTIVE"
        +                    },
        +                    "members": [
        +                        {
        +                            "protocol_port": 80,
        +                            "address": "192.168.44.11",
        +                            "id": "7bbf7151-0dce-4087-b316-06c7fa17b894",
        +                            "operating_status": "ONLINE",
        +                            "provisioning_status": "ACTIVE"
        +                        }
        +                    ],
        +                    "id": "c54b3286-2349-4c5c-ade1-e6bb0b26ad18",
        +                    "operating_status": "ONLINE"
        +                }
        +            ],
        +            "id": "38278031-cfca-44be-81be-a412f618773b",
        +            "operating_status": "ONLINE"
        +        }
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_zq_fz_0004.rst b/elb/api-ref/elb_zq_fz_0004.rst new file mode 100644 index 000000000..2c4a1e0c4 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0004.rst @@ -0,0 +1,409 @@ +Querying the Status Tree of a Load Balancer +=========================================== + +Function +^^^^^^^^ + +This API is used to query the status tree of a load balancer. You can use this API to query details about the associated listeners, backend server groups, backend servers, health checks, forwarding policies, and forwarding rules, helping you understand the topology of resources associated with the load balancer. + +URI +^^^ + +GET /v2.0/lbaas/loadbalancers/{loadbalancer_id}/statuses + +.. table:: **Table 1** Parameter description + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | statuses | Object | Specifies the status tree of a load balancer. For details, see `Table | + | | | 3 <#elb_zq_fz_0004__en-us_topic_0141008272_en-us_topic_0096561533_table1112044734716>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **statuses** parameter description + + +--------------+--------+--------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +==============+========+============================================================================================+ + | loadbalancer | Object | Specifies the load balancer. For details, see `Table | + | | | 4 <#elb_zq_fz_0004__en-us_topic_0141008272_en-us_topic_0096561533_table712410117487>`__. | + +--------------+--------+--------------------------------------------------------------------------------------------+ + +.. table:: **Table 4** **loadbalancer** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the listeners added to the load | + | | | balancer. For details of this | + | | | parameter, see `Table | + | | | 5 <#elb_zq_fz_0004 | + | | | __en-us_topic_0141008272_d0e1809>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the backend server groups | + | | | associated with the load balancer. | + | | | For details of this parameter, see | + | | | `Table | + | | | 6 <#elb_zq_fz_0004__en-us_topi | + | | | c_0141008272_table99441432133413>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This field is reserved. | + | | | | + | | | It specifies the operating status of | + | | | the load balancer. The value can be | + | | | one of the following: | + | | | | + | | | - **ONLINE** (default): The load | + | | | balancer is running normally. | + | | | - **DEGRADED**: This status is | + | | | displayed only when | + | | | **provisioning_status** of a | + | | | forwarding policy or forwarding | + | | | rule added to a listener of the | + | | | load balancer is set to **ERROR** | + | | | and the API for querying the load | + | | | balancer status tree is called. | + | | | - **DISABLED**: This status is | + | | | displayed only when | + | | | **admin_state_up** of the load | + | | | balancer is set to **false** and | + | | | the API for querying the load | + | | | balancer status tree is called. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **listeners** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7policies | Array | Lists associated forwarding policies. | + | | | For details of this parameter, see | + | | | `Table | + | | | 9 <#elb_zq_fz_0004__en-us_topic | + | | | _0141008272_table129151528185512>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the backend server groups | + | | | associated with the listener. For | + | | | details of this parameter, see `Table | + | | | 6 <#elb_zq_fz_0004__en-us_topi | + | | | c_0141008272_table99441432133413>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This parameter is reserved, and its | + | | | value can only be **ONLINE**. | + | | | | + | | | It specifies the operating status of | + | | | the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **pools** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the ID of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor | Object | Provides health check details of the | + | | | backend server group. For details of | + | | | this parameter, see `Table | + | | | 7 <#elb_zq_fz_0004__en-us_topi | + | | | c_0141008272_table10522133654610>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array | Lists the members contained in the | + | | | backend server group. For details of | + | | | this parameter, see `Table | + | | | 8 <#elb_zq_fz_0004__en-us_top | + | | | ic_0141008272_table1563417579480>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This parameter is reserved, and its | + | | | value can only be **ONLINE**. | + | | | | + | | | It specifies the operating status of | + | | | the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** **healthmonitor** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | - Specifies the health check | + | | | protocol. | + | | | - The value can be **UDP_CONNECT**, | + | | | **TCP**, or **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the health check. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** **members** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the private IP address of | + | | | the backend server, for example, | + | | | 192.168.3.11. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server. The port number | + | | | ranges from 0 to 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This parameter is reserved. It | + | | | specifies the operating status of the | + | | | backend server. The value can be one | + | | | of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group that the backend server | + | | | belongs to. | + | | | - **DISABLED**: The backend server | + | | | is not available. This status is | + | | | displayed only when | + | | | **admin_state_up** of the backend | + | | | server, or the backend server | + | | | group to which it belongs, or the | + | | | associated load balancer is set to | + | | | **false** and the API for querying | + | | | the load balancer status tree is | + | | | called. | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + | | | | + | | | NOTE: | + | | | When **admin_state_up** is set to | + | | | **false** and **operating_status** is | + | | | set to **OFFLINE** for a backend | + | | | server, **DISABLED** is returned for | + | | | **operating_status** of the backend | + | | | server in the response of this API. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the backend server. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 9** **l7policies** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array | Lists the forwarding rules of the | + | | | forwarding policy. For details of | + | | | this parameter, see `Table | + | | | 10 <#elb_zq_fz_0004__en-us_to | + | | | pic_0141008272_table197162765814>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | action | String | - Specifies whether requests are | + | | | forwarded to another backend | + | | | server group or redirected to an | + | | | HTTPS listener. | + | | | - The value can be | + | | | **REDIRECT_TO_POOL** or | + | | | **REDIRECT_TO_LISTENER**. | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests | + | | | are forwarded to another | + | | | backend server group. | + | | | - **REDIRECT_TO_LISTENER**: | + | | | Requests are redirected to an | + | | | HTTPS listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding policy. Value | + | | | options: | + | | | | + | | | - **ACTIVE** (default): The | + | | | forwarding policy is normal. | + | | | - **ERROR**: Another forwarding | + | | | policy of the same listener has | + | | | the same forwarding rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 10** **rules** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding rule ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | - Specifies the match type of a | + | | | forwarding rule. | + | | | - The value can be **PATH** or | + | | | **HOST_NAME**. | + | | | | + | | | - **PATH**: matches the path in | + | | | the request. | + | | | - **HOST_NAME**: matches the | + | | | domain name in the request. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding rule. The value can | + | | | be one of the following: | + | | | | + | | | - **ACTIVE** (default): The | + | | | forwarding rule is normal. | + | | | - **ERROR**: Another forwarding | + | | | policy of the same listener has | + | | | the same forwarding rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/loadbalancers/38278031-cfca-44be-81be-a412f618773b/statuses + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "statuses": { + "loadbalancer": { + "name": "lb-jy", + "provisioning_status": "ACTIVE", + "listeners": [ + { + "name": "listener-jy-1", + "provisioning_status": "ACTIVE", + "pools": [ + { + "name": "pool-jy-1", + "provisioning_status": "ACTIVE", + "healthmonitor": { + "type": "TCP", + "id": "7422b51a-0ed2-4702-9429-4f88349276c6", + "name": "", + "provisioning_status": "ACTIVE" + }, + "members": [ + { + "protocol_port": 80, + "address": "192.168.44.11", + "id": "7bbf7151-0dce-4087-b316-06c7fa17b894", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + ], + "id": "c54b3286-2349-4c5c-ade1-e6bb0b26ad18", + "operating_status": "ONLINE" + } + ], + "l7policies": [], + "id": "eb84c5b4-9bc5-4bee-939d-3900fb05dc7b", + "operating_status": "ONLINE" + } + ], + "pools": [ + { + "name": "pool-jy-1", + "provisioning_status": "ACTIVE", + "healthmonitor": { + "type": "TCP", + "id": "7422b51a-0ed2-4702-9429-4f88349276c6", + "name": "", + "provisioning_status": "ACTIVE" + }, + "members": [ + { + "protocol_port": 80, + "address": "192.168.44.11", + "id": "7bbf7151-0dce-4087-b316-06c7fa17b894", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + ], + "id": "c54b3286-2349-4c5c-ade1-e6bb0b26ad18", + "operating_status": "ONLINE" + } + ], + "id": "38278031-cfca-44be-81be-a412f618773b", + "operating_status": "ONLINE" + } + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_zq_fz_0005.html b/elb/api-ref/elb_zq_fz_0005.html new file mode 100644 index 000000000..20c19f308 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0005.html @@ -0,0 +1,343 @@ + + +

      Updating a Load Balancer

      +

      Function

      This API is used to update the name or description of a load balancer.

      + +

      URI

      PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Yes

      +

      Object

      +

      Specifies the load balancer. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 loadbalancer parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is reserved. The default value is true.

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Object

      +

      Specifies the load balancer. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 loadbalancer parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the load balancer is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      vip_subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the load balancer works.

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the private IP address of the load balancer.

      +

      When you create a load balancer, the system automatically creates a port and associates it with a security group. However, the security group will not take effect.

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer.

      +

      vip_address

      +

      String

      +

      Specifies the private IP address of the load balancer.

      +

      The value contains a maximum of 64 characters.

      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners added to the load balancer. For details, see Table 6.

      +

      pools

      +

      Array

      +

      Lists the IDs of backend server groups associated with the load balancer. For details, see Table 7.

      +

      operating_status

      +

      String

      +

      This parameter is reserved, and its value can only be ONLINE.

      +

      It specifies the operating status of the load balancer.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the load balancer.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      tags

      +

      Array

      +

      Lists load balancer tags.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +
      + + + + + + + + + + + + +
      Table 6 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated listener.

      +
      + + + + + + + + + + + + +
      Table 7 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + +

      Example Request

      • Example request: Modifying the load balancer name and description
        PUT https://{Endpoint}/v2.0/lbaas/loadbalancers/1e11b74e-30b7-4b78-b09b-84aec4a04487
        +
        +{
        +    "loadbalancer": {
        +        "name": "lb_update_test", 
        +        "description": "lb update test"
        +    }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +  "loadbalancer": {
        +    "description": "simple lb2",
        +    "admin_state_up": true,
        +    "tenant_id": "145483a5107745e9b3d80f956713e6a3",
        + 
        +    "provisioning_status": "ACTIVE",
        +    "vip_subnet_id": "823d5866-6e30-45c2-9b1a-a1ebc3757fdb",
        +    "listeners": [
        +      {
        +        "id": "37ffe679-08ef-436e-b6bd-cf66fb4c3de2"
        +      }
        +    ],
        +    "vip_address": "192.172.1.68",
        +    "vip_port_id": "f42e3019-67f7-4d2a-8d1c-af49e7c22fa6",
        +    "tags": [],
        +    "provider": "vlb",
        +    "pools": [
        +      {
        +        "id": "75c4f2d4-a213-4408-9fa8-d64708e8d1df"
        +      }
        +    ],
        +    "id": "c32a9f9a-0cc6-4f38-bb9c-cde79a533c19",
        +    "operating_status": "ONLINE",
        +    "name": "loadbalancer-test2",
        +    "created_at": "2018-07-25T01:54:13", 
        +    "updated_at": "2018-07-25T01:54:14"
        +  }
        +} 
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_zq_fz_0005.rst b/elb/api-ref/elb_zq_fz_0005.rst new file mode 100644 index 000000000..5bd129898 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0005.rst @@ -0,0 +1,248 @@ +Updating a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to update the name or description of a load balancer. + +URI +^^^ + +PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Parameter description + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +--------------+-----------+--------+-------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +==============+===========+========+===============================================================================+ + | loadbalancer | Yes | Object | Specifies the load balancer. For details, see `Table | + | | | | 3 <#elb_zq_fz_ | + | | | | 0005__en-us_topic_0141008274_en-us_topic_0096561536_table153641232163710>`__. | + +--------------+-----------+--------+-------------------------------------------------------------------------------+ + +.. table:: **Table 3** **loadbalancer** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the load balancer | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the load | + | | | | balancer. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the load balancer. | + | | | | | + | | | | This parameter is reserved. | + | | | | The default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +--------------+--------+--------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +==============+========+============================================================================================+ + | loadbalancer | Object | Specifies the load balancer. For details, see `Table | + | | | 5 <#elb_zq_fz_0005__en-us_topic_0141008274_en-us_topic_0096561536_table555616231383>`__. | + +--------------+--------+--------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **loadbalancer** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the load balancer is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_id | String | Specifies the ID of the subnet where | + | | | the load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the private IP address of the load | + | | | balancer. | + | | | | + | | | When you create a load balancer, the | + | | | system automatically creates a port | + | | | and associates it with a security | + | | | group. However, the security group | + | | | will not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IP address of | + | | | the load balancer. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners added to | + | | | the load balancer. For details, see | + | | | `Table | + | | | 6 <#elb_zq_fz_0005__en-us_to | + | | | pic_0141008274_table107875111574>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the IDs of backend server | + | | | groups associated with the load | + | | | balancer. For details, see `Table | + | | | 7 <#elb_zq_fz_0005__en-us_top | + | | | ic_0141008274_table1566642411246>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This parameter is reserved, and its | + | | | value can only be **ONLINE**. | + | | | | + | | | It specifies the operating status of | + | | | the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Lists load balancer tags. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **listeners** parameter description + + ========= ====== ============================================ + Parameter Type Description + ========= ====== ============================================ + id String Specifies the ID of the associated listener. + ========= ====== ============================================ + +.. table:: **Table 7** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Modifying the load balancer name and description + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/loadbalancers/1e11b74e-30b7-4b78-b09b-84aec4a04487 + + { + "loadbalancer": { + "name": "lb_update_test", + "description": "lb update test" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "loadbalancer": { + "description": "simple lb2", + "admin_state_up": true, + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + + "provisioning_status": "ACTIVE", + "vip_subnet_id": "823d5866-6e30-45c2-9b1a-a1ebc3757fdb", + "listeners": [ + { + "id": "37ffe679-08ef-436e-b6bd-cf66fb4c3de2" + } + ], + "vip_address": "192.172.1.68", + "vip_port_id": "f42e3019-67f7-4d2a-8d1c-af49e7c22fa6", + "tags": [], + "provider": "vlb", + "pools": [ + { + "id": "75c4f2d4-a213-4408-9fa8-d64708e8d1df" + } + ], + "id": "c32a9f9a-0cc6-4f38-bb9c-cde79a533c19", + "operating_status": "ONLINE", + "name": "loadbalancer-test2", + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_zq_fz_0006.html b/elb/api-ref/elb_zq_fz_0006.html new file mode 100644 index 000000000..ba33f74d5 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0006.html @@ -0,0 +1,51 @@ + + +

      Deleting a Load Balancer

      +

      Function

      This API is used to delete a specific load balancer.

      + +

      Constraints

      All listeners added to the load balancer must be deleted before the load balancer is deleted.

      + +

      URI

      DELETE /v2.0/lbaas/loadbalancers/{loadbalancer_id}

      + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the load balancer ID.

      +
      + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      Example request: Deleting a load balancer
      DELETE https://{endpoint}/v2.0/lbaas/loadbalancers/90f7c765-0bc9-47c4-8513-4cc0c264c8f8
      + + +

      Example Response

      Example response

      +

      None

      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/elb_zq_fz_0006.rst b/elb/api-ref/elb_zq_fz_0006.rst new file mode 100644 index 000000000..f11d82139 --- /dev/null +++ b/elb/api-ref/elb_zq_fz_0006.rst @@ -0,0 +1,58 @@ +Deleting a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to delete a specific load balancer. + +Constraints +^^^^^^^^^^^ + +All listeners added to the load balancer must be deleted before the load balancer is deleted. + +URI +^^^ + +DELETE /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +.. table:: **Table 1** Parameter description + + =============== ========= ====== =============================== + Parameter Mandatory Type Description + =============== ========= ====== =============================== + loadbalancer_id Yes String Specifies the load balancer ID. + =============== ========= ====== =============================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +Example request: Deleting a load balancer + +.. code:: screen + + DELETE https://{endpoint}/v2.0/lbaas/loadbalancers/90f7c765-0bc9-47c4-8513-4cc0c264c8f8 + +Example Response +^^^^^^^^^^^^^^^^ + +Example response + +None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/elb_zq_hd_0000.html b/elb/api-ref/elb_zq_hd_0000.html new file mode 100644 index 000000000..7ef87dd31 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0000.html @@ -0,0 +1,27 @@ + + +

      Backend Server

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_hd_0000.rst b/elb/api-ref/elb_zq_hd_0000.rst new file mode 100644 index 000000000..969e25565 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0000.rst @@ -0,0 +1,12 @@ +Backend Server +============== + +- `Adding a Backend Server `__ +- `Querying Backend Servers `__ +- `Querying Details of a Backend Server `__ +- `Updating a Backend Server `__ +- `Removing a Backend Server `__ +- `Querying All Backend Servers (Extension API) `__ +- `Batch Updating Backend Servers `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_hd_0001.html b/elb/api-ref/elb_zq_hd_0001.html new file mode 100644 index 000000000..04882b53f --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0001.html @@ -0,0 +1,325 @@ + + +

      Adding a Backend Server

      +

      Function

      This API is used to add a backend server to a specific backend server group. After a backend server group is added to a listener, traffic is distributed to backend servers in this server group using the specified load balancing algorithm.

      + +

      Constraints

      Two backend servers in a backend server group cannot have the same private IP address or port number.

      +

      The subnet specified during server creation must be in the same VPC as the subnet from which the private IP address of the load balancer is assigned.

      + +

      URI

      POST /v2.0/lbaas/pools/{pool_id}/members

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      member

      +

      Yes

      +

      Object

      +

      Specifies the backend server. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 member parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name. The value is an empty character string by default.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      Yes

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Yes

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the subnet where the backend server works.

      +

      The private IP address of the backend server is in this subnet.

      +

      Only IPv4 subnets are supported.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved, and the default value is true.

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      member

      +

      Object

      +

      Specifies the backend server. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 member parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. The private IP address of the backend server is in this subnet.

      +

      IPv6 subnets are not supported.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      weight

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +

      operating_status

      +

      String

      +

      Specifies the health check result of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.
      • NO_MONITOR: No health check is configured for the backend server group that the backend server belongs to.
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.
      +
      + + +

      Example Request

      • Step 1: Query the subnet ID and IP address using the server ID. device_id in the request indicates the server ID. Obtain the values of subnet_id and ip_address of the primary NIC (the port for which primary_interface is true) in the response body.
        GET https://{VPCEndpoint}/v2.0/ports?device_id=f738c464-b5c2-45df-86c0-7f436620cd54
        +

        Example response

        +
        {
        +    "ports": [
        +        {
        +            "id": "94971c39-46f0-443a-85e8-31cb7497c78e",
        +            "name": "",
        +            "status": "ACTIVE",
        +            "admin_state_up": true,
        +            "fixed_ips": [
        +                {
        +                    "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503",
        +                    "ip_address": "192.168.44.11"
        +                }
        +            ],
        +            "mac_address": "fa:16:3e:5c:d2:57",
        +            "network_id": "1b76b9c2-9b7e-4ced-81bd-d13f7389d7c9",
        +            "tenant_id": "04dd36f978800fe22f9bc00bea090736",
        +            "project_id": "04dd36f978800fe22f9bc00bea090736",
        +            "device_id": "f738c464-b5c2-45df-86c0-7f436620cd54",
        +            "device_owner": "compute:xx-xxxx-4a",
        +            "security_groups": [
        +                "a10dfc31-0055-4b84-b36e-1291b918125c",
        +                "7a233393-5be2-4dff-8360-1558dd950f6e"
        +            ],
        +            "extra_dhcp_opts": [],
        +            "allowed_address_pairs": [],
        +            "binding:vnic_type": "normal",
        +            "binding:vif_details": {
        +                "primary_interface": true
        +            },
        +            "binding:profile": {},
        +            "port_security_enabled": true,
        +            "created_at": "2019-11-12T17:17:51",
        +            "updated_at": "2019-11-12T17:17:51"
        +        }
        +    ]
        +}
        +
      • Step 2: Use the subnet ID and IP address obtained in ▪ Step 1 to add a backend server.
        POST https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members
        +
        +{
        +    "member": {
        +        "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503",
        +        "protocol_port": 88,
        +        "name": "member-jy-tt-1",
        +        "address": "192.168.44.11"
        +    }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "member": {
        +        "name": "member-jy-tt-1", 
        +        "weight": 1, 
        +        "admin_state_up": true, 
        +        "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +        "tenant_id": "145483a5107745e9b3d80f956713e6a3", 
        + 
        +        "address": "192.168.44.11", 
        +        "protocol_port": 88, 
        +        "operating_status": "ONLINE", 
        +        "id": "c0042496-e220-44f6-914b-e6ca33bab503"
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0001.rst b/elb/api-ref/elb_zq_hd_0001.rst new file mode 100644 index 000000000..9f40d348d --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0001.rst @@ -0,0 +1,299 @@ +Adding a Backend Server +======================= + +Function +^^^^^^^^ + +This API is used to add a backend server to a specific backend server group. After a backend server group is added to a listener, traffic is distributed to backend servers in this server group using the specified load balancing algorithm. + +Constraints +^^^^^^^^^^^ + +Two backend servers in a backend server group cannot have the same private IP address or port number. + +The subnet specified during server creation must be in the same VPC as the subnet from which the private IP address of the load balancer is assigned. + +URI +^^^ + +POST /v2.0/lbaas/pools/{pool_id}/members + +.. table:: **Table 1** Parameter description + + ========= ========= ====== ============================================= + Parameter Mandatory Type Description + ========= ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + ========= ========= ====== ============================================= + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | member | Yes | Object | Specifies the backend server. For details, see `Table | + | | | | 3 <#elb_zq_hd_0001__en-us_topic_0096561556_table1686816641616>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **member** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the backend | + | | | | server is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server name. The value is | + | | | | an empty character string | + | | | | by default. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | address | Yes | String | Specifies the private IP | + | | | | address of the backend | + | | | | server. This IP address | + | | | | must be in the subnet | + | | | | specified by **subnet_id**. | + | | | | | + | | | | This parameter can be set | + | | | | only to the IP address of | + | | | | the primary NIC, for | + | | | | example, 192.168.3.11. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | Yes | Integer | Specifies the port used by | + | | | | the backend server. The | + | | | | port number ranges from 1 | + | | | | to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | subnet_id | Yes | String | Specifies the ID of the | + | | | | subnet where the backend | + | | | | server works. | + | | | | | + | | | | The private IP address of | + | | | | the backend server is in | + | | | | this subnet. | + | | | | | + | | | | Only IPv4 subnets are | + | | | | supported. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the backend | + | | | | server weight. The value | + | | | | ranges from **0** to | + | | | | **100**. | + | | | | | + | | | | If the value is **0**, the | + | | | | backend server will not | + | | | | accept new requests. The | + | | | | default value is **1**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | member | Object | Specifies the backend server. For details, see `Table | + | | | 5 <#elb_zq_hd_0001__en-us_topic_0096561556_table1096713051618>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **member** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the backend server ID. | + | | | | + | | | NOTE: | + | | | The value of this parameter is not | + | | | the ID of the server but an ID | + | | | automatically generated for the | + | | | backend server that has already | + | | | associated with the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the private IP address of | + | | | the backend server. This IP address | + | | | must be in the subnet specified by | + | | | **subnet_id**. | + | | | | + | | | This parameter can be set only to the | + | | | IP address of the primary NIC, for | + | | | example, 192.168.3.11. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server. The port number | + | | | ranges from 1 to 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_id | String | Specifies the ID of the subnet where | + | | | the backend server works. The private | + | | | IP address of the backend server is | + | | | in this subnet. | + | | | | + | | | IPv6 subnets are not supported. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the backend server weight. | + | | | The value ranges from **0** to | + | | | **100**. | + | | | | + | | | If the value is **0**, the backend | + | | | server will not accept new requests. | + | | | The default value is **1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the health check result of | + | | | the backend server. The value can be | + | | | one of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group that the backend server | + | | | belongs to. | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Step 1: Query the subnet ID and IP address using the server ID. **device_id** in the request indicates the server ID. Obtain the values of **subnet_id** and **ip_address** of the primary NIC (the port for which **primary_interface** is **true**) in the response body. + + .. code:: screen + + GET https://{VPCEndpoint}/v2.0/ports?device_id=f738c464-b5c2-45df-86c0-7f436620cd54 + + Example response + + .. code:: screen + + { + "ports": [ + { + "id": "94971c39-46f0-443a-85e8-31cb7497c78e", + "name": "", + "status": "ACTIVE", + "admin_state_up": true, + "fixed_ips": [ + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "ip_address": "192.168.44.11" + } + ], + "mac_address": "fa:16:3e:5c:d2:57", + "network_id": "1b76b9c2-9b7e-4ced-81bd-d13f7389d7c9", + "tenant_id": "04dd36f978800fe22f9bc00bea090736", + "project_id": "04dd36f978800fe22f9bc00bea090736", + "device_id": "f738c464-b5c2-45df-86c0-7f436620cd54", + "device_owner": "compute:xx-xxxx-4a", + "security_groups": [ + "a10dfc31-0055-4b84-b36e-1291b918125c", + "7a233393-5be2-4dff-8360-1558dd950f6e" + ], + "extra_dhcp_opts": [], + "allowed_address_pairs": [], + "binding:vnic_type": "normal", + "binding:vif_details": { + "primary_interface": true + }, + "binding:profile": {}, + "port_security_enabled": true, + "created_at": "2019-11-12T17:17:51", + "updated_at": "2019-11-12T17:17:51" + } + ] + } + +- Step 2: Use the subnet ID and IP address obtained in `▪ Step 1 <#elb_zq_hd_0001__en-us_topic_0096561556_li1069222685516>`__ to add a backend server. + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members + + { + "member": { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-jy-tt-1", + "address": "192.168.44.11" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "member": { + "name": "member-jy-tt-1", + "weight": 1, + "admin_state_up": true, + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + + "address": "192.168.44.11", + "protocol_port": 88, + "operating_status": "ONLINE", + "id": "c0042496-e220-44f6-914b-e6ca33bab503" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hd_0002.html b/elb/api-ref/elb_zq_hd_0002.html new file mode 100644 index 000000000..ec96ea0e9 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0002.html @@ -0,0 +1,345 @@ + + +

      Querying Backend Servers

      +

      Function

      This API is used to query backend servers in a specific backend server group. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/pools/{pool_id}/members

      + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the backend server from which pagination query starts, that is, the ID of the last backend server on the previous page. If this parameter is not specified, the first page will be queried.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of backend servers on each page. If this parameter is not set, all backend servers are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      The value contains a maximum of 255 characters.

      +

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      + NOTE:

      The value of this parameter is not the name of server. It is the name automatically generated for the backend server associated with the load balancer.

      + +

      address

      +

      No

      +

      String

      +

      Specifies the private IP address of the backend server.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      No

      +

      Integer

      +

      Specifies the port used by the backend server.

      +

      subnet_id

      +

      No

      +

      String

      +

      Specifies the ID of the subnet where the backend server works.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved, and the default value is true.

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the backend server weight.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 3 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      members

      +

      Array

      +

      Lists the backend servers in the backend server group. For details, see Table 4.

      +

      members_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. The private IP address of the backend server is in this subnet.

      +

      IPv6 subnets are not supported.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      weight

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer. This parameter is reserved, and its value can only be ONLINE.

      +
      + + + + + + + + + + + + + + + + +
      Table 5 members_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page. The value can be next or previous.

      +
      • next: indicates the URL of the next page.
      • previous: indicates the URL of the previous page.
      +
      + + +

      Example Request

      • Example request 1: Querying all backend servers
        GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members
        +
      +
      • Example request 2: Querying the backend cloud server whose IP address is 10.0.0.8 and port number is 80
        GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members?address=10.0.0.8&protocol_port=80
        +
      + +

      Example Response

      • Example response 1
        {
        +    "members": [
        +        {
        +            "address": "10.0.0.8", 
        +            "admin_state_up": true, 
        +            "id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313", 
        +            "protocol_port": 80, 
        +            "subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", 
        +            "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
        +            "weight": 1, 
        +            "operating_status": "ONLINE", 
        +            "name": "member-name"
        +        }
        +    ]
        +}
        +
      +
      • Example response 2
        {
        +    "members": [
        +        {
        +            "address": "10.0.0.8", 
        +            "admin_state_up": true, 
        +            "id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313", 
        +            "protocol_port": 80, 
        +            "subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", 
        +            "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
        + 
        +            "weight": 1, 
        +            "operating_status": "ONLINE", 
        +            "name": "member-name"
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0002.rst b/elb/api-ref/elb_zq_hd_0002.rst new file mode 100644 index 000000000..af088369c --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0002.rst @@ -0,0 +1,312 @@ +Querying Backend Servers +======================== + +Function +^^^^^^^^ + +This API is used to query backend servers in a specific backend server group. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/pools/{pool_id}/members + +.. table:: **Table 1** Parameter description + + ========= ========= ====== ============================================= + Parameter Mandatory Type Description + ========= ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + ========= ========= ====== ============================================= + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | backend server from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | backend server on the | + | | | | previous page. If this | + | | | | parameter is not specified, | + | | | | the first page will be | + | | | | queried. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | backend servers on each | + | | | | page. If this parameter is | + | | | | not set, all backend | + | | | | servers are queried by | + | | | | default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | NOTE: | + | | | | The value of this parameter | + | | | | is not the ID of the server | + | | | | but an ID automatically | + | | | | generated for the backend | + | | | | server that has already | + | | | | associated with the load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the backend | + | | | | server is used. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + | | | | | + | | | | NOTE: | + | | | | The value of this parameter | + | | | | is not the name of server. | + | | | | It is the name | + | | | | automatically generated for | + | | | | the backend server | + | | | | associated with the load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | address | No | String | Specifies the private IP | + | | | | address of the backend | + | | | | server. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | No | Integer | Specifies the port used by | + | | | | the backend server. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | subnet_id | No | String | Specifies the ID of the | + | | | | subnet where the backend | + | | | | server works. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the backend | + | | | | server weight. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | members | Array | Lists the backend servers in the | + | | | backend server group. For details, | + | | | see `Table | + | | | 4 <#elb_zq_hd_0002__en-us_top | + | | | ic_0096561554_table1877212199143>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | For details, see `Table | + | | | 5 <#elb_zq_hd_0002__en-us_to | + | | | pic_0096561554_table109691887394>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **members** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the backend server ID. | + | | | | + | | | NOTE: | + | | | The value of this parameter is not | + | | | the ID of the server but an ID | + | | | automatically generated for the | + | | | backend server that has already | + | | | associated with the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the private IP address of | + | | | the backend server. This IP address | + | | | must be in the subnet specified by | + | | | **subnet_id**. | + | | | | + | | | This parameter can be set only to the | + | | | IP address of the primary NIC, for | + | | | example, 192.168.3.11. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server. The port number | + | | | ranges from 1 to 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_id | String | Specifies the ID of the subnet where | + | | | the backend server works. The private | + | | | IP address of the backend server is | + | | | in this subnet. | + | | | | + | | | IPv6 subnets are not supported. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the backend server weight. | + | | | The value ranges from **0** to | + | | | **100**. | + | | | | + | | | If the value is **0**, the backend | + | | | server will not accept new requests. | + | | | The default value is **1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. This parameter is | + | | | reserved, and its value can only be | + | | | **ONLINE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **members_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. The value can be | + | | | **next** or **previous**. | + | | | | + | | | - **next**: indicates the URL of the | + | | | next page. | + | | | - **previous**: indicates the URL of | + | | | the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all backend servers + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members + +- Example request 2: Querying the backend cloud server whose IP address is 10.0.0.8 and port number is 80 + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members?address=10.0.0.8&protocol_port=80 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "members": [ + { + "address": "10.0.0.8", + "admin_state_up": true, + "id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313", + "protocol_port": 80, + "subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "weight": 1, + "operating_status": "ONLINE", + "name": "member-name" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "members": [ + { + "address": "10.0.0.8", + "admin_state_up": true, + "id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313", + "protocol_port": 80, + "subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + + "weight": 1, + "operating_status": "ONLINE", + "name": "member-name" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hd_0003.html b/elb/api-ref/elb_zq_hd_0003.html new file mode 100644 index 000000000..0ad525adc --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0003.html @@ -0,0 +1,177 @@ + + +

      Querying Details of a Backend Server

      +

      Function

      This API is used to query details about a backend server.

      + +

      URI

      GET /v2.0/lbaas/pools/{pool_id}/members/{member_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      member_id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:
      • The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.
      • You can obtain this value by calling the API described in Querying Backend Servers.
      + +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      member

      +

      Object

      +

      Lists the backend servers. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 member parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. The private IP address of the backend server is in this subnet.

      +

      IPv6 subnets are not supported.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      weight

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +

      operating_status

      +

      String

      +

      Specifies the health check result of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.
      • NO_MONITOR: No health check is configured for the backend server group that the backend server belongs to.
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.
      +
      + + +

      Example Request

      • Example request: Querying details of a backend server
        GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members/cf024846-7516-4e3a-b0fb-6590322c836f
        +
      + +

      Example Response

      • Example response
        {
        +    "member": {
        +        "name": "", 
        +        "weight": 1, 
        +        "admin_state_up": true, 
        +        "subnet_id": "823d5866-6e30-45c2-9b1a-a1ebc3757fdb", 
        +        "tenant_id": "145483a5107745e9b3d80f956713e6a3", 
        + 
        +        "address": "192.172.3.100", 
        +        "protocol_port": 8080, 
        +        "operating_status": "ONLINE", 
        +        "id": "e58f5bfa-0e46-4bc5-951c-8473d3e5f24a"
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0003.rst b/elb/api-ref/elb_zq_hd_0003.rst new file mode 100644 index 000000000..27f45d5f5 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0003.rst @@ -0,0 +1,176 @@ +Querying Details of a Backend Server +==================================== + +Function +^^^^^^^^ + +This API is used to query details about a backend server. + +URI +^^^ + +GET /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | **Description** | + +=============================+=============================+=============================+=============================+ + | pool_id | Yes | String | Specifies the ID of the | + | | | | backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_id | Yes | String | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | NOTE: | + | | | | | + | | | | - The value of this | + | | | | parameter is not the ID | + | | | | of the server but an ID | + | | | | automatically generated | + | | | | for the backend server | + | | | | that has already | + | | | | associated with the load | + | | | | balancer. | + | | | | - You can obtain this | + | | | | value by calling the API | + | | | | described in `Querying | + | | | | Backend | + | | | | Servers `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | member | Object | Lists the backend servers. For details, see `Table | + | | | 3 <#elb_zq_hd_0003__en-us_topic_0096561555_table1080991113150>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **member** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the backend server ID. | + | | | | + | | | NOTE: | + | | | The value of this parameter is not | + | | | the ID of the server but an ID | + | | | automatically generated for the | + | | | backend server that has already | + | | | associated with the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the private IP address of | + | | | the backend server. This IP address | + | | | must be in the subnet specified by | + | | | **subnet_id**. | + | | | | + | | | This parameter can be set only to the | + | | | IP address of the primary NIC, for | + | | | example, 192.168.3.11. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server. The port number | + | | | ranges from 1 to 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_id | String | Specifies the ID of the subnet where | + | | | the backend server works. The private | + | | | IP address of the backend server is | + | | | in this subnet. | + | | | | + | | | IPv6 subnets are not supported. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the backend server weight. | + | | | The value ranges from **0** to | + | | | **100**. | + | | | | + | | | If the value is **0**, the backend | + | | | server will not accept new requests. | + | | | The default value is **1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the health check result of | + | | | the backend server. The value can be | + | | | one of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group that the backend server | + | | | belongs to. | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a backend server + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members/cf024846-7516-4e3a-b0fb-6590322c836f + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "member": { + "name": "", + "weight": 1, + "admin_state_up": true, + "subnet_id": "823d5866-6e30-45c2-9b1a-a1ebc3757fdb", + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + + "address": "192.172.3.100", + "protocol_port": 8080, + "operating_status": "ONLINE", + "id": "e58f5bfa-0e46-4bc5-951c-8473d3e5f24a" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hd_0004.html b/elb/api-ref/elb_zq_hd_0004.html new file mode 100644 index 000000000..7db844693 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0004.html @@ -0,0 +1,251 @@ + + +

      Updating a Backend Server

      +

      Function

      This API is used to update a backend server. You can modify its name and weight. You can set a larger weight for backend servers that can receive more traffic.

      + +

      Constraints

      If the provisioning status of the associated load balancer is not ACTIVE, the backend server cannot be updated.

      + +

      URI

      PUT /v2.0/lbaas/pools/{pool_id}/members/{member_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      member_id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:
      • The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.
      • You can obtain this value by calling the API described in Querying Backend Servers.
      + +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      member

      +

      Yes

      +

      Object

      +

      Specifies the backend server. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 member parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved, and the default value is true.

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      member

      +

      Object

      +

      Specifies the backend server. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 member parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. The private IP address of the backend server is in this subnet.

      +

      IPv6 subnets are not supported.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      weight

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +

      operating_status

      +

      String

      +

      Specifies the health check result of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.
      • NO_MONITOR: No health check is configured for the backend server group that the backend server belongs to.
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.
      +
      + + +

      Example Request

      • Example request: Updating the name and weight of a backend server
        PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members/c0042496-e220-44f6-914b-e6ca33bab503 
        +
        +{ 
        +    "member": { 
        +        "name": "member create test", 
        +        "weight": 10
        +    } 
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "member": {
        +        "name": "member-jy-tt-1", 
        +        "weight": 1, 
        +        "admin_state_up": true, 
        +        "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +        "tenant_id": "145483a5107745e9b3d80f956713e6a3",
        +        "address": "192.168.44.11", 
        +        "protocol_port": 88, 
        +        "operating_status": "ONLINE", 
        +        "id": "c0042496-e220-44f6-914b-e6ca33bab503"
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0004.rst b/elb/api-ref/elb_zq_hd_0004.rst new file mode 100644 index 000000000..0bc37f3cb --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0004.rst @@ -0,0 +1,224 @@ +Updating a Backend Server +========================= + +Function +^^^^^^^^ + +This API is used to update a backend server. You can modify its name and weight. You can set a larger weight for backend servers that can receive more traffic. + +Constraints +^^^^^^^^^^^ + +If the provisioning status of the associated load balancer is not **ACTIVE**, the backend server cannot be updated. + +URI +^^^ + +PUT /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | pool_id | Yes | String | Specifies the ID of the | + | | | | backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_id | Yes | String | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | NOTE: | + | | | | | + | | | | - The value of this | + | | | | parameter is not the ID | + | | | | of the server but an ID | + | | | | automatically generated | + | | | | for the backend server | + | | | | that has already | + | | | | associated with the load | + | | | | balancer. | + | | | | - You can obtain this | + | | | | value by calling the API | + | | | | described in `Querying | + | | | | Backend | + | | | | Servers `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | member | Yes | Object | Specifies the backend server. For details, see `Table | + | | | | 3 <#elb_zq_hd_0004__en-us_topic_0096561557_table86692915171>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **member** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the backend | + | | | | server name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the backend | + | | | | server weight. The value | + | | | | ranges from **0** to | + | | | | **100**. | + | | | | | + | | | | If the value is **0**, the | + | | | | backend server will not | + | | | | accept new requests. The | + | | | | default value is **1**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | member | Object | Specifies the backend server. For details, see `Table | + | | | 5 <#elb_zq_hd_0004__en-us_topic_0096561557_table165363113183>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **member** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the backend server ID. | + | | | | + | | | NOTE: | + | | | The value of this parameter is not | + | | | the ID of the server but an ID | + | | | automatically generated for the | + | | | backend server that has already | + | | | associated with the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the private IP address of | + | | | the backend server. This IP address | + | | | must be in the subnet specified by | + | | | **subnet_id**. | + | | | | + | | | This parameter can be set only to the | + | | | IP address of the primary NIC, for | + | | | example, 192.168.3.11. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server. The port number | + | | | ranges from 1 to 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_id | String | Specifies the ID of the subnet where | + | | | the backend server works. The private | + | | | IP address of the backend server is | + | | | in this subnet. | + | | | | + | | | IPv6 subnets are not supported. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the backend server weight. | + | | | The value ranges from **0** to | + | | | **100**. | + | | | | + | | | If the value is **0**, the backend | + | | | server will not accept new requests. | + | | | The default value is **1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the health check result of | + | | | the backend server. The value can be | + | | | one of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | - **NO_MONITOR**: No health check is | + | | | configured for the backend server | + | | | group that the backend server | + | | | belongs to. | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating the name and weight of a backend server + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members/c0042496-e220-44f6-914b-e6ca33bab503 + + { + "member": { + "name": "member create test", + "weight": 10 + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "member": { + "name": "member-jy-tt-1", + "weight": 1, + "admin_state_up": true, + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + "address": "192.168.44.11", + "protocol_port": 88, + "operating_status": "ONLINE", + "id": "c0042496-e220-44f6-914b-e6ca33bab503" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hd_0005.html b/elb/api-ref/elb_zq_hd_0005.html new file mode 100644 index 000000000..b632b37b5 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0005.html @@ -0,0 +1,62 @@ + + +

      Removing a Backend Server

      +

      Function

      This API is used to remove a backend server by its ID.

      + +

      Constraints

      After you remove a backend server, new connections to this server will not be established. However, long connections that have been established will be maintained.

      + +

      URI

      DELETE /v2.0/lbaas/pools/{pool_id}/members/{member_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      member_id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:
      • The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.
      • You can obtain this value by calling the API described in Querying Backend Servers.
      + +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Removing a backend server
        DELETE https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members/cf024846-7516-4e3a-b0fb-6590322c836f
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0005.rst b/elb/api-ref/elb_zq_hd_0005.rst new file mode 100644 index 000000000..6afb1c2ae --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0005.rst @@ -0,0 +1,79 @@ +Removing a Backend Server +========================= + +Function +^^^^^^^^ + +This API is used to remove a backend server by its ID. + +Constraints +^^^^^^^^^^^ + +After you remove a backend server, new connections to this server will not be established. However, long connections that have been established will be maintained. + +URI +^^^ + +DELETE /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | pool_id | Yes | String | Specifies the ID of the | + | | | | backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_id | Yes | String | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | NOTE: | + | | | | | + | | | | - The value of this | + | | | | parameter is not the ID | + | | | | of the server but an ID | + | | | | automatically generated | + | | | | for the backend server | + | | | | that has already | + | | | | associated with the load | + | | | | balancer. | + | | | | - You can obtain this | + | | | | value by calling the API | + | | | | described in `Querying | + | | | | Backend | + | | | | Servers `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Removing a backend server + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members/cf024846-7516-4e3a-b0fb-6590322c836f + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hd_0006.html b/elb/api-ref/elb_zq_hd_0006.html new file mode 100644 index 000000000..de9572347 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0006.html @@ -0,0 +1,439 @@ + + +

      Querying All Backend Servers (Extension API)

      +

      Function

      This API is used to query all backend servers. Filter query and pagination query are supported.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/members

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the backend server from which pagination query starts, that is, the ID of the last backend server on the previous page. If this parameter is not specified, the first page will be queried.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of backend servers on each page. If this parameter is not set, all backend servers are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      No

      +

      String

      +

      Specifies the private IP address of the backend server.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      No

      +

      Integer

      +

      Specifies the port used by the backend server.

      +

      subnet_id

      +

      No

      +

      String

      +

      Specifies the ID of the subnet where the backend server works.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved, and the default value is true.

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the backend server weight.

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the backend server ID.

      +

      operating_status

      +

      No

      +

      String

      +

      Specifies the health check result of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.
      • NO_MONITOR: No health check is performed on the backend server.
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.
      +

      The default value is ONLINE.

      +

      members_links

      +

      No

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + +
      Table 2 members_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page. The value can be next or previous.

      +
      • next: indicates the URL of the next page.
      • previous: indicates the URL of the previous page.
      +
      + + +

      Response

      + + + + + + + + + + +
      Table 3 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      members

      +

      Array

      +

      Lists the backend servers. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:

      The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.

      + +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the backend server name.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. The private IP address of the backend server is in this subnet.

      +

      IPv6 subnets are not supported.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      weight

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +

      operating_status

      +

      String

      +

      Specifies the health check result of the backend server. The value can be one of the following:

      +
      • ONLINE: The backend server is running normally.
      • NO_MONITOR: No health check is performed on the backend server.
      • OFFLINE: The cloud server used as the backend server is stopped or does not exist.
      +

      device_id

      +

      String

      +

      Specifies the ID of the cloud server used as the backend server. If the cloud server does not exist, this parameter is an empty string.

      +

      device_owner

      +

      String

      +

      Specifies the resource ID and AZ ID of the cloud server used as the backend server, for example, compute:az2.dc2.

      +

      If no corresponding ECS is available, the value is an empty string.

      +

      loadbalancer_id

      +

      String

      +

      Specifies the backend server ID.

      +

      members_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query. For details, see Table 5.

      +

      pool_id

      +

      String

      +

      Specifies the backend server ID.

      +
      + + + + + + + + + + + + + + + + +
      Table 5 members_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page. The value can be next or previous.

      +
      • next: indicates the URL of the next page.
      • previous: indicates the URL of the previous page.
      +
      + + +

      Example Request

      • Example request 1: Querying all backend servers
        GET https://{Endpoint}/v2.0/lbaas/members
        +
      +
      • Example request 2: Displaying two backend servers on each page and filtering out backend servers whose health check result is OFFLINE
        GET https://{Endpoint}/v2.0/lbaas/members?operating_status=OFFLINE&limit=2
        +
      + +

      Example Response

      • Example response 1
        {
        +    "members": [
        +        {
        +            "name": "", 
        +            "weight": 1, 
        +            "admin_state_up": false, 
        +            "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", 
        +            "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +            "pool_id": "b299051c-a154-4bd6-b630-215151593306", 
        +            "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", 
        +            "device_owner": "", 
        +            "address": "192.168.77.11", 
        +            "protocol_port": 880, 
        +            "id": "50bd4ae0-fdf4-4540-b94a-04ce6241751e", 
        +            "operating_status": "OFFLINE", 
        +            "device_id": ""
        +        }, 
        +        {
        +            "name": "", 
        +            "weight": 1, 
        +            "admin_state_up": false, 
        +            "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", 
        +            "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +            "pool_id": "b299051c-a154-4bd6-b630-215151593306", 
        +            "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", 
        +            "device_owner": "", 
        +            "address": "192.168.77.12", 
        +            "protocol_port": 880, 
        +            "id": "fa2045e3-b296-406b-ad12-1611dce44be6", 
        +            "operating_status": "OFFLINE", 
        +            "device_id": ""
        +        }
        +    ]
        +}
        +
      +
      • Example response 2
        {
        +    "members_links": [
        +        {
        +            "href": "https://network.localdomain.com:8020/v2.0/lbaas/members?pool_id=b299051c-a154-4bd6-b630-215151593306&marker=50bd4ae0-fdf4-4540-b94a-04ce6241751e&page_reverse=True", 
        +            "rel": "previous"
        +        }
        +    ], 
        +    "members": [
        +        {
        +            "name": "", 
        +            "weight": 1, 
        +            "admin_state_up": false, 
        +            "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", 
        +            "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +            "pool_id": "b299051c-a154-4bd6-b630-215151593306", 
        +            "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", 
        +            "device_owner": "", 
        +            "address": "192.168.77.11", 
        +            "protocol_port": 880, 
        +            "id": "50bd4ae0-fdf4-4540-b94a-04ce6241751e", 
        +            "operating_status": "OFFLINE", 
        +            "device_id": ""
        +        }, 
        +        {
        +            "name": "", 
        +            "weight": 1, 
        +            "admin_state_up": false, 
        +            "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", 
        +            "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +            "pool_id": "b299051c-a154-4bd6-b630-215151593306", 
        +            "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", 
        +            "device_owner": "", 
        +            "address": "192.168.77.12", 
        +            "protocol_port": 880, 
        +            "id": "fa2045e3-b296-406b-ad12-1611dce44be6", 
        +            "operating_status": "OFFLINE", 
        +            "device_id": ""
        +        }
        +    ]
        +}
        +
      + +

      Return Codes

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0006.rst b/elb/api-ref/elb_zq_hd_0006.rst new file mode 100644 index 000000000..c9e09dfc3 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0006.rst @@ -0,0 +1,408 @@ +Querying All Backend Servers (Extension API) +============================================ + +Function +^^^^^^^^ + +This API is used to query all backend servers. Filter query and pagination query are supported. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/members + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | backend server from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | backend server on the | + | | | | previous page. If this | + | | | | parameter is not specified, | + | | | | the first page will be | + | | | | queried. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | backend servers on each | + | | | | page. If this parameter is | + | | | | not set, all backend | + | | | | servers are queried by | + | | | | default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | NOTE: | + | | | | The value of this parameter | + | | | | is not the ID of the server | + | | | | but an ID automatically | + | | | | generated for the backend | + | | | | server that has already | + | | | | associated with the load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | address | No | String | Specifies the private IP | + | | | | address of the backend | + | | | | server. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | No | Integer | Specifies the port used by | + | | | | the backend server. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | subnet_id | No | String | Specifies the ID of the | + | | | | subnet where the backend | + | | | | server works. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the backend | + | | | | server weight. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | String | Specifies the backend | + | | | | server ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | operating_status | No | String | Specifies the health check | + | | | | result of the backend | + | | | | server. The value can be | + | | | | one of the following: | + | | | | | + | | | | - **ONLINE**: The backend | + | | | | server is running | + | | | | normally. | + | | | | - **NO_MONITOR**: No | + | | | | health check is | + | | | | performed on the backend | + | | | | server. | + | | | | - **OFFLINE**: The cloud | + | | | | server used as the | + | | | | backend server is | + | | | | stopped or does not | + | | | | exist. | + | | | | | + | | | | The default value is | + | | | | **ONLINE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | members_links | No | Array | Provides links to the | + | | | | previous or next page | + | | | | during pagination query, | + | | | | respectively. | + | | | | | + | | | | This parameter exists only | + | | | | in the response body of | + | | | | pagination query. For | + | | | | details, see `Table | + | | | | 5 <#elb_zq_hd_000 | + | | | | 6__en-us_topic_000000112942 | + | | | | 1772_table168848562488>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 2** **members_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. The value can be | + | | | **next** or **previous**. | + | | | | + | | | - **next**: indicates the URL of the | + | | | next page. | + | | | - **previous**: indicates the URL of | + | | | the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Response parameters + + +-----------+-------+------------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+=======+================================================================================================+ + | members | Array | Lists the backend servers. For details, see `Table | + | | | 4 <#elb_zq_hd_0006__en-us_topic_0000001129421772_table19836165644814>`__. | + +-----------+-------+------------------------------------------------------------------------------------------------+ + +.. table:: **Table 4** **members** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the backend server ID. | + | | | | + | | | NOTE: | + | | | The value of this parameter is not | + | | | the ID of the server but an ID | + | | | automatically generated for the | + | | | backend server that has already | + | | | associated with the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | address | String | Specifies the private IP address of | + | | | the backend server. This IP address | + | | | must be in the subnet specified by | + | | | **subnet_id**. | + | | | | + | | | This parameter can be set only to the | + | | | IP address of the primary NIC, for | + | | | example, 192.168.3.11. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | backend server. The port number | + | | | ranges from 1 to 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | subnet_id | String | Specifies the ID of the subnet where | + | | | the backend server works. The private | + | | | IP address of the backend server is | + | | | in this subnet. | + | | | | + | | | IPv6 subnets are not supported. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | weight | Integer | Specifies the backend server weight. | + | | | The value ranges from **0** to | + | | | **100**. | + | | | | + | | | If the value is **0**, the backend | + | | | server will not accept new requests. | + | | | The default value is **1**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the health check result of | + | | | the backend server. The value can be | + | | | one of the following: | + | | | | + | | | - **ONLINE**: The backend server is | + | | | running normally. | + | | | - **NO_MONITOR**: No health check is | + | | | performed on the backend server. | + | | | - **OFFLINE**: The cloud server used | + | | | as the backend server is stopped | + | | | or does not exist. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | device_id | String | Specifies the ID of the cloud server | + | | | used as the backend server. If the | + | | | cloud server does not exist, this | + | | | parameter is an empty string. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | device_owner | String | Specifies the resource ID and AZ ID | + | | | of the cloud server used as the | + | | | backend server, for example, | + | | | **compute:az2.dc2**. | + | | | | + | | | If no corresponding ECS is available, | + | | | the value is an empty string. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancer_id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | For details, see `Table | + | | | 5 <#elb_zq_hd_0006__en-us_topic_00 | + | | | 00001129421772_table168848562488>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pool_id | String | Specifies the backend server ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **members_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. The value can be | + | | | **next** or **previous**. | + | | | | + | | | - **next**: indicates the URL of the | + | | | next page. | + | | | - **previous**: indicates the URL of | + | | | the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all backend servers + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/members + +- Example request 2: Displaying two backend servers on each page and filtering out backend servers whose health check result is **OFFLINE** + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/members?operating_status=OFFLINE&limit=2 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "members": [ + { + "name": "", + "weight": 1, + "admin_state_up": false, + "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "pool_id": "b299051c-a154-4bd6-b630-215151593306", + "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", + "device_owner": "", + "address": "192.168.77.11", + "protocol_port": 880, + "id": "50bd4ae0-fdf4-4540-b94a-04ce6241751e", + "operating_status": "OFFLINE", + "device_id": "" + }, + { + "name": "", + "weight": 1, + "admin_state_up": false, + "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "pool_id": "b299051c-a154-4bd6-b630-215151593306", + "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", + "device_owner": "", + "address": "192.168.77.12", + "protocol_port": 880, + "id": "fa2045e3-b296-406b-ad12-1611dce44be6", + "operating_status": "OFFLINE", + "device_id": "" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "members_links": [ + { + "href": "https://network.localdomain.com:8020/v2.0/lbaas/members?pool_id=b299051c-a154-4bd6-b630-215151593306&marker=50bd4ae0-fdf4-4540-b94a-04ce6241751e&page_reverse=True", + "rel": "previous" + } + ], + "members": [ + { + "name": "", + "weight": 1, + "admin_state_up": false, + "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "pool_id": "b299051c-a154-4bd6-b630-215151593306", + "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", + "device_owner": "", + "address": "192.168.77.11", + "protocol_port": 880, + "id": "50bd4ae0-fdf4-4540-b94a-04ce6241751e", + "operating_status": "OFFLINE", + "device_id": "" + }, + { + "name": "", + "weight": 1, + "admin_state_up": false, + "subnet_id": "03e1458a-fe0d-4e2f-bc4a-44f25a045287", + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "pool_id": "b299051c-a154-4bd6-b630-215151593306", + "loadbalancer_id": "77bfe95e-9f5b-4cff-afd9-900f8de5775b", + "device_owner": "", + "address": "192.168.77.12", + "protocol_port": 880, + "id": "fa2045e3-b296-406b-ad12-1611dce44be6", + "operating_status": "OFFLINE", + "device_id": "" + } + ] + } + +Return Codes +^^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hd_0007.html b/elb/api-ref/elb_zq_hd_0007.html new file mode 100644 index 000000000..083e62e40 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0007.html @@ -0,0 +1,236 @@ + + +

      Batch Updating Backend Servers

      +

      Function

      This API is used to update backend servers in batches.

      + +

      Constraints

      • A maximum of 200 backend servers can be modified at a time.
      • Two backend servers a backend server group cannot have the same private IP address or port number.
      • The subnet specified during server creation must be in the same VPC as the subnet from which the private IP address of the load balancer is assigned.
      + +

      URI

      PUT /v2.0/lbaas/pools/{pool_id}/members

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      members

      +

      Yes

      +

      Array

      +

      Lists the backend servers in the backend server group. If action is set to add or replace, see Table 3 for details about the parameters. If action is set to delete, see Table 4 for details about the parameters.

      +

      An empty list is supported. If action is set to add, no backend server is added to the backend server group. If action is set to replace, all backend servers are removed from the backend cloud server group. If action is set to delete, no backend server is removed.

      +

      action

      +

      No

      +

      String

      +

      Specifies the operation type. The value can be add, delete, or replace. The default value is replace.

      +
      • add: All backend servers in the request body are added to the backend server group in batches.
      • delete: All backend servers in the request are removed from the backend server group in batches.
      • replace: All backend servers in the backend server group are replaced with those in the request body.
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 members parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server name. The value is an empty character string by default.

      +

      The value contains a maximum of 255 characters.

      +

      address

      +

      Yes

      +

      String

      +

      Specifies the private IP address of the backend server. This IP address must be in the subnet specified by subnet_id.

      +

      This parameter can be set only to the IP address of the primary NIC, for example, 192.168.3.11.

      +

      The value contains a maximum of 64 characters.

      +

      protocol_port

      +

      Yes

      +

      Integer

      +

      Specifies the port used by the backend server. The port number ranges from 1 to 65535.

      +

      subnet_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the subnet where the backend server works. The private IP address of the backend server is in this subnet.

      +

      IPv6 subnets are not supported.

      +

      weight

      +

      No

      +

      Integer

      +

      Specifies the backend server weight. The value ranges from 0 to 100.

      +

      If the value is 0, the backend server will not accept new requests. The default value is 1.

      +
      + + + + + + + + + + + + + + +
      Table 4 members parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      id

      +

      Yes

      +

      String

      +

      Specifies the backend server ID.

      + NOTE:
      • The value of this parameter is not the ID of the server but an ID automatically generated for the backend server that has already associated with the load balancer.
      • You can obtain this value by calling the API described in Querying Backend Servers.
      + +
      + + +

      Response

      None

      + +

      Example Request

      • Example request 1: Adding backend servers in batches
        PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members 
        + 
        +{
        +    "members": [
        +        {
        +            "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +            "protocol_port": 88, 
        +            "name": "member-1", 
        +            "address": "192.168.44.11"
        +        }, 
        +        {
        +            "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +            "protocol_port": 88, 
        +            "name": "member-2", 
        +            "address": "192.168.44.12"
        +        }, 
        +        {
        +            "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +            "protocol_port": 88, 
        +            "name": "member-3", 
        +            "address": "192.168.44.13"
        +        }
        +    ], 
        +    "action": "add"
        +}
        +
      • Example request 2: Updating backend servers in batches
        PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members 
        +
        +{
        +    "members": [
        +        {
        +            "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +            "protocol_port": 88, 
        +            "name": "member-1", 
        +            "address": "192.168.44.11"
        +        }, 
        +        {
        +            "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +            "protocol_port": 88, 
        +            "name": "member-3", 
        +            "address": "192.168.44.12"
        +        }, 
        +        {
        +            "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", 
        +            "protocol_port": 88, 
        +            "name": "member-3", 
        +            "address": "192.168.44.13"
        +        }
        +    ]
        +}
        +
      • Example request 3: Removing backend servers in batches
        PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members 
        +
        +{
        +    "members": [
        +        {
        +            "id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503"
        +        }, 
        +        {
        +            "id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503"
        +        }
        +    ], 
        +    "action": "delete"
        +}
        +
      + +

      Example Response

      • Example response 1

        None

        +
      • Example response 2

        None

        +
      • Example response 3

        None

        +
      + +

      Status Code

      If the operation succeeds, 202 Accepted is returned. For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Backend Server + + + diff --git a/elb/api-ref/elb_zq_hd_0007.rst b/elb/api-ref/elb_zq_hd_0007.rst new file mode 100644 index 000000000..0c174e1c2 --- /dev/null +++ b/elb/api-ref/elb_zq_hd_0007.rst @@ -0,0 +1,273 @@ +Batch Updating Backend Servers +============================== + +Function +^^^^^^^^ + +This API is used to update backend servers in batches. + +Constraints +^^^^^^^^^^^ + +- A maximum of 200 backend servers can be modified at a time. +- Two backend servers a backend server group cannot have the same private IP address or port number. +- The subnet specified during server creation must be in the same VPC as the subnet from which the private IP address of the load balancer is assigned. + +URI +^^^ + +PUT /v2.0/lbaas/pools/{pool_id}/members + +.. table:: **Table 1** Parameter description + + ========= ========= ====== ============================================= + Parameter Mandatory Type Description + ========= ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + ========= ========= ====== ============================================= + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | members | Yes | Array | Lists the backend servers | + | | | | in the backend server | + | | | | group. If **action** is set | + | | | | to **add** or **replace**, | + | | | | see `Table | + | | | | 3 <#elb_zq_hd_00 | + | | | | 07__en-us_topic_00000011294 | + | | | | 21786_table328016212049>`__ | + | | | | for details about the | + | | | | parameters. If **action** | + | | | | is set to **delete**, see | + | | | | `Table | + | | | | 4 <#elb_zq_hd_0007_ | + | | | | _en-us_topic_00000011294217 | + | | | | 86_table182591957155011>`__ | + | | | | for details about the | + | | | | parameters. | + | | | | | + | | | | An empty list is supported. | + | | | | If **action** is set to | + | | | | **add**, no backend server | + | | | | is added to the backend | + | | | | server group. If **action** | + | | | | is set to **replace**, all | + | | | | backend servers are removed | + | | | | from the backend cloud | + | | | | server group. If **action** | + | | | | is set to **delete**, no | + | | | | backend server is removed. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | No | String | Specifies the operation | + | | | | type. The value can be | + | | | | **add**, **delete**, or | + | | | | **replace**. The default | + | | | | value is **replace**. | + | | | | | + | | | | - **add**: All backend | + | | | | servers in the request | + | | | | body are added to the | + | | | | backend server group in | + | | | | batches. | + | | | | - **delete**: All backend | + | | | | servers in the request | + | | | | are removed from the | + | | | | backend server group in | + | | | | batches. | + | | | | - **replace**: All backend | + | | | | servers in the backend | + | | | | server group are | + | | | | replaced with those in | + | | | | the request body. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **members** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the backend | + | | | | server name. The value is | + | | | | an empty character string | + | | | | by default. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | address | Yes | String | Specifies the private IP | + | | | | address of the backend | + | | | | server. This IP address | + | | | | must be in the subnet | + | | | | specified by **subnet_id**. | + | | | | | + | | | | This parameter can be set | + | | | | only to the IP address of | + | | | | the primary NIC, for | + | | | | example, 192.168.3.11. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | Yes | Integer | Specifies the port used by | + | | | | the backend server. The | + | | | | port number ranges from 1 | + | | | | to 65535. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | subnet_id | Yes | String | Specifies the ID of the | + | | | | subnet where the backend | + | | | | server works. The private | + | | | | IP address of the backend | + | | | | server is in this subnet. | + | | | | | + | | | | IPv6 subnets are not | + | | | | supported. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | weight | No | Integer | Specifies the backend | + | | | | server weight. The value | + | | | | ranges from **0** to | + | | | | **100**. | + | | | | | + | | | | If the value is **0**, the | + | | | | backend server will not | + | | | | accept new requests. The | + | | | | default value is **1**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 4** **members** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | id | Yes | String | Specifies the backend | + | | | | server ID. | + | | | | | + | | | | NOTE: | + | | | | | + | | | | - The value of this | + | | | | parameter is not the ID | + | | | | of the server but an ID | + | | | | automatically generated | + | | | | for the backend server | + | | | | that has already | + | | | | associated with the load | + | | | | balancer. | + | | | | - You can obtain this | + | | | | value by calling the API | + | | | | described in `Querying | + | | | | Backend | + | | | | Server | + | | | | s `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Adding backend servers in batches + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members + + { + "members": [ + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-1", + "address": "192.168.44.11" + }, + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-2", + "address": "192.168.44.12" + }, + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-3", + "address": "192.168.44.13" + } + ], + "action": "add" + } + +- Example request 2: Updating backend servers in batches + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members + + { + "members": [ + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-1", + "address": "192.168.44.11" + }, + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-3", + "address": "192.168.44.12" + }, + { + "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503", + "protocol_port": 88, + "name": "member-3", + "address": "192.168.44.13" + } + ] + } + +- Example request 3: Removing backend servers in batches + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332/members + + { + "members": [ + { + "id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503" + }, + { + "id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503" + } + ], + "action": "delete" + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + None + +- Example response 2 + + None + +- Example response 3 + + None + +Status Code +^^^^^^^^^^^ + +If the operation succeeds, 202 Accepted is returned. For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Backend Server `__ diff --git a/elb/api-ref/elb_zq_hz_0000.html b/elb/api-ref/elb_zq_hz_0000.html new file mode 100644 index 000000000..b0282110b --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0000.html @@ -0,0 +1,23 @@ + + +

      Backend Server Group

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_hz_0000.rst b/elb/api-ref/elb_zq_hz_0000.rst new file mode 100644 index 000000000..6fafa3ee8 --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0000.rst @@ -0,0 +1,10 @@ +Backend Server Group +==================== + +- `Adding a Backend Server Group `__ +- `Querying Backend Server Groups `__ +- `Querying Details of a Backend Server Group `__ +- `Updating a Backend Server Group `__ +- `Deleting a Backend Server Group `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_hz_0001.html b/elb/api-ref/elb_zq_hz_0001.html new file mode 100644 index 000000000..96ceaea07 --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0001.html @@ -0,0 +1,542 @@ + + +

      Adding a Backend Server Group

      +

      Function

      This API is used to add a backend server group. After multiple backend servers are added to a backend server group, requests are distributed among backend servers based on the load balancing algorithm configured for the backend server group and the weight set for each backend server.

      + +

      Constraints

      • Backend server groups using different protocols cannot be added to the same listener.
      • If parameter session-persistence is configured, parameter cookie_name is available only when the value of type is APP_COOKIE.
      + +

      URI

      POST /v2.0/lbaas/pools

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool

      +

      Yes

      +

      Object

      +

      Specifies the backend server group. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 pool parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the backend server group is used.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the name of the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      Yes

      +

      String

      +

      Specifies the protocol that the backend server group uses to receive requests.

      +

      TCP, UDP, and HTTP are supported.

      +

      When a backend server group is associated with a listener, the relationships between the protocol used by the listener and the protocol of the backend server group are as follows:

      +
      • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
      • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
      • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
      +

      lb_algorithm

      +

      Yes

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +The value can be one of the following:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm.
      + +

      When the value is SOURCE_IP, the weights of backend servers in the server group are invalid.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is reserved, and the default value is true.

      +

      listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener associated with the backend server group.

      +

      Specify either listener_id or loadbalancer_id, or both of them.

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the ID of the load balancer associated with the backend server group.

      +

      Specify either listener_id or loadbalancer_id, or both of them.

      +

      session_persistence

      +

      No

      +

      Object

      +

      Specifies the sticky session timeout duration in minutes. For details, see Table 3.

      +

      If the value is null, the sticky session feature is disabled.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 session_persistence parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the sticky session type.

      +The value can be one of the following:
      • SOURCE_IP: Requests are distributed based on the client's IP address. Requests from the same IP address are sent to the same backend server.
      • HTTP_COOKIE: When the client sends a request for the first time, the load balancer automatically generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to the backend server that processes the first request.
      • APP_COOKIE: When the client sends a request for the first time, the backend server that receives the request generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to this backend server.
      + +

      When the protocol of the backend server group is TCP, only SOURCE_IP takes effect. When the protocol of the backend server group is HTTP, only HTTP_COOKIE or APP_COOKIE takes effect.

      +

      cookie_name

      +

      No

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter is mandatory when the sticky session type is APP_COOKIE.

      +

      persistence_timeout

      +

      No

      +

      Integer

      +

      Specifies the sticky session timeout duration in minutes.

      +

      This parameter is invalid when type is set to APP_COOKIE.

      +The value range varies depending on the protocol of the backend server group:
      • When the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60.
      • When the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440.
      + +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      pool

      +

      Object

      +

      Specifies the backend server group. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server group is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the name of the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      String

      +

      Specifies the protocol that the backend server group uses to receive requests.

      +

      TCP, UDP, and HTTP are supported.

      +

      When a backend server group is associated with a listener, the relationships between the protocol used by the listener and the protocol of the backend server group are as follows:

      +
      • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
      • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
      • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +The value can be one of the following:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm. When the value is SOURCE_IP, the weights of backend servers in the server group are invalid.
      + +

      members

      +

      Array

      +

      Lists the IDs of backend servers in the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      session_persistence

      +

      Object

      +

      Specifies whether to enable sticky sessions. For details, see Table 9.

      +

      Once sticky session are enabled, requests from the same client are sent to the same backend server during the session.

      +

      When sticky sessions are disabled, the value is null.

      +
      + + + + + + + + + + + + +
      Table 6 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server.

      +
      + + + + + + + + + + + + +
      Table 7 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + + + + + + + + + + + +
      Table 8 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 9 session_persistence parameter description

      Parameter

      +

      Type

      +

      Description

      +

      type

      +

      String

      +

      Specifies the sticky session type.

      +The value can be one of the following:
      • SOURCE_IP: Requests are distributed based on the client's IP address. Requests from the same IP address are sent to the same backend server.
      • HTTP_COOKIE: When the client sends a request for the first time, the load balancer automatically generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to the backend server that processes the first request.
      • APP_COOKIE: When the client sends a request for the first time, the backend server that receives the request generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to this backend server.
      + +

      When the protocol of the backend server group is TCP, only SOURCE_IP takes effect. When the protocol of the backend server group is HTTP, only HTTP_COOKIE or APP_COOKIE takes effect.

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter is mandatory when the sticky session type is APP_COOKIE.

      +

      persistence_timeout

      +

      Integer

      +

      Specifies the sticky session timeout duration in minutes.

      +

      This parameter is invalid when type is set to APP_COOKIE.

      +
      • Optional value ranges are as follows:
        • When the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60.
        • When the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440.
        +
      +
      + + +

      Example Request

      • Example request 1: Adding a backend server group with the sticky session feature disabled
        POST https://{Endpoint}/v2.0/lbaas/pools 
        +
        +{
        +    "pool": {
        +        "lb_algorithm":"ROUND_ROBIN",
        +        "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117",
        +        "protocol":"HTTP"
        +    }
        +}
        +
      + +
      • Example request 2: Adding an HTTP backend server group with the value of type set to APP_COOKIE
        POST https://{Endpoint}/v2.0/lbaas/pools 
        +
        +{ 
        +  "pool": { 
        +    "lb_algorithm": "ROUND_ROBIN", 
        +    "listener_id": "370fb112-e920-486a-b051-1d0d30704dd3", 
        +    "protocol": "HTTP", 
        +    "session_persistence": { 
        +      "cookie_name": "my_cookie", 
        +      "type": "APP_COOKIE", 
        +      "persistence_timeout": 1 
        +    }, 
        +    "admin_state_up": true 
        +  } 
        +}
        +
      • Example request 3: Adding an HTTP backend server group with the value of type set to HTTP_COOKIE
        POST https://{Endpoint}/v2.0/lbaas/pools 
        +
        +{
        +    "pool": {
        +        "lb_algorithm":"ROUND_ROBIN",
        +        "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117",
        +        "protocol":"HTTP",
        +        "session_persistence":{
        +        	"type":"HTTP_COOKIE"
        +        }
        +    }
        +}
        +
      +

      Example Response

      • Example response 1
        {
        +    "pool": {
        +        "lb_algorithm": "ROUND_ROBIN",
        +        "protocol": "HTTP",
        +        "description": "",
        +        "admin_state_up": true,
        +        "loadbalancers": [
        +            {
        +                "id": "63ad9dfe-4750-479f-9630-ada43ccc8117"
        +            }
        +        ],
        +        "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +        "session_persistence": null,
        +        "healthmonitor_id": null,
        +        "listeners": [],
        +        "members": [],
        +        "id": "4e496951-befb-47bf-9573-c1cd11825c07",
        +        "name": ""
        +    }
        +}
        +
      + +
      • Example response 2
        { 
        +  "pool": { 
        +    "lb_algorithm": "ROUND_ROBIN", 
        +    "protocol": "HTTP", 
        +    "description": "", 
        +    "admin_state_up": true, 
        +    "loadbalancers": [ 
        +      { 
        +        "id": "6b041b9e-976b-40ba-b075-375be6110b53" 
        +      } 
        +    ], 
        +    "tenant_id": "145483a5107745e9b3d80f956713e6a3", 
        + 
        +    "session_persistence": { 
        +      "cookie_name": "my_cookie", 
        +      "type": "APP_COOKIE", 
        +      "persistence_timeout": 1 
        +    }, 
        +    "healthmonitor_id": null, 
        +    "listeners": [ 
        +      { 
        +        "id": "370fb112-e920-486a-b051-1d0d30704dd3" 
        +      } 
        +    ], 
        +    "members": [ 
        + 
        +    ], 
        +    "id": "307f8968-9474-4d0c-8434-66be09dabcc1", 
        +    "name": "" 
        +  } 
        +} 
        +
      • Example response 3
        {
        +    "pool": {
        +        "lb_algorithm": "ROUND_ROBIN",
        +        "protocol": "HTTP",
        +        "description": "",
        +        "admin_state_up": true,
        +        "loadbalancers": [
        +            {
        +                "id": "63ad9dfe-4750-479f-9630-ada43ccc8117"
        +            }
        +        ],
        +        "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +        "session_persistence": {
        +            "persistence_timeout": 1440,
        +            "cookie_name": null,
        +            "type": "HTTP_COOKIE"
        +        },
        +        "healthmonitor_id": null,
        +        "listeners": [],
        +        "members": [],
        +        "id": "d46eab56-d76b-4cd3-8952-3c3c4cf113aa",
        +        "name": ""
        +    }
        +}
        +
      +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/elb_zq_hz_0001.rst b/elb/api-ref/elb_zq_hz_0001.rst new file mode 100644 index 000000000..3c5e995c2 --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0001.rst @@ -0,0 +1,602 @@ +Adding a Backend Server Group +============================= + +Function +^^^^^^^^ + +This API is used to add a backend server group. After multiple backend servers are added to a backend server group, requests are distributed among backend servers based on the load balancing algorithm configured for the backend server group and the weight set for each backend server. + +Constraints +^^^^^^^^^^^ + +- Backend server groups using different protocols cannot be added to the same listener. +- If parameter **session-persistence** is configured, parameter **cookie_name** is available only when the value of **type** is **APP_COOKIE**. + +URI +^^^ + +POST /v2.0/lbaas/pools + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | pool | Yes | Object | Specifies the backend server group. For details, see `Table | + | | | | 2 <#elb_zq_hz_0001__en-us_topic_0096561549_table1263319159>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 2** **pool** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the backend | + | | | | server group is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the name of the | + | | | | backend server group. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | Yes | String | Specifies the protocol that | + | | | | the backend server group | + | | | | uses to receive requests. | + | | | | | + | | | | TCP, UDP, and HTTP are | + | | | | supported. | + | | | | | + | | | | When a backend server group | + | | | | is associated with a | + | | | | listener, the relationships | + | | | | between the protocol used | + | | | | by the listener and the | + | | | | protocol of the backend | + | | | | server group are as | + | | | | follows: | + | | | | | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **UDP**, the protocol of | + | | | | the backend server group | + | | | | must be **UDP**. | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **TCP**, the protocol of | + | | | | the backend server group | + | | | | must be **TCP**. | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **HTTP** or | + | | | | **TERMINATED_HTTPS**, | + | | | | the protocol of the | + | | | | backend server group | + | | | | must be **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | Yes | String | Specifies the load | + | | | | balancing algorithm of the | + | | | | backend server group. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **ROUND_ROBIN**: | + | | | | indicates the weighted | + | | | | round robin algorithm. | + | | | | - **LEAST_CONNECTIONS**: | + | | | | indicates the weighted | + | | | | least connections | + | | | | algorithm. | + | | | | - **SOURCE_IP**: indicates | + | | | | the source IP hash | + | | | | algorithm. | + | | | | | + | | | | When the value is | + | | | | **SOURCE_IP**, the weights | + | | | | of backend servers in the | + | | | | server group are invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server group. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | No | String | Specifies the ID of the | + | | | | listener associated with | + | | | | the backend server group. | + | | | | | + | | | | Specify either | + | | | | **listener_id** or | + | | | | **loadbalancer_id**, or | + | | | | both of them. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | String | Specifies the ID of the | + | | | | load balancer associated | + | | | | with the backend server | + | | | | group. | + | | | | | + | | | | Specify either | + | | | | **listener_id** or | + | | | | **loadbalancer_id**, or | + | | | | both of them. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | session_persistence | No | Object | Specifies the sticky | + | | | | session timeout duration in | + | | | | minutes. For details, see | + | | | | `Table | + | | | | 3 <#elb_zq_ | + | | | | hz_0001__en-us_topic_009656 | + | | | | 1549_table168044271458>`__. | + | | | | | + | | | | If the value is **null**, | + | | | | the sticky session feature | + | | | | is disabled. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **session_persistence** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | type | Yes | String | Specifies the sticky | + | | | | session type. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **SOURCE_IP**: Requests | + | | | | are distributed based on | + | | | | the client's IP address. | + | | | | Requests from the same | + | | | | IP address are sent to | + | | | | the same backend server. | + | | | | - **HTTP_COOKIE**: When | + | | | | the client sends a | + | | | | request for the first | + | | | | time, the load balancer | + | | | | automatically generates | + | | | | a cookie and inserts the | + | | | | cookie into the response | + | | | | message. Subsequent | + | | | | requests are sent to the | + | | | | backend server that | + | | | | processes the first | + | | | | request. | + | | | | - **APP_COOKIE**: When the | + | | | | client sends a request | + | | | | for the first time, the | + | | | | backend server that | + | | | | receives the request | + | | | | generates a cookie and | + | | | | inserts the cookie into | + | | | | the response message. | + | | | | Subsequent requests are | + | | | | sent to this backend | + | | | | server. | + | | | | | + | | | | When the protocol of the | + | | | | backend server group is | + | | | | TCP, only **SOURCE_IP** | + | | | | takes effect. When the | + | | | | protocol of the backend | + | | | | server group is HTTP, only | + | | | | **HTTP_COOKIE** or | + | | | | **APP_COOKIE** takes | + | | | | effect. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | cookie_name | No | String | Specifies the cookie name. | + | | | | | + | | | | This parameter is mandatory | + | | | | when the sticky session | + | | | | type is **APP_COOKIE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | persistence_timeout | No | Integer | Specifies the sticky | + | | | | session timeout duration in | + | | | | minutes. | + | | | | | + | | | | This parameter is invalid | + | | | | when **type** is set to | + | | | | **APP_COOKIE**. | + | | | | | + | | | | The value range varies | + | | | | depending on the protocol | + | | | | of the backend server | + | | | | group: | + | | | | | + | | | | - When the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, the value | + | | | | ranges from **1** to | + | | | | **60**. | + | | | | - When the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS, the value | + | | | | ranges from **1** to | + | | | | **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | pool | Object | Specifies the backend server group. For details, see `Table | + | | | 5 <#elb_zq_hz_0001__en-us_topic_0096561549_table549816561954>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **pools** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the ID of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server group is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the backend | + | | | server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol that the | + | | | backend server group uses to receive | + | | | requests. | + | | | | + | | | TCP, UDP, and HTTP are supported. | + | | | | + | | | When a backend server group is | + | | | associated with a listener, the | + | | | relationships between the protocol | + | | | used by the listener and the protocol | + | | | of the backend server group are as | + | | | follows: | + | | | | + | | | - When the protocol used by the | + | | | listener is **UDP**, the protocol | + | | | of the backend server group must | + | | | be **UDP**. | + | | | - When the protocol used by the | + | | | listener is **TCP**, the protocol | + | | | of the backend server group must | + | | | be **TCP**. | + | | | - When the protocol used by the | + | | | listener is **HTTP** or | + | | | **TERMINATED_HTTPS**, the protocol | + | | | of the backend server group must | + | | | be **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm of the backend server | + | | | group. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **ROUND_ROBIN**: indicates the | + | | | weighted round robin algorithm. | + | | | - **LEAST_CONNECTIONS**: indicates | + | | | the weighted least connections | + | | | algorithm. | + | | | - **SOURCE_IP**: indicates the | + | | | source IP hash algorithm. When the | + | | | value is **SOURCE_IP**, the | + | | | weights of backend servers in the | + | | | server group are invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array | Lists the IDs of backend servers in | + | | | the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners associated | + | | | with the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Lists the IDs of load balancers | + | | | associated with the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | Object | Specifies whether to enable sticky | + | | | sessions. For details, see `Table | + | | | 9 <#elb_zq_hz_0001__en-us_top | + | | | ic_0096561549_table1659974218492>`__. | + | | | | + | | | Once sticky session are enabled, | + | | | requests from the same client are | + | | | sent to the same backend server | + | | | during the session. | + | | | | + | | | When sticky sessions are disabled, | + | | | the value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **members** parameter description + + ========= ====== ================================================== + Parameter Type Description + ========= ====== ================================================== + id String Specifies the ID of the associated backend server. + ========= ====== ================================================== + +.. table:: **Table 7** **listeners** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +.. table:: **Table 8** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +.. table:: **Table 9** **session_persistence** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | type | String | Specifies the sticky session type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **SOURCE_IP**: Requests are | + | | | distributed based on the client's | + | | | IP address. Requests from the same | + | | | IP address are sent to the same | + | | | backend server. | + | | | - **HTTP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the load balancer | + | | | automatically generates a cookie | + | | | and inserts the cookie into the | + | | | response message. Subsequent | + | | | requests are sent to the backend | + | | | server that processes the first | + | | | request. | + | | | - **APP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the backend server that | + | | | receives the request generates a | + | | | cookie and inserts the cookie into | + | | | the response message. Subsequent | + | | | requests are sent to this backend | + | | | server. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP, only | + | | | **SOURCE_IP** takes effect. When the | + | | | protocol of the backend server group | + | | | is HTTP, only **HTTP_COOKIE** or | + | | | **APP_COOKIE** takes effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter is mandatory when the | + | | | sticky session type is | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the sticky session timeout | + | | | duration in minutes. | + | | | | + | | | This parameter is invalid when | + | | | **type** is set to **APP_COOKIE**. | + | | | | + | | | - Optional value ranges are as | + | | | follows: | + | | | | + | | | - When the protocol of the | + | | | backend server group is TCP or | + | | | UDP, the value ranges from | + | | | **1** to **60**. | + | | | - When the protocol of the | + | | | backend server group is HTTP or | + | | | HTTPS, the value ranges from | + | | | **1** to **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Adding a backend server group with the sticky session feature disabled + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/pools + + { + "pool": { + "lb_algorithm":"ROUND_ROBIN", + "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117", + "protocol":"HTTP" + } + } + +- Example request 2: Adding an HTTP backend server group with the value of **type** set to **APP_COOKIE** + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/pools + + { + "pool": { + "lb_algorithm": "ROUND_ROBIN", + "listener_id": "370fb112-e920-486a-b051-1d0d30704dd3", + "protocol": "HTTP", + "session_persistence": { + "cookie_name": "my_cookie", + "type": "APP_COOKIE", + "persistence_timeout": 1 + }, + "admin_state_up": true + } + } + +- Example request 3: Adding an HTTP backend server group with the value of **type** set to **HTTP_COOKIE** + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/pools + + { + "pool": { + "lb_algorithm":"ROUND_ROBIN", + "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117", + "protocol":"HTTP", + "session_persistence":{ + "type":"HTTP_COOKIE" + } + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "pool": { + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "admin_state_up": true, + "loadbalancers": [ + { + "id": "63ad9dfe-4750-479f-9630-ada43ccc8117" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "session_persistence": null, + "healthmonitor_id": null, + "listeners": [], + "members": [], + "id": "4e496951-befb-47bf-9573-c1cd11825c07", + "name": "" + } + } + +- Example response 2 + + .. code:: screen + + { + "pool": { + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "admin_state_up": true, + "loadbalancers": [ + { + "id": "6b041b9e-976b-40ba-b075-375be6110b53" + } + ], + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + + "session_persistence": { + "cookie_name": "my_cookie", + "type": "APP_COOKIE", + "persistence_timeout": 1 + }, + "healthmonitor_id": null, + "listeners": [ + { + "id": "370fb112-e920-486a-b051-1d0d30704dd3" + } + ], + "members": [ + + ], + "id": "307f8968-9474-4d0c-8434-66be09dabcc1", + "name": "" + } + } + +- Example response 3 + + .. code:: screen + + { + "pool": { + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "admin_state_up": true, + "loadbalancers": [ + { + "id": "63ad9dfe-4750-479f-9630-ada43ccc8117" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "session_persistence": { + "persistence_timeout": 1440, + "cookie_name": null, + "type": "HTTP_COOKIE" + }, + "healthmonitor_id": null, + "listeners": [], + "members": [], + "id": "d46eab56-d76b-4cd3-8952-3c3c4cf113aa", + "name": "" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/elb_zq_hz_0003.html b/elb/api-ref/elb_zq_hz_0003.html new file mode 100644 index 000000000..edae7757d --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0003.html @@ -0,0 +1,295 @@ + + +

      Querying Details of a Backend Server Group

      +

      Function

      This API is used to query details about a backend server group using its ID.

      + +

      URI

      GET /v2.0/lbaas/pools/{pool_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      pool

      +

      Object

      +

      Specifies the backend server group. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server group is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the name of the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      String

      +

      Specifies the protocol that the backend server group uses to receive requests.

      +

      TCP, UDP, and HTTP are supported.

      +

      When a backend server group is associated with a listener, the relationships between the protocol used by the listener and the protocol of the backend server group are as follows:

      +
      • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
      • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
      • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +The value can be one of the following:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm. When the value is SOURCE_IP, the weights of backend servers in the server group are invalid.
      + +

      members

      +

      Array

      +

      Lists the IDs of backend servers in the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      session_persistence

      +

      Object

      +

      Specifies whether to enable sticky sessions. For details, see Table 9.

      +

      Once sticky session are enabled, requests from the same client are sent to the same backend server during the session.

      +

      When sticky sessions are disabled, the value is null.

      +
      + + + + + + + + + + + + +
      Table 4 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server.

      +
      + + + + + + + + + + + + +
      Table 5 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + + + + + + + + + + + +
      Table 6 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 7 session_persistence parameter description

      Parameter

      +

      Type

      +

      Description

      +

      type

      +

      String

      +

      Specifies the sticky session type.

      +The value can be one of the following:
      • SOURCE_IP: Requests are distributed based on the client's IP address. Requests from the same IP address are sent to the same backend server.
      • HTTP_COOKIE: When the client sends a request for the first time, the load balancer automatically generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to the backend server that processes the first request.
      • APP_COOKIE: When the client sends a request for the first time, the backend server that receives the request generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to this backend server.
      + +

      When the protocol of the backend server group is TCP, only SOURCE_IP takes effect. When the protocol of the backend server group is HTTP, only HTTP_COOKIE or APP_COOKIE takes effect.

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter is mandatory when the sticky session type is APP_COOKIE.

      +

      persistence_timeout

      +

      Integer

      +

      Specifies the sticky session timeout duration in minutes.

      +

      This parameter is invalid when type is set to APP_COOKIE.

      +
      • Optional value ranges are as follows:
        • When the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60.
        • When the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440.
        +
      +
      + + +

      Example Request

      • Example request: Querying details of a backend server group
        GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332
        +
      + +

      Example Response

      • Example response
        {
        +    "pool": {
        +        "lb_algorithm": "SOURCE_IP",
        +        "protocol": "TCP",
        +        "description": "",
        +        "admin_state_up": true,
        +        "loadbalancers": [
        +            {
        +                "id": "6f52004c-3fe9-4c09-b8ce-ed9d9c74a3b1"
        +            }
        +        ],
        +        "tenant_id": "1867112d054b427e808cc6096d8193a1",
        +        "session_persistence": null,
        +        "healthmonitor_id": null,
        +        "listeners": [
        +            {
        +                "id": "6e29b2cd-4e53-40f6-ae7b-29e918de67f2"
        +            }
        +        ],
        +        "members": [],
        +        "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332",
        +        "name": "my-pool"
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/elb_zq_hz_0003.rst b/elb/api-ref/elb_zq_hz_0003.rst new file mode 100644 index 000000000..8d10c0cdc --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0003.rst @@ -0,0 +1,283 @@ +Querying Details of a Backend Server Group +========================================== + +Function +^^^^^^^^ + +This API is used to query details about a backend server group using its ID. + +URI +^^^ + +GET /v2.0/lbaas/pools/{pool_id} + +.. table:: **Table 1** Parameter description + + ========= ========= ====== ============================================= + Parameter Mandatory Type Description + ========= ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + ========= ========= ====== ============================================= + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | pool | Object | Specifies the backend server group. For details, see `Table | + | | | 3 <#elb_zq_hz_0003__en-us_topic_0096561548_table374714321310>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **pools** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the ID of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server group is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the backend | + | | | server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol that the | + | | | backend server group uses to receive | + | | | requests. | + | | | | + | | | TCP, UDP, and HTTP are supported. | + | | | | + | | | When a backend server group is | + | | | associated with a listener, the | + | | | relationships between the protocol | + | | | used by the listener and the protocol | + | | | of the backend server group are as | + | | | follows: | + | | | | + | | | - When the protocol used by the | + | | | listener is **UDP**, the protocol | + | | | of the backend server group must | + | | | be **UDP**. | + | | | - When the protocol used by the | + | | | listener is **TCP**, the protocol | + | | | of the backend server group must | + | | | be **TCP**. | + | | | - When the protocol used by the | + | | | listener is **HTTP** or | + | | | **TERMINATED_HTTPS**, the protocol | + | | | of the backend server group must | + | | | be **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm of the backend server | + | | | group. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **ROUND_ROBIN**: indicates the | + | | | weighted round robin algorithm. | + | | | - **LEAST_CONNECTIONS**: indicates | + | | | the weighted least connections | + | | | algorithm. | + | | | - **SOURCE_IP**: indicates the | + | | | source IP hash algorithm. When the | + | | | value is **SOURCE_IP**, the | + | | | weights of backend servers in the | + | | | server group are invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array | Lists the IDs of backend servers in | + | | | the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners associated | + | | | with the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Lists the IDs of load balancers | + | | | associated with the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | Object | Specifies whether to enable sticky | + | | | sessions. For details, see `Table | + | | | 9 `__. | + | | | | + | | | Once sticky session are enabled, | + | | | requests from the same client are | + | | | sent to the same backend server | + | | | during the session. | + | | | | + | | | When sticky sessions are disabled, | + | | | the value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **members** parameter description + + ========= ====== ================================================== + Parameter Type Description + ========= ====== ================================================== + id String Specifies the ID of the associated backend server. + ========= ====== ================================================== + +.. table:: **Table 5** **listeners** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +.. table:: **Table 6** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +.. table:: **Table 7** **session_persistence** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | type | String | Specifies the sticky session type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **SOURCE_IP**: Requests are | + | | | distributed based on the client's | + | | | IP address. Requests from the same | + | | | IP address are sent to the same | + | | | backend server. | + | | | - **HTTP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the load balancer | + | | | automatically generates a cookie | + | | | and inserts the cookie into the | + | | | response message. Subsequent | + | | | requests are sent to the backend | + | | | server that processes the first | + | | | request. | + | | | - **APP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the backend server that | + | | | receives the request generates a | + | | | cookie and inserts the cookie into | + | | | the response message. Subsequent | + | | | requests are sent to this backend | + | | | server. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP, only | + | | | **SOURCE_IP** takes effect. When the | + | | | protocol of the backend server group | + | | | is HTTP, only **HTTP_COOKIE** or | + | | | **APP_COOKIE** takes effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter is mandatory when the | + | | | sticky session type is | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the sticky session timeout | + | | | duration in minutes. | + | | | | + | | | This parameter is invalid when | + | | | **type** is set to **APP_COOKIE**. | + | | | | + | | | - Optional value ranges are as | + | | | follows: | + | | | | + | | | - When the protocol of the | + | | | backend server group is TCP or | + | | | UDP, the value ranges from | + | | | **1** to **60**. | + | | | - When the protocol of the | + | | | backend server group is HTTP or | + | | | HTTPS, the value ranges from | + | | | **1** to **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a backend server group + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "pool": { + "lb_algorithm": "SOURCE_IP", + "protocol": "TCP", + "description": "", + "admin_state_up": true, + "loadbalancers": [ + { + "id": "6f52004c-3fe9-4c09-b8ce-ed9d9c74a3b1" + } + ], + "tenant_id": "1867112d054b427e808cc6096d8193a1", + "session_persistence": null, + "healthmonitor_id": null, + "listeners": [ + { + "id": "6e29b2cd-4e53-40f6-ae7b-29e918de67f2" + } + ], + "members": [], + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "name": "my-pool" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/elb_zq_hz_0004.html b/elb/api-ref/elb_zq_hz_0004.html new file mode 100644 index 000000000..ba9639f5b --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0004.html @@ -0,0 +1,475 @@ + + +

      Updating a Backend Server Group

      +

      Function

      This API is used to update a backend server group.

      + +

      Constraints

      If the provisioning status of the load balancer associated with a backend server group is not ACTIVE, the backend server group cannot be updated.

      + +

      URI

      PUT /v2.0/lbaas/pools/{pool_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool

      +

      Yes

      +

      Object

      +

      Specifies the backend server group. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 pool parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the name of the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      lb_algorithm

      +

      No

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +Value options:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm.
      + +

      When the value is SOURCE_IP, the weights of backend servers in the server group are invalid.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is reserved, and the default value is true.

      +

      session_persistence

      +

      No

      +

      Object

      +

      Specifies whether to enable the sticky session feature. For details, see Table 10.

      +

      Once sticky session are enabled, requests from the same client are sent to the same backend server during the session.

      +

      When sticky sessions are disabled, the value is null.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 session_persistence parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      type

      +

      No

      +

      String

      +

      Specifies the sticky session type.

      +Value options:
      • SOURCE_IP: Requests are distributed based on the client's IP address. Requests from the same IP address are sent to the same backend server.
      • HTTP_COOKIE: When the client sends a request for the first time, the load balancer automatically generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to the backend server that processes the first request.
      • APP_COOKIE: When the client sends a request for the first time, the backend server that receives the request generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to this backend server.
      + +
      • When the protocol of the backend server group is TCP, only SOURCE_IP takes effect. When the protocol of the backend server group is HTTP, only HTTP_COOKIE or APP_COOKIE takes effect.
      +

      cookie_name

      +

      No

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter is mandatory and can be specified when the sticky session type is APP_COOKIE.

      +

      persistence_timeout

      +

      No

      +

      Integer

      +

      Specifies the sticky session timeout duration in minutes.

      +

      This parameter is invalid when type is set to APP_COOKIE.

      +Value range options are as follows:
      • When the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60.
      • When the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440.
      + +
      + + +

      Response

      + + + + + + + + + + +
      Table 5 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      pool

      +

      Object

      +

      Specifies the backend server group. For details, see Table 6.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server group is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the name of the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      String

      +

      Specifies the protocol that the backend server group uses to receive requests.

      +

      TCP, UDP, and HTTP are supported.

      +

      When a backend server group is associated with a listener, the relationships between the protocol used by the listener and the protocol of the backend server group are as follows:

      +
      • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
      • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
      • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +The value can be one of the following:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm. When the value is SOURCE_IP, the weights of backend servers in the server group are invalid.
      + +

      members

      +

      Array

      +

      Lists the IDs of backend servers in the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners associated with the backend server group.

      +

      loadbalancers

      +

      Array

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      session_persistence

      +

      Object

      +

      Specifies whether to enable sticky sessions. For details, see Table 9.

      +

      Once sticky session are enabled, requests from the same client are sent to the same backend server during the session.

      +

      When sticky sessions are disabled, the value is null.

      +
      + + + + + + + + + + + + +
      Table 7 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server.

      +
      + + + + + + + + + + + + +
      Table 8 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + + + + + + + + + + + +
      Table 9 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 10 session_persistence parameter description

      Parameter

      +

      Type

      +

      Description

      +

      type

      +

      String

      +

      Specifies the sticky session type.

      +The value can be one of the following:
      • SOURCE_IP: Requests are distributed based on the client's IP address. Requests from the same IP address are sent to the same backend server.
      • HTTP_COOKIE: When the client sends a request for the first time, the load balancer automatically generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to the backend server that processes the first request.
      • APP_COOKIE: When the client sends a request for the first time, the backend server that receives the request generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to this backend server.
      + +

      When the protocol of the backend server group is TCP, only SOURCE_IP takes effect. When the protocol of the backend server group is HTTP, only HTTP_COOKIE or APP_COOKIE takes effect.

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter is mandatory when the sticky session type is APP_COOKIE.

      +

      persistence_timeout

      +

      Integer

      +

      Specifies the sticky session timeout duration in minutes.

      +

      This parameter is invalid when type is set to APP_COOKIE.

      +
      • Optional value ranges are as follows:
        • When the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60.
        • When the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440.
        +
      +
      + + +

      Example Request

      • Example request 1: Updating a backend server group
        PUT https://{Endpoint}/v2.0/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe 
        +
        +{ 
        +    "pool": { 
        +        "name": "pool2", 
        +        "description": "pool two", 
        +        "lb_algorithm": "LEAST_CONNECTIONS" 
        +    } 
        +}
        +
      + +
      • Example request 2: Disabling the sticky session feature of a backend server group
        PUT https://{Endpoint}/v2.0/lbaas/pools/d46eab56-d76b-4cd3-8952-3c3c4cf113aa
        +
        +{
        +    "pool": {
        +        "session_persistence":null
        +    }
        +}
        +
      +

      Example Response

      • Example response 1
        {
        +    "pool": {
        +        "lb_algorithm": "LEAST_CONNECTIONS",
        +        "protocol": "HTTP",
        +        "description": "pool two",
        +        "loadbalancers": [
        +            {
        +                "id": "63ad9dfe-4750-479f-9630-ada43ccc8117"
        +            }
        +        ],
        +        "admin_state_up": true,
        +        "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
        +        "session_persistence": {
        +            "cookie_name": null,
        +            "type": "HTTP_COOKIE",
        +            "persistence_timeout": 1
        +        },
        +        "healthmonitor_id": null,
        +        "listeners": [
        +            {
        +                "id": "39de4d56-d663-46e5-85a1-5b9d5fa17829"
        +            }
        +        ],
        +        "members": [],
        +        "id": "12ff63af-4127-4074-a251-bcb2ecc53ebe",
        +        "name": "pool2"
        +    }
        +}
        +
      + +
      • Example response 2
        {
        +    "pool": {
        +        "lb_algorithm": "ROUND_ROBIN",
        +        "protocol": "HTTP",
        +        "description": "",
        +        "admin_state_up": true,
        +        "loadbalancers": [
        +            {
        +                "id": "63ad9dfe-4750-479f-9630-ada43ccc8117"
        +            }
        +        ],
        +        "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +        "session_persistence": null,
        +        "healthmonitor_id": null,
        +        "listeners": [],
        +        "members": [],
        +        "id": "d46eab56-d76b-4cd3-8952-3c3c4cf113aa",
        +        "name": ""
        +    }
        +}
        +
      +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/elb_zq_hz_0004.rst b/elb/api-ref/elb_zq_hz_0004.rst new file mode 100644 index 000000000..1480ba765 --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0004.rst @@ -0,0 +1,490 @@ +Updating a Backend Server Group +=============================== + +Function +^^^^^^^^ + +This API is used to update a backend server group. + +Constraints +^^^^^^^^^^^ + +If the provisioning status of the load balancer associated with a backend server group is not **ACTIVE**, the backend server group cannot be updated. + +URI +^^^ + +PUT /v2.0/lbaas/pools/{pool_id} + +.. table:: **Table 1** Parameter description + + ========= ========= ====== ============================================= + Parameter Mandatory Type Description + ========= ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + ========= ========= ====== ============================================= + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | pool | Yes | Object | Specifies the backend server group. For details, see `Table | + | | | | 3 <#elb_zq_hz_0004__en-us_topic_0096561550_table14485185810613>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **pool** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the name of the | + | | | | backend server group. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | No | String | Specifies the load | + | | | | balancing algorithm of the | + | | | | backend server group. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **ROUND_ROBIN**: | + | | | | indicates the weighted | + | | | | round robin algorithm. | + | | | | - **LEAST_CONNECTIONS**: | + | | | | indicates the weighted | + | | | | least connections | + | | | | algorithm. | + | | | | - **SOURCE_IP**: indicates | + | | | | the source IP hash | + | | | | algorithm. | + | | | | | + | | | | When the value is | + | | | | **SOURCE_IP**, the weights | + | | | | of backend servers in the | + | | | | server group are invalid. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the backend server group. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | session_persistence | No | Object | Specifies whether to enable | + | | | | the sticky session feature. | + | | | | For details, see `Table | + | | | | 10 <#elb_zq_hz_ | + | | | | 0004__en-us_topic_009656155 | + | | | | 0_table112431127175217>`__. | + | | | | | + | | | | Once sticky session are | + | | | | enabled, requests from the | + | | | | same client are sent to the | + | | | | same backend server during | + | | | | the session. | + | | | | | + | | | | When sticky sessions are | + | | | | disabled, the value is | + | | | | **null**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 4** **session_persistence** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | type | No | String | Specifies the sticky | + | | | | session type. | + | | | | | + | | | | Value options: | + | | | | | + | | | | - **SOURCE_IP**: Requests | + | | | | are distributed based on | + | | | | the client's IP address. | + | | | | Requests from the same | + | | | | IP address are sent to | + | | | | the same backend server. | + | | | | - **HTTP_COOKIE**: When | + | | | | the client sends a | + | | | | request for the first | + | | | | time, the load balancer | + | | | | automatically generates | + | | | | a cookie and inserts the | + | | | | cookie into the response | + | | | | message. Subsequent | + | | | | requests are sent to the | + | | | | backend server that | + | | | | processes the first | + | | | | request. | + | | | | - **APP_COOKIE**: When the | + | | | | client sends a request | + | | | | for the first time, the | + | | | | backend server that | + | | | | receives the request | + | | | | generates a cookie and | + | | | | inserts the cookie into | + | | | | the response message. | + | | | | Subsequent requests are | + | | | | sent to this backend | + | | | | server. | + | | | | | + | | | | - When the protocol of the | + | | | | backend server group is | + | | | | TCP, only **SOURCE_IP** | + | | | | takes effect. When the | + | | | | protocol of the backend | + | | | | server group is HTTP, | + | | | | only **HTTP_COOKIE** or | + | | | | **APP_COOKIE** takes | + | | | | effect. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | cookie_name | No | String | Specifies the cookie name. | + | | | | | + | | | | This parameter is mandatory | + | | | | and can be specified when | + | | | | the sticky session type is | + | | | | **APP_COOKIE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | persistence_timeout | No | Integer | Specifies the sticky | + | | | | session timeout duration in | + | | | | minutes. | + | | | | | + | | | | This parameter is invalid | + | | | | when **type** is set to | + | | | | **APP_COOKIE**. | + | | | | | + | | | | Value range options are as | + | | | | follows: | + | | | | | + | | | | - When the protocol of the | + | | | | backend server group is | + | | | | TCP or UDP, the value | + | | | | ranges from **1** to | + | | | | **60**. | + | | | | - When the protocol of the | + | | | | backend server group is | + | | | | HTTP or HTTPS, the value | + | | | | ranges from **1** to | + | | | | **1440**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 5** Parameter description + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | pool | Object | Specifies the backend server group. For details, see `Table | + | | | 6 <#elb_zq_hz_0004__en-us_topic_0096561550_table186106238710>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 6** **pools** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the ID of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server group is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the name of the backend | + | | | server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol that the | + | | | backend server group uses to receive | + | | | requests. | + | | | | + | | | TCP, UDP, and HTTP are supported. | + | | | | + | | | When a backend server group is | + | | | associated with a listener, the | + | | | relationships between the protocol | + | | | used by the listener and the protocol | + | | | of the backend server group are as | + | | | follows: | + | | | | + | | | - When the protocol used by the | + | | | listener is **UDP**, the protocol | + | | | of the backend server group must | + | | | be **UDP**. | + | | | - When the protocol used by the | + | | | listener is **TCP**, the protocol | + | | | of the backend server group must | + | | | be **TCP**. | + | | | - When the protocol used by the | + | | | listener is **HTTP** or | + | | | **TERMINATED_HTTPS**, the protocol | + | | | of the backend server group must | + | | | be **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm of the backend server | + | | | group. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **ROUND_ROBIN**: indicates the | + | | | weighted round robin algorithm. | + | | | - **LEAST_CONNECTIONS**: indicates | + | | | the weighted least connections | + | | | algorithm. | + | | | - **SOURCE_IP**: indicates the | + | | | source IP hash algorithm. When the | + | | | value is **SOURCE_IP**, the | + | | | weights of backend servers in the | + | | | server group are invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array | Lists the IDs of backend servers in | + | | | the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners associated | + | | | with the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Lists the IDs of load balancers | + | | | associated with the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | Object | Specifies whether to enable sticky | + | | | sessions. For details, see `Table | + | | | 9 `__. | + | | | | + | | | Once sticky session are enabled, | + | | | requests from the same client are | + | | | sent to the same backend server | + | | | during the session. | + | | | | + | | | When sticky sessions are disabled, | + | | | the value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** **members** parameter description + + ========= ====== ================================================== + Parameter Type Description + ========= ====== ================================================== + id String Specifies the ID of the associated backend server. + ========= ====== ================================================== + +.. table:: **Table 8** **listeners** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +.. table:: **Table 9** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +.. table:: **Table 10** **session_persistence** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | type | String | Specifies the sticky session type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **SOURCE_IP**: Requests are | + | | | distributed based on the client's | + | | | IP address. Requests from the same | + | | | IP address are sent to the same | + | | | backend server. | + | | | - **HTTP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the load balancer | + | | | automatically generates a cookie | + | | | and inserts the cookie into the | + | | | response message. Subsequent | + | | | requests are sent to the backend | + | | | server that processes the first | + | | | request. | + | | | - **APP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the backend server that | + | | | receives the request generates a | + | | | cookie and inserts the cookie into | + | | | the response message. Subsequent | + | | | requests are sent to this backend | + | | | server. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP, only | + | | | **SOURCE_IP** takes effect. When the | + | | | protocol of the backend server group | + | | | is HTTP, only **HTTP_COOKIE** or | + | | | **APP_COOKIE** takes effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter is mandatory when the | + | | | sticky session type is | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the sticky session timeout | + | | | duration in minutes. | + | | | | + | | | This parameter is invalid when | + | | | **type** is set to **APP_COOKIE**. | + | | | | + | | | - Optional value ranges are as | + | | | follows: | + | | | | + | | | - When the protocol of the | + | | | backend server group is TCP or | + | | | UDP, the value ranges from | + | | | **1** to **60**. | + | | | - When the protocol of the | + | | | backend server group is HTTP or | + | | | HTTPS, the value ranges from | + | | | **1** to **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Updating a backend server group + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe + + { + "pool": { + "name": "pool2", + "description": "pool two", + "lb_algorithm": "LEAST_CONNECTIONS" + } + } + +- Example request 2: Disabling the sticky session feature of a backend server group + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/pools/d46eab56-d76b-4cd3-8952-3c3c4cf113aa + + { + "pool": { + "session_persistence":null + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "pool": { + "lb_algorithm": "LEAST_CONNECTIONS", + "protocol": "HTTP", + "description": "pool two", + "loadbalancers": [ + { + "id": "63ad9dfe-4750-479f-9630-ada43ccc8117" + } + ], + "admin_state_up": true, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "session_persistence": { + "cookie_name": null, + "type": "HTTP_COOKIE", + "persistence_timeout": 1 + }, + "healthmonitor_id": null, + "listeners": [ + { + "id": "39de4d56-d663-46e5-85a1-5b9d5fa17829" + } + ], + "members": [], + "id": "12ff63af-4127-4074-a251-bcb2ecc53ebe", + "name": "pool2" + } + } + +- Example response 2 + + .. code:: screen + + { + "pool": { + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "admin_state_up": true, + "loadbalancers": [ + { + "id": "63ad9dfe-4750-479f-9630-ada43ccc8117" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "session_persistence": null, + "healthmonitor_id": null, + "listeners": [], + "members": [], + "id": "d46eab56-d76b-4cd3-8952-3c3c4cf113aa", + "name": "" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/elb_zq_hz_0005.html b/elb/api-ref/elb_zq_hz_0005.html new file mode 100644 index 000000000..ef8384d43 --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0005.html @@ -0,0 +1,51 @@ + + +

      Deleting a Backend Server Group

      +

      Function

      This API is used to delete a backend server group.

      + +

      Constraints

      Before deleting a backend server group, remove all backend servers, delete the health check, and disassociate forwarding policies from the backend server group by changing the value of redirect_pool_id to null. For details, see Updating a Forwarding Policy.

      + +

      URI

      DELETE /v2.0/lbaas/pools/{pool_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Deleting a backend server group
        DELETE  /v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/elb_zq_hz_0005.rst b/elb/api-ref/elb_zq_hz_0005.rst new file mode 100644 index 000000000..5062089b2 --- /dev/null +++ b/elb/api-ref/elb_zq_hz_0005.rst @@ -0,0 +1,58 @@ +Deleting a Backend Server Group +=============================== + +Function +^^^^^^^^ + +This API is used to delete a backend server group. + +Constraints +^^^^^^^^^^^ + +Before deleting a backend server group, remove all backend servers, delete the health check, and disassociate forwarding policies from the backend server group by changing the value of **redirect_pool_id** to **null**. For details, see `Updating a Forwarding Policy `__. + +URI +^^^ + +DELETE /v2.0/lbaas/pools/{pool_id} + +.. table:: **Table 1** Parameter description + + ========= ========= ====== ============================================= + Parameter Mandatory Type Description + ========= ========= ====== ============================================= + pool_id Yes String Specifies the ID of the backend server group. + ========= ========= ====== ============================================= + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a backend server group + + .. code:: screen + + DELETE /v2.0/lbaas/pools/5a9a3e9e-d1aa-448e-af37-a70171f2a332 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/elb_zq_jk_0000.html b/elb/api-ref/elb_zq_jk_0000.html new file mode 100644 index 000000000..15d9e1183 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0000.html @@ -0,0 +1,23 @@ + + +

      Health Check

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_jk_0000.rst b/elb/api-ref/elb_zq_jk_0000.rst new file mode 100644 index 000000000..75cf06fd0 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0000.rst @@ -0,0 +1,10 @@ +Health Check +============ + +- `Configuring a Health Check `__ +- `Querying Health Checks `__ +- `Querying Details of a Health Check `__ +- `Updating a Health Check `__ +- `Deleting a Health Check `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_jk_0001.html b/elb/api-ref/elb_zq_jk_0001.html new file mode 100644 index 000000000..0031918f1 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0001.html @@ -0,0 +1,431 @@ + + +

      Configuring a Health Check

      +

      Function

      This API is used to configure a health check for a backend server group to check the status of backend servers. If the health check result is OFFLINE, backend servers are considered unhealthy. You need to check the server configuration.

      + +

      Constraints

      The security group must allow access from 100.125.0.0/16. Otherwise, the health check cannot be performed.

      + +

      URI

      POST /v2.0/lbaas/healthmonitors

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Yes

      +

      Object

      +

      Specifies the health check. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 healthmonitor parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the health check is performed.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the health check name.

      +

      The value contains a maximum of 255 characters.

      +

      delay

      +

      Yes

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      Yes

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      max_retries_down

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      pool_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      Only one health check can be configured for each backend server group.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved, and the default value is true.

      +

      timeout

      +

      Yes

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      Yes

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      The relationships between the health check protocol and the protocol used by the backend server group are as follows:

      +
      • If the protocol of the backend server group is UDP, the parameter value can only be UDP_CONNECT.
      • If the protocol of the backend server group is TCP, the parameter value can be TCP or HTTP.
      • If the protocol of the backend server group is HTTP, the parameter value can be TCP or HTTP.
      +

      monitor_port

      +

      No

      +

      Integer

      +

      Specifies the health check port. The port number ranges from 1 to 65535.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      domain_name

      +

      No

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      The value contains a maximum of 100 characters.

      +

      url_path

      +

      No

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      The value contains a maximum of 255 characters.

      +

      expected_codes

      +

      No

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value contains a maximum of 64 characters.

      + NOTE:

      This parameter is reserved.

      + +

      http_method

      +

      No

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + +

      Response

      + + + + + + + + + + +
      Table 3 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Object

      +

      Specifies the health check. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 healthmonitor parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the health check is performed.

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      delay

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      pools

      +

      Array

      +

      Specifies the ID of the backend server group associated with the health check. For details, see Table 5.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      timeout

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      The relationships between the value of this parameter and the protocol of the backend server group are as follows:

      +
      • If the protocol of the backend server group is UDP, the parameter value can only be UDP_CONNECT.
      • If the protocol of the backend server group is TCP, the parameter value can be TCP or HTTP.
      • If the protocol of the backend server group is HTTP, the parameter value can be TCP or HTTP.
      +

      monitor_port

      +

      Integer

      +

      Specifies the health check port. The port number ranges from 1 to 65535.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      Currently, this parameter is not supported and is fixed at 200.

      +

      domain_name

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      http_method

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + + + + + + + + + + + +
      Table 5 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + +

      Example Request

      • Example request: Configuring a health check
        POST https://{Endpoint}/v2.0/lbaas/healthmonitors
        +
        +{
        +  "healthmonitor": {
        +    "admin_state_up": true,
        +    "pool_id": "bb44bffb-05d9-412c-9d9c-b189d9e14193",
        +    "domain_name": "www.test.com",
        +    "delay": 10,
        +    "max_retries": 10,
        +    "max_retries_down": 5,
        +    "timeout": 10,
        +    "type": "HTTP"
        +  }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +  "healthmonitor": {
        +    "name": "",
        +    "admin_state_up": true,
        +    "tenant_id": "145483a5107745e9b3d80f956713e6a3",
        +    "domain_name": "www.test.com",
        +    "delay": 10,
        +    "max_retries": 10,
        +    "expected_codes": "200", 
        +    "max_retries_down": 5,
        +    "http_method": "GET",
        +    "timeout": 10,
        +    "pools": [
        +      {
        +        "id": "bb44bffb-05d9-412c-9d9c-b189d9e14193"
        +      }
        +    ],
        +    "url_path": "/",
        +    "type": "HTTP",
        +    "id": "2dca3867-98c5-4cde-8f2c-b89ae6bd7e36",
        +    "monitor_port": 112
        +  }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_zq_jk_0001.rst b/elb/api-ref/elb_zq_jk_0001.rst new file mode 100644 index 000000000..e0a6a1631 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0001.rst @@ -0,0 +1,447 @@ +Configuring a Health Check +========================== + +Function +^^^^^^^^ + +This API is used to configure a health check for a backend server group to check the status of backend servers. If the health check result is **OFFLINE**, backend servers are considered unhealthy. You need to check the server configuration. + +Constraints +^^^^^^^^^^^ + +The security group must allow access from 100.125.0.0/16. Otherwise, the health check cannot be performed. + +URI +^^^ + +POST /v2.0/lbaas/healthmonitors + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +---------------+-----------+--------+------------------------------------------------------------------------------+ + | **Parameter** | Mandatory | Type | Description | + +===============+===========+========+==============================================================================+ + | healthmonitor | Yes | Object | Specifies the health check. For details, see `Table | + | | | | 2 <#elb_zq_jk_0001__en-us_topic_0096561563_table154092042172813>`__. | + +---------------+-----------+--------+------------------------------------------------------------------------------+ + +.. table:: **Table 2** **healthmonitor** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | **Type** | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the health | + | | | | check is performed. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the health check | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | delay | Yes | Integer | Specifies the maximum time | + | | | | between health checks in | + | | | | the unit of second. The | + | | | | value ranges from **1** to | + | | | | **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries | Yes | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **OFFLINE** to | + | | | | **ONLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries_down | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **ONLINE** to | + | | | | **OFFLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | pool_id | Yes | String | Specifies the ID of the | + | | | | backend server group. | + | | | | | + | | | | Only one health check can | + | | | | be configured for each | + | | | | backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the health check. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | timeout | Yes | Integer | Specifies the health check | + | | | | timeout duration in the | + | | | | unit of second. The value | + | | | | ranges from **1** to | + | | | | **50**. | + | | | | | + | | | | NOTE: | + | | | | You are advised to set the | + | | | | value less than that of | + | | | | parameter **delay**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the health check | + | | | | protocol. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **UDP_CONNECT**, or | + | | | | **HTTP**. | + | | | | | + | | | | The relationships between | + | | | | the health check protocol | + | | | | and the protocol used by | + | | | | the backend server group | + | | | | are as follows: | + | | | | | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | UDP, the parameter value | + | | | | can only be | + | | | | **UDP_CONNECT**. | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | TCP, the parameter value | + | | | | can be **TCP** or | + | | | | **HTTP**. | + | | | | - If the protocol of the | + | | | | backend server group is | + | | | | HTTP, the parameter | + | | | | value can be **TCP** or | + | | | | **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | monitor_port | No | Integer | Specifies the health check | + | | | | port. The port number | + | | | | ranges from 1 to 65535. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the port of the backend | + | | | | server is used as the | + | | | | health check port. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain_name | No | String | Specifies the domain name | + | | | | of HTTP requests during the | + | | | | health check. | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the private IP address of | + | | | | the load balancer is used | + | | | | as the destination address | + | | | | of HTTP requests. | + | | | | | + | | | | The value can contain only | + | | | | digits, letters, hyphens | + | | | | (-), and periods (.) and | + | | | | must start with a digit or | + | | | | letter, for example, | + | | | | **www.test.com**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 100 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | url_path | No | String | Specifies the HTTP request | + | | | | path for the health check. | + | | | | The default value is **/**, | + | | | | and the value must start | + | | | | with a slash (/). | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | An example value is | + | | | | **/test**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | expected_codes | No | String | Specifies the expected HTTP | + | | | | status code. The following | + | | | | options are available: | + | | | | | + | | | | A single value, such as | + | | | | **200** | + | | | | | + | | | | A list of values, such as | + | | | | **200,202** | + | | | | | + | | | | A value range, such as | + | | | | **200-204** | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + | | | | | + | | | | NOTE: | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http_method | No | String | Specifies the HTTP request | + | | | | method. The default value | + | | | | is **GET**. | + | | | | | + | | | | The value can be **GET**, | + | | | | **HEAD**, **POST**, | + | | | | **PUT**, **DELETE**, | + | | | | **TRACE**, **OPTIONS**, | + | | | | **CONNECT**, and **PATCH**. | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | NOTE: | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Response parameters + + +---------------+--------+-------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===============+========+===========================================================================================+ + | healthmonitor | Object | Specifies the health check. For details, see `Table | + | | | 4 <#elb_zq_jk_0001__en-us_topic_0096561563_table186706722915>`__. | + +---------------+--------+-------------------------------------------------------------------------------------------+ + +.. table:: **Table 4** **healthmonitor** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the health check is performed. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the maximum time between | + | | | health checks in the unit of second. | + | | | The value ranges from **1** to | + | | | **50**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. The | + | | | value ranges from **1** to **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Specifies the ID of the backend | + | | | server group associated with the | + | | | health check. For details, see `Table | + | | | 5 <#elb_zq_jk_0001__en-us_to | + | | | pic_0096561563_table567815515351>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the health check timeout | + | | | duration in the unit of second. The | + | | | value ranges from **1** to **50**. | + | | | | + | | | NOTE: | + | | | You are advised to set the value less | + | | | than that of parameter **delay**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + | | | | + | | | The value can be **TCP**, | + | | | **UDP_CONNECT**, or **HTTP**. | + | | | | + | | | The relationships between the value | + | | | of this parameter and the protocol of | + | | | the backend server group are as | + | | | follows: | + | | | | + | | | - If the protocol of the backend | + | | | server group is UDP, the parameter | + | | | value can only be **UDP_CONNECT**. | + | | | - If the protocol of the backend | + | | | server group is TCP, the parameter | + | | | value can be **TCP** or **HTTP**. | + | | | - If the protocol of the backend | + | | | server group is HTTP, the | + | | | parameter value can be **TCP** or | + | | | **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the health check port. The | + | | | port number ranges from 1 to 65535. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the port of the | + | | | backend server is used as the health | + | | | check port. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. The following options are | + | | | available: | + | | | | + | | | A single value, such as **200** | + | | | | + | | | A list of values, such as **200,202** | + | | | | + | | | A value range, such as **200-204** | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | Currently, this parameter is not | + | | | supported and is fixed at **200**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name of HTTP | + | | | requests during the health check. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the private IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter, for example, | + | | | **www.test.com**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The default value | + | | | is **/**, and the value must start | + | | | with a slash (/). | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | An example value is **/test**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP request method. | + | | | The default value is **GET**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | and **PATCH**. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | NOTE: | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Configuring a health check + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/healthmonitors + + { + "healthmonitor": { + "admin_state_up": true, + "pool_id": "bb44bffb-05d9-412c-9d9c-b189d9e14193", + "domain_name": "www.test.com", + "delay": 10, + "max_retries": 10, + "max_retries_down": 5, + "timeout": 10, + "type": "HTTP" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "healthmonitor": { + "name": "", + "admin_state_up": true, + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + "domain_name": "www.test.com", + "delay": 10, + "max_retries": 10, + "expected_codes": "200", + "max_retries_down": 5, + "http_method": "GET", + "timeout": 10, + "pools": [ + { + "id": "bb44bffb-05d9-412c-9d9c-b189d9e14193" + } + ], + "url_path": "/", + "type": "HTTP", + "id": "2dca3867-98c5-4cde-8f2c-b89ae6bd7e36", + "monitor_port": 112 + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_zq_jk_0002.html b/elb/api-ref/elb_zq_jk_0002.html new file mode 100644 index 000000000..3992fbe3e --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0002.html @@ -0,0 +1,487 @@ + + +

      Querying Health Checks

      +

      Function

      This API is used to query the health checks. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      URI

      GET /v2.0/lbaas/healthmonitors

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the health check from which pagination query starts, that is, the ID of the last health check on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of health checks on each page. If this parameter is not set, all health checks are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the health check ID.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the health check is performed.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the health check name.

      +

      The value contains a maximum of 255 characters.

      +

      delay

      +

      No

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      max_retries_down

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved, and the default value is true.

      +

      timeout

      +

      No

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      No

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      monitor_port

      +

      No

      +

      Integer

      +

      Specifies the port used for the health check.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      expected_codes

      +

      No

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value contains a maximum of 64 characters.

      + NOTE:

      This parameter is reserved.

      + +

      domain_name

      +

      No

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      The value contains a maximum of 100 characters.

      +

      url_path

      +

      No

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      The value contains a maximum of 255 characters.

      +

      http_method

      +

      No

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      healthmonitors

      +

      Array

      +

      Lists the health checks. For details, see Table 3.

      +

      healthmonitors_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query.

      +

      For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 healthmonitors parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the health check is performed.

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      The value contains a maximum of 255 characters.

      +

      delay

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE.

      +

      The value ranges from 1 to 10.

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE.

      +

      The value ranges from 1 to 10.

      +

      pools

      +

      Array

      +

      Lists the IDs of backend server groups associated with the health check.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      timeout

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      monitor_port

      +

      Integer

      +

      Specifies the health check port. The port number ranges from 1 to 65535.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value contains a maximum of 64 characters.

      +

      domain_name

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      The value contains a maximum of 100 characters.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      The value contains a maximum of 255 characters.

      +

      http_method

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + + + + + + + + + + + +
      Table 4 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + + + + + + + + + + + + + + + +
      Table 5 healthmonitors_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page.

      +

      The value can be next or previous. The value next indicates the href containing the URL of the next page, and previous indicates the href containing the URL of the previous page.

      +
      + + +

      Example Request

      • Example request 1: Querying all health checks
        GET https://{Endpoint}/v2.0/lbaas/healthmonitors
        +
      • Example request 2: Querying HTTP health checks
        GET https://{Endpoint}/v2.0/lbaas/healthmonitors?type=HTTP
        +
      + +

      Example Response

      • Example response 1
        {
        +    "healthmonitors": [
        +        {
        +            "monitor_port": null,
        +            "name": "",
        +            "admin_state_up": true,
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        + 
        +            "domain_name": null,
        +            "delay": 5,
        +            
        +            "max_retries": 3,
        +            "max_retries_down": 5,
        +            "http_method": "GET",
        +            "timeout": 10,
        +            "pools": [
        +                {
        +                    "id": "caef8316-6b65-4676-8293-cf41fb63cc2a"
        +                }
        +            ],
        +            "url_path": "/",
        +            "type": "HTTP",
        +            "id": "1b587819-d619-49c1-9101-fe72d8b361ef"
        +        }
        +    ]
        +}
        +
      • Example response 2
        {
        +    "healthmonitors": [
        +        {
        +            "monitor_port": null,
        +            "name": "",
        +            "admin_state_up": true,
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +            "domain_name": null,
        +            "delay": 5,
        +            "expected_codes": "200-204,300-302,401",
        +            "max_retries": 3,
        +            "max_retries_down": 5,
        +            "http_method": "GET",
        +            "timeout": 10,
        +            "pools": [
        +                {
        +                    "id": "caef8316-6b65-4676-8293-cf41fb63cc2a"
        +                }
        +            ],
        +            "url_path": "/",
        +            "type": "HTTP",
        +            "id": "1b587819-d619-49c1-9101-fe72d8b361ef"
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_zq_jk_0002.rst b/elb/api-ref/elb_zq_jk_0002.rst new file mode 100644 index 000000000..a087e1246 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0002.rst @@ -0,0 +1,494 @@ +Querying Health Checks +====================== + +Function +^^^^^^^^ + +This API is used to query the health checks. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +URI +^^^ + +GET /v2.0/lbaas/healthmonitors + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | **Mandatory** | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | health check from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | health check on the | + | | | | previous page. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | health checks on each page. | + | | | | If this parameter is not | + | | | | set, all health checks are | + | | | | queried by default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the health check | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the health | + | | | | check is performed. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the health check | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | delay | No | Integer | Specifies the maximum time | + | | | | between health checks in | + | | | | the unit of second. The | + | | | | value ranges from **1** to | + | | | | **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **OFFLINE** to | + | | | | **ONLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries_down | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **ONLINE** to | + | | | | **OFFLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the health check. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | timeout | No | Integer | Specifies the health check | + | | | | timeout duration in the | + | | | | unit of second. The value | + | | | | ranges from **1** to | + | | | | **50**. | + | | | | | + | | | | NOTE: | + | | | | You are advised to set the | + | | | | value less than that of | + | | | | parameter **delay**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the health check | + | | | | protocol. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **UDP_CONNECT**, or | + | | | | **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | monitor_port | No | Integer | Specifies the port used for | + | | | | the health check. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the port of the backend | + | | | | server is used as the | + | | | | health check port. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | expected_codes | No | String | Specifies the expected HTTP | + | | | | status code. The following | + | | | | options are available: | + | | | | | + | | | | A single value, such as | + | | | | **200** | + | | | | | + | | | | A list of values, such as | + | | | | **200,202** | + | | | | | + | | | | A value range, such as | + | | | | **200-204** | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + | | | | | + | | | | NOTE: | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain_name | No | String | Specifies the domain name | + | | | | of HTTP requests during the | + | | | | health check. | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the private IP address of | + | | | | the load balancer is used | + | | | | as the destination address | + | | | | of HTTP requests. | + | | | | | + | | | | The value can contain only | + | | | | digits, letters, hyphens | + | | | | (-), and periods (.) and | + | | | | must start with a digit or | + | | | | letter, for example, | + | | | | **www.test.com**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 100 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | url_path | No | String | Specifies the HTTP request | + | | | | path for the health check. | + | | | | The default value is **/**, | + | | | | and the value must start | + | | | | with a slash (/). | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | An example value is | + | | | | **/test**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http_method | No | String | Specifies the HTTP request | + | | | | method. The default value | + | | | | is **GET**. | + | | | | | + | | | | The value can be **GET**, | + | | | | **HEAD**, **POST**, | + | | | | **PUT**, **DELETE**, | + | | | | **TRACE**, **OPTIONS**, | + | | | | **CONNECT**, and **PATCH**. | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | NOTE: | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | healthmonitors | Array | Lists the health checks. For details, | + | | | see `Table | + | | | 3 <#elb_zq_jk_0002__en-us_top | + | | | ic_0096561561_table6429512132610>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitors_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | | + | | | For details, see `Table | + | | | 5 <#elb_zq_jk_0002__en-us_t | + | | | opic_0096561561_table31726924112>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** **healthmonitors** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the health check is performed. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the maximum time between | + | | | health checks in the unit of second. | + | | | The value ranges from **1** to | + | | | **50**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. | + | | | | + | | | The value ranges from **1** to | + | | | **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. | + | | | | + | | | The value ranges from **1** to | + | | | **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the IDs of backend server | + | | | groups associated with the health | + | | | check. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the health check timeout | + | | | duration in the unit of second. The | + | | | value ranges from **1** to **50**. | + | | | | + | | | NOTE: | + | | | You are advised to set the value less | + | | | than that of parameter **delay**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + | | | | + | | | The value can be **TCP**, | + | | | **UDP_CONNECT**, or **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the health check port. The | + | | | port number ranges from 1 to 65535. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the port of the | + | | | backend server is used as the health | + | | | check port. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. The following options are | + | | | available: | + | | | | + | | | A single value, such as **200** | + | | | | + | | | A list of values, such as **200,202** | + | | | | + | | | A value range, such as **200-204** | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name of HTTP | + | | | requests during the health check. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the private IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter, for example, | + | | | **www.test.com**. | + | | | | + | | | The value contains a maximum of 100 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The default value | + | | | is **/**, and the value must start | + | | | with a slash (/). | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | An example value is **/test**. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP request method. | + | | | The default value is **GET**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | and **PATCH**. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | NOTE: | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +.. table:: **Table 5** **healthmonitors_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. | + | | | | + | | | The value can be **next** or | + | | | **previous**. The value **next** | + | | | indicates the href containing the URL | + | | | of the next page, and **previous** | + | | | indicates the href containing the URL | + | | | of the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all health checks + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/healthmonitors + +- Example request 2: Querying HTTP health checks + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/healthmonitors?type=HTTP + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "healthmonitors": [ + { + "monitor_port": null, + "name": "", + "admin_state_up": true, + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "domain_name": null, + "delay": 5, + + "max_retries": 3, + "max_retries_down": 5, + "http_method": "GET", + "timeout": 10, + "pools": [ + { + "id": "caef8316-6b65-4676-8293-cf41fb63cc2a" + } + ], + "url_path": "/", + "type": "HTTP", + "id": "1b587819-d619-49c1-9101-fe72d8b361ef" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "healthmonitors": [ + { + "monitor_port": null, + "name": "", + "admin_state_up": true, + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "domain_name": null, + "delay": 5, + "expected_codes": "200-204,300-302,401", + "max_retries": 3, + "max_retries_down": 5, + "http_method": "GET", + "timeout": 10, + "pools": [ + { + "id": "caef8316-6b65-4676-8293-cf41fb63cc2a" + } + ], + "url_path": "/", + "type": "HTTP", + "id": "1b587819-d619-49c1-9101-fe72d8b361ef" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_zq_jk_0003.html b/elb/api-ref/elb_zq_jk_0003.html new file mode 100644 index 000000000..5830712cd --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0003.html @@ -0,0 +1,247 @@ + + +

      Querying Details of a Health Check

      +

      Function

      This API is used to query details about a health check using its iD.

      + +

      URI

      GET /v2.0/lbaas/healthmonitors/{healthmonitor_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Object

      +

      Specifies the health check. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 healthmonitor parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the health check is performed.

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      delay

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      pools

      +

      Array

      +

      Specifies the ID of the backend server group associated with the health check. For details, see Table 5.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      timeout

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      The relationships between the value of this parameter and the protocol of the backend server group are as follows:

      +
      • If the protocol of the backend server group is UDP, the parameter value can only be UDP_CONNECT.
      • If the protocol of the backend server group is TCP, the parameter value can be TCP or HTTP.
      • If the protocol of the backend server group is HTTP, the parameter value can be TCP or HTTP.
      +

      monitor_port

      +

      Integer

      +

      Specifies the health check port. The port number ranges from 1 to 65535.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      Currently, this parameter is not supported and is fixed at 200.

      +

      domain_name

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      http_method

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + + + + + + + + + + + +
      Table 4 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + +

      Example Request

      • Example request: Querying details of a health check
        GET https://{Endpoint}/v2.0/lbaas/healthmonitors/b7633ade-24dc-4d72-8475-06aa22be5412
        +
      + +

      Example Response

      • Example response
        {
        +  "healthmonitor": {
        +    "name": "",
        +    "admin_state_up": true,
        +    "tenant_id": "145483a5107745e9b3d80f956713e6a3",
        +    "domain_name": null,
        +    "delay": 10,
        +    "expected_codes": "200-204,300-302,401",
        +    "max_retries": 10,
        +    "max_retries_down": 5,
        +    "http_method": "GET",
        +    "timeout": 10,
        +    "pools": [
        +      {
        +        "id": "bb44bffb-05d9-412c-9d9c-b189d9e14193"
        +      }
        +    ],
        +    "url_path": "/",
        +    "type": "HTTP",
        +    "id": "61c24cba-19bb-45c1-a013-7565e5f98872",
        +    "monitor_port": 112
        +  }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_zq_jk_0003.rst b/elb/api-ref/elb_zq_jk_0003.rst new file mode 100644 index 000000000..71c475775 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0003.rst @@ -0,0 +1,233 @@ +Querying Details of a Health Check +================================== + +Function +^^^^^^^^ + +This API is used to query details about a health check using its iD. + +URI +^^^ + +GET /v2.0/lbaas/healthmonitors/{healthmonitor_id} + +.. table:: **Table 1** Parameter description + + ================ ========= ====== ============================== + Parameter Mandatory Type Description + ================ ========= ====== ============================== + healthmonitor_id Yes String Specifies the health check ID. + ================ ========= ====== ============================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +---------------+--------+-------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===============+========+===========================================================================================+ + | healthmonitor | Object | Specifies the health check. For details, see `Table | + | | | 3 <#elb_zq_jk_0003__en-us_topic_0096561562_table167973062820>`__. | + +---------------+--------+-------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **healthmonitor** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the health check is performed. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the maximum time between | + | | | health checks in the unit of second. | + | | | The value ranges from **1** to | + | | | **50**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. The | + | | | value ranges from **1** to **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Specifies the ID of the backend | + | | | server group associated with the | + | | | health check. For details, see `Table | + | | | 5 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the health check timeout | + | | | duration in the unit of second. The | + | | | value ranges from **1** to **50**. | + | | | | + | | | NOTE: | + | | | You are advised to set the value less | + | | | than that of parameter **delay**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + | | | | + | | | The value can be **TCP**, | + | | | **UDP_CONNECT**, or **HTTP**. | + | | | | + | | | The relationships between the value | + | | | of this parameter and the protocol of | + | | | the backend server group are as | + | | | follows: | + | | | | + | | | - If the protocol of the backend | + | | | server group is UDP, the parameter | + | | | value can only be **UDP_CONNECT**. | + | | | - If the protocol of the backend | + | | | server group is TCP, the parameter | + | | | value can be **TCP** or **HTTP**. | + | | | - If the protocol of the backend | + | | | server group is HTTP, the | + | | | parameter value can be **TCP** or | + | | | **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the health check port. The | + | | | port number ranges from 1 to 65535. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the port of the | + | | | backend server is used as the health | + | | | check port. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. The following options are | + | | | available: | + | | | | + | | | A single value, such as **200** | + | | | | + | | | A list of values, such as **200,202** | + | | | | + | | | A value range, such as **200-204** | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | Currently, this parameter is not | + | | | supported and is fixed at **200**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name of HTTP | + | | | requests during the health check. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the private IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter, for example, | + | | | **www.test.com**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The default value | + | | | is **/**, and the value must start | + | | | with a slash (/). | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | An example value is **/test**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP request method. | + | | | The default value is **GET**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | and **PATCH**. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | NOTE: | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a health check + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/healthmonitors/b7633ade-24dc-4d72-8475-06aa22be5412 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "healthmonitor": { + "name": "", + "admin_state_up": true, + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + "domain_name": null, + "delay": 10, + "expected_codes": "200-204,300-302,401", + "max_retries": 10, + "max_retries_down": 5, + "http_method": "GET", + "timeout": 10, + "pools": [ + { + "id": "bb44bffb-05d9-412c-9d9c-b189d9e14193" + } + ], + "url_path": "/", + "type": "HTTP", + "id": "61c24cba-19bb-45c1-a013-7565e5f98872", + "monitor_port": 112 + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_zq_jk_0004.html b/elb/api-ref/elb_zq_jk_0004.html new file mode 100644 index 000000000..772fd58b0 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0004.html @@ -0,0 +1,422 @@ + + +

      Updating a Health Check

      +

      Function

      This API is used to update a health check.

      + +

      Constraints

      If provisioning_status of the load balancer for which the health check is configured is not ACTIVE, the health check cannot be updated.

      + +

      URI

      PUT /v2.0/lbaas/healthmonitors/{healthmonitor_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Yes

      +

      Object

      +

      Specifies the health check. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 healthmonitor parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the health check name.

      +

      The value contains a maximum of 255 characters.

      +

      delay

      +

      No

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      max_retries_down

      +

      No

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved, and the default value is true.

      +

      timeout

      +

      No

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      No

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      monitor_port

      +

      No

      +

      Integer

      +

      Specifies the health check port. The port number ranges from 1 to 65535.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      expected_codes

      +

      No

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      domain_name

      +

      No

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      The value contains a maximum of 100 characters.

      +

      url_path

      +

      No

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      The value contains a maximum of 255 characters.

      +

      http_method

      +

      No

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      healthmonitor

      +

      Object

      +

      Specifies the health check. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 healthmonitor parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the health check ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the health check is performed.

      +

      name

      +

      String

      +

      Specifies the health check name.

      +

      delay

      +

      Integer

      +

      Specifies the maximum time between health checks in the unit of second. The value ranges from 1 to 50.

      +

      max_retries

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from OFFLINE to ONLINE. The value ranges from 1 to 10.

      +

      max_retries_down

      +

      Integer

      +

      Specifies the number of consecutive health checks when the health check result of a backend server changes from ONLINE to OFFLINE. The value ranges from 1 to 10.

      +

      pools

      +

      Array

      +

      Specifies the ID of the backend server group associated with the health check. For details, see Table 5.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the health check.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      timeout

      +

      Integer

      +

      Specifies the health check timeout duration in the unit of second. The value ranges from 1 to 50.

      + NOTE:

      You are advised to set the value less than that of parameter delay.

      + +

      type

      +

      String

      +

      Specifies the health check protocol.

      +

      The value can be TCP, UDP_CONNECT, or HTTP.

      +

      The relationships between the value of this parameter and the protocol of the backend server group are as follows:

      +
      • If the protocol of the backend server group is UDP, the parameter value can only be UDP_CONNECT.
      • If the protocol of the backend server group is TCP, the parameter value can be TCP or HTTP.
      • If the protocol of the backend server group is HTTP, the parameter value can be TCP or HTTP.
      +

      monitor_port

      +

      Integer

      +

      Specifies the health check port. The port number ranges from 1 to 65535.

      +

      The value is left blank by default, indicating that the port of the backend server is used as the health check port.

      +

      expected_codes

      +

      String

      +

      Specifies the expected HTTP status code. The following options are available:

      +

      A single value, such as 200

      +

      A list of values, such as 200,202

      +

      A value range, such as 200-204

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      Currently, this parameter is not supported and is fixed at 200.

      +

      domain_name

      +

      String

      +

      Specifies the domain name of HTTP requests during the health check.

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      The value is left blank by default, indicating that the private IP address of the load balancer is used as the destination address of HTTP requests.

      +

      The value can contain only digits, letters, hyphens (-), and periods (.) and must start with a digit or letter, for example, www.test.com.

      +

      url_path

      +

      String

      +

      Specifies the HTTP request path for the health check. The default value is /, and the value must start with a slash (/).

      +

      This parameter is valid only when the value of type is set to HTTP.

      +

      An example value is /test.

      +

      http_method

      +

      String

      +

      Specifies the HTTP request method. The default value is GET.

      +

      The value can be GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, and PATCH.

      +

      This parameter is valid only when the value of type is set to HTTP.

      + NOTE:

      This parameter is reserved.

      + +
      + + + + + + + + + + + + +
      Table 6 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + +

      Example Request

      • Example request: Updating a health check
        PUT https://{Endpoint}/v2.0/lbaas/healthmonitors/b7633ade-24dc-4d72-8475-06aa22be5412
        +
        +{
        +  "healthmonitor": {
        +    "delay": 15,
        +    "name": "health-xx",
        +    "timeout": 12
        +   }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +  "healthmonitor": {
        +    "name": "health-xx",
        +    "admin_state_up": true,
        +    "tenant_id": "145483a5107745e9b3d80f956713e6a3",
        +    "domain_name": null,
        +    "delay": 15,
        +    "expected_codes": "200",
        +    "max_retries": 10,
        +    "max_retries_down": 5,
        +    "http_method": "GET",
        +    "timeout": 12,
        +    "pools": [
        +      {
        +        "id": "bb44bffb-05d9-412c-9d9c-b189d9e14193"
        +      }
        +    ],
        +    "url_path": "/",
        +    "type": "HTTP",
        +    "id": "2dca3867-98c5-4cde-8f2c-b89ae6bd7e36",
        +    "monitor_port": 112
        +  }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_zq_jk_0004.rst b/elb/api-ref/elb_zq_jk_0004.rst new file mode 100644 index 000000000..138359587 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0004.rst @@ -0,0 +1,404 @@ +Updating a Health Check +======================= + +Function +^^^^^^^^ + +This API is used to update a health check. + +Constraints +^^^^^^^^^^^ + +If **provisioning_status** of the load balancer for which the health check is configured is not **ACTIVE**, the health check cannot be updated. + +URI +^^^ + +PUT /v2.0/lbaas/healthmonitors/{healthmonitor_id} + +.. table:: **Table 1** Parameter description + + ================ ========= ====== ============================== + Parameter Mandatory Type Description + ================ ========= ====== ============================== + healthmonitor_id Yes String Specifies the health check ID. + ================ ========= ====== ============================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +---------------+-----------+--------+------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===============+===========+========+==============================================================================+ + | healthmonitor | Yes | Object | Specifies the health check. For details, see `Table | + | | | | 3 <#elb_zq_jk_0004__en-us_topic_0096561564_table61361617301>`__. | + +---------------+-----------+--------+------------------------------------------------------------------------------+ + +.. table:: **Table 3** **healthmonitor** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the health check | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | delay | No | Integer | Specifies the maximum time | + | | | | between health checks in | + | | | | the unit of second. The | + | | | | value ranges from **1** to | + | | | | **50**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **OFFLINE** to | + | | | | **ONLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | max_retries_down | No | Integer | Specifies the number of | + | | | | consecutive health checks | + | | | | when the health check | + | | | | result of a backend server | + | | | | changes from **ONLINE** to | + | | | | **OFFLINE**. The value | + | | | | ranges from **1** to | + | | | | **10**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the health check. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | timeout | No | Integer | Specifies the health check | + | | | | timeout duration in the | + | | | | unit of second. The value | + | | | | ranges from **1** to | + | | | | **50**. | + | | | | | + | | | | NOTE: | + | | | | You are advised to set the | + | | | | value less than that of | + | | | | parameter **delay**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the health check | + | | | | protocol. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **UDP_CONNECT**, or | + | | | | **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | monitor_port | No | Integer | Specifies the health check | + | | | | port. The port number | + | | | | ranges from 1 to 65535. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the port of the backend | + | | | | server is used as the | + | | | | health check port. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | expected_codes | No | String | Specifies the expected HTTP | + | | | | status code. The following | + | | | | options are available: | + | | | | | + | | | | A single value, such as | + | | | | **200** | + | | | | | + | | | | A list of values, such as | + | | | | **200,202** | + | | | | | + | | | | A value range, such as | + | | | | **200-204** | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain_name | No | String | Specifies the domain name | + | | | | of HTTP requests during the | + | | | | health check. | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | The value is left blank by | + | | | | default, indicating that | + | | | | the private IP address of | + | | | | the load balancer is used | + | | | | as the destination address | + | | | | of HTTP requests. | + | | | | | + | | | | The value can contain only | + | | | | digits, letters, hyphens | + | | | | (-), and periods (.) and | + | | | | must start with a digit or | + | | | | letter, for example, | + | | | | **www.test.com**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 100 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | url_path | No | String | Specifies the HTTP request | + | | | | path for the health check. | + | | | | The default value is **/**, | + | | | | and the value must start | + | | | | with a slash (/). | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | An example value is | + | | | | **/test**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http_method | No | String | Specifies the HTTP request | + | | | | method. The default value | + | | | | is **GET**. | + | | | | | + | | | | The value can be **GET**, | + | | | | **HEAD**, **POST**, | + | | | | **PUT**, **DELETE**, | + | | | | **TRACE**, **OPTIONS**, | + | | | | **CONNECT**, and **PATCH**. | + | | | | | + | | | | This parameter is valid | + | | | | only when the value of | + | | | | **type** is set to | + | | | | **HTTP**. | + | | | | | + | | | | NOTE: | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +---------------+--------+-------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===============+========+===========================================================================================+ + | healthmonitor | Object | Specifies the health check. For details, see `Table | + | | | 5 <#elb_zq_jk_0004__en-us_topic_0096561564_table25969311303>`__. | + +---------------+--------+-------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **healthmonitor** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the health check ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the health check is performed. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the health check name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | delay | Integer | Specifies the maximum time between | + | | | health checks in the unit of second. | + | | | The value ranges from **1** to | + | | | **50**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **OFFLINE** to **ONLINE**. The | + | | | value ranges from **1** to **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | max_retries_down | Integer | Specifies the number of consecutive | + | | | health checks when the health check | + | | | result of a backend server changes | + | | | from **ONLINE** to **OFFLINE**. The | + | | | value ranges from **1** to **10**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Specifies the ID of the backend | + | | | server group associated with the | + | | | health check. For details, see `Table | + | | | 5 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the health check. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | timeout | Integer | Specifies the health check timeout | + | | | duration in the unit of second. The | + | | | value ranges from **1** to **50**. | + | | | | + | | | NOTE: | + | | | You are advised to set the value less | + | | | than that of parameter **delay**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the health check protocol. | + | | | | + | | | The value can be **TCP**, | + | | | **UDP_CONNECT**, or **HTTP**. | + | | | | + | | | The relationships between the value | + | | | of this parameter and the protocol of | + | | | the backend server group are as | + | | | follows: | + | | | | + | | | - If the protocol of the backend | + | | | server group is UDP, the parameter | + | | | value can only be **UDP_CONNECT**. | + | | | - If the protocol of the backend | + | | | server group is TCP, the parameter | + | | | value can be **TCP** or **HTTP**. | + | | | - If the protocol of the backend | + | | | server group is HTTP, the | + | | | parameter value can be **TCP** or | + | | | **HTTP**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | monitor_port | Integer | Specifies the health check port. The | + | | | port number ranges from 1 to 65535. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the port of the | + | | | backend server is used as the health | + | | | check port. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expected_codes | String | Specifies the expected HTTP status | + | | | code. The following options are | + | | | available: | + | | | | + | | | A single value, such as **200** | + | | | | + | | | A list of values, such as **200,202** | + | | | | + | | | A value range, such as **200-204** | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | Currently, this parameter is not | + | | | supported and is fixed at **200**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain_name | String | Specifies the domain name of HTTP | + | | | requests during the health check. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | The value is left blank by default, | + | | | indicating that the private IP | + | | | address of the load balancer is used | + | | | as the destination address of HTTP | + | | | requests. | + | | | | + | | | The value can contain only digits, | + | | | letters, hyphens (-), and periods (.) | + | | | and must start with a digit or | + | | | letter, for example, | + | | | **www.test.com**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | url_path | String | Specifies the HTTP request path for | + | | | the health check. The default value | + | | | is **/**, and the value must start | + | | | with a slash (/). | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | An example value is **/test**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http_method | String | Specifies the HTTP request method. | + | | | The default value is **GET**. | + | | | | + | | | The value can be **GET**, **HEAD**, | + | | | **POST**, **PUT**, **DELETE**, | + | | | **TRACE**, **OPTIONS**, **CONNECT**, | + | | | and **PATCH**. | + | | | | + | | | This parameter is valid only when the | + | | | value of **type** is set to **HTTP**. | + | | | | + | | | NOTE: | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating a health check + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/healthmonitors/b7633ade-24dc-4d72-8475-06aa22be5412 + + { + "healthmonitor": { + "delay": 15, + "name": "health-xx", + "timeout": 12 + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "healthmonitor": { + "name": "health-xx", + "admin_state_up": true, + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + "domain_name": null, + "delay": 15, + "expected_codes": "200", + "max_retries": 10, + "max_retries_down": 5, + "http_method": "GET", + "timeout": 12, + "pools": [ + { + "id": "bb44bffb-05d9-412c-9d9c-b189d9e14193" + } + ], + "url_path": "/", + "type": "HTTP", + "id": "2dca3867-98c5-4cde-8f2c-b89ae6bd7e36", + "monitor_port": 112 + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_zq_jk_0005.html b/elb/api-ref/elb_zq_jk_0005.html new file mode 100644 index 000000000..50d249fca --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0005.html @@ -0,0 +1,51 @@ + + +

      Deleting a Health Check

      +

      Function

      This API is used to delete a health check.

      + +

      Constraints

      If provisioning_status of the load balancer for which the health check is configured is not ACTIVE, the health check cannot be deleted.

      + +

      URI

      DELETE /v2.0/lbaas/healthmonitors/{healthmonitor_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      healthmonitor_id

      +

      Yes

      +

      String

      +

      Specifies the health check ID.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Deleting a health check
        DELETE https://{Endpoint}/v2.0/lbaas/healthmonitors/b7633ade-24dc-4d72-8475-06aa22be5412
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Health Check + + + diff --git a/elb/api-ref/elb_zq_jk_0005.rst b/elb/api-ref/elb_zq_jk_0005.rst new file mode 100644 index 000000000..1b7f56c57 --- /dev/null +++ b/elb/api-ref/elb_zq_jk_0005.rst @@ -0,0 +1,58 @@ +Deleting a Health Check +======================= + +Function +^^^^^^^^ + +This API is used to delete a health check. + +Constraints +^^^^^^^^^^^ + +If **provisioning_status** of the load balancer for which the health check is configured is not **ACTIVE**, the health check cannot be deleted. + +URI +^^^ + +DELETE /v2.0/lbaas/healthmonitors/{healthmonitor_id} + +.. table:: **Table 1** Parameter description + + ================ ========= ====== ============================== + Parameter Mandatory Type Description + ================ ========= ====== ============================== + healthmonitor_id Yes String Specifies the health check ID. + ================ ========= ====== ============================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a health check + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/healthmonitors/b7633ade-24dc-4d72-8475-06aa22be5412 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Health Check `__ diff --git a/elb/api-ref/elb_zq_jt_0000.html b/elb/api-ref/elb_zq_jt_0000.html new file mode 100644 index 000000000..0dfede6e6 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0000.html @@ -0,0 +1,23 @@ + + +

      Listener

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_jt_0000.rst b/elb/api-ref/elb_zq_jt_0000.rst new file mode 100644 index 000000000..8c6a9db07 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0000.rst @@ -0,0 +1,10 @@ +Listener +======== + +- `Adding a Listener `__ +- `Querying Listeners `__ +- `Querying Details of a Listener `__ +- `Updating a Listener `__ +- `Deleting a Listener `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_jt_0001.html b/elb/api-ref/elb_zq_jt_0001.html new file mode 100644 index 000000000..24dca7475 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0001.html @@ -0,0 +1,579 @@ + + +

      Adding a Listener

      +

      Function

      This API is used to add a listener to a load balancer.

      + +

      Constraints

      When protocol is set to TCP and protocol_port to 0, the listener works in IP mode (DR mode).

      + +

      URI

      POST /v2.0/lbaas/listeners

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener

      +

      Yes

      +

      Object

      +

      Specifies the listener. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 listener parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the listener name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the listener.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      Yes

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      The value can be TCP, HTTP, UDP, or TERMINATED_HTTPS.

      +

      protocol_port

      +

      Yes

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      The port number ranges from 1 to 65535.

      + NOTE:

      If the protocol used by the listener is UDP, the port number cannot be 4789.

      + +

      loadbalancer_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +

      connection_limit

      +

      No

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      The value ranges from -1 to 2147483647. The default value is -1, indicating that there is no restriction on the maximum number of connections.

      +

      This parameter is reserved.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved, and the default value is true.

      +

      http2_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 is used.
      • false: HTTP/2 is not used.
      +

      The default value is false.

      +

      This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      default_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +

      If a request does not match the forwarding policy, the request is forwarded to the default backend server group for processing. If the value is null, the listener has no default backend server group.

      +This parameter has the following constraints:
      • Its value cannot be the ID of any backend server group of other listeners.
      • Its value cannot be the ID of any backend server group associated with the forwarding policies set for other listeners.
      + +The relationships between the protocol used by the listener and the protocol of the backend server group are as follows:
      • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
      • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
      • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
      + +

      default_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      This parameter is mandatory when protocol is set to TERMINATED_HTTPS.

      +

      The default value is null when protocol is not set to TERMINATED_HTTPS.

      +

      The value contains a maximum of 128 characters.

      + NOTE:

      This parameter is valid only when protocol is set to TERMINATED_HTTPS.

      + +

      client_ca_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      The default value is null.

      +

      The value contains a maximum of 128 characters.

      + NOTE:

      This parameter is valid only when protocol is set to TERMINATED_HTTPS.

      + +

      sni_container_refs

      +

      No

      +

      Array

      +

      Lists the IDs of SNI certificates (server certificates with a domain name) used by the listener.

      +

      If the parameter value is an empty list, the SNI feature is disabled.

      +

      The default value is [].

      + NOTE:

      This parameter is valid only when protocol is set to TERMINATED_HTTPS.

      + +

      tls_ciphers_policy

      +

      No

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0-inherit, tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0. For details of cipher suites for each security policy, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 tls_ciphers_policy parameter description

      Security Policy

      +

      TLS Version

      +

      Cipher Suite

      +

      tls-1-0-inherit

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SHA:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA

      +

      tls-1-0

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA

      +

      tls-1-1

      +

      TLS 1.2 TLS 1.1

      +

      tls-1-2

      +

      TLS 1.2

      +

      tls-1-2-strict

      +

      TLS 1.2

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      listener

      +

      Object

      +

      Specifies the listener. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      The value can be TCP, HTTP, UDP, or TERMINATED_HTTPS.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      The port number ranges from 1 to 65535.

      +

      loadbalancers

      +

      Array

      +

      Specifies the ID of the associated load balancer. For details, see Table 6.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      The value ranges from -1 to 2147483647. The default value is -1, indicating that there is no restriction on the maximum number of connections.

      +

      This parameter is reserved.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: The load balancer is enabled.
      • false: The load balancer is disabled.
      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 is used.
      • false: HTTP/2 is not used.
      +

      This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +

      If a request does not match the forwarding policy, the request is forwarded to the default backend server group for processing. If the value is null, the listener has no default backend server group.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener. For details, see Certificate.

      +

      This parameter is mandatory when protocol is set to TERMINATED_HTTPS.

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener. For details, see Certificate.

      +

      sni_container_refs

      +

      Array

      +

      Lists the IDs of SNI certificates (server certificates with a domain name) used by the listener.

      +

      If the parameter value is an empty list, the SNI feature is disabled.

      +

      tags

      +

      Array

      +

      Tags the listener.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0-inherit, tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0. For details of cipher suites for each security policy, see Table 3.

      +
      + + + + + + + + + + + + +
      Table 6 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + +

      Example Request

      • Example request 1: Adding a TCP listener
        POST https://{Endpoint}/v2.0/lbaas/listeners 
        +
        +{
        +    "listener": {
        +        "protocol_port": 80,
        +        "protocol": "TCP",
        +        "loadbalancer_id": "0416b6f1-877f-4a51-987e-978b3f084253",
        +        "name": "listener-test",
        +        "admin_state_up": true
        +    }
        +}
        +
      + +
      • Example request 2: Adding an HTTPS listener
        POST https://{Endpoint}/v2.0/lbaas/listeners 
        +
        +{ 
        +    "listener": { 
        +        "protocol_port": 25, 
        +        "protocol": "TERMINATED_HTTPS", 
        +        "default_tls_container_ref": "02dcd56799e045bf8b131533cc911dd6",
        +        "loadbalancer_id": "0416b6f1-877f-4a51-987e-978b3f084253", 
        +        "name": "listener-test", 
        +        "admin_state_up": true
        + 
        +    } 
        +}
        +
      • Example request 3: Adding a listener with the SNI feature enabled
        POST https://{Endpoint}/v2.0/lbaas/listeners 
        +
        +{
        +    "listener": {
        +        "protocol_port": 27, 
        +        "protocol": "TERMINATED_HTTPS", 
        +        "loadbalancer_id": "6bb85e33-4953-457a-85a9-336d76125b7b", 
        +        "name": "listener-test", 
        +        "admin_state_up": true,
        +        "default_tls_container_ref":"02dcd56799e045bf8b131533cc911dd6",
        +        "sni_container_refs": ["e15d1b5000474adca383c3cd9ddc06d4",
        +        	              "5882325fd6dd4b95a88d33238d293a0f"]
        +    }
        +}
        +
      +

      Example Response

      • Example response 1
        {
        +    "listener": {
        +        "protocol_port": 80,
        +        "protocol": "TCP",
        +        "description": "",
        +        "client_ca_tls_container_ref": null,
        +        "default_tls_container_ref": null,
        +        "admin_state_up": true,
        +        "http2_enable": false,
        +        "loadbalancers": [
        +            {
        +                "id": "0416b6f1-877f-4a51-987e-978b3f084253"
        +            }
        +        ],
        +        "tenant_id": "145483a5107745e9b3d80f956713e6a3",
        +        "sni_container_refs": [],
        +        "connection_limit": -1,
        +        "default_pool_id": null,
        +        "tags": [],
        +        "id": "b7f32b52-6f17-4b16-9ec8-063d71b653ce",
        +        "name": "listener-test",
        +        "tls_ciphers_policy": null,
        +        "created_at": "2018-07-25T01:54:13", 
        +        "updated_at": "2018-07-25T01:54:14"
        +    }
        +}
        +
        +
      + +
      • Example response 2
        {
        +    "listener": {
        +        "protocol_port": 25,
        +        "protocol": "TERMINATED_HTTPS",
        +        "description": "",
        +        "default_tls_container_ref": "02dcd56799e045bf8b131533cc911dd6",
        +        "sni_container_refs": [],
        +        "loadbalancers": [
        +            {
        +                "id": "0416b6f1-877f-4a51-987e-978b3f084253"
        +            }
        +        ],
        +        "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +  
        +        "created_at": "2019-01-21T12:38:31",
        +        "client_ca_tls_container_ref": null,
        +        "connection_limit": -1,
        +        "updated_at": "2019-01-21T12:38:31",
        +        "http2_enable": false,
        +        "admin_state_up": true,
        +        "default_pool_id": null,
        +        "tls_ciphers_policy": "tls-1-0",
        +        "id": "b56634cd-5ba8-460e-b5a2-6de5ba8eaf60",
        +        "tags": [],
        +        "name": "listener-test"
        +  
        +    }
        +}
        +
      • Example response 3
        {
        +    "listener": {
        +        "protocol_port": 27,
        +        "protocol": "TERMINATED_HTTPS",
        +        "description": "",
        +        "default_tls_container_ref": "02dcd56799e045bf8b131533cc911dd6",
        +        "sni_container_refs": [
        +            "5882325fd6dd4b95a88d33238d293a0f",
        +            "e15d1b5000474adca383c3cd9ddc06d4"
        +        ],
        +        "loadbalancers": [
        +            {
        +                "id": "6bb85e33-4953-457a-85a9-336d76125b7b"
        +            }
        +        ],
        +        "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +        "project_id": "601240b9c5c94059b63d484c92cfe308",
        +        "created_at": "2019-01-21T12:43:55",
        +        "client_ca_tls_container_ref": null,
        +        "connection_limit": -1,
        +        "updated_at": "2019-01-21T12:43:55",
        +        "http2_enable": false,
        +        "admin_state_up": true,
        +        "default_pool_id": null,
        +        "": "tls-1-0",
        +        "id": "b2cfda5b-52fe-4320-8845-34e8d4dac2c7",
        +        "tags": [],
        +        "name": "listener-test"
        +    }
        +}
        +
      +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_zq_jt_0001.rst b/elb/api-ref/elb_zq_jt_0001.rst new file mode 100644 index 000000000..108a53781 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0001.rst @@ -0,0 +1,592 @@ +Adding a Listener +================= + +Function +^^^^^^^^ + +This API is used to add a listener to a load balancer. + +Constraints +^^^^^^^^^^^ + +When **protocol** is set to **TCP** and **protocol_port** to **0**, the listener works in IP mode (DR mode). + +URI +^^^ + +POST /v2.0/lbaas/listeners + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | listener | Yes | Object | Specifies the listener. For details, see `Table | + | | | | 2 <#elb_zq_jt_0001__en-us_topic_0096561542_table3499100135410>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 2** **listener** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the listener | + | | | | is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the listener | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | Yes | String | Specifies the protocol used | + | | | | by the listener. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **HTTP**, **UDP**, or | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | Yes | Integer | Specifies the port used by | + | | | | the listener. | + | | | | | + | | | | The port number ranges from | + | | | | 1 to 65535. | + | | | | | + | | | | NOTE: | + | | | | If the protocol used by the | + | | | | listener is UDP, the port | + | | | | number cannot be 4789. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | Yes | String | Specifies the ID of the | + | | | | associated load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | connection_limit | No | Integer | Specifies the maximum | + | | | | number of connections. | + | | | | | + | | | | The value ranges from | + | | | | **-1** to **2147483647**. | + | | | | The default value is | + | | | | **-1**, indicating that | + | | | | there is no restriction on | + | | | | the maximum number of | + | | | | connections. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the listener. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http2_enable | No | Boolean | Specifies whether to use | + | | | | HTTP/2. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. | + | | | | | + | | | | - **true**: HTTP/2 is | + | | | | used. | + | | | | - **false**: HTTP/2 is not | + | | | | used. | + | | | | | + | | | | The default value is | + | | | | **false**. | + | | | | | + | | | | This parameter is valid | + | | | | only when the protocol used | + | | | | by the listener is set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_pool_id | No | String | Specifies the ID of the | + | | | | associated backend server | + | | | | group. | + | | | | | + | | | | If a request does not match | + | | | | the forwarding policy, the | + | | | | request is forwarded to the | + | | | | default backend server | + | | | | group for processing. If | + | | | | the value is **null**, the | + | | | | listener has no default | + | | | | backend server group. | + | | | | | + | | | | This parameter has the | + | | | | following constraints: | + | | | | | + | | | | - Its value cannot be the | + | | | | ID of any backend server | + | | | | group of other | + | | | | listeners. | + | | | | - Its value cannot be the | + | | | | ID of any backend server | + | | | | group associated with | + | | | | the forwarding policies | + | | | | set for other listeners. | + | | | | | + | | | | The relationships between | + | | | | the protocol used by the | + | | | | listener and the protocol | + | | | | of the backend server group | + | | | | are as follows: | + | | | | | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **TCP**, the protocol of | + | | | | the backend server group | + | | | | must be **TCP**. | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **UDP**, the protocol of | + | | | | the backend server group | + | | | | must be **UDP**. | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **HTTP** or | + | | | | **TERMINATED_HTTPS**, | + | | | | the protocol of the | + | | | | backend server group | + | | | | must be **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_tls_container_ref | No | String | Specifies the ID of the | + | | | | server certificate used by | + | | | | the listener. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **protocol** is set to | + | | | | **TERMINATED_HTTPS**. | + | | | | | + | | | | The default value is | + | | | | **null** when **protocol** | + | | | | is not set to | + | | | | **TERMINATED_HTTPS**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **protocol** is | + | | | | set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_ca_tls_container_ref | No | String | Specifies the ID of the CA | + | | | | certificate used by the | + | | | | listener. | + | | | | | + | | | | The default value is | + | | | | **null**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **protocol** is | + | | | | set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sni_container_refs | No | Array | Lists the IDs of SNI | + | | | | certificates (server | + | | | | certificates with a domain | + | | | | name) used by the listener. | + | | | | | + | | | | If the parameter value is | + | | | | an empty list, the SNI | + | | | | feature is disabled. | + | | | | | + | | | | The default value is | + | | | | **[]**. | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **protocol** is | + | | | | set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_ciphers_policy | No | String | Specifies the security | + | | | | policy used by the | + | | | | listener. This parameter is | + | | | | valid only when the | + | | | | protocol used by the | + | | | | listener is set to | + | | | | **TERMINATED_HTTPS**. | + | | | | | + | | | | The value can be | + | | | | **tls-1-0-inherit**, | + | | | | **tls-1-0**, **tls-1-1**, | + | | | | **tls-1-2**, or | + | | | | **tls-1-2-strict**, and the | + | | | | default value is | + | | | | **tls-1-0**. For details of | + | | | | cipher suites for each | + | | | | security policy, see `Table | + | | | | 3 <#elb_zq_j | + | | | | t_0001__en-us_topic_0096561 | + | | | | 542_table1247813103533>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **tls_ciphers_policy** parameter description + + +-----------------+-------------------------+------------------------------------------------------------------------+ + | Security Policy | TLS Version | Cipher Suite | + +=================+=========================+========================================================================+ + | tls-1-0-inherit | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128 | + | | | -GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA25 | + | | | 6:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE- | + | | | RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA38 | + | | | 4:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA: | + | | | DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128- | + | | | SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA | + | | | :DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES | + | | | 256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SH | + | | | A:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-0 | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-A | + | | | ES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- | + | | | SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:E | + | | | CDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256- | + | | | SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128 | + | | | -SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-1 | | TLS 1.2 TLS 1.1 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2 | | TLS 1.2 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2-strict | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-A | + | | | ES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES25 | + | | | 6-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128- | + | | | SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | listener | Object | Specifies the listener. For details, see `Table | + | | | 5 <#elb_zq_jt_0001__en-us_topic_0096561542_table5301132505414>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **listeners** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + | | | | + | | | The value can be **TCP**, **HTTP**, | + | | | **UDP**, or **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | The port number ranges from 1 to | + | | | 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Specifies the ID of the associated | + | | | load balancer. For details, see | + | | | `Table | + | | | 6 <#elb_zq_jt_0001__en-us_topi | + | | | c_0096561542_table17641175071912>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. | + | | | | + | | | The value ranges from **-1** to | + | | | **2147483647**. The default value is | + | | | **-1**, indicating that there is no | + | | | restriction on the maximum number of | + | | | connections. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: The load balancer is | + | | | enabled. | + | | | - **false**: The load balancer is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. | + | | | | + | | | The value can be **true** or | + | | | **false**. | + | | | | + | | | - **true**: HTTP/2 is used. | + | | | - **false**: HTTP/2 is not used. | + | | | | + | | | This parameter is valid only when the | + | | | protocol used by the listener is set | + | | | to **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the associated | + | | | backend server group. | + | | | | + | | | If a request does not match the | + | | | forwarding policy, the request is | + | | | forwarded to the default backend | + | | | server group for processing. If the | + | | | value is **null**, the listener has | + | | | no default backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. For | + | | | details, see | + | | | `Certificate `__. | + | | | | + | | | This parameter is mandatory when | + | | | **protocol** is set to | + | | | **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. For | + | | | details, see | + | | | `Certificate `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array | Lists the IDs of SNI certificates | + | | | (server certificates with a domain | + | | | name) used by the listener. | + | | | | + | | | If the parameter value is an empty | + | | | list, the SNI feature is disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Tags the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is valid | + | | | only when the protocol used by the | + | | | listener is set to | + | | | **TERMINATED_HTTPS**. | + | | | | + | | | The value can be **tls-1-0-inherit**, | + | | | **tls-1-0**, **tls-1-1**, | + | | | **tls-1-2**, or **tls-1-2-strict**, | + | | | and the default value is **tls-1-0**. | + | | | For details of cipher suites for each | + | | | security policy, see `Table | + | | | 3 <#elb_zq_jt_0001__en-us_top | + | | | ic_0096561542_table1247813103533>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Adding a TCP listener + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/listeners + + { + "listener": { + "protocol_port": 80, + "protocol": "TCP", + "loadbalancer_id": "0416b6f1-877f-4a51-987e-978b3f084253", + "name": "listener-test", + "admin_state_up": true + } + } + +- Example request 2: Adding an HTTPS listener + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/listeners + + { + "listener": { + "protocol_port": 25, + "protocol": "TERMINATED_HTTPS", + "default_tls_container_ref": "02dcd56799e045bf8b131533cc911dd6", + "loadbalancer_id": "0416b6f1-877f-4a51-987e-978b3f084253", + "name": "listener-test", + "admin_state_up": true + + } + } + +- Example request 3: Adding a listener with the SNI feature enabled + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/listeners + + { + "listener": { + "protocol_port": 27, + "protocol": "TERMINATED_HTTPS", + "loadbalancer_id": "6bb85e33-4953-457a-85a9-336d76125b7b", + "name": "listener-test", + "admin_state_up": true, + "default_tls_container_ref":"02dcd56799e045bf8b131533cc911dd6", + "sni_container_refs": ["e15d1b5000474adca383c3cd9ddc06d4", + "5882325fd6dd4b95a88d33238d293a0f"] + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "listener": { + "protocol_port": 80, + "protocol": "TCP", + "description": "", + "client_ca_tls_container_ref": null, + "default_tls_container_ref": null, + "admin_state_up": true, + "http2_enable": false, + "loadbalancers": [ + { + "id": "0416b6f1-877f-4a51-987e-978b3f084253" + } + ], + "tenant_id": "145483a5107745e9b3d80f956713e6a3", + "sni_container_refs": [], + "connection_limit": -1, + "default_pool_id": null, + "tags": [], + "id": "b7f32b52-6f17-4b16-9ec8-063d71b653ce", + "name": "listener-test", + "tls_ciphers_policy": null, + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + } + } + +- Example response 2 + + .. code:: screen + + { + "listener": { + "protocol_port": 25, + "protocol": "TERMINATED_HTTPS", + "description": "", + "default_tls_container_ref": "02dcd56799e045bf8b131533cc911dd6", + "sni_container_refs": [], + "loadbalancers": [ + { + "id": "0416b6f1-877f-4a51-987e-978b3f084253" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "created_at": "2019-01-21T12:38:31", + "client_ca_tls_container_ref": null, + "connection_limit": -1, + "updated_at": "2019-01-21T12:38:31", + "http2_enable": false, + "admin_state_up": true, + "default_pool_id": null, + "tls_ciphers_policy": "tls-1-0", + "id": "b56634cd-5ba8-460e-b5a2-6de5ba8eaf60", + "tags": [], + "name": "listener-test" + + } + } + +- Example response 3 + + .. code:: screen + + { + "listener": { + "protocol_port": 27, + "protocol": "TERMINATED_HTTPS", + "description": "", + "default_tls_container_ref": "02dcd56799e045bf8b131533cc911dd6", + "sni_container_refs": [ + "5882325fd6dd4b95a88d33238d293a0f", + "e15d1b5000474adca383c3cd9ddc06d4" + ], + "loadbalancers": [ + { + "id": "6bb85e33-4953-457a-85a9-336d76125b7b" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "project_id": "601240b9c5c94059b63d484c92cfe308", + "created_at": "2019-01-21T12:43:55", + "client_ca_tls_container_ref": null, + "connection_limit": -1, + "updated_at": "2019-01-21T12:43:55", + "http2_enable": false, + "admin_state_up": true, + "default_pool_id": null, + "": "tls-1-0", + "id": "b2cfda5b-52fe-4320-8845-34e8d4dac2c7", + "tags": [], + "name": "listener-test" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_zq_jt_0002.html b/elb/api-ref/elb_zq_jt_0002.html new file mode 100644 index 000000000..ea1e37731 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0002.html @@ -0,0 +1,677 @@ + + +

      Querying Listeners

      +

      Function

      This API is used to query the listeners and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      +

      You can query listeners using information such as listener ID, protocol used by the listener, port used by the listener, or backend server private IP address.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/listeners

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the listener from which pagination query starts, that is, the ID of the last listener on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of listeners on each page.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the listener ID.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      +

      name

      +

      No

      +

      String

      +

      Specifies the listener name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the listener.

      +

      The value contains a maximum of 255 characters.

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +

      connection_limit

      +

      No

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved, and the default value is true.

      +

      default_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +

      http2_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 is used.
      • false: HTTP/2 is not used.
      +

      default_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      The value contains a maximum of 128 characters.

      +

      client_ca_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      The value contains a maximum of 128 characters.

      +

      protocol

      +

      No

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      The value can be TCP, HTTP, UDP, or TERMINATED_HTTPS.

      +

      protocol_port

      +

      No

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      tls_ciphers_policy

      +

      No

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict. For details of cipher suites for each security policy, see Table 2.

      +

      tls_container_id

      +

      No

      +

      String

      +

      Queries the listener associated with the certificate.

      +

      sni_container_refs

      +

      No

      +

      String

      +

      Queries the listener associated with the SNI certificate.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 tls_ciphers_policy parameter description

      Security Policy

      +

      TLS Version

      +

      Cipher Suite

      +

      tls-1-0-inherit

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SHA:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA

      +

      tls-1-0

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA

      +

      tls-1-1

      +

      TLS 1.2 TLS 1.1

      +

      tls-1-2

      +

      TLS 1.2

      +

      tls-1-2-strict

      +

      TLS 1.2

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 3 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      listeners

      +

      Array

      +

      Lists the listeners. For details, see Table 4.

      +

      listeners_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively. This parameter exists only in the response body of pagination query. For details, see Table 7.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      The value can be TCP, HTTP, UDP, or TERMINATED_HTTPS.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      The port number ranges from 1 to 65535.

      +

      loadbalancers

      +

      Array

      +

      Specifies the ID of the associated load balancer.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      The value ranges from -1 to 2147483647.

      + NOTE:

      This parameter is reserved. The default value is -1, indicating that there is no restriction on the maximum number of connections.

      + +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 will be used.
      • false: HTTP/2 will not be used.
      + NOTE:

      This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      + +

      keepalive_timeout

      +

      Integer

      +

      Specifies the idle timeout duration in the unit of second.

      +

      This parameter applies only to TCP, HTTP, or HTTPS listeners.

      +

      The value can be one of the following:

      +
      • TCP listeners: The value ranges from 10 to 4000, and the default value is 300.
      +
      • HTTP or HTTPS listeners: The value ranges from 0 to 4000, and the default value is 60.
      +

      client_timeout

      +

      Integer

      +

      Specifies the request timeout duration in the unit of second.

      +

      The value ranges from 1 to 300. The default value is 60.

      +

      This parameter is valid only when protocol is set to HTTP or HTTPS. In other cases, the request body does not contain this parameter. Otherwise, an error is reported. When protocol is set to HTTP or HTTPS, if the request body does not contain this parameter or the value of this parameter is null, the default value is used.

      +

      member_timeout

      +

      Integer

      +

      Specifies the response timeout duration in the unit of second.

      +

      The value ranges from 1 to 300. The default value is 60.

      +

      This parameter is valid only when protocol is set to HTTP or HTTPS. In other cases, the request body does not contain this parameter. Otherwise, an error is reported. When protocol is set to HTTP or HTTPS, if the request body does not contain this parameter or the value of this parameter is null, the default value is used.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      + NOTE:

      If a request does not match the forwarding policy, the request is forwarded to the default backend server group for processing. If the value is null, the listener has no default backend server group.

      + +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      This parameter is mandatory when protocol is set to TERMINATED_HTTPS.

      +

      The value contains a maximum of 128 characters.

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      The value contains a maximum of 128 characters.

      +

      sni_container_refs

      +

      Array

      +

      Lists the IDs of SNI certificates (server certificates with a domain name) used by the listener.

      +

      tags

      +

      Array

      +

      Tags the listener.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +

      listeners_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively. This parameter exists only in the response body of pagination query.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0-inherit, tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0. For details of cipher suites for each security policy, see Table 6.

      +
      + + + + + + + + + + + + +
      Table 5 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 tls_ciphers_policy parameter description

      Security Policy

      +

      TLS Version

      +

      Cipher Suite

      +

      tls-1-0-inherit

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SHA:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA

      +

      tls-1-0

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA

      +

      tls-1-1

      +

      TLS 1.2 TLS 1.1

      +

      tls-1-2

      +

      TLS 1.2

      +

      tls-1-2-strict

      +

      TLS 1.2

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384

      +
      + + + + + + + + + + + + + + + + +
      Table 7 listeners_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page.

      +

      The value can be next or previous. The value next indicates the href containing the URL of the next page, and previous indicates the href containing the URL of the previous page.

      +
      + + +

      Example Request

      • Example request 1: Querying all listeners
        GET https://{Endpoint}/v2.0/lbaas/listeners?limit=2
        +
      + +
      • Request example 2: Querying UDP listeners
        GET https://{Endpoint}/v2.0/lbaas/listeners?protocol=UDP
        +
      +

      Example Response

      • Example response 1
        {
        +    "listeners": [
        +        {
        +            "client_ca_tls_container_ref": null,
        +            "protocol": "TCP",
        +            "description": "",
        +            "default_tls_container_ref": null,
        +            "admin_state_up": true,
        +            "http2_enable": false,
        +            "loadbalancers": [
        +                {
        +                    "id": "bc7ba445-035a-4464-a1a3-a62cf4a14116"
        +                }
        +            ],
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        + 
        +            "sni_container_refs": [],
        +            "connection_limit": -1,
        +            "protocol_port": 80,
        +            "default_pool_id": "ed75f16e-fcc6-403e-a3fb-4eae82005eab",
        +            "id": "75045172-70e9-480d-9443-b8b6459948f7",
        +            "tags": [],
        +            "name": "listener-cb2n",
        +            "tls_ciphers_policy": null,     
        +            "created_at": "2018-07-25T01:54:13", 
        +            "updated_at": "2018-07-25T01:54:14"
        +        },
        +        {
        +            "client_ca_tls_container_ref": null,
        +            "protocol": "TCP",
        +            "description": "",
        +            "default_tls_container_ref": null,
        +            "admin_state_up": true,
        +            "http2_enable": false,
        +            "loadbalancers": [
        +                {
        +                    "id": "165b6a38-5278-4569-b747-b2ee65ea84a4"
        +                }
        +            ],
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        + 
        +            "sni_container_refs": [],
        +            "connection_limit": -1,
        +            "protocol_port": 8080,
        +            "default_pool_id": null,
        +            "id": "dada0003-7b0e-4de8-a4e1-1e937be2ba14",
        +            "tags": [],
        +            "name": "lsnr_name_mod",
        +            "tls_ciphers_policy": null,
        +            "created_at": "2018-07-25T01:54:13", 
        +            "updated_at": "2018-07-25T01:54:14"
        +  
        +,
        + 
        +        }
        +    ],
        +    "listeners_links": [
        +        {
        +        "href": "https://{Endpoint}/v2.0/lbaas/listeners?limit=2&marker=042cc6a5-e385-4e39-83de-4dde1f801ccb",
        +        "rel": "next"
        +        },
        +        {
        +        "href": "https://{Endpoint}/v2.0/lbaas/listeners?limit=2&marker=025fcaa9-0159-4a0d-8583-d97fa77d9972&page_reverse=True",
        +        "rel": "previous"
        +        }
        +    ]
        +}
        +
      + +
      • Example response 2
        {
        +    "listeners": [
        +        {
        +            "protocol_port": 64809,
        +            "protocol": "UDP",
        +            "description": "",
        +            "default_tls_container_ref": null,
        +            "sni_container_refs": [],
        +            "loadbalancers": [
        +                {
        +                    "id": "c1127125-64a9-4394-a08a-ef3be8f7ef9c"
        +                }
        +            ],
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        +  
        +            "created_at": "2018-11-29T13:56:21",
        +            "client_ca_tls_container_ref": null,
        +            "connection_limit": -1,
        +            "updated_at": "2018-11-29T13:56:22",
        +            "http2_enable": false,
        +    
        +            "tls_ciphers_policy": null,
        +            "admin_state_up": true,
        +            "default_pool_id": "2f6895be-019b-4c82-9b53-c4a2ac009e20",
        +            "id": "5c63d176-444f-4c75-9cfe-bcb8a05a845c",
        +            "tags": [],
        +            "name": "listener-tvp8"
        +        }
        +    ]
        +}
        +
      +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_zq_jt_0002.rst b/elb/api-ref/elb_zq_jt_0002.rst new file mode 100644 index 000000000..e1d583d78 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0002.rst @@ -0,0 +1,594 @@ +Querying Listeners +================== + +Function +^^^^^^^^ + +This API is used to query the listeners and display them in a list. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +You can query listeners using information such as listener ID, protocol used by the listener, port used by the listener, or backend server private IP address. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/listeners + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | listener from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | listener on the previous | + | | | | page. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | listeners on each page. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the listener ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the listener | + | | | | is used. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the listener | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | String | Specifies the ID of the | + | | | | associated load balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | connection_limit | No | Integer | Specifies the maximum | + | | | | number of connections. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the listener. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_pool_id | No | String | Specifies the ID of the | + | | | | associated backend server | + | | | | group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http2_enable | No | Boolean | Specifies whether to use | + | | | | HTTP/2. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. | + | | | | | + | | | | - **true**: HTTP/2 is | + | | | | used. | + | | | | - **false**: HTTP/2 is not | + | | | | used. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_tls_container_ref | No | String | Specifies the ID of the | + | | | | server certificate used by | + | | | | the listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_ca_tls_container_ref | No | String | Specifies the ID of the CA | + | | | | certificate used by the | + | | | | listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | No | String | Specifies the protocol used | + | | | | by the listener. | + | | | | | + | | | | The value can be **TCP**, | + | | | | **HTTP**, **UDP**, or | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol_port | No | Integer | Specifies the port used by | + | | | | the listener. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_ciphers_policy | No | String | Specifies the security | + | | | | policy used by the | + | | | | listener. This parameter is | + | | | | valid only when the | + | | | | protocol used by the | + | | | | listener is set to | + | | | | **TERMINATED_HTTPS**. | + | | | | | + | | | | The value can be | + | | | | **tls-1-0**, **tls-1-1**, | + | | | | **tls-1-2**, or | + | | | | **tls-1-2-strict**. For | + | | | | details of cipher suites | + | | | | for each security policy, | + | | | | see `Table | + | | | | 2 <#elb_zq_ | + | | | | jt_0002__en-us_topic_009656 | + | | | | 1541_table210773231419>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_container_id | No | String | Queries the listener | + | | | | associated with the | + | | | | certificate. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sni_container_refs | No | String | Queries the listener | + | | | | associated with the SNI | + | | | | certificate. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 2** **tls_ciphers_policy** parameter description + + +-----------------+-------------------------+------------------------------------------------------------------------+ + | Security Policy | TLS Version | Cipher Suite | + +=================+=========================+========================================================================+ + | tls-1-0-inherit | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128 | + | | | -GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA25 | + | | | 6:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE- | + | | | RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA38 | + | | | 4:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA: | + | | | DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128- | + | | | SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA | + | | | :DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES | + | | | 256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SH | + | | | A:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-0 | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-A | + | | | ES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- | + | | | SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:E | + | | | CDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256- | + | | | SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128 | + | | | -SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-1 | | TLS 1.2 TLS 1.1 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2 | | TLS 1.2 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2-strict | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-A | + | | | ES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES25 | + | | | 6-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128- | + | | | SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Parameter description + + +-----------------+-------+------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +=================+=======+==========================================================================================+ + | listeners | Array | Lists the listeners. For details, see `Table | + | | | 4 <#elb_zq_jt_0002__en-us_topic_0096561541_table7513153305114>`__. | + +-----------------+-------+------------------------------------------------------------------------------------------+ + | listeners_links | Array | Provides links to the previous or next page during pagination query, respectively. This | + | | | parameter exists only in the response body of pagination query. For details, see `Table | + | | | 7 <#elb_zq_jt_0002__en-us_topic_0096561541_table13018211316>`__. | + +-----------------+-------+------------------------------------------------------------------------------------------+ + +.. table:: **Table 4** **listeners** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the listener is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + | | | | + | | | The value can be **TCP**, **HTTP**, | + | | | **UDP**, or **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | The port number ranges from 1 to | + | | | 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Specifies the ID of the associated | + | | | load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. | + | | | | + | | | The value ranges from **-1** to | + | | | **2147483647**. | + | | | | + | | | NOTE: | + | | | This parameter is reserved. The | + | | | default value is **-1**, indicating | + | | | that there is no restriction on the | + | | | maximum number of connections. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. | + | | | | + | | | The value can be **true** or | + | | | **false**. | + | | | | + | | | - **true**: HTTP/2 will be used. | + | | | - **false**: HTTP/2 will not be | + | | | used. | + | | | | + | | | NOTE: | + | | | This parameter is valid only when the | + | | | protocol used by the listener is set | + | | | to **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | keepalive_timeout | Integer | Specifies the idle timeout duration | + | | | in the unit of second. | + | | | | + | | | This parameter applies only to TCP, | + | | | HTTP, or HTTPS listeners. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - TCP listeners: The value ranges | + | | | from **10** to **4000**, and the | + | | | default value is **300**. | + | | | | + | | | - HTTP or HTTPS listeners: The value | + | | | ranges from **0** to **4000**, and | + | | | the default value is **60**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_timeout | Integer | Specifies the request timeout | + | | | duration in the unit of second. | + | | | | + | | | The value ranges from **1** to | + | | | **300**. The default value is **60**. | + | | | | + | | | This parameter is valid only when | + | | | **protocol** is set to **HTTP** or | + | | | **HTTPS**. In other cases, the | + | | | request body does not contain this | + | | | parameter. Otherwise, an error is | + | | | reported. When **protocol** is set to | + | | | **HTTP** or **HTTPS**, if the request | + | | | body does not contain this parameter | + | | | or the value of this parameter is | + | | | **null**, the default value is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | member_timeout | Integer | Specifies the response timeout | + | | | duration in the unit of second. | + | | | | + | | | The value ranges from **1** to | + | | | **300**. The default value is **60**. | + | | | | + | | | This parameter is valid only when | + | | | **protocol** is set to **HTTP** or | + | | | **HTTPS**. In other cases, the | + | | | request body does not contain this | + | | | parameter. Otherwise, an error is | + | | | reported. When **protocol** is set to | + | | | **HTTP** or **HTTPS**, if the request | + | | | body does not contain this parameter | + | | | or the value of this parameter is | + | | | **null**, the default value is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the associated | + | | | backend server group. | + | | | | + | | | NOTE: | + | | | If a request does not match the | + | | | forwarding policy, the request is | + | | | forwarded to the default backend | + | | | server group for processing. If the | + | | | value is **null**, the listener has | + | | | no default backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. | + | | | | + | | | This parameter is mandatory when | + | | | **protocol** is set to | + | | | **TERMINATED_HTTPS**. | + | | | | + | | | The value contains a maximum of 128 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. | + | | | | + | | | The value contains a maximum of 128 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array | Lists the IDs of SNI certificates | + | | | (server certificates with a domain | + | | | name) used by the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Tags the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. This parameter exists | + | | | only in the response body of | + | | | pagination query. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is valid | + | | | only when the protocol used by the | + | | | listener is set to | + | | | **TERMINATED_HTTPS**. | + | | | | + | | | The value can be **tls-1-0-inherit**, | + | | | **tls-1-0**, **tls-1-1**, | + | | | **tls-1-2**, or **tls-1-2-strict**, | + | | | and the default value is **tls-1-0**. | + | | | For details of cipher suites for each | + | | | security policy, see `Table | + | | | 6 <#elb_zq_jt_0002__en-us_topi | + | | | c_0096561541_table10264143363610>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +.. table:: **Table 6** **tls_ciphers_policy** parameter description + + +-----------------+-------------------------+------------------------------------------------------------------------+ + | Security Policy | TLS Version | Cipher Suite | + +=================+=========================+========================================================================+ + | tls-1-0-inherit | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128 | + | | | -GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA25 | + | | | 6:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE- | + | | | RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA38 | + | | | 4:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA: | + | | | DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128- | + | | | SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA | + | | | :DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES | + | | | 256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SH | + | | | A:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-0 | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-A | + | | | ES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- | + | | | SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:E | + | | | CDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256- | + | | | SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128 | + | | | -SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-1 | | TLS 1.2 TLS 1.1 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2 | | TLS 1.2 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2-strict | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-A | + | | | ES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES25 | + | | | 6-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128- | + | | | SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + +.. table:: **Table 7** **listeners_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. | + | | | | + | | | The value can be **next** or | + | | | **previous**. The value **next** | + | | | indicates the href containing the URL | + | | | of the next page, and **previous** | + | | | indicates the href containing the URL | + | | | of the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all listeners + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/listeners?limit=2 + +- Request example 2: Querying UDP listeners + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/listeners?protocol=UDP + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "listeners": [ + { + "client_ca_tls_container_ref": null, + "protocol": "TCP", + "description": "", + "default_tls_container_ref": null, + "admin_state_up": true, + "http2_enable": false, + "loadbalancers": [ + { + "id": "bc7ba445-035a-4464-a1a3-a62cf4a14116" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "sni_container_refs": [], + "connection_limit": -1, + "protocol_port": 80, + "default_pool_id": "ed75f16e-fcc6-403e-a3fb-4eae82005eab", + "id": "75045172-70e9-480d-9443-b8b6459948f7", + "tags": [], + "name": "listener-cb2n", + "tls_ciphers_policy": null, + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + }, + { + "client_ca_tls_container_ref": null, + "protocol": "TCP", + "description": "", + "default_tls_container_ref": null, + "admin_state_up": true, + "http2_enable": false, + "loadbalancers": [ + { + "id": "165b6a38-5278-4569-b747-b2ee65ea84a4" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "sni_container_refs": [], + "connection_limit": -1, + "protocol_port": 8080, + "default_pool_id": null, + "id": "dada0003-7b0e-4de8-a4e1-1e937be2ba14", + "tags": [], + "name": "lsnr_name_mod", + "tls_ciphers_policy": null, + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + + , + + } + ], + "listeners_links": [ + { + "href": "https://{Endpoint}/v2.0/lbaas/listeners?limit=2&marker=042cc6a5-e385-4e39-83de-4dde1f801ccb", + "rel": "next" + }, + { + "href": "https://{Endpoint}/v2.0/lbaas/listeners?limit=2&marker=025fcaa9-0159-4a0d-8583-d97fa77d9972&page_reverse=True", + "rel": "previous" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "listeners": [ + { + "protocol_port": 64809, + "protocol": "UDP", + "description": "", + "default_tls_container_ref": null, + "sni_container_refs": [], + "loadbalancers": [ + { + "id": "c1127125-64a9-4394-a08a-ef3be8f7ef9c" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "created_at": "2018-11-29T13:56:21", + "client_ca_tls_container_ref": null, + "connection_limit": -1, + "updated_at": "2018-11-29T13:56:22", + "http2_enable": false, + + "tls_ciphers_policy": null, + "admin_state_up": true, + "default_pool_id": "2f6895be-019b-4c82-9b53-c4a2ac009e20", + "id": "5c63d176-444f-4c75-9cfe-bcb8a05a845c", + "tags": [], + "name": "listener-tvp8" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_zq_jt_0003.html b/elb/api-ref/elb_zq_jt_0003.html new file mode 100644 index 000000000..37102f984 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0003.html @@ -0,0 +1,262 @@ + + +

      Querying Details of a Listener

      +

      Function

      This API is used to query details about a listener using its ID.

      + +

      URI

      GET /v2.0/lbaas/listeners/{listener_id}

      + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      listener

      +

      Object

      +

      Lists the listeners. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      The value can be TCP, HTTP, UDP, or TERMINATED_HTTPS.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      The port number ranges from 1 to 65535.

      +

      loadbalancers

      +

      Array

      +

      Specifies the ID of the associated load balancer. For details, see Table 6.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      The value ranges from -1 to 2147483647. The default value is -1, indicating that there is no restriction on the maximum number of connections.

      +

      This parameter is reserved.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: The load balancer is enabled.
      • false: The load balancer is disabled.
      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 is used.
      • false: HTTP/2 is not used.
      +

      This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +

      If a request does not match the forwarding policy, the request is forwarded to the default backend server group for processing. If the value is null, the listener has no default backend server group.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener. For details, see Certificate.

      +

      This parameter is mandatory when protocol is set to TERMINATED_HTTPS.

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener. For details, see Certificate.

      +

      sni_container_refs

      +

      Array

      +

      Lists the IDs of SNI certificates (server certificates with a domain name) used by the listener.

      +

      If the parameter value is an empty list, the SNI feature is disabled.

      +

      tags

      +

      Array

      +

      Tags the listener.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0-inherit, tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0. For details of cipher suites for each security policy, see Table 3.

      +
      + + + + + + + + + + + + +
      Table 4 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + +

      Example Request

      • Example request: Viewing details of a listener
        GET https://{Endpoint}/v2.0/lbaas/listeners/09e64049-2ab0-4763-a8c5-f4207875dc3e
        +
      + +

      Example Response

      • Example response
        {
        +    "listener": {
        +        "protocol_port": 8000,
        +        "protocol": "TCP",
        +        "description": "",
        +        "client_ca_tls_container_ref": null,
        +        "default_tls_container_ref": null,
        +        "admin_state_up": true,
        +        "http2_enable": false,
        +        "loadbalancers": [
        +            {
        +                "id": "3d77894d-2ffe-4411-ac0a-0d57689779b8"
        +            }
        +        ],
        +        "tenant_id": "1867112d054b427e808cc6096d8193a1",
        +        "sni_container_refs": [],
        +        "connection_limit": -1,
        +        "default_pool_id": "b7e53dbd-62ab-4505-a280-5c066078a5c9",
        +        "id": "09e64049-2ab0-4763-a8c5-f4207875dc3e",
        +        "tags": [],
        +        "name": "listener-2",
        +        "tls_ciphers_policy": null,
        +        "created_at": "2018-07-25T01:54:13", 
        +        "updated_at": "2018-07-25T01:54:14"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_zq_jt_0003.rst b/elb/api-ref/elb_zq_jt_0003.rst new file mode 100644 index 000000000..bf2b50aa8 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0003.rst @@ -0,0 +1,223 @@ +Querying Details of a Listener +============================== + +Function +^^^^^^^^ + +This API is used to query details about a listener using its ID. + +URI +^^^ + +GET /v2.0/lbaas/listeners/{listener_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== ========================== + Parameter Mandatory Type Description + =========== ========= ====== ========================== + listener_id Yes String Specifies the listener ID. + =========== ========= ====== ========================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | listener | Object | Lists the listeners. For details, see `Table | + | | | 3 <#elb_zq_jt_0003__en-us_topic_0096561540_table7513153305114>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **listeners** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + | | | | + | | | The value can be **TCP**, **HTTP**, | + | | | **UDP**, or **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | The port number ranges from 1 to | + | | | 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Specifies the ID of the associated | + | | | load balancer. For details, see | + | | | `Table | + | | | 6 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. | + | | | | + | | | The value ranges from **-1** to | + | | | **2147483647**. The default value is | + | | | **-1**, indicating that there is no | + | | | restriction on the maximum number of | + | | | connections. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: The load balancer is | + | | | enabled. | + | | | - **false**: The load balancer is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. | + | | | | + | | | The value can be **true** or | + | | | **false**. | + | | | | + | | | - **true**: HTTP/2 is used. | + | | | - **false**: HTTP/2 is not used. | + | | | | + | | | This parameter is valid only when the | + | | | protocol used by the listener is set | + | | | to **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the associated | + | | | backend server group. | + | | | | + | | | If a request does not match the | + | | | forwarding policy, the request is | + | | | forwarded to the default backend | + | | | server group for processing. If the | + | | | value is **null**, the listener has | + | | | no default backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. For | + | | | details, see | + | | | `Certificate `__. | + | | | | + | | | This parameter is mandatory when | + | | | **protocol** is set to | + | | | **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. For | + | | | details, see | + | | | `Certificate `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array | Lists the IDs of SNI certificates | + | | | (server certificates with a domain | + | | | name) used by the listener. | + | | | | + | | | If the parameter value is an empty | + | | | list, the SNI feature is disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Tags the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is valid | + | | | only when the protocol used by the | + | | | listener is set to | + | | | **TERMINATED_HTTPS**. | + | | | | + | | | The value can be **tls-1-0-inherit**, | + | | | **tls-1-0**, **tls-1-1**, | + | | | **tls-1-2**, or **tls-1-2-strict**, | + | | | and the default value is **tls-1-0**. | + | | | For details of cipher suites for each | + | | | security policy, see `Table | + | | | 3 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Viewing details of a listener + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/listeners/09e64049-2ab0-4763-a8c5-f4207875dc3e + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "listener": { + "protocol_port": 8000, + "protocol": "TCP", + "description": "", + "client_ca_tls_container_ref": null, + "default_tls_container_ref": null, + "admin_state_up": true, + "http2_enable": false, + "loadbalancers": [ + { + "id": "3d77894d-2ffe-4411-ac0a-0d57689779b8" + } + ], + "tenant_id": "1867112d054b427e808cc6096d8193a1", + "sni_container_refs": [], + "connection_limit": -1, + "default_pool_id": "b7e53dbd-62ab-4505-a280-5c066078a5c9", + "id": "09e64049-2ab0-4763-a8c5-f4207875dc3e", + "tags": [], + "name": "listener-2", + "tls_ciphers_policy": null, + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_zq_jt_0004.html b/elb/api-ref/elb_zq_jt_0004.html new file mode 100644 index 000000000..03200fb0f --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0004.html @@ -0,0 +1,470 @@ + + +

      Updating a Listener

      +

      Function

      This API is used to update a listener, such as listener name, description, associated backend server groups, and server certificates.

      + +

      Constraints

      • If the provisioning status of the associated load balancer is not ACTIVE, the listener cannot be updated.
      • Only the administrator can specify connection_limit.
      • The default_pool_id parameter has the following constraints:
        • Its value cannot be the ID of any backend server group of other listeners.
        • Its value cannot be the ID of any backend server group associated with the forwarding policies set for other listeners.
        +
      • The relationships between the protocol used by the listener and the protocol of the backend server group are as follows:
        • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
        • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
        • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
        +
      + +

      URI

      PUT /v2.0/lbaas/listeners/{listener_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener

      +

      Yes

      +

      Object

      +

      Specifies the listener. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 listener parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the listener name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the listener.

      +

      The value contains a maximum of 255 characters.

      +

      connection_limit

      +

      No

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      The value ranges from -1 to 2147483647.

      +

      This parameter is reserved. Only the administrator can specify the maximum number of connections.

      +

      http2_enable

      +

      No

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 is used.
      • false: HTTP/2 is not used.
      +

      This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      default_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +

      If a request does not match the forwarding policy, the request is forwarded to the default backend server group for processing. If the value is null, the listener has no default backend server group.

      +This parameter has the following constraints:
      • Its value cannot be the ID of any backend server group of other listeners.
      • Its value cannot be the ID of any backend server group associated with the forwarding policies set for other listeners.
      + +The relationships between the protocol used by the listener and the protocol of the backend server group are as follows:
      • When the protocol used by the listener is TCP, the protocol of the backend server group must be TCP.
      • When the protocol used by the listener is UDP, the protocol of the backend server group must be UDP.
      • When the protocol used by the listener is HTTP or TERMINATED_HTTPS, the protocol of the backend server group must be HTTP.
      + +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved, and the default value is true.

      +

      default_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the server certificate used by the listener.

      +

      The value contains a maximum of 128 characters.

      + NOTE:

      This parameter is valid only when protocol is set to TERMINATED_HTTPS.

      + +

      client_ca_tls_container_ref

      +

      No

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener.

      +

      The value contains a maximum of 128 characters.

      + NOTE:

      This parameter is valid only when protocol is set to TERMINATED_HTTPS.

      + +

      sni_container_refs

      +

      No

      +

      Array

      +

      Lists the IDs of SNI certificates (server certificates with a domain name) used by the listener.

      +

      If the parameter value is an empty list, the SNI feature is disabled.

      + NOTE:

      This parameter is valid only when protocol is set to TERMINATED_HTTPS.

      + +

      tls_ciphers_policy

      +

      No

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0-inherit, tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0. For details of cipher suites for each security policy, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 tls_ciphers_policy parameter description

      Security Policy

      +

      TLS Version

      +

      Cipher Suite

      +

      tls-1-0-inherit

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SHA:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA

      +

      tls-1-0

      +

      TLS 1.2 TLS 1.1 TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA

      +

      tls-1-1

      +

      TLS 1.2 TLS 1.1

      +

      tls-1-2

      +

      TLS 1.2

      +

      tls-1-2-strict

      +

      TLS 1.2

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 5 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      listener

      +

      Object

      +

      Specifies the listener. For details, see Table 6.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the listener ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the listener is used.

      +

      name

      +

      String

      +

      Specifies the listener name.

      +

      description

      +

      String

      +

      Provides supplementary information about the listener.

      +

      protocol

      +

      String

      +

      Specifies the protocol used by the listener.

      +

      The value can be TCP, HTTP, UDP, or TERMINATED_HTTPS.

      +

      protocol_port

      +

      Integer

      +

      Specifies the port used by the listener.

      +

      The port number ranges from 1 to 65535.

      +

      loadbalancers

      +

      Array

      +

      Specifies the ID of the associated load balancer. For details, see Table 6.

      +

      connection_limit

      +

      Integer

      +

      Specifies the maximum number of connections.

      +

      The value ranges from -1 to 2147483647. The default value is -1, indicating that there is no restriction on the maximum number of connections.

      +

      This parameter is reserved.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the listener.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: The load balancer is enabled.
      • false: The load balancer is disabled.
      +

      http2_enable

      +

      Boolean

      +

      Specifies whether to use HTTP/2.

      +

      The value can be true or false.

      +
      • true: HTTP/2 is used.
      • false: HTTP/2 is not used.
      +

      This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      default_pool_id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +

      If a request does not match the forwarding policy, the request is forwarded to the default backend server group for processing. If the value is null, the listener has no default backend server group.

      +

      default_tls_container_ref

      +

      String

      +

      Specifies the ID of the server certificate used by the listener. For details, see Certificate.

      +

      This parameter is mandatory when protocol is set to TERMINATED_HTTPS.

      +

      client_ca_tls_container_ref

      +

      String

      +

      Specifies the ID of the CA certificate used by the listener. For details, see Certificate.

      +

      sni_container_refs

      +

      Array

      +

      Lists the IDs of SNI certificates (server certificates with a domain name) used by the listener.

      +

      If the parameter value is an empty list, the SNI feature is disabled.

      +

      tags

      +

      Array

      +

      Tags the listener.

      +

      created_at

      +

      String

      +

      Specifies the time when the listener was created. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      updated_at

      +

      String

      +

      Specifies the time when the listener was updated. The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      tls_ciphers_policy

      +

      String

      +

      Specifies the security policy used by the listener. This parameter is valid only when the protocol used by the listener is set to TERMINATED_HTTPS.

      +

      The value can be tls-1-0-inherit, tls-1-0, tls-1-1, tls-1-2, or tls-1-2-strict, and the default value is tls-1-0. For details of cipher suites for each security policy, see Table 3.

      +
      + + + + + + + + + + + + +
      Table 7 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + +

      Example Request

      • Example request: Updating a listener
        PUT https://{Endpoint}/v2.0/lbaas/listeners/f622c150-72f5-4263-a47a-e5003c652aa3
        +
        +{  
        +    "listener": {  
        +        "description": "my listener",  
        +        "name": "listener-jy-test2", 
        +        "default_pool_id": "c61310de-9a06-4f0c-850c-6f4797b9984c", 
        +        "default_tls_container_ref": "23b58a961a4d4c95be585e98046e657a", 
        +        "client_ca_tls_container_ref": "417a0976969f497db8cbb083bff343ba"
        +    }  
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "listener": {
        +        "client_ca_tls_container_ref": "417a0976969f497db8cbb083bff343ba",
        +        "protocol": "TERMINATED_HTTPS",
        +        "description": "my listener",
        +        "default_tls_container_ref": "23b58a961a4d4c95be585e98046e657a",
        +        "admin_state_up": true,
        +        "http2_enable": false,
        +        "loadbalancers": [
        +            {
        +                "id": "165b6a38-5278-4569-b747-b2ee65ea84a4"
        +            }
        +        ],
        +        "tenant_id": "601240b9c5c94059b63d484c92cfe308",
        + 
        +        "sni_container_refs": [],
        +        "connection_limit": -1,
        +        "protocol_port": 443,
        +        "tags": [],
        +        "default_pool_id": "c61310de-9a06-4f0c-850c-6f4797b9984c",
        +        "id": "f622c150-72f5-4263-a47a-e5003c652aa3",
        +        "name": "listener-jy-test2",
        +        "tls_ciphers_policy": "tls-1-0", 
        +        "created_at": "2018-07-25T01:54:13", 
        +        "updated_at": "2018-07-25T01:54:14"
        +  
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_zq_jt_0004.rst b/elb/api-ref/elb_zq_jt_0004.rst new file mode 100644 index 000000000..2b8f52051 --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0004.rst @@ -0,0 +1,457 @@ +Updating a Listener +=================== + +Function +^^^^^^^^ + +This API is used to update a listener, such as listener name, description, associated backend server groups, and server certificates. + +Constraints +^^^^^^^^^^^ + +- If the provisioning status of the associated load balancer is not **ACTIVE**, the listener cannot be updated. +- Only the administrator can specify **connection_limit**. +- The **default_pool_id** parameter has the following constraints: + + - Its value cannot be the ID of any backend server group of other listeners. + - Its value cannot be the ID of any backend server group associated with the forwarding policies set for other listeners. + +- The relationships between the protocol used by the listener and the protocol of the backend server group are as follows: + + - When the protocol used by the listener is **TCP**, the protocol of the backend server group must be **TCP**. + - When the protocol used by the listener is **UDP**, the protocol of the backend server group must be **UDP**. + - When the protocol used by the listener is **HTTP** or **TERMINATED_HTTPS**, the protocol of the backend server group must be **HTTP**. + +URI +^^^ + +PUT /v2.0/lbaas/listeners/{listener_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== ========================== + Parameter Mandatory Type Description + =========== ========= ====== ========================== + listener_id Yes String Specifies the listener ID. + =========== ========= ====== ========================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | listener | Yes | Object | Specifies the listener. For details, see `Table | + | | | | 3 <#elb_zq_jt_0004__en-us_topic_0096561544_table731744514565>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **listener** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the listener | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | connection_limit | No | Integer | Specifies the maximum | + | | | | number of connections. | + | | | | | + | | | | The value ranges from | + | | | | **-1** to **2147483647**. | + | | | | | + | | | | This parameter is reserved. | + | | | | Only the administrator can | + | | | | specify the maximum number | + | | | | of connections. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | http2_enable | No | Boolean | Specifies whether to use | + | | | | HTTP/2. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. | + | | | | | + | | | | - **true**: HTTP/2 is | + | | | | used. | + | | | | - **false**: HTTP/2 is not | + | | | | used. | + | | | | | + | | | | This parameter is valid | + | | | | only when the protocol used | + | | | | by the listener is set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_pool_id | No | String | Specifies the ID of the | + | | | | associated backend server | + | | | | group. | + | | | | | + | | | | If a request does not match | + | | | | the forwarding policy, the | + | | | | request is forwarded to the | + | | | | default backend server | + | | | | group for processing. If | + | | | | the value is **null**, the | + | | | | listener has no default | + | | | | backend server group. | + | | | | | + | | | | This parameter has the | + | | | | following constraints: | + | | | | | + | | | | - Its value cannot be the | + | | | | ID of any backend server | + | | | | group of other | + | | | | listeners. | + | | | | - Its value cannot be the | + | | | | ID of any backend server | + | | | | group associated with | + | | | | the forwarding policies | + | | | | set for other listeners. | + | | | | | + | | | | The relationships between | + | | | | the protocol used by the | + | | | | listener and the protocol | + | | | | of the backend server group | + | | | | are as follows: | + | | | | | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **TCP**, the protocol of | + | | | | the backend server group | + | | | | must be **TCP**. | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **UDP**, the protocol of | + | | | | the backend server group | + | | | | must be **UDP**. | + | | | | - When the protocol used | + | | | | by the listener is | + | | | | **HTTP** or | + | | | | **TERMINATED_HTTPS**, | + | | | | the protocol of the | + | | | | backend server group | + | | | | must be **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the listener. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | default_tls_container_ref | No | String | Specifies the ID of the | + | | | | server certificate used by | + | | | | the listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **protocol** is | + | | | | set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | client_ca_tls_container_ref | No | String | Specifies the ID of the CA | + | | | | certificate used by the | + | | | | listener. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **protocol** is | + | | | | set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | sni_container_refs | No | Array | Lists the IDs of SNI | + | | | | certificates (server | + | | | | certificates with a domain | + | | | | name) used by the listener. | + | | | | | + | | | | If the parameter value is | + | | | | an empty list, the SNI | + | | | | feature is disabled. | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **protocol** is | + | | | | set to | + | | | | **TERMINATED_HTTPS**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tls_ciphers_policy | No | String | Specifies the security | + | | | | policy used by the | + | | | | listener. This parameter is | + | | | | valid only when the | + | | | | protocol used by the | + | | | | listener is set to | + | | | | **TERMINATED_HTTPS**. | + | | | | | + | | | | The value can be | + | | | | **tls-1-0-inherit**, | + | | | | **tls-1-0**, **tls-1-1**, | + | | | | **tls-1-2**, or | + | | | | **tls-1-2-strict**, and the | + | | | | default value is | + | | | | **tls-1-0**. For details of | + | | | | cipher suites for each | + | | | | security policy, see `Table | + | | | | 4 <#elb_zq_jt | + | | | | _0004__en-us_topic_00965615 | + | | | | 44_table15427162993713>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 4** **tls_ciphers_policy** parameter description + + +-----------------+-------------------------+------------------------------------------------------------------------+ + | Security Policy | TLS Version | Cipher Suite | + +=================+=========================+========================================================================+ + | tls-1-0-inherit | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128 | + | | | -GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA25 | + | | | 6:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE- | + | | | RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA38 | + | | | 4:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA: | + | | | DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128- | + | | | SHA:AES256-SHA:DHE-DSS-AES128-SHA:CAMELLIA128-SHA:EDH-RSA-DES-CBC3-SHA | + | | | :DES-CBC3-SHA:ECDHE-RSA-RC4-SHA:RC4-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES | + | | | 256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:CAMELLIA256-SH | + | | | A:EDH-DSS-DES-CBC3-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-0 | TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-A | + | | | ES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM- | + | | | SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:E | + | | | CDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256- | + | | | SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128 | + | | | -SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-1 | | TLS 1.2 TLS 1.1 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2 | | TLS 1.2 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + | tls-1-2-strict | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-A | + | | | ES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES25 | + | | | 6-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128- | + | | | SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 | + +-----------------+-------------------------+------------------------------------------------------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 5** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | listener | Object | Specifies the listener. For details, see `Table | + | | | 6 <#elb_zq_jt_0004__en-us_topic_0096561544_table99341410115717>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 6** **listeners** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the listener ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the listener is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the listener name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol used by the | + | | | listener. | + | | | | + | | | The value can be **TCP**, **HTTP**, | + | | | **UDP**, or **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol_port | Integer | Specifies the port used by the | + | | | listener. | + | | | | + | | | The port number ranges from 1 to | + | | | 65535. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | Array | Specifies the ID of the associated | + | | | load balancer. For details, see | + | | | `Table | + | | | 6 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | connection_limit | Integer | Specifies the maximum number of | + | | | connections. | + | | | | + | | | The value ranges from **-1** to | + | | | **2147483647**. The default value is | + | | | **-1**, indicating that there is no | + | | | restriction on the maximum number of | + | | | connections. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the listener. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: The load balancer is | + | | | enabled. | + | | | - **false**: The load balancer is | + | | | disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | http2_enable | Boolean | Specifies whether to use HTTP/2. | + | | | | + | | | The value can be **true** or | + | | | **false**. | + | | | | + | | | - **true**: HTTP/2 is used. | + | | | - **false**: HTTP/2 is not used. | + | | | | + | | | This parameter is valid only when the | + | | | protocol used by the listener is set | + | | | to **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_pool_id | String | Specifies the ID of the associated | + | | | backend server group. | + | | | | + | | | If a request does not match the | + | | | forwarding policy, the request is | + | | | forwarded to the default backend | + | | | server group for processing. If the | + | | | value is **null**, the listener has | + | | | no default backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | default_tls_container_ref | String | Specifies the ID of the server | + | | | certificate used by the listener. For | + | | | details, see | + | | | `Certificate `__. | + | | | | + | | | This parameter is mandatory when | + | | | **protocol** is set to | + | | | **TERMINATED_HTTPS**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | client_ca_tls_container_ref | String | Specifies the ID of the CA | + | | | certificate used by the listener. For | + | | | details, see | + | | | `Certificate `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | sni_container_refs | Array | Lists the IDs of SNI certificates | + | | | (server certificates with a domain | + | | | name) used by the listener. | + | | | | + | | | If the parameter value is an empty | + | | | list, the SNI feature is disabled. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Tags the listener. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the listener | + | | | was created. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the listener | + | | | was updated. The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tls_ciphers_policy | String | Specifies the security policy used by | + | | | the listener. This parameter is valid | + | | | only when the protocol used by the | + | | | listener is set to | + | | | **TERMINATED_HTTPS**. | + | | | | + | | | The value can be **tls-1-0-inherit**, | + | | | **tls-1-0**, **tls-1-1**, | + | | | **tls-1-2**, or **tls-1-2-strict**, | + | | | and the default value is **tls-1-0**. | + | | | For details of cipher suites for each | + | | | security policy, see `Table | + | | | 3 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 7** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating a listener + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/listeners/f622c150-72f5-4263-a47a-e5003c652aa3 + + { + "listener": { + "description": "my listener", + "name": "listener-jy-test2", + "default_pool_id": "c61310de-9a06-4f0c-850c-6f4797b9984c", + "default_tls_container_ref": "23b58a961a4d4c95be585e98046e657a", + "client_ca_tls_container_ref": "417a0976969f497db8cbb083bff343ba" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "listener": { + "client_ca_tls_container_ref": "417a0976969f497db8cbb083bff343ba", + "protocol": "TERMINATED_HTTPS", + "description": "my listener", + "default_tls_container_ref": "23b58a961a4d4c95be585e98046e657a", + "admin_state_up": true, + "http2_enable": false, + "loadbalancers": [ + { + "id": "165b6a38-5278-4569-b747-b2ee65ea84a4" + } + ], + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + + "sni_container_refs": [], + "connection_limit": -1, + "protocol_port": 443, + "tags": [], + "default_pool_id": "c61310de-9a06-4f0c-850c-6f4797b9984c", + "id": "f622c150-72f5-4263-a47a-e5003c652aa3", + "name": "listener-jy-test2", + "tls_ciphers_policy": "tls-1-0", + "created_at": "2018-07-25T01:54:13", + "updated_at": "2018-07-25T01:54:14" + + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_zq_jt_0005.html b/elb/api-ref/elb_zq_jt_0005.html new file mode 100644 index 000000000..5eb898eef --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0005.html @@ -0,0 +1,52 @@ + + +

      Deleting a Listener

      +

      Function

      This API is used to delete a listener by ID.

      + +

      Constraints

      All backend server groups associated with the listener must be deleted before the listener is deleted.

      +

      + +

      URI

      DELETE /v2.0/lbaas/listeners/{listener_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the listener ID.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Deleting a listener
        DELETE https://{Endpoint}/v2.0/lbaas/listeners/35cb8516-1173-4035-8dae-0dae3453f37f
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Listener + + + diff --git a/elb/api-ref/elb_zq_jt_0005.rst b/elb/api-ref/elb_zq_jt_0005.rst new file mode 100644 index 000000000..e870fe0bc --- /dev/null +++ b/elb/api-ref/elb_zq_jt_0005.rst @@ -0,0 +1,58 @@ +Deleting a Listener +=================== + +Function +^^^^^^^^ + +This API is used to delete a listener by ID. + +Constraints +^^^^^^^^^^^ + +All backend server groups associated with the listener must be deleted before the listener is deleted. + +URI +^^^ + +DELETE /v2.0/lbaas/listeners/{listener_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== ========================== + Parameter Mandatory Type Description + =========== ========= ====== ========================== + listener_id Yes String Specifies the listener ID. + =========== ========= ====== ========================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a listener + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/listeners/35cb8516-1173-4035-8dae-0dae3453f37f + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Listener `__ diff --git a/elb/api-ref/elb_zq_zf_0000.html b/elb/api-ref/elb_zq_zf_0000.html new file mode 100644 index 000000000..96b3897b3 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0000.html @@ -0,0 +1,23 @@ + + +

      Forwarding Policy

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_zf_0000.rst b/elb/api-ref/elb_zq_zf_0000.rst new file mode 100644 index 000000000..56122cea1 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0000.rst @@ -0,0 +1,10 @@ +Forwarding Policy +================= + +- `Adding a Forwarding Policy `__ +- `Querying Forwarding Policies `__ +- `Querying Details of a Forwarding Policy `__ +- `Updating a Forwarding Policy `__ +- `Deleting a Forwarding Policy `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_zf_0001.html b/elb/api-ref/elb_zq_zf_0001.html new file mode 100644 index 000000000..92b26d4df --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0001.html @@ -0,0 +1,485 @@ + + +

      Adding a Forwarding Policy

      +

      Function

      This API is used to add a forwarding policy. The listener and forwarding policy determine how traffic is forwarded to backend servers.

      +
      • By matching the URL or domain name specified in the forwarding policy when action is set to REDIRECT_TO_POOL, the load balancer distributes the traffic to backend servers in a specific backend server group.
      • When action is set to REDIRECT_TO_LISTENER, the HTTP listener is redirected to an HTTPS listener, and requests are routed by the HTTPS listener.
      + +

      Constraints

      Currently, only redirects from an HTTP listener to an HTTPS listener are supported. When action is set to REDIRECT_TO_LISTENER, the listener specified by listener_id can only be an HTTP listener, and the listener specified by redirect_listener_id can only be an HTTPS listener.

      +

      The load balancer of the HTTPS listener to which traffic is redirected must be the same as that of the HTTP listener.

      + +

      URI

      POST /v2.0/lbaas/l7policies

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy

      +

      Yes

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 l7policy parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      +

      The value must be the same as the value of tenant_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the forwarding policy name.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved, and the default value is true.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • When action is set to REDIRECT_TO_POOL, forwarding policies can be added to a listener with protocol set to HTTP or TERMINATED_HTTPS.
      • When action is set to REDIRECT_TO_LISTENER, forwarding policies can be added to a listener with protocol set to HTTP.
      +

      action

      +

      Yes

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded. The default value is null.

      +

      This parameter is mandatory when action is set to REDIRECT_TO_POOL.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      The backend server group must meet the following requirements:

      +
      • Cannot be the default backend server group of the listener.
      • Cannot be the backend server group used by forwarding policies of other listeners.
      +

      redirect_listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected. The default value is null.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_POOL.

      +

      This parameter is mandatory when action is set to REDIRECT_TO_LISTENER, and the listener must meet the following requirements:

      +
      • Can only be an HTTPS listener.
      • Can only be a listener of the same load balancer.
      +

      redirect_url

      +

      No

      +

      String

      +

      Specifies the URL to which traffic is redirected. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      position

      +

      No

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      rules

      +

      No

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 3.

      +

      The list contains a maximum of two rules, and the type parameter of each rule must be unique.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 rules parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved, and the default value is true.

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value range varies depending on the protocol of the backend server group:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      The match type of forwarding rules in a forwarding policy must be unique.

      +

      compare_type

      +

      Yes

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      value

      +

      Yes

      +

      String

      +

      +

      Specifies the value of the match content. The value cannot contain spaces.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|\/()[]{}
      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      l7policy

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 l7policy parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +

      action

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded.

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which traffic is redirected.

      +

      This parameter is reserved.

      +

      rules

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 6.

      +

      position

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding policy.

      +
      + + + + + + + + + + + + +
      Table 6 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Lists the IDs of the forwarding rules in the forwarding policy.

      +
      + + +

      Example Request

      • Example request 1: Adding a forwarding policy
        POST https://{Endpoint}/v2.0/lbaas/l7policies 
        +
        +{
        +    "l7policy": {
        +        "name": "niubiao_yaqing_api-2", 
        +        "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", 
        +        "action": "REDIRECT_TO_POOL", 
        +        "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", 
        +        "rules": [
        +            {
        +                "type": "PATH", 
        +                "compare_type": "EQUAL_TO", 
        +                "value": "/test"
        +            }, 
        +            {
        +                "type": "HOST_NAME", 
        +                "compare_type": "EQUAL_TO", 
        +                "value": "www.test.com"
        +            }
        +        ]
        +    }
        +}
        +
      • Example request 2: Creating a redirect
        POST https://{Endpoint}/v2.0/lbaas/l7policies
        +
        +{
        +    "l7policy": {
        +        "action": "REDIRECT_TO_LISTENER", 
        +        "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", 
        +        "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", 
        +        "name": "redirect-test"
        +    }
        +}
        +
      + +

      Example Response

      • Example response 1
        {
        +    "l7policy": {
        +        "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", 
        +        "description": "", 
        +        "admin_state_up": true, 
        +        "rules": [
        +            {
        +                "id": "742600d9-2a14-4808-af69-336883dbb590"
        +            }, 
        +            {
        +                "id": "3251ed77-0d52-412b-9310-733636bb3fbf"
        +            }
        +        ], 
        +        "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +        "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", 
        +        "redirect_url": null, 
        +        "redirect_listener_id": null, 
        +        "action": "REDIRECT_TO_POOL", 
        +        "position": 100, 
        +        "provisioning_status": "ACTIVE", 
        + 
        +        "id": "65d6e115-f179-4bcd-9bbb-1484e5f8ee81", 
        +        "name": "niubiao_yaqing-_api-2"
        +    }
        +}
        +
      • Example response 2
        {
        +    "l7policy": {
        +        "redirect_pool_id": null, 
        +        "description": "", 
        +        "admin_state_up": true, 
        +        "rules": [ ], 
        +        "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +        "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", 
        +        "redirect_url": null, 
        +        "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", 
        +        "action": "REDIRECT_TO_LISTENER", 
        +        "position": 100, 
        +        "provisioning_status": "ACTIVE", 
        +        "id": "bc4e4338-480f-4a98-8245-5bb1964f0e1d", 
        +        "name": "redirect-test"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/elb_zq_zf_0001.rst b/elb/api-ref/elb_zq_zf_0001.rst new file mode 100644 index 000000000..4a9df22bd --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0001.rst @@ -0,0 +1,498 @@ +Adding a Forwarding Policy +========================== + +Function +^^^^^^^^ + +This API is used to add a forwarding policy. The listener and forwarding policy determine how traffic is forwarded to backend servers. + +- By matching the URL or domain name specified in the forwarding policy when **action** is set to **REDIRECT_TO_POOL**, the load balancer distributes the traffic to backend servers in a specific backend server group. +- When **action** is set to **REDIRECT_TO_LISTENER**, the HTTP listener is redirected to an HTTPS listener, and requests are routed by the HTTPS listener. + +Constraints +^^^^^^^^^^^ + +Currently, only redirects from an HTTP listener to an HTTPS listener are supported. When **action** is set to **REDIRECT_TO_LISTENER**, the listener specified by **listener_id** can only be an HTTP listener, and the listener specified by **redirect_listener_id** can only be an HTTPS listener. + +The load balancer of the HTTPS listener to which traffic is redirected must be the same as that of the HTTP listener. + +URI +^^^ + +POST /v2.0/lbaas/l7policies + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | l7policy | Yes | Object | Specifies the forwarding policy. For details, see `Table | + | | | | 2 <#elb_zq_zf_0001__en-us_topic_0136295317_table173601118133515>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 2** **l7policy** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | forwarding policy is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **tenant_id** in the token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the forwarding | + | | | | policy name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding policy. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | forwarding policy. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | Yes | String | Specifies the ID of the | + | | | | listener to which the | + | | | | forwarding policy is added. | + | | | | | + | | | | - When **action** is set | + | | | | to **REDIRECT_TO_POOL**, | + | | | | forwarding policies can | + | | | | be added to a listener | + | | | | with **protocol** set to | + | | | | **HTTP** or | + | | | | **TERMINATED_HTTPS**. | + | | | | - When **action** is set | + | | | | to | + | | | | | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | forwarding policies can | + | | | | be added to a listener | + | | | | with **protocol** set to | + | | | | **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | Yes | String | Specifies whether requests | + | | | | are forwarded to another | + | | | | backend server group or | + | | | | redirected to an HTTPS | + | | | | listener. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **REDIRECT_TO_POOL**: | + | | | | Requests are forwarded | + | | | | to the backend server | + | | | | group specified by | + | | | | **redirect_pool_id**. | + | | | | - | + | | | | **REDIRECT_TO_LISTENER**: | + | | | | Requests are redirected | + | | | | from the HTTP listener | + | | | | specified by | + | | | | **listener_id** to the | + | | | | HTTPS listener specified | + | | | | by | + | | | | | + | | | | **redirect_listener_id**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_pool_id | No | String | Specifies the ID of the | + | | | | backend server group to | + | | | | which traffic is forwarded. | + | | | | The default value is | + | | | | **null**. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **action** is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | The backend server group | + | | | | must meet the following | + | | | | requirements: | + | | | | | + | | | | - Cannot be the default | + | | | | backend server group of | + | | | | the listener. | + | | | | - Cannot be the backend | + | | | | server group used by | + | | | | forwarding policies of | + | | | | other listeners. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_listener_id | No | String | Specifies the ID of the | + | | | | listener to which the | + | | | | traffic is redirected. The | + | | | | default value is **null**. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **action** is set to | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | and the listener must meet | + | | | | the following requirements: | + | | | | | + | | | | - Can only be an HTTPS | + | | | | listener. | + | | | | - Can only be a listener | + | | | | of the same load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_url | No | String | Specifies the URL to which | + | | | | traffic is redirected. The | + | | | | default value is **null**. | + | | | | | + | | | | This parameter is reserved. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | position | No | Integer | Specifies the forwarding | + | | | | priority. The value ranges | + | | | | from **1** to **100**. The | + | | | | default value is **100**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | rules | No | Array | Lists the forwarding rules | + | | | | of the forwarding policy. | + | | | | For details, see `Table | + | | | | 3 <#elb_zq_zf | + | | | | _0001__en-us_topic_01362953 | + | | | | 17_table16998194317143>`__. | + | | | | | + | | | | The list contains a maximum | + | | | | of two rules, and the | + | | | | **type** parameter of each | + | | | | rule must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **rules** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | **Parameter** | **Mandatory** | **Type** | **Description** | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the match type of | + | | | | a forwarding rule. | + | | | | | + | | | | The value range varies | + | | | | depending on the protocol | + | | | | of the backend server | + | | | | group: | + | | | | | + | | | | - **HOST_NAME**: matches | + | | | | the domain name in the | + | | | | request. | + | | | | - **PATH**: matches the | + | | | | path in the request. | + | | | | | + | | | | The match type of | + | | | | forwarding rules in a | + | | | | forwarding policy must be | + | | | | unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | Yes | String | Specifies the match mode. | + | | | | The options are as follows: | + | | | | | + | | | | When **type** is set to | + | | | | **HOST_NAME**, the value of | + | | | | this parameter can only be | + | | | | the following: | + | | | | | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + | | | | | + | | | | When **type** is set to | + | | | | **PATH**, the value of this | + | | | | parameter can be one of the | + | | | | following: | + | | | | | + | | | | - **REGEX**: indicates | + | | | | regular expression | + | | | | match. | + | | | | - **STARTS_WITH**: | + | | | | indicates prefix match. | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. The default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match content. The default | + | | | | value is **null**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match content. The value | + | | | | cannot contain spaces. | + | | | | | + | | | | - When **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain a maximum of | + | | | | 100 characters that | + | | | | contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.), and must | + | | | | start with a letter or | + | | | | digit. | + | | | | - When **type** is set to | + | | | | **PATH**, the value can | + | | | | contain a maximum of 128 | + | | | | characters. When | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \_ | + | | | | ~';@^-%#&$.*+?,=!:|\/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | l7policy | Object | Specifies the forwarding policy. For details, see `Table | + | | | 5 <#elb_zq_zf_0001__en-us_topic_0136295317_table1251155618376>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **l7policy** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding policy is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | action | String | Specifies whether requests are | + | | | forwarded to another backend server | + | | | group or redirected to an HTTPS | + | | | listener. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests are | + | | | forwarded to the backend server | + | | | group specified by | + | | | **redirect_pool_id**. | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | are redirected from the HTTP | + | | | listener specified by | + | | | **listener_id** to the HTTPS | + | | | listener specified by | + | | | **redirect_listener_id**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group to which traffic is | + | | | forwarded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener to | + | | | which the traffic is redirected. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which traffic is | + | | | redirected. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array | Lists the forwarding rules of the | + | | | forwarding policy. For details, see | + | | | `Table | + | | | 6 <#elb_zq_zf_0001__en-us_to | + | | | pic_0136295317_table129777459104>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding priority. | + | | | The value ranges from **1** to | + | | | **100**. The default value is | + | | | **100**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **rules** parameter description + + ========= ====== =============================================================== + Parameter Type Description + ========= ====== =============================================================== + id String Lists the IDs of the forwarding rules in the forwarding policy. + ========= ====== =============================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Adding a forwarding policy + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/l7policies + + { + "l7policy": { + "name": "niubiao_yaqing_api-2", + "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", + "action": "REDIRECT_TO_POOL", + "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", + "rules": [ + { + "type": "PATH", + "compare_type": "EQUAL_TO", + "value": "/test" + }, + { + "type": "HOST_NAME", + "compare_type": "EQUAL_TO", + "value": "www.test.com" + } + ] + } + } + +- Example request 2: Creating a redirect + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/l7policies + + { + "l7policy": { + "action": "REDIRECT_TO_LISTENER", + "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", + "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", + "name": "redirect-test" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "l7policy": { + "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "742600d9-2a14-4808-af69-336883dbb590" + }, + { + "id": "3251ed77-0d52-412b-9310-733636bb3fbf" + } + ], + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", + "redirect_url": null, + "redirect_listener_id": null, + "action": "REDIRECT_TO_POOL", + "position": 100, + "provisioning_status": "ACTIVE", + + "id": "65d6e115-f179-4bcd-9bbb-1484e5f8ee81", + "name": "niubiao_yaqing-_api-2" + } + } + +- Example response 2 + + .. code:: screen + + { + "l7policy": { + "redirect_pool_id": null, + "description": "", + "admin_state_up": true, + "rules": [ ], + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", + "redirect_url": null, + "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", + "action": "REDIRECT_TO_LISTENER", + "position": 100, + "provisioning_status": "ACTIVE", + "id": "bc4e4338-480f-4a98-8245-5bb1964f0e1d", + "name": "redirect-test" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/elb_zq_zf_0002.html b/elb/api-ref/elb_zq_zf_0002.html new file mode 100644 index 000000000..495a65022 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0002.html @@ -0,0 +1,489 @@ + + +

      Querying Forwarding Policies

      +

      Function

      This API is used to query the forwarding policies. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/l7policies

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the forwarding policy from which pagination query starts, that is, the ID of the last forwarding policy on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of forwarding policies on each page. If this parameter is not set, all forwarding policies are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      The value contains a maximum of 255 characters.

      +

      +

      name

      +

      No

      +

      String

      +

      Specifies the forwarding policy name.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved, and the default value is true.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +

      action

      +

      No

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded.

      +

      redirect_listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected.

      +

      redirect_url

      +

      No

      +

      String

      +

      Specifies the URL to which traffic is redirected.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      position

      +

      No

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      provisioning_status

      +

      No

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding policy.

      +

      display_all_rules

      +

      No

      +

      Boolean

      +

      Specifies whether to display all forwarding rules added to the forwarding policy.

      +

      Value options:

      +

      false: Forwarding rules will not be displayed, and only IDs are displayed.

      +

      true: Forwarding rules will be displayed.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      l7policies

      +

      Array

      +

      Lists the forwarding policies. For details, see Table 3.

      +

      l7policies_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query.

      +

      For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 l7policy parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +

      action

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded.

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which traffic is redirected.

      +

      This parameter is reserved.

      +

      rules

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 6.

      +

      position

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding policy.

      +
      + + + + + + + + + + + + +
      Table 4 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Lists the IDs of the forwarding rules in the forwarding policy.

      +
      + + + + + + + + + + + + + + + + +
      Table 5 l7policies_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page.

      +

      The value can be next or previous. The value next indicates the href containing the URL of the next page, and previous indicates the href containing the URL of the previous page.

      +
      + + +

      Example Request

      • Example request 1: Querying all forwarding policies
        GET https://{Endpoint}/v2.0/lbaas/l7policies
        +
      • Example request 2: Querying forwarding policies through which requests are forwarded to the backend server group
        GET https://{Endpoint}/v2.0/lbaas/l7policies?action=REDIRECT_TO_POOL
        +
      + +

      Example Response

      • Example response 1
        {
        +    "l7policies": [
        +        {
        +            "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", 
        +            "redirect_listener_id": null,  
        +            "description": "", 
        +            "admin_state_up": true, 
        +            "rules": [
        +                {
        +                    "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3"
        +                }, 
        +                {
        +                    "id": "f02b3bca-69d2-4335-a3fa-a8054e996213"
        +                }
        +            ], 
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        + 
        +            "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", 
        +            "redirect_url": null, 
        +            "action": "REDIRECT_TO_POOL", 
        +            "position": 2,
        +            "provisioning_status": "ACTIVE", 
        +            "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", 
        +            "name": ""
        +        }, 
        +        {
        +            "redirect_pool_id": "59eebd7b-c68f-4f8a-aa7f-e062e84c0690", 
        +            "redirect_listener_id": null,  
        +            "description": "", 
        +            "admin_state_up": true, 
        +            "rules": [
        +                {
        +                    "id": "f4499f48-de3d-4efe-926d-926aa4d6aaf5"
        +                }
        +            ], 
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +            "listener_id": "e1310063-00de-4867-ab55-ccac4d9db364", 
        +            "redirect_url": null, 
        +            "action": "REDIRECT_TO_POOL", 
        +            "position": 1, 
        +            "provisioning_status": "ACTIVE",
        +            "id": "6cfd9d89-1d7e-4d84-ae1f-a8c5ff126f72", 
        +            "name": ""
        +        }
        +    ],
        +    "l7policies_links": [
        +        {
        +        "href": "https://{Endpoint}/v2.0/lbaas/l7policies/061f461c-c7cf-47ab-9583-09be5076cd09/rules?marker=167c1a31-bc12-4c3d-9ad1-c9bf450df4ce&page_reverse=True",
        +        "rel": "previous"
        +        }
        +    ]
        +}
        +
      • Example response 2
        {
        +    "l7policies": [
        +        {
        +            "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", 
        +            "redirect_listener_id": null,  
        +            "description": "", 
        +            "admin_state_up": true, 
        +            "rules": [
        +                {
        +                    "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3"
        +                }, 
        +                {
        +                    "id": "f02b3bca-69d2-4335-a3fa-a8054e996213"
        +                }
        +            ], 
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +  
        +            "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", 
        +            "redirect_url": null, 
        +            "action": "REDIRECT_TO_POOL", 
        +            "position": 2,
        +            "provisioning_status": "ACTIVE", 
        +            "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", 
        +            "name": ""
        +        }, 
        +        {
        +            "redirect_pool_id": "59eebd7b-c68f-4f8a-aa7f-e062e84c0690", 
        +            "redirect_listener_id": null,  
        +            "description": "", 
        +            "admin_state_up": true, 
        +            "rules": [
        +                {
        +                    "id": "f4499f48-de3d-4efe-926d-926aa4d6aaf5"
        +                }
        +            ], 
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        + 
        +            "listener_id": "e1310063-00de-4867-ab55-ccac4d9db364", 
        +            "redirect_url": null, 
        +            "action": "REDIRECT_TO_POOL", 
        +            "position": 1, 
        +            "provisioning_status": "ACTIVE",
        +            "id": "6cfd9d89-1d7e-4d84-ae1f-a8c5ff126f72", 
        +            "name": ""
        +        }
        +    ],
        +    "l7policies_links": [
        +        {
        +        "href": "https://{Endpoint}/v2.0/lbaas/l7policies/061f461c-c7cf-47ab-9583-09be5076cd09/rules?marker=167c1a31-bc12-4c3d-9ad1-c9bf450df4ce&page_reverse=True",
        +        "rel": "previous"
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/elb_zq_zf_0002.rst b/elb/api-ref/elb_zq_zf_0002.rst new file mode 100644 index 000000000..3a79b6c8c --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0002.rst @@ -0,0 +1,475 @@ +Querying Forwarding Policies +============================ + +Function +^^^^^^^^ + +This API is used to query the forwarding policies. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/l7policies + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | Parameter | **Mandatory** | Type | Description | | + +=======================+=======================+=======================+=======================+=======================+ + | marker | No | String | Specifies the ID of | | + | | | | the forwarding policy | | + | | | | from which pagination | | + | | | | query starts, that | | + | | | | is, the ID of the | | + | | | | last forwarding | | + | | | | policy on the | | + | | | | previous page. | | + | | | | | | + | | | | This parameter must | | + | | | | be used together with | | + | | | | **limit**. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | limit | No | Integer | Specifies the number | | + | | | | of forwarding | | + | | | | policies on each | | + | | | | page. If this | | + | | | | parameter is not set, | | + | | | | all forwarding | | + | | | | policies are queried | | + | | | | by default. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | page_reverse | No | Boolean | Specifies the page | | + | | | | direction. The value | | + | | | | can be **true** or | | + | | | | **false**, and the | | + | | | | default value is | | + | | | | **false**. The last | | + | | | | page in the list | | + | | | | requested with | | + | | | | **page_reverse** set | | + | | | | to **false** will not | | + | | | | contain the "next" | | + | | | | link, and the last | | + | | | | page in the list | | + | | | | requested with | | + | | | | **page_reverse** set | | + | | | | to **true** will not | | + | | | | contain the | | + | | | | "previous" link. | | + | | | | | | + | | | | This parameter must | | + | | | | be used together with | | + | | | | **limit**. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | id | No | String | Specifies the | | + | | | | forwarding policy ID. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | tenant_id | No | String | Specifies the ID of | | + | | | | the project where the | | + | | | | forwarding policy is | | + | | | | used. | | + | | | | | | + | | | | The value contains a | | + | | | | maximum of 255 | | + | | | | characters. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | name | No | String | Specifies the | | + | | | | forwarding policy | | + | | | | name. | | + | | | | | | + | | | | The value contains a | | + | | | | maximum of 255 | | + | | | | characters. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | admin_state_up | No | Boolean | Specifies the | | + | | | | administrative status | | + | | | | of the forwarding | | + | | | | policy. | | + | | | | | | + | | | | This parameter is | | + | | | | reserved, and the | | + | | | | default value is | | + | | | | **true**. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | description | No | String | Provides | | + | | | | supplementary | | + | | | | information about the | | + | | | | forwarding policy. | | + | | | | | | + | | | | The value contains a | | + | | | | maximum of 255 | | + | | | | characters. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | listener_id | No | String | Specifies the ID of | | + | | | | the listener to which | | + | | | | the forwarding policy | | + | | | | is added. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | action | No | String | Specifies whether | | + | | | | requests are | | + | | | | forwarded to another | | + | | | | backend server group | | + | | | | or redirected to an | | + | | | | HTTPS listener. | | + | | | | | | + | | | | The value can be one | | + | | | | of the following: | | + | | | | | | + | | | | - | | + | | | | **REDIRECT_TO_POOL**: | | + | | | | Requests are | | + | | | | forwarded to the | | + | | | | backend server | | + | | | | group specified by | | + | | | | | | + | | | | **redirect_pool_id**. | | + | | | | - **RE | | + | | | | DIRECT_TO_LISTENER**: | | + | | | | Requests are | | + | | | | redirected from | | + | | | | the HTTP listener | | + | | | | specified by | | + | | | | **listener_id** to | | + | | | | the HTTPS listener | | + | | | | specified by | | + | | | | **re | | + | | | | direct_listener_id**. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | redirect_pool_id | No | String | Specifies the ID of | | + | | | | the backend server | | + | | | | group to which | | + | | | | traffic is forwarded. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | redirect_listener_id | No | String | Specifies the ID of | | + | | | | the listener to which | | + | | | | the traffic is | | + | | | | redirected. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | redirect_url | No | String | Specifies the URL to | | + | | | | which traffic is | | + | | | | redirected. | | + | | | | | | + | | | | This parameter is | | + | | | | reserved. | | + | | | | | | + | | | | The value contains a | | + | | | | maximum of 255 | | + | | | | characters. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | position | No | Integer | Specifies the | | + | | | | forwarding priority. | | + | | | | The value ranges from | | + | | | | **1** to **100**. The | | + | | | | default value is | | + | | | | **100**. | | + | | | | | | + | | | | This parameter is | | + | | | | reserved. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | provisioning_status | No | String | This parameter is | | + | | | | reserved, and its | | + | | | | value can only be | | + | | | | **ACTIVE**. | | + | | | | | | + | | | | It specifies the | | + | | | | provisioning status | | + | | | | of the forwarding | | + | | | | policy. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + | display_all_rules | No | Boolean | Specifies whether to | | + | | | | display all | | + | | | | forwarding rules | | + | | | | added to the | | + | | | | forwarding policy. | | + | | | | | | + | | | | Value options: | | + | | | | | | + | | | | **false**: Forwarding | | + | | | | rules will not be | | + | | | | displayed, and only | | + | | | | IDs are displayed. | | + | | | | | | + | | | | **true**: Forwarding | | + | | | | rules will be | | + | | | | displayed. | | + +-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | l7policies | Array | Lists the forwarding policies. For | + | | | details, see `Table | + | | | 3 <#elb_zq_zf_0002__en-us_top | + | | | ic_0136295315_table1921785733313>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | l7policies_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | | + | | | For details, see `Table | + | | | 5 <#elb_zq_zf_0002__en-us_to | + | | | pic_0136295315_table164602247259>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** **l7policy** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding policy is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | action | String | Specifies whether requests are | + | | | forwarded to another backend server | + | | | group or redirected to an HTTPS | + | | | listener. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests are | + | | | forwarded to the backend server | + | | | group specified by | + | | | **redirect_pool_id**. | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | are redirected from the HTTP | + | | | listener specified by | + | | | **listener_id** to the HTTPS | + | | | listener specified by | + | | | **redirect_listener_id**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group to which traffic is | + | | | forwarded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener to | + | | | which the traffic is redirected. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which traffic is | + | | | redirected. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array | Lists the forwarding rules of the | + | | | forwarding policy. For details, see | + | | | `Table | + | | | 6 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding priority. | + | | | The value ranges from **1** to | + | | | **100**. The default value is | + | | | **100**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **rules** parameter description + + ========= ====== =============================================================== + Parameter Type Description + ========= ====== =============================================================== + id String Lists the IDs of the forwarding rules in the forwarding policy. + ========= ====== =============================================================== + +.. table:: **Table 5** **l7policies_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. | + | | | | + | | | The value can be **next** or | + | | | **previous**. The value **next** | + | | | indicates the href containing the URL | + | | | of the next page, and **previous** | + | | | indicates the href containing the URL | + | | | of the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Querying all forwarding policies + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/l7policies + +- Example request 2: Querying forwarding policies through which requests are forwarded to the backend server group + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/l7policies?action=REDIRECT_TO_POOL + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "l7policies": [ + { + "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", + "redirect_listener_id": null, + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3" + }, + { + "id": "f02b3bca-69d2-4335-a3fa-a8054e996213" + } + ], + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", + "redirect_url": null, + "action": "REDIRECT_TO_POOL", + "position": 2, + "provisioning_status": "ACTIVE", + "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", + "name": "" + }, + { + "redirect_pool_id": "59eebd7b-c68f-4f8a-aa7f-e062e84c0690", + "redirect_listener_id": null, + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "f4499f48-de3d-4efe-926d-926aa4d6aaf5" + } + ], + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + "listener_id": "e1310063-00de-4867-ab55-ccac4d9db364", + "redirect_url": null, + "action": "REDIRECT_TO_POOL", + "position": 1, + "provisioning_status": "ACTIVE", + "id": "6cfd9d89-1d7e-4d84-ae1f-a8c5ff126f72", + "name": "" + } + ], + "l7policies_links": [ + { + "href": "https://{Endpoint}/v2.0/lbaas/l7policies/061f461c-c7cf-47ab-9583-09be5076cd09/rules?marker=167c1a31-bc12-4c3d-9ad1-c9bf450df4ce&page_reverse=True", + "rel": "previous" + } + ] + } + +- Example response 2 + + .. code:: screen + + { + "l7policies": [ + { + "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", + "redirect_listener_id": null, + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3" + }, + { + "id": "f02b3bca-69d2-4335-a3fa-a8054e996213" + } + ], + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", + "redirect_url": null, + "action": "REDIRECT_TO_POOL", + "position": 2, + "provisioning_status": "ACTIVE", + "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", + "name": "" + }, + { + "redirect_pool_id": "59eebd7b-c68f-4f8a-aa7f-e062e84c0690", + "redirect_listener_id": null, + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "f4499f48-de3d-4efe-926d-926aa4d6aaf5" + } + ], + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "listener_id": "e1310063-00de-4867-ab55-ccac4d9db364", + "redirect_url": null, + "action": "REDIRECT_TO_POOL", + "position": 1, + "provisioning_status": "ACTIVE", + "id": "6cfd9d89-1d7e-4d84-ae1f-a8c5ff126f72", + "name": "" + } + ], + "l7policies_links": [ + { + "href": "https://{Endpoint}/v2.0/lbaas/l7policies/061f461c-c7cf-47ab-9583-09be5076cd09/rules?marker=167c1a31-bc12-4c3d-9ad1-c9bf450df4ce&page_reverse=True", + "rel": "previous" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/elb_zq_zf_0003.html b/elb/api-ref/elb_zq_zf_0003.html new file mode 100644 index 000000000..8f28ca231 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0003.html @@ -0,0 +1,219 @@ + + +

      Querying Details of a Forwarding Policy

      +

      Function

      This API is used to query details about a forwarding policy.

      + +

      URI

      GET /v2.0/lbaas/l7policies/{l7policy_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      l7policy

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 l7policy parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +

      action

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded.

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which traffic is redirected.

      +

      This parameter is reserved.

      +

      rules

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 6.

      +

      position

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding policy.

      +
      + + + + + + + + + + + + +
      Table 4 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Lists the IDs of the forwarding rules in the forwarding policy.

      +
      + + +

      Example Request

      • Example request: Querying details of a forwarding policy
        GET https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586
        +
      + +

      Example Response

      • Example response
        {
        +    "l7policy": {
        +        "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", 
        +        "redirect_listener_id": null, 
        +        "description": "", 
        +        "admin_state_up": true, 
        +        "rules": [
        +            {
        +                "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3"
        +            }, 
        +            {
        +                "id": "f02b3bca-69d2-4335-a3fa-a8054e996213"
        +            }
        +        ], 
        +        "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", 
        +        "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", 
        +        "redirect_url": null, 
        +        "provisioning_status": "ACTIVE",
        +        "action": "REDIRECT_TO_POOL", 
        +        "position": 1, 
        +        "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", 
        +        "name": "l7policy-garry-1"
        +    }
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/elb_zq_zf_0003.rst b/elb/api-ref/elb_zq_zf_0003.rst new file mode 100644 index 000000000..fac8c5378 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0003.rst @@ -0,0 +1,172 @@ +Querying Details of a Forwarding Policy +======================================= + +Function +^^^^^^^^ + +This API is used to query details about a forwarding policy. + +URI +^^^ + +GET /v2.0/lbaas/l7policies/{l7policy_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | l7policy | Object | Specifies the forwarding policy. For details, see `Table | + | | | 3 <#elb_zq_zf_0003__en-us_topic_0136295316_table77011444133616>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **l7policy** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding policy is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | action | String | Specifies whether requests are | + | | | forwarded to another backend server | + | | | group or redirected to an HTTPS | + | | | listener. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests are | + | | | forwarded to the backend server | + | | | group specified by | + | | | **redirect_pool_id**. | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | are redirected from the HTTP | + | | | listener specified by | + | | | **listener_id** to the HTTPS | + | | | listener specified by | + | | | **redirect_listener_id**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group to which traffic is | + | | | forwarded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener to | + | | | which the traffic is redirected. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which traffic is | + | | | redirected. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array | Lists the forwarding rules of the | + | | | forwarding policy. For details, see | + | | | `Table | + | | | 6 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding priority. | + | | | The value ranges from **1** to | + | | | **100**. The default value is | + | | | **100**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **rules** parameter description + + ========= ====== =============================================================== + Parameter Type Description + ========= ====== =============================================================== + id String Lists the IDs of the forwarding rules in the forwarding policy. + ========= ====== =============================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a forwarding policy + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "l7policy": { + "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", + "redirect_listener_id": null, + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3" + }, + { + "id": "f02b3bca-69d2-4335-a3fa-a8054e996213" + } + ], + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", + "redirect_url": null, + "provisioning_status": "ACTIVE", + "action": "REDIRECT_TO_POOL", + "position": 1, + "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", + "name": "l7policy-garry-1" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/elb_zq_zf_0004.html b/elb/api-ref/elb_zq_zf_0004.html new file mode 100644 index 000000000..db9223408 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0004.html @@ -0,0 +1,322 @@ + + +

      Updating a Forwarding Policy

      +

      Function

      This API is used to update a forwarding policy. You can select another backend server group or redirect to another HTTPS listener.

      + +

      URI

      PUT /v2.0/lbaas/l7policies/{l7policy_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      Object

      +

      Specifies the forwarding policy ID.

      +
      + + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy

      +

      Yes

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 l7policy parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the forwarding policy name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      The value contains a maximum of 255 characters.

      +

      redirect_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded. The default value is null.

      +

      This parameter is mandatory when action is set to REDIRECT_TO_POOL.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      The backend server group must meet the following requirements:

      +
      • Cannot be the default backend server group of the listener.
      • Cannot be the backend server group used by forwarding policies of other listeners.
      +

      redirect_listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected. The default value is null.

      +

      This parameter is mandatory when action is set to REDIRECT_TO_LISTENER.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_POOL. The listener must meet the following requirements:

      +
      • Can only be an HTTPS listener.
      • Can only be a listener of the same load balancer.
      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved, and the default value is true.

      +
      + + +

      Response

      + + + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy

      +

      Yes

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 l7policy parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +

      action

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded.

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which traffic is redirected.

      +

      This parameter is reserved.

      +

      rules

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 6.

      +

      position

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding policy.

      +
      + + + + + + + + + + + + +
      Table 6 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Lists the IDs of the forwarding rules in the forwarding policy.

      +
      + + +

      Example Request

      • Example request: Updating a forwarding policy
        PUT https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586
        +
        +{
        +    "l7policy": {
        +        "name": "test"
        +    }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "l7policy": {
        +        "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", 
        +        "redirect_listener_id": null,
        +        "description": "", 
        +        "admin_state_up": true, 
        +        "rules": [
        +            {
        +                "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3"
        +            }, 
        +            {
        +                "id": "f02b3bca-69d2-4335-a3fa-a8054e996213"
        +            }
        +        ], 
        +
        +        "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +  
        +        "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", 
        +        "redirect_url": null, 
        +        "action": "REDIRECT_TO_POOL", 
        +        "provisioning_status": "ACTIVE",
        +        "position": 2, 
        +        "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", 
        +        "name": "test"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/elb_zq_zf_0004.rst b/elb/api-ref/elb_zq_zf_0004.rst new file mode 100644 index 000000000..217cb68d7 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0004.rst @@ -0,0 +1,263 @@ +Updating a Forwarding Policy +============================ + +Function +^^^^^^^^ + +This API is used to update a forwarding policy. You can select another backend server group or redirect to another HTTPS listener. + +URI +^^^ + +PUT /v2.0/lbaas/l7policies/{l7policy_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes Object Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | l7policy | Yes | Object | Specifies the forwarding policy. For details, see `Table | + | | | | 3 <#elb_zq_zf_0004__en-us_topic_0136295318_table7905034124412>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **l7policy** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the forwarding | + | | | | policy name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | forwarding policy. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_pool_id | No | String | Specifies the ID of the | + | | | | backend server group to | + | | | | which traffic is forwarded. | + | | | | The default value is | + | | | | **null**. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **action** is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | The backend server group | + | | | | must meet the following | + | | | | requirements: | + | | | | | + | | | | - Cannot be the default | + | | | | backend server group of | + | | | | the listener. | + | | | | - Cannot be the backend | + | | | | server group used by | + | | | | forwarding policies of | + | | | | other listeners. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_listener_id | No | String | Specifies the ID of the | + | | | | listener to which the | + | | | | traffic is redirected. The | + | | | | default value is **null**. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **action** is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_POOL**. The | + | | | | listener must meet the | + | | | | following requirements: | + | | | | | + | | | | - Can only be an HTTPS | + | | | | listener. | + | | | | - Can only be a listener | + | | | | of the same load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding policy. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | l7policy | Yes | Object | Specifies the forwarding policy. For details, see `Table | + | | | | 5 <#elb_zq_zf_0004__en-us_topic_0136295318_table20746114154514>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 5** **l7policy** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding policy is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | action | String | Specifies whether requests are | + | | | forwarded to another backend server | + | | | group or redirected to an HTTPS | + | | | listener. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests are | + | | | forwarded to the backend server | + | | | group specified by | + | | | **redirect_pool_id**. | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | are redirected from the HTTP | + | | | listener specified by | + | | | **listener_id** to the HTTPS | + | | | listener specified by | + | | | **redirect_listener_id**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group to which traffic is | + | | | forwarded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener to | + | | | which the traffic is redirected. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which traffic is | + | | | redirected. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array | Lists the forwarding rules of the | + | | | forwarding policy. For details, see | + | | | `Table | + | | | 6 `__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding priority. | + | | | The value ranges from **1** to | + | | | **100**. The default value is | + | | | **100**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **rules** parameter description + + ========= ====== =============================================================== + Parameter Type Description + ========= ====== =============================================================== + id String Lists the IDs of the forwarding rules in the forwarding policy. + ========= ====== =============================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating a forwarding policy + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586 + + { + "l7policy": { + "name": "test" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "l7policy": { + "redirect_pool_id": "431a03eb-81bb-408e-ae37-7ce19023692b", + "redirect_listener_id": null, + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3" + }, + { + "id": "f02b3bca-69d2-4335-a3fa-a8054e996213" + } + ], + + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "listener_id": "26058b64-6185-4e06-874e-4bd68b7633d0", + "redirect_url": null, + "action": "REDIRECT_TO_POOL", + "provisioning_status": "ACTIVE", + "position": 2, + "id": "5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586", + "name": "test" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/elb_zq_zf_0005.html b/elb/api-ref/elb_zq_zf_0005.html new file mode 100644 index 000000000..8f7152871 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0005.html @@ -0,0 +1,49 @@ + + +

      Deleting a Forwarding Policy

      +

      Function

      This API is used to delete a specific forwarding policy.

      + +

      URI

      DELETE /v2.0/lbaas/l7policies/{l7policy_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      Object

      +

      Specifies the forwarding policy ID.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Deleting a forwarding policy
        DELETE https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/elb_zq_zf_0005.rst b/elb/api-ref/elb_zq_zf_0005.rst new file mode 100644 index 000000000..98e445742 --- /dev/null +++ b/elb/api-ref/elb_zq_zf_0005.rst @@ -0,0 +1,53 @@ +Deleting a Forwarding Policy +============================ + +Function +^^^^^^^^ + +This API is used to delete a specific forwarding policy. + +URI +^^^ + +DELETE /v2.0/lbaas/l7policies/{l7policy_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes Object Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a forwarding policy + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/elb_zq_zg_0000.html b/elb/api-ref/elb_zq_zg_0000.html new file mode 100644 index 000000000..70f5ecbe6 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0000.html @@ -0,0 +1,23 @@ + + +

      Forwarding Rule

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_zg_0000.rst b/elb/api-ref/elb_zq_zg_0000.rst new file mode 100644 index 000000000..6a3e98291 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0000.rst @@ -0,0 +1,10 @@ +Forwarding Rule +=============== + +- `Adding a Forwarding Rule `__ +- `Querying Forwarding Rules `__ +- `Querying Details of a Forwarding Rule `__ +- `Updating a Forwarding Rule `__ +- `Deleting a Forwarding Rule `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_zg_0001.html b/elb/api-ref/elb_zq_zg_0001.html new file mode 100644 index 000000000..7056ff6ae --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0001.html @@ -0,0 +1,297 @@ + + +

      Adding a Forwarding Rule

      +

      Function

      This API is used to add a forwarding rule. After you add a forwarding rule, the load balancer matches the domain name and path in the request and distributes the traffic to the backend server group specified by redirect_pool_id of the associated forwarding policy.

      + +

      Constraints

      The match type of forwarding rules in a forwarding policy must be unique.

      + +

      URI

      POST /v2.0/lbaas/l7policies/{l7policy_id}/rules

      + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +
      + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      rule

      +

      Yes

      +

      Object

      +

      Specifies the forwarding rule. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 rule parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved, and the default value is true.

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value can be one of the following:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      The match type of forwarding rules in a forwarding policy must be unique.

      +

      compare_type

      +

      Yes

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      Yes

      +

      String

      +

      Specifies the value of the match content. The value cannot contain spaces.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      rule

      +

      Object

      +

      Specifies the forwarding rule. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 rule parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      type

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value can be one of the following:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      compare_type

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      String

      +

      Specifies the value of the match content.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding rule.

      +
      + + +

      Example Request

      • Example request: Adding a forwarding rule
        POST https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules  
        +
        +{
        +    "rule": {
        +        "compare_type": "EQUAL_TO", 
        +        "type": "PATH", 
        +        "value": "/bbb.html"
        +    }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "rule": {
        +        "compare_type": "EQUAL_TO", 
        +        "admin_state_up": true, 
        +        "provisioning_status": "ACTIVE",
        +        "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", 
        + 
        +        "invert": false, 
        +        "value": "/bbb.html", 
        +        "key": null, 
        +        "type": "PATH", 
        +        "id": "c6f457b8-bf6f-45d7-be5c-a3226945b7b1"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/elb_zq_zg_0001.rst b/elb/api-ref/elb_zq_zg_0001.rst new file mode 100644 index 000000000..bf88773c1 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0001.rst @@ -0,0 +1,312 @@ +Adding a Forwarding Rule +======================== + +Function +^^^^^^^^ + +This API is used to add a forwarding rule. After you add a forwarding rule, the load balancer matches the domain name and path in the request and distributes the traffic to the backend server group specified by **redirect_pool_id** of the associated forwarding policy. + +Constraints +^^^^^^^^^^^ + +The match type of forwarding rules in a forwarding policy must be unique. + +URI +^^^ + +POST /v2.0/lbaas/l7policies/{l7policy_id}/rules + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | rule | Yes | Object | Specifies the forwarding rule. For details, see `Table | + | | | | 3 <#elb_zq_zg_0001__en-us_topic_0116649236_table857349145816>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **rule** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | forwarding rule is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the match type of | + | | | | a forwarding rule. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **HOST_NAME**: matches | + | | | | the domain name in the | + | | | | request. | + | | | | - **PATH**: matches the | + | | | | path in the request. | + | | | | | + | | | | The match type of | + | | | | forwarding rules in a | + | | | | forwarding policy must be | + | | | | unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | Yes | String | Specifies the match mode. | + | | | | The options are as follows: | + | | | | | + | | | | When **type** is set to | + | | | | **HOST_NAME**, the value of | + | | | | this parameter can only be | + | | | | the following: | + | | | | | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + | | | | | + | | | | When **type** is set to | + | | | | **PATH**, the value of this | + | | | | parameter can be one of the | + | | | | following: | + | | | | | + | | | | - **REGEX**: indicates | + | | | | regular expression | + | | | | match. | + | | | | - **STARTS_WITH**: | + | | | | indicates prefix match. | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. The default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match content. The default | + | | | | value is **null**. | + | | | | | + | | | | This parameter is reserved. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match content. The value | + | | | | cannot contain spaces. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | - When **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain a maximum of | + | | | | 100 characters that | + | | | | contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.), and must | + | | | | start with a letter or | + | | | | digit. | + | | | | - When **type** is set to | + | | | | **PATH**, the value can | + | | | | contain a maximum of 128 | + | | | | characters. When | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \_~';@^-%#&$.*+?,=!:\| | + | | | | \\/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | rule | Object | Specifies the forwarding rule. For details, see `Table | + | | | 5 <#elb_zq_zg_0001__en-us_topic_0116649236_table1212118142596>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **rule** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding rule ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding rule is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match type of a | + | | | forwarding rule. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **HOST_NAME**: matches the domain | + | | | name in the request. | + | | | - **PATH**: matches the path in the | + | | | request. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies the match mode. The options | + | | | are as follows: | + | | | | + | | | When **type** is set to | + | | | **HOST_NAME**, the value of this | + | | | parameter can only be the following: | + | | | | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + | | | | + | | | When **type** is set to **PATH**, the | + | | | value of this parameter can be one of | + | | | the following: | + | | | | + | | | - **REGEX**: indicates regular | + | | | expression match. | + | | | - **STARTS_WITH**: indicates prefix | + | | | match. | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. | + | | | | + | | | The value can be **true** or | + | | | **false**. The default value is | + | | | **false**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. The default value is | + | | | **null**. | + | | | | + | | | This parameter is reserved. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | content. | + | | | | + | | | The value contains a maximum of 128 | + | | | characters. | + | | | | + | | | - When **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain a maximum of 100 | + | | | characters that contain only | + | | | letters, digits, hyphens (-), and | + | | | periods (.), and must start with a | + | | | letter or digit. | + | | | - When **type** is set to **PATH**, | + | | | the value can contain a maximum of | + | | | 128 characters. When | + | | | **compare_type** is set to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:\| \\/()[]{} | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Adding a forwarding rule + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules + + { + "rule": { + "compare_type": "EQUAL_TO", + "type": "PATH", + "value": "/bbb.html" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "rule": { + "compare_type": "EQUAL_TO", + "admin_state_up": true, + "provisioning_status": "ACTIVE", + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "invert": false, + "value": "/bbb.html", + "key": null, + "type": "PATH", + "id": "c6f457b8-bf6f-45d7-be5c-a3226945b7b1" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/elb_zq_zg_0002.html b/elb/api-ref/elb_zq_zg_0002.html new file mode 100644 index 000000000..ef6056ea6 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0002.html @@ -0,0 +1,369 @@ + + +

      Querying Forwarding Rules

      +

      Function

      This API is used to query forwarding rules. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/l7policies/{l7policy_id}/rules

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the forwarding rule from which pagination query starts, that is, the ID of the last forwarding rule on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of forwarding rules on each page. If this parameter is not set, all forwarding rules are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved, and the default value is true.

      +

      type

      +

      No

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value can be one of the following:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      The match type of forwarding rules in a forwarding policy must be unique.

      +

      compare_type

      +

      No

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      No

      +

      String

      +

      +

      Specifies the value of the match content.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +

      provisioning_status

      +

      No

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding rule.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 3 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      rules

      +

      Array

      +

      Lists the forwarding rules. For details, see Table 4.

      +

      rules_links

      +

      Array

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query.

      +

      For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      type

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value can be one of the following:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      compare_type

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      String

      +

      Specifies the value of the match content.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding rule.

      +
      + + + + + + + + + + + + + + + + +
      Table 5 rules_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page.

      +

      The value can be next or previous. The value next indicates the href containing the URL of the next page, and previous indicates the href containing the URL of the previous page.

      +
      + + +

      Example Request

      • Example request: Querying all forwarding rules of a specific forwarding policy
        GET https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules
        +
      + +

      Example Response

      • Example response
        {
        +    "rules": [
        +        {
        +            "compare_type": "EQUAL_TO", 
        +            "provisioning_status": "ACTIVE",
        +            "admin_state_up": true, 
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", 
        +   
        +            "invert": false, 
        +            "value": "www.test.com", 
        +            "key": null, 
        +            "type": "HOST_NAME", 
        +            "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3"
        +        }, 
        +        {
        +            "compare_type": "EQUAL_TO",
        +            "provisioning_status": "ACTIVE", 
        +            "admin_state_up": true, 
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +  
        +            "invert": false, 
        +            "value": "/aaa.html", 
        +            "key": null, 
        +            "type": "PATH", 
        +            "id": "f02b3bca-69d2-4335-a3fa-a8054e996213"
        +        }
        +    ]
        +    "rules_links": [
        +        {
        +        "href": "https://{Endpoint}/v2.0/lbaas/l7policies/061f461c-c7cf-47ab-9583-09be5076cd09/rules?marker=167c1a31-bc12-4c3d-9ad1-c9bf450df4ce&page_reverse=True",
        +        "rel": "previous"
        +        }
        +    ]
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/elb_zq_zg_0002.rst b/elb/api-ref/elb_zq_zg_0002.rst new file mode 100644 index 000000000..ebedfb43c --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0002.rst @@ -0,0 +1,388 @@ +Querying Forwarding Rules +========================= + +Function +^^^^^^^^ + +This API is used to query forwarding rules. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/l7policies/{l7policy_id}/rules + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | forwarding rule from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | forwarding rule on the | + | | | | previous page. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | forwarding rules on each | + | | | | page. If this parameter is | + | | | | not set, all forwarding | + | | | | rules are queried by | + | | | | default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the forwarding | + | | | | rule ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | forwarding rule is used. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the match type of | + | | | | a forwarding rule. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **HOST_NAME**: matches | + | | | | the domain name in the | + | | | | request. | + | | | | - **PATH**: matches the | + | | | | path in the request. | + | | | | | + | | | | The match type of | + | | | | forwarding rules in a | + | | | | forwarding policy must be | + | | | | unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | No | String | Specifies the match mode. | + | | | | The options are as follows: | + | | | | | + | | | | When **type** is set to | + | | | | **HOST_NAME**, the value of | + | | | | this parameter can only be | + | | | | the following: | + | | | | | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + | | | | | + | | | | When **type** is set to | + | | | | **PATH**, the value of this | + | | | | parameter can be one of the | + | | | | following: | + | | | | | + | | | | - **REGEX**: indicates | + | | | | regular expression | + | | | | match. | + | | | | - **STARTS_WITH**: | + | | | | indicates prefix match. | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. The default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match content. The default | + | | | | value is **null**. | + | | | | | + | | | | This parameter is reserved. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | String | Specifies the value of the | + | | | | match content. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | - When **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain a maximum of | + | | | | 100 characters that | + | | | | contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.), and must | + | | | | start with a letter or | + | | | | digit. | + | | | | - When **type** is set to | + | | | | **PATH**, the value can | + | | | | contain a maximum of 128 | + | | | | characters. When | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \_~';@^-%#&$.*+?,=!:\| | + | | | | \\/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provisioning_status | No | String | This parameter is reserved, | + | | | | and its value can only be | + | | | | **ACTIVE**. | + | | | | | + | | | | It specifies the | + | | | | provisioning status of the | + | | | | forwarding rule. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Response parameters + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | rules | Array | Lists the forwarding rules. For | + | | | details, see `Table | + | | | 4 <#elb_zq_zg_0002__en-us_topi | + | | | c_0116649234_table19731219105316>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules_links | Array | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | | + | | | For details, see `Table | + | | | 5 <#elb_zq_zg_0002__en-us_to | + | | | pic_0116649234_table121191126442>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **rules** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding rule ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding rule is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match type of a | + | | | forwarding rule. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **HOST_NAME**: matches the domain | + | | | name in the request. | + | | | - **PATH**: matches the path in the | + | | | request. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies the match mode. The options | + | | | are as follows: | + | | | | + | | | When **type** is set to | + | | | **HOST_NAME**, the value of this | + | | | parameter can only be the following: | + | | | | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + | | | | + | | | When **type** is set to **PATH**, the | + | | | value of this parameter can be one of | + | | | the following: | + | | | | + | | | - **REGEX**: indicates regular | + | | | expression match. | + | | | - **STARTS_WITH**: indicates prefix | + | | | match. | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. | + | | | | + | | | The value can be **true** or | + | | | **false**. The default value is | + | | | **false**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. The default value is | + | | | **null**. | + | | | | + | | | This parameter is reserved. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | content. | + | | | | + | | | The value contains a maximum of 128 | + | | | characters. | + | | | | + | | | - When **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain a maximum of 100 | + | | | characters that contain only | + | | | letters, digits, hyphens (-), and | + | | | periods (.), and must start with a | + | | | letter or digit. | + | | | - When **type** is set to **PATH**, | + | | | the value can contain a maximum of | + | | | 128 characters. When | + | | | **compare_type** is set to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:\| \\/()[]{} | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **rules_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. | + | | | | + | | | The value can be **next** or | + | | | **previous**. The value **next** | + | | | indicates the href containing the URL | + | | | of the next page, and **previous** | + | | | indicates the href containing the URL | + | | | of the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying all forwarding rules of a specific forwarding policy + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "rules": [ + { + "compare_type": "EQUAL_TO", + "provisioning_status": "ACTIVE", + "admin_state_up": true, + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "invert": false, + "value": "www.test.com", + "key": null, + "type": "HOST_NAME", + "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3" + }, + { + "compare_type": "EQUAL_TO", + "provisioning_status": "ACTIVE", + "admin_state_up": true, + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "invert": false, + "value": "/aaa.html", + "key": null, + "type": "PATH", + "id": "f02b3bca-69d2-4335-a3fa-a8054e996213" + } + ] + "rules_links": [ + { + "href": "https://{Endpoint}/v2.0/lbaas/l7policies/061f461c-c7cf-47ab-9583-09be5076cd09/rules?marker=167c1a31-bc12-4c3d-9ad1-c9bf450df4ce&page_reverse=True", + "rel": "previous" + } + ] + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/elb_zq_zg_0003.html b/elb/api-ref/elb_zq_zg_0003.html new file mode 100644 index 000000000..c403d9a06 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0003.html @@ -0,0 +1,180 @@ + + +

      Querying Details of a Forwarding Rule

      +

      Function

      This API is used to query details about a forwarding rule using its ID.

      + +

      URI

      GET /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}

      + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      l7rule_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + +

      Request

      None

      + +

      Response

      + + + + + + + + + + +
      Table 2 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      rule

      +

      Object

      +

      Specifies the forwarding rule. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 rule parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      type

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value can be one of the following:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      compare_type

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      String

      +

      Specifies the value of the match content.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding rule.

      +
      + + +

      Example Request

      • Example request: Querying details of a forwarding rule
        GET https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules/67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3
        +
      + +

      Example Response

      • Example response
        {
        +    "rule": {
        +        "compare_type": "EQUAL_TO",
        +        "provisioning_status": "ACTIVE", 
        +        "admin_state_up": true, 
        +        "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", 
        +  
        +        "invert": false, 
        +        "value": "/index.html", 
        +        "key": null, 
        +        "type": "PATH", 
        +        "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/elb_zq_zg_0003.rst b/elb/api-ref/elb_zq_zg_0003.rst new file mode 100644 index 000000000..eb36afae9 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0003.rst @@ -0,0 +1,178 @@ +Querying Details of a Forwarding Rule +===================================== + +Function +^^^^^^^^ + +This API is used to query details about a forwarding rule using its ID. + +URI +^^^ + +GET /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + l7rule_id Yes String Specifies the forwarding rule ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | rule | Object | Specifies the forwarding rule. For details, see `Table | + | | | 3 <#elb_zq_zg_0003__en-us_topic_0116649235_table239892725716>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **rule** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding rule ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding rule is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match type of a | + | | | forwarding rule. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **HOST_NAME**: matches the domain | + | | | name in the request. | + | | | - **PATH**: matches the path in the | + | | | request. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies the match mode. The options | + | | | are as follows: | + | | | | + | | | When **type** is set to | + | | | **HOST_NAME**, the value of this | + | | | parameter can only be the following: | + | | | | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + | | | | + | | | When **type** is set to **PATH**, the | + | | | value of this parameter can be one of | + | | | the following: | + | | | | + | | | - **REGEX**: indicates regular | + | | | expression match. | + | | | - **STARTS_WITH**: indicates prefix | + | | | match. | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. | + | | | | + | | | The value can be **true** or | + | | | **false**. The default value is | + | | | **false**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. The default value is | + | | | **null**. | + | | | | + | | | This parameter is reserved. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | content. | + | | | | + | | | The value contains a maximum of 128 | + | | | characters. | + | | | | + | | | - When **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain a maximum of 100 | + | | | characters that contain only | + | | | letters, digits, hyphens (-), and | + | | | periods (.), and must start with a | + | | | letter or digit. | + | | | - When **type** is set to **PATH**, | + | | | the value can contain a maximum of | + | | | 128 characters. When | + | | | **compare_type** is set to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:\| \\/()[]{} | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a forwarding rule + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules/67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "rule": { + "compare_type": "EQUAL_TO", + "provisioning_status": "ACTIVE", + "admin_state_up": true, + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "invert": false, + "value": "/index.html", + "key": null, + "type": "PATH", + "id": "67d8a8fa-b0dd-4bd4-a85b-671db19b2ef3" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/elb_zq_zg_0004.html b/elb/api-ref/elb_zq_zg_0004.html new file mode 100644 index 000000000..654ed2d54 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0004.html @@ -0,0 +1,279 @@ + + +

      Updating a Forwarding Rule

      +

      Function

      This API is used to update a forwarding rule. You can change the mode that how traffic is distributed by updating the forwarding rule.

      + +

      URI

      PUT /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}

      + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      l7rule_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + +

      Request

      + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      rule

      +

      Yes

      +

      Object

      +

      Specifies the forwarding rule. For details, see Table 3.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 rule parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      compare_type

      +

      No

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved, and the default value is true.

      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      No

      +

      String

      +

      Specifies the value of the match content. The value cannot contain spaces.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      rule

      +

      Object

      +

      Specifies the forwarding rule. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 rule parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding rule ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding rule is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      type

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value can be one of the following:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      compare_type

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      value

      +

      String

      +

      Specifies the value of the match content.

      +

      The value contains a maximum of 128 characters.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:| \/()[]{}
      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding rule.

      +
      + + +

      Example Request

      • Example request: Updating a forwarding rule
        PUT https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules/c6f457b8-bf6f-45d7-be5c-a3226945b7b1
        +
        +{
        +    "rule": {
        +        "compare_type": "STARTS_WITH", 
        +        "value": "/ccc.html"
        +    }
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "rule": {
        +        "compare_type": "STARTS_WITH", 
        +        "provisioning_status": "ACTIVE",
        +        "admin_state_up": true, 
        +        "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        + 
        +        "invert": false, 
        +        "value": "/ccc.html", 
        +        "key": null, 
        +        "type": "PATH", 
        +        "id": "c6f457b8-bf6f-45d7-be5c-a3226945b7b1"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/elb_zq_zg_0004.rst b/elb/api-ref/elb_zq_zg_0004.rst new file mode 100644 index 000000000..96f2180ec --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0004.rst @@ -0,0 +1,278 @@ +Updating a Forwarding Rule +========================== + +Function +^^^^^^^^ + +This API is used to update a forwarding rule. You can change the mode that how traffic is distributed by updating the forwarding rule. + +URI +^^^ + +PUT /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + l7rule_id Yes String Specifies the forwarding rule ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | rule | Yes | Object | Specifies the forwarding rule. For details, see `Table | + | | | | 3 <#elb_zq_zg_0004__en-us_topic_0116649237_table01635270010>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 3** **rule** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | compare_type | No | String | Specifies the match mode. | + | | | | The options are as follows: | + | | | | | + | | | | When **type** is set to | + | | | | **HOST_NAME**, the value of | + | | | | this parameter can only be | + | | | | the following: | + | | | | | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + | | | | | + | | | | When **type** is set to | + | | | | **PATH**, the value of this | + | | | | parameter can be one of the | + | | | | following: | + | | | | | + | | | | - **REGEX**: indicates | + | | | | regular expression | + | | | | match. | + | | | | - **STARTS_WITH**: | + | | | | indicates prefix match. | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. The default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match content. The default | + | | | | value is **null**. | + | | | | | + | | | | This parameter is reserved. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | No | String | Specifies the value of the | + | | | | match content. The value | + | | | | cannot contain spaces. | + | | | | | + | | | | The value contains a | + | | | | maximum of 128 characters. | + | | | | | + | | | | - When **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain a maximum of | + | | | | 100 characters that | + | | | | contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.), and must | + | | | | start with a letter or | + | | | | digit. | + | | | | - When **type** is set to | + | | | | **PATH**, the value can | + | | | | contain a maximum of 128 | + | | | | characters. When | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \_~';@^-%#&$.*+?,=!:\| | + | | | | \\/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | rule | Object | Specifies the forwarding rule. For details, see `Table | + | | | 5 <#elb_zq_zg_0004__en-us_topic_0116649237_table08840481403>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **rule** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding rule ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding rule is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding rule. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the match type of a | + | | | forwarding rule. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **HOST_NAME**: matches the domain | + | | | name in the request. | + | | | - **PATH**: matches the path in the | + | | | request. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | compare_type | String | Specifies the match mode. The options | + | | | are as follows: | + | | | | + | | | When **type** is set to | + | | | **HOST_NAME**, the value of this | + | | | parameter can only be the following: | + | | | | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + | | | | + | | | When **type** is set to **PATH**, the | + | | | value of this parameter can be one of | + | | | the following: | + | | | | + | | | - **REGEX**: indicates regular | + | | | expression match. | + | | | - **STARTS_WITH**: indicates prefix | + | | | match. | + | | | - **EQUAL_TO**: indicates exact | + | | | match. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | invert | Boolean | Specifies whether reverse matching is | + | | | supported. | + | | | | + | | | The value can be **true** or | + | | | **false**. The default value is | + | | | **false**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | key | String | Specifies the key of the match | + | | | content. The default value is | + | | | **null**. | + | | | | + | | | This parameter is reserved. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | value | String | Specifies the value of the match | + | | | content. | + | | | | + | | | The value contains a maximum of 128 | + | | | characters. | + | | | | + | | | - When **type** is set to | + | | | **HOST_NAME**, the value can | + | | | contain a maximum of 100 | + | | | characters that contain only | + | | | letters, digits, hyphens (-), and | + | | | periods (.), and must start with a | + | | | letter or digit. | + | | | - When **type** is set to **PATH**, | + | | | the value can contain a maximum of | + | | | 128 characters. When | + | | | **compare_type** is set to | + | | | **STARTS_WITH** or **EQUAL_TO**, | + | | | the value must start with a slash | + | | | (/) and can contain only letters, | + | | | digits, and special characters | + | | | \_~';@^-%#&$.*+?,=!:\| \\/()[]{} | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding rule. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating a forwarding rule + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules/c6f457b8-bf6f-45d7-be5c-a3226945b7b1 + + { + "rule": { + "compare_type": "STARTS_WITH", + "value": "/ccc.html" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "rule": { + "compare_type": "STARTS_WITH", + "provisioning_status": "ACTIVE", + "admin_state_up": true, + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + + "invert": false, + "value": "/ccc.html", + "key": null, + "type": "PATH", + "id": "c6f457b8-bf6f-45d7-be5c-a3226945b7b1" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/elb_zq_zg_0005.html b/elb/api-ref/elb_zq_zg_0005.html new file mode 100644 index 000000000..249409782 --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0005.html @@ -0,0 +1,58 @@ + + +

      Deleting a Forwarding Rule

      +

      Function

      This API is used to delete a specific forwarding rule.

      + +

      URI

      DELETE /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}

      + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      l7rule_id

      +

      Yes

      +

      String

      +

      Specifies the forwarding rule ID.

      +
      + + +

      Request

      None

      + +

      Response

      None

      + +

      Example Request

      • Example request: Deleting a forwarding rule
        DELETE https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules/c6f457b8-bf6f-45d7-be5c-a3226945b7b1
        +
      + +

      Example Response

      • Example response

        None

        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Rule + + + diff --git a/elb/api-ref/elb_zq_zg_0005.rst b/elb/api-ref/elb_zq_zg_0005.rst new file mode 100644 index 000000000..d985d06dc --- /dev/null +++ b/elb/api-ref/elb_zq_zg_0005.rst @@ -0,0 +1,54 @@ +Deleting a Forwarding Rule +========================== + +Function +^^^^^^^^ + +This API is used to delete a specific forwarding rule. + +URI +^^^ + +DELETE /v2.0/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id} + +.. table:: **Table 1** Parameter description + + =========== ========= ====== =================================== + Parameter Mandatory Type Description + =========== ========= ====== =================================== + l7policy_id Yes String Specifies the forwarding policy ID. + l7rule_id Yes String Specifies the forwarding rule ID. + =========== ========= ====== =================================== + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a forwarding rule + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/l7policies/5ae0e1e7-5f0f-47a1-b39f-5d4c428a1586/rules/c6f457b8-bf6f-45d7-be5c-a3226945b7b1 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + None + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Rule `__ diff --git a/elb/api-ref/elb_zq_zs_0000.html b/elb/api-ref/elb_zq_zs_0000.html new file mode 100644 index 000000000..4a7e7c3aa --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0000.html @@ -0,0 +1,23 @@ + + +

      Certificate

      + + + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/elb_zq_zs_0000.rst b/elb/api-ref/elb_zq_zs_0000.rst new file mode 100644 index 000000000..c8e6bb6a1 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0000.rst @@ -0,0 +1,10 @@ +Certificate +=========== + +- `Creating a Certificate `__ +- `Querying Certificates `__ +- `Querying Details of a Certificate `__ +- `Updating a Certificate `__ +- `Deleting a Certificate `__ + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/elb_zq_zs_0001.html b/elb/api-ref/elb_zq_zs_0001.html new file mode 100644 index 000000000..940b870bb --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0001.html @@ -0,0 +1,256 @@ + + +

      Creating a Certificate

      +

      Function

      This API is used to create a certificate. After a certificate is bound to a listener, the load balancer authenticates the client using this certificate, and backend servers can establish secure and reliable HTTP connections with the client.

      + +

      URI

      POST /v2.0/lbaas/certificates

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the certificate is used.

      +

      +

      The value must be the same as the value of project_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is reserved, and the default value is true.

      +

      name

      +

      No

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      type

      +

      No

      +

      String

      +

      Specifies the certificate type. The default value is server.

      +The value can be one of the following:
      • server: indicates the server certificate.
      • client: indicates the CA certificate.
      + +

      domain

      +

      No

      +

      String

      +

      Specifies the domain name associated with the server certificate. The default value is null.

      +

      The value contains a maximum of 100 characters.

      +

      The value can be one of the following:

      +
      • A common domain name contains 0 to 100 characters and consists of several labels separated by dots (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit.
      • In addition to the requirements for common domain names, a wildcard domain name can start with an asterisk (*).
      + NOTE:

      This parameter is valid only when type is set to server.

      + +

      private_key

      +

      No

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.
      +

      certificate

      +

      Yes

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required.

      +

      The public key is in PEM format.

      +
      + + +

      Response

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the certificate ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the certificate is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      type

      +

      String

      +

      Specifies the certificate type.

      +The value can be one of the following:
      • server: indicates the server certificate.
      • client: indicates the CA certificate.
      + +

      domain

      +

      String

      +

      Specifies the domain name associated with the server certificate.

      +

      The value contains a maximum of 100 characters.

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate in PEM format.

      +

      certificate

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required. Both types of certificates are in PEM format.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      create_time

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      update_time

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +
      + + +

      Example Request

      • Example request: Creating a certificate
        POST https://{Endpoint}/v2.0/lbaas/certificates
        +
        +{ 
        +    "name": "https_certificate", 
        +    "description": "description for certificate", 
        +    "type": "server", 
        +    "domain": "www.elb.com", 
        +    "private_key":  
        +"-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", 
        +    "certificate":  
        +"-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----" 
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "domain": "www.elb.com",
        +    "expire_time": "2045-11-17 13:25:47",
        +    "update_time": "2017-12-04 06:49:13",
        +    "create_time": "2017-12-04 06:49:13",
        +    "id": "3d8a7a02f87a40ed931b719edfe75451",
        +    "admin_state_up": true,
        +    "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
        +    "tenant_id": "930600df07ac4f66964004041bd3deaf",
        +    "type": "server",
        +    "certificate": "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
        +    "name": "https_certificate",
        +    "description": "description for certificate"
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_zq_zs_0001.rst b/elb/api-ref/elb_zq_zs_0001.rst new file mode 100644 index 000000000..83dd3f8a3 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0001.rst @@ -0,0 +1,265 @@ +Creating a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to create a certificate. After a certificate is bound to a listener, the load balancer authenticates the client using this certificate, and backend servers can establish secure and reliable HTTP connections with the client. + +URI +^^^ + +POST /v2.0/lbaas/certificates + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | certificate is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the certificate. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the certificate | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the certificate | + | | | | type. The default value is | + | | | | **server**. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **server**: indicates | + | | | | the server certificate. | + | | | | - **client**: indicates | + | | | | the CA certificate. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | String | Specifies the domain name | + | | | | associated with the server | + | | | | certificate. The default | + | | | | value is **null**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 100 characters. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - A common domain name | + | | | | contains 0 to 100 | + | | | | characters and consists | + | | | | of several labels | + | | | | separated by dots (.). | + | | | | Each label can contain a | + | | | | maximum of 63 | + | | | | characters, including | + | | | | letters, digits, and | + | | | | hyphens (-), and must | + | | | | start and end with a | + | | | | letter or digit. | + | | | | - In addition to the | + | | | | requirements for common | + | | | | domain names, a wildcard | + | | | | domain name can start | + | | | | with an asterisk (*). | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **type** is set | + | | | | to **server**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | private_key | No | String | Specifies the private key | + | | | | of the server certificate. | + | | | | The value must be PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter will be | + | | | | ignored if **type** is | + | | | | set to **client**. A CA | + | | | | server can still be | + | | | | created and used | + | | | | normally. This parameter | + | | | | will be left blank even | + | | | | if you enter a private | + | | | | key that is not PEM | + | | | | encoded. | + | | | | - This parameter is valid | + | | | | and mandatory only when | + | | | | **type** is set to | + | | | | **server**. If you enter | + | | | | an invalid private key, | + | | | | an error is returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate | Yes | String | Specifies the public key of | + | | | | the server certificate or | + | | | | CA certificate used to | + | | | | authenticate the client. | + | | | | The value of parameter | + | | | | **type** determines whether | + | | | | a public key or CA | + | | | | certificate is required. | + | | | | | + | | | | The public key is in PEM | + | | | | format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the certificate is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **server**: indicates the server | + | | | certificate. | + | | | - **client**: indicates the CA | + | | | certificate. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain name associated | + | | | with the server certificate. | + | | | | + | | | The value contains a maximum of 100 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the public key of the | + | | | server certificate or CA certificate | + | | | used to authenticate the client. The | + | | | value of parameter **type** | + | | | determines whether a public key or CA | + | | | certificate is required. Both types | + | | | of certificates are in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the | + | | | certificate was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | update_time | String | Specifies the time when the | + | | | certificate was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Creating a certificate + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/certificates + + { + "name": "https_certificate", + "description": "description for certificate", + "type": "server", + "domain": "www.elb.com", + "private_key": + "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "certificate": + "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----" + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "domain": "www.elb.com", + "expire_time": "2045-11-17 13:25:47", + "update_time": "2017-12-04 06:49:13", + "create_time": "2017-12-04 06:49:13", + "id": "3d8a7a02f87a40ed931b719edfe75451", + "admin_state_up": true, + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "tenant_id": "930600df07ac4f66964004041bd3deaf", + "type": "server", + "certificate": "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "name": "https_certificate", + "description": "description for certificate" + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_zq_zs_0002.html b/elb/api-ref/elb_zq_zs_0002.html new file mode 100644 index 000000000..50623a416 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0002.html @@ -0,0 +1,479 @@ + + +

      Querying Certificates

      +

      Function

      This API is used to query all the certificates. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied.

      + +

      Constraints

      Parameters marker, limit, and page_reverse are used for pagination query. Parameters marker and page_reverse take effect only when they are used together with parameter limit.

      + +

      URI

      GET /v2.0/lbaas/certificates

      + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the certificate from which pagination query starts, that is, the ID of the last certificate on the previous page.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of certificates on each page. If this parameter is not set, all certificates are queried by default.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the certificate ID.

      +

      name

      +

      No

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      type

      +

      No

      +

      String

      +

      Specifies the certificate type. The default value is server.

      +The value can be one of the following:
      • server: indicates the server certificate.
      • client: indicates the CA certificate.
      + +

      domain

      +

      No

      +

      String

      +

      Specifies the domain name associated with the server certificate. The default value is null.

      +

      The value contains a maximum of 100 characters.

      +

      The value can be one of the following:

      +
      • A common domain name contains 0 to 100 characters and consists of several labels separated by dots (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit.
      • In addition to the requirements for common domain names, a wildcard domain name can start with an asterisk (*).
      • This parameter is valid only when type is set to server.
      +

      private_key

      +

      No

      +

      String

      +
      Specifies the private key of the server certificate. The value must be PEM encoded.
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.
      +

      certificate

      +

      No

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required. Both types of certificates are in PEM format.

      +

      create_time

      +

      No

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      The UTC time is in YYYY-MM-DD HH:MM:SS format.

      +

      update_time

      +

      No

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      The UTC time is in YYYY-MM-DD HH:MM:SS format.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      certificates

      +

      Array

      +

      Lists the certificates. For details, see Table 3.

      +

      instance_num

      +

      Integer

      +

      Specifies the number of certificates.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 certificates parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the certificate ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the certificate is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      type

      +

      String

      +

      Specifies the certificate type.

      +The value can be one of the following:
      • server: indicates the server certificate.
      • client: indicates the CA certificate.
      + +

      domain

      +

      String

      +

      Specifies the domain name associated with the server certificate.

      +

      The value contains a maximum of 100 characters.

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate in PEM format.

      +

      certificate

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required. Both types of certificates are in PEM format.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      The UTC time is in YYYY-MM-DD HH:MM:SS format.

      +

      create_time

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      The UTC time is in YYYY-MM-DD HH:MM:SS format.

      +

      update_time

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      The UTC time is in YYYY-MM-DD HH:MM:SS format.

      +
      + + +

      Example Request

      • Request example 1: Querying all certificates
        GET https://{Endpoint}/v2.0/lbaas/certificates
        +
      +
      • Example 2: Querying a certificate whose ID is ef4d341365754a959556576501791b19 or ed40e8ea9957488ea82de025e35b74c0
        GET https://{Endpoint}/v2.0/lbaas/certificates?id=ef4d341365754a959556576501791b19&id=ed40e8ea9957488ea82de025e35b74c0
        +
      + +

      Example Response

      • Example response 1
        {
        +    "certificates": [
        +        {
        +            "certificate": "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
        +            "create_time": "2017-02-25 09:35:27",
        +            "expire_time": "2045-11-17 13:25:47",
        +            "description": "description for certificate",
        +            "domain": "www.elb.com",
        +            "id": "23ef9aad4ecb463580476d324a6c71af",
        +            "admin_state_up": true,
        +            "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +            "name": "https_certificate",
        +            "private_key": 
        +"-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----",
        +            "type": "server",
        +            "update_time": "2017-02-25 09:35:27"
        +        }
        +    ],
        +    "instance_num": 1
        +}
        +
      +
      • Example response 2
        {
        +    "certificates": [
        +        {
        +            "description": "Push by SSL Certificate Manager", 
        +            "domain": null, 
        +            "id": "ed40e8ea9957488ea82de025e35b74c0", 
        +            "name": "certForSonar9", 
        +            "certificate": "-----BEGIN CERTIFICATE-----
        +MIIFizCCBHOgAwIBAgIQBlQycV3bWsVsCttvv5rgRjANBgkqhkiG9w0BAQsFADBu
        +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
        +d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
        +RFYgVExTIENBIC0gRzEwHhcNMTgwNzEwMDAwMDAwWhcNMTkwNzEwMTIwMDAwWjAU
        +MRIwEAYDVQQDEwlpY2UxMjMudGswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
        +AoIBAQCtTDlQMoAvyInR6X1dihhNwbdGesbMW6NZX7ffpj9XrB3KCqqlxzI4VmH9
        +PntvrpLJNeolgLqDZZc4zKbUkmqxY1dvGDs41coKzdtc9Ig23GVK48wfesnk5r50
        +afyU52R1JlSHDOhiDhHOSyhrOzc2GreLrByWKFUaAue6rTnyMbzQaSPtrTAqsURZ
        +wcmJ6R3A6JwokOgxXBSu41ufPQiFkMgxygKxEBLzIJLjRqCXQHYoxbsTyolb6jwp
        +w4H6vcRIEcFAgs98ApWRoEKjy7eOP3UUm05F+OkOvXhrlxEqIPm/rlwE0PmVlmm9
        +DgBafYb3xT/MtT2VRSfCJQHgIcsdAgMBAAGjggJ9MIICeTAfBgNVHSMEGDAWgBRV
        +dE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQUEFavzYXBNbIHBchbaKcUKad+
        +qCEwIwYDVR0RBBwwGoIJaWNlMTIzLnRrgg13d3cuaWNlMTIzLnRrMA4GA1UdDwEB
        +/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTAYDVR0gBEUw
        +QzA3BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl
        +cnQuY29tL0NQUzAIBgZngQwBAgEwgYEGCCsGAQUFBwEBBHUwczAlBggrBgEFBQcw
        +AYYZaHR0cDovL29jc3AyLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDov
        +L2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFND
        +QS1HMS5jcnQwCQYDVR0TBAIwADCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AKS5
        +CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABZIOnLCIAAAQDAEcwRQIh
        +AJX6gCXNggPdfOFdDtZPzlYr64TTrR/+b9QKKhyJ2EjBAiAWgu3BG2QK9tWQXpUN
        +IFadc0nvqmDovabg5nmRMan2mQB2AId1v+dZfPiMQ5lfvfNu/1aNR1Y2/0q1YMG0
        +6v9eoIMPAAABZIOnLQEAAAQDAEcwRQIhAJVRe/7n88dD6KdhNrd4LdFjGARQNmta
        +Y/K2dFDOXPSfAiBOLrWW8unHOL25RWHJU7Ost3XkNhQYtrLDJrnzo/9kZzANBgkq
        +hkiG9w0BAQsFAAOCAQEAeqtX9cHmj4OnNAk0IGmF3nKS/u/UgGsY4EJfXwQY2bTZ
        +PCkqxQOA6HEx59vJ+UilTojrNDi0WskRm/8SKBHtmRwzwX3ile8KiR6fFfQhPUtV
        +XHZcTfAFo47c7axqon8vumMlEv1PxVImivQ446K7z3kGm34dhMYxS4Gz2gTl8IKt
        +90OegejuhbAs5Wlvp1BK8HlYIb5+mw+cgkUC9KTALs5qVbWzogb0bS20KaYarGcu
        +otcZAOMeJdBFWnpzhr1fxmjaNY4u4hrgPZSTU/iBjdHapoza3zAFfxysmGYqs9dR
        +jFyxZeR4scz8GqSTFviNdH9jvtDJkdAC5hfMaB811Q==
        +-----END CERTIFICATE-----
        +-----BEGIN CERTIFICATE-----
        +MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
        +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
        +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
        +QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
        +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
        +b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
        +MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
        +oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
        +lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
        +pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
        +yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
        +wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
        +pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
        +BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
        +HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
        +AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
        +Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
        +Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
        +/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
        +MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
        +SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
        +M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
        +4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
        +sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
        +rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
        +-----END CERTIFICATE-----", 
        +            "type": "server", 
        +            "create_time": "2019-03-03 16:32:30", 
        +            "private_key": "-----BEGIN RSA PRIVATE KEY-----
        +MIIEpQIBAAKCAQEArUw5UDKAL8iJ0el9XYoYTcG3RnrGzFujWV+336Y/V6wdygqq
        +pccyOFZh/T57b66SyTXqJYC6g2WXOMym1JJqsWNXbxg7ONXKCs3bXPSINtxlSuPM
        +H3rJ5Oa+dGn8lOdkdSZUhwzoYg4Rzksoazs3Nhq3i6wclihVGgLnuq058jG80Gkj
        +7a0wKrFEWcHJiekdwOicKJDoMVwUruNbnz0IhZDIMcoCsRAS8yCS40agl0B2KMW7
        +E8qJW+o8KcOB+r3ESBHBQILPfAKVkaBCo8u3jj91FJtORfjpDr14a5cRKiD5v65c
        +BND5lZZpvQ4AWn2G98U/zLU9lUUnwiUB4CHLHQIDAQABAoIBAGs5rISompP2OwA8
        +virwVRVXdPUQ5oxvbuTPys+A59RxVIU8kFW+qJ4fJMYysOFrXLtOtq+5tK20YBru
        +1ZLVfVqAowrELXB/J2ID+WTMkLORLsNlq1kW+nC9LL6PDY98lLW/n7FoFSkGl5HT
        +AxFGNGUvpr2vIojuL6nGfmcM47uscJ9aP6IJxr4p70dhPVjZBdnMnXYwRkB3dZt/
        +E0B/p8J5i3oo5Rucv4DOfB+01wXGAVyx5/zce+NZdhyrivkj3hHV55SxGhVWzWhj
        +a3dAlbpKwYgfILj0inRdJYmIjBdbGb2HFix7+ncBg8B2oerJXC6/fANwRGu5/LZU
        +5xuPVWkCgYEA6an8TY1unIGLYL5aBJ16Tx4usqMyTXr/T4zkQyftRPMt+ZuxVQHl
        +GHsg7XvLFNd04MBZXtkZXaYVcpOm7OUYcl0i9ZAkWXXoXcBtn1Oom3gz/7RjAUnp
        +k+myvxCUSQ2JSz4u3QBtyPVyYNyBFXrKqdKfcYyG85+yQVHBNMVrdvMCgYEAvd0C
        +hFpm83ha+VQp+9XN1DYZNUyqhibj/E3X9jAn+gDbzlKxw/D9en2RIlQYUrl8+il8
        +QKk4cfOxJYStQfxptz8QBPVeLajDN67zJ0Rk8AB50HHHcNSU8uFkaO8KxsyVjbLS
        ++JltqfJAEraXLinbp1Fxcg9DsQdMd6cw2DmrWa8CgYEA1UjJOUzo80i4HYWDC4Vn
        +OEK3o22do+WqmEVlsfsG9BH5HEdGVe7V3EO/6aY+1/ZXBDPvH8mRAs9v8lbeXow7
        +hWCIYZfB5jre8HyOU4l8dPUCmdxhJrL913rRIuASSqBlet32ztnuXCnWzp1X4nBj
        +/yF3UqFQKZ7SihcDAZVWo4sCgYEAj7al/BcNzIcynX2mldhdh583b4/Ll+YCNm2Z
        +5eDHscZKmx8fLcjRpZE8dXagPqXmwtj6E1vDvQWP9m06VDNCthFHB+nO0tLmidSk
        +evmbScuiaTRmmbJf2IThY0hlqNsc7PgKF2DTkIstEr0hLDFE8Z6FN6f0PiDfMcbd
        +Ax6L5EMCgYEA0+qhuQftKQkGdbXX9r3H8N0TVh27ByfL3kKVYy0dUJMvsOAq6d97
        +8mEhYhrYt88f1sFsPM7G09XpCcBXwiKxw8+CDt9auD4r1snBnILpqMPmanF4UDXH
        +L7s+4it+nIQy24P6g1PihtzsM+HD2UCErBiYUJdRK8Q9GGHdZojFk9Y=
        +-----END RSA PRIVATE KEY-----
        +", 
        +            "update_time": "2019-03-03 16:32:30", 
        +            "admin_state_up": true, 
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308", 
        +            "expire_time": "2019-07-10 12:00:00"
        +        }, 
        +        {
        +            "description": null, 
        +            "domain": "www.elb.com", 
        +            "id": "ef4d341365754a959556576501791b19", 
        +            "name": "certificate_28b824c8bbee419992fb7974b2911c72", 
        +            "certificate": "-----BEGIN CERTIFICATE-----
        +MIIDpTCCAo2gAwIBAgIJAKdmmOBYnFvoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
        +BAYTAnh4MQswCQYDVQQIDAJ4eDELMAkGA1UEBwwCeHgxCzAJBgNVBAoMAnh4MQsw
        +CQYDVQQLDAJ4eDELMAkGA1UEAwwCeHgxGTAXBgkqhkiG9w0BCQEWCnh4QDE2My5j
        +b20wHhcNMTcxMjA0MDM0MjQ5WhcNMjAxMjAzMDM0MjQ5WjBpMQswCQYDVQQGEwJ4
        +eDELMAkGA1UECAwCeHgxCzAJBgNVBAcMAnh4MQswCQYDVQQKDAJ4eDELMAkGA1UE
        +CwwCeHgxCzAJBgNVBAMMAnh4MRkwFwYJKoZIhvcNAQkBFgp4eEAxNjMuY29tMIIB
        +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN
        +2s8tZ/6LC3X82fajpVsYqF1xqEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYld
        +iE6Vp8HH5BSKaCWKVg8lGWg1UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb
        +3iyNBmiZ8aZhGw2pI1YwR+15MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dz
        +Q8z1JXWdg8/9Zx7Ktvgwu5PQM3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5
        +mf2DPkVgM08XAgaLJcLigwD513koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwID
        +AQABo1AwTjAdBgNVHQ4EFgQUo5A2tIu+bcUfvGTD7wmEkhXKFjcwHwYDVR0jBBgw
        +FoAUo5A2tIu+bcUfvGTD7wmEkhXKFjcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
        +AQsFAAOCAQEAWJ2rS6Mvlqk3GfEpboezx2J3X7l1z8Sxoqg6ntwB+rezvK3mc9H0
        +83qcVeUcoH+0A0lSHyFN4FvRQL6X1hEheHarYwJK4agb231vb5erasuGO463eYEG
        +r4SfTuOm7SyiV2xxbaBKrXJtpBp4WLL/s+LF+nklKjaOxkmxUX0sM4CTA7uFJypY
        +c8Tdr8lDDNqoUtMD8BrUCJi+7lmMXRcC3Qi3oZJW76ja+kZA5mKVFPd1ATih8TbA
        +i34R7EQDtFeiSvBdeKRsPp8c0KT8H1B4lXNkkCQs2WX5p4lm99+ZtLD4glw8x6Ic
        +i1YhgnQbn5E0hz55OLu5jvOkKQjPCW+8Kg==
        +-----END CERTIFICATE-----", 
        +            "type": "server", 
        +            "create_time": "2018-09-28 03:00:47", 
        +            "private_key": "-----BEGIN RSA PRIVATE KEY-----
        +MIIEowIBAAKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN2s8tZ/6LC3X82fajpVsYqF1x
        +qEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYldiE6Vp8HH5BSKaCWKVg8lGWg1
        +UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb3iyNBmiZ8aZhGw2pI1YwR+15
        +MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dzQ8z1JXWdg8/9Zx7Ktvgwu5PQ
        +M3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5mf2DPkVgM08XAgaLJcLigwD5
        +13koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwIDAQABAoIBACU9S5fjD9/jTMXA
        +DRs08A+gGgZUxLn0xk+NAPX3LyB1tfdkCaFB8BccLzO6h3KZuwQOBPv6jkdvEDbx
        +Nwyw3eA/9GJsIvKiHc0rejdvyPymaw9I8MA7NbXHaJrY7KpqDQyk6sx+aUTcy5jg
        +iMXLWdwXYHhJ/1HVOo603oZyiS6HZeYU089NDUcX+1SJi3e5Ke0gPVXEqCq1O11/
        +rh24bMxnwZo4PKBWdcMBN5Zf/4ij9vrZE+fFzW7vGBO48A5lvZxWU2U5t/OZQRtN
        +1uLOHmMFa0FIF2aWbTVfwdUWAFsvAOkHj9VV8BXOUwKOUuEktdkfAlvrxmsFrO/H
        +yDeYYPkCgYEA/S55CBbR0sMXpSZ56uRn8JHApZJhgkgvYr+FqDlJq/e92nAzf01P
        +RoEBUajwrnf1ycevN/SDfbtWzq2XJGqhWdJmtpO16b7KBsC6BdRcH6dnOYh31jgA
        +vABMIP3wzI4zSVTyxRE8LDuboytF1mSCeV5tHYPQTZNwrplDnLQhywcCgYEAw8Yc
        +Uk/eiFr3hfH/ZohMfV5p82Qp7DNIGRzw8YtVG/3+vNXrAXW1VhugNhQY6L+zLtJC
        +aKn84ooup0m3YCg0hvINqJuvzfsuzQgtjTXyaE0cEwsjUusOmiuj09vVx/3U7siK
        +Hdjd2ICPCvQ6Q8tdi8jV320gMs05AtaBkZdsiWUCgYEAtLw4Kk4f+xTKDFsrLUNf
        +75wcqhWVBiwBp7yQ7UX4EYsJPKZcHMRTk0EEcAbpyaJZE3I44vjp5ReXIHNLMfPs
        +uvI34J4Rfot0LN3n7cFrAi2+wpNo+MOBwrNzpRmijGP2uKKrq4JiMjFbKV/6utGF
        +Up7VxfwS904JYpqGaZctiIECgYA1A6nZtF0riY6ry/uAdXpZHL8ONNqRZtWoT0kD
        +79otSVu5ISiRbaGcXsDExC52oKrSDAgFtbqQUiEOFg09UcXfoR6HwRkba2CiDwve
        +yHQLQI5Qrdxz8Mk0gIrNrSM4FAmcW9vi9z4kCbQyoC5C+4gqeUlJRpDIkQBWP2Y4
        +2ct/bQKBgHv8qCsQTZphOxc31BJPa2xVhuv18cEU3XLUrVfUZ/1f43JhLp7gynS2
        +ep++LKUi9D0VGXY8bqvfJjbECoCeu85vl8NpCXwe/LoVoIn+7KaVIZMwqoGMfgNl
        +nEqm7HWkNxHhf8A6En/IjleuddS1sf9e/x+TJN1Xhnt9W6pe7Fk1
        +-----END RSA PRIVATE KEY-----", 
        +            "update_time": "2018-09-28 03:00:47", 
        +            "admin_state_up": true, 
        +            "tenant_id": "601240b9c5c94059b63d484c92cfe308", 
        +            "expire_time": "2020-12-03 03:42:49"
        +        }
        +    ], 
        +    "instance_num": 2
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_zq_zs_0002.rst b/elb/api-ref/elb_zq_zs_0002.rst new file mode 100644 index 000000000..718821311 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0002.rst @@ -0,0 +1,480 @@ +Querying Certificates +===================== + +Function +^^^^^^^^ + +This API is used to query all the certificates. Filter query and pagination query are supported. Unless otherwise specified, exact match is applied. + +Constraints +^^^^^^^^^^^ + +Parameters **marker**, **limit**, and **page_reverse** are used for pagination query. Parameters **marker** and **page_reverse** take effect only when they are used together with parameter **limit**. + +URI +^^^ + +GET /v2.0/lbaas/certificates + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | certificate from which | + | | | | pagination query starts, | + | | | | that is, the ID of the last | + | | | | certificate on the previous | + | | | | page. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | certificates on each page. | + | | | | If this parameter is not | + | | | | set, all certificates are | + | | | | queried by default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the certificate | + | | | | ID. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the certificate | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | No | String | Specifies the certificate | + | | | | type. The default value is | + | | | | **server**. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **server**: indicates | + | | | | the server certificate. | + | | | | - **client**: indicates | + | | | | the CA certificate. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | String | Specifies the domain name | + | | | | associated with the server | + | | | | certificate. The default | + | | | | value is **null**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 100 characters. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - A common domain name | + | | | | contains 0 to 100 | + | | | | characters and consists | + | | | | of several labels | + | | | | separated by dots (.). | + | | | | Each label can contain a | + | | | | maximum of 63 | + | | | | characters, including | + | | | | letters, digits, and | + | | | | hyphens (-), and must | + | | | | start and end with a | + | | | | letter or digit. | + | | | | - In addition to the | + | | | | requirements for common | + | | | | domain names, a wildcard | + | | | | domain name can start | + | | | | with an asterisk (*). | + | | | | - This parameter is valid | + | | | | only when **type** is | + | | | | set to **server**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | private_key | No | String | Specifies the private key | + | | | | of the server certificate. | + | | | | The value must be PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter will be | + | | | | ignored if **type** is | + | | | | set to **client**. A CA | + | | | | server can still be | + | | | | created and used | + | | | | normally. This parameter | + | | | | will be left blank even | + | | | | if you enter a private | + | | | | key that is not PEM | + | | | | encoded. | + | | | | - This parameter is valid | + | | | | and mandatory only when | + | | | | **type** is set to | + | | | | **server**. If you enter | + | | | | an invalid private key, | + | | | | an error is returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate | No | String | Specifies the public key of | + | | | | the server certificate or | + | | | | CA certificate used to | + | | | | authenticate the client. | + | | | | The value of parameter | + | | | | **type** determines whether | + | | | | a public key or CA | + | | | | certificate is required. | + | | | | Both types of certificates | + | | | | are in PEM format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | create_time | No | String | Specifies the time when the | + | | | | certificate was created. | + | | | | | + | | | | The UTC time is in | + | | | | *YYYY-MM-DD HH:MM:SS* | + | | | | format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | update_time | No | String | Specifies the time when the | + | | | | certificate was updated. | + | | | | | + | | | | The UTC time is in | + | | | | *YYYY-MM-DD HH:MM:SS* | + | | | | format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Parameter description + + +--------------+---------+-------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +==============+=========+===========================================================================================+ + | certificates | Array | Lists the certificates. For details, see `Table | + | | | 3 <#elb_zq_zs_0002__en-us_topic_0096561582_table10415837566>`__. | + +--------------+---------+-------------------------------------------------------------------------------------------+ + | instance_num | Integer | Specifies the number of certificates. | + +--------------+---------+-------------------------------------------------------------------------------------------+ + +.. table:: **Table 3** **certificates** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the certificate is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **server**: indicates the server | + | | | certificate. | + | | | - **client**: indicates the CA | + | | | certificate. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain name associated | + | | | with the server certificate. | + | | | | + | | | The value contains a maximum of 100 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the public key of the | + | | | server certificate or CA certificate | + | | | used to authenticate the client. The | + | | | value of parameter **type** | + | | | determines whether a public key or CA | + | | | certificate is required. Both types | + | | | of certificates are in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + | | | | + | | | The UTC time is in *YYYY-MM-DD | + | | | HH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the | + | | | certificate was created. | + | | | | + | | | The UTC time is in *YYYY-MM-DD | + | | | HH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | update_time | String | Specifies the time when the | + | | | certificate was updated. | + | | | | + | | | The UTC time is in *YYYY-MM-DD | + | | | HH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Request example 1: Querying all certificates + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/certificates + +- Example 2: Querying a certificate whose ID is ef4d341365754a959556576501791b19 or ed40e8ea9957488ea82de025e35b74c0 + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/certificates?id=ef4d341365754a959556576501791b19&id=ed40e8ea9957488ea82de025e35b74c0 + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "certificates": [ + { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "create_time": "2017-02-25 09:35:27", + "expire_time": "2045-11-17 13:25:47", + "description": "description for certificate", + "domain": "www.elb.com", + "id": "23ef9aad4ecb463580476d324a6c71af", + "admin_state_up": true, + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + "name": "https_certificate", + "private_key": + "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd\n3fy+1rCUwzOp9LSjtJYf4ege\n-----END PRIVATE KEY-----", + "type": "server", + "update_time": "2017-02-25 09:35:27" + } + ], + "instance_num": 1 + } + +- Example response 2 + + .. code:: screen + + { + "certificates": [ + { + "description": "Push by SSL Certificate Manager", + "domain": null, + "id": "ed40e8ea9957488ea82de025e35b74c0", + "name": "certForSonar9", + "certificate": "-----BEGIN CERTIFICATE----- + MIIFizCCBHOgAwIBAgIQBlQycV3bWsVsCttvv5rgRjANBgkqhkiG9w0BAQsFADBu + MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 + d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg + RFYgVExTIENBIC0gRzEwHhcNMTgwNzEwMDAwMDAwWhcNMTkwNzEwMTIwMDAwWjAU + MRIwEAYDVQQDEwlpY2UxMjMudGswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK + AoIBAQCtTDlQMoAvyInR6X1dihhNwbdGesbMW6NZX7ffpj9XrB3KCqqlxzI4VmH9 + PntvrpLJNeolgLqDZZc4zKbUkmqxY1dvGDs41coKzdtc9Ig23GVK48wfesnk5r50 + afyU52R1JlSHDOhiDhHOSyhrOzc2GreLrByWKFUaAue6rTnyMbzQaSPtrTAqsURZ + wcmJ6R3A6JwokOgxXBSu41ufPQiFkMgxygKxEBLzIJLjRqCXQHYoxbsTyolb6jwp + w4H6vcRIEcFAgs98ApWRoEKjy7eOP3UUm05F+OkOvXhrlxEqIPm/rlwE0PmVlmm9 + DgBafYb3xT/MtT2VRSfCJQHgIcsdAgMBAAGjggJ9MIICeTAfBgNVHSMEGDAWgBRV + dE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQUEFavzYXBNbIHBchbaKcUKad+ + qCEwIwYDVR0RBBwwGoIJaWNlMTIzLnRrgg13d3cuaWNlMTIzLnRrMA4GA1UdDwEB + /wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTAYDVR0gBEUw + QzA3BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl + cnQuY29tL0NQUzAIBgZngQwBAgEwgYEGCCsGAQUFBwEBBHUwczAlBggrBgEFBQcw + AYYZaHR0cDovL29jc3AyLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDov + L2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFND + QS1HMS5jcnQwCQYDVR0TBAIwADCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AKS5 + CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABZIOnLCIAAAQDAEcwRQIh + AJX6gCXNggPdfOFdDtZPzlYr64TTrR/+b9QKKhyJ2EjBAiAWgu3BG2QK9tWQXpUN + IFadc0nvqmDovabg5nmRMan2mQB2AId1v+dZfPiMQ5lfvfNu/1aNR1Y2/0q1YMG0 + 6v9eoIMPAAABZIOnLQEAAAQDAEcwRQIhAJVRe/7n88dD6KdhNrd4LdFjGARQNmta + Y/K2dFDOXPSfAiBOLrWW8unHOL25RWHJU7Ost3XkNhQYtrLDJrnzo/9kZzANBgkq + hkiG9w0BAQsFAAOCAQEAeqtX9cHmj4OnNAk0IGmF3nKS/u/UgGsY4EJfXwQY2bTZ + PCkqxQOA6HEx59vJ+UilTojrNDi0WskRm/8SKBHtmRwzwX3ile8KiR6fFfQhPUtV + XHZcTfAFo47c7axqon8vumMlEv1PxVImivQ446K7z3kGm34dhMYxS4Gz2gTl8IKt + 90OegejuhbAs5Wlvp1BK8HlYIb5+mw+cgkUC9KTALs5qVbWzogb0bS20KaYarGcu + otcZAOMeJdBFWnpzhr1fxmjaNY4u4hrgPZSTU/iBjdHapoza3zAFfxysmGYqs9dR + jFyxZeR4scz8GqSTFviNdH9jvtDJkdAC5hfMaB811Q== + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh + MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 + d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD + QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT + MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j + b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH + MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc + oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo + lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj + pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h + yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n + wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M + pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf + BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw + HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C + AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp + Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu + Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG + /WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT + MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B + SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW + M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV + 4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ + sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy + rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg== + -----END CERTIFICATE-----", + "type": "server", + "create_time": "2019-03-03 16:32:30", + "private_key": "-----BEGIN RSA PRIVATE KEY----- + MIIEpQIBAAKCAQEArUw5UDKAL8iJ0el9XYoYTcG3RnrGzFujWV+336Y/V6wdygqq + pccyOFZh/T57b66SyTXqJYC6g2WXOMym1JJqsWNXbxg7ONXKCs3bXPSINtxlSuPM + H3rJ5Oa+dGn8lOdkdSZUhwzoYg4Rzksoazs3Nhq3i6wclihVGgLnuq058jG80Gkj + 7a0wKrFEWcHJiekdwOicKJDoMVwUruNbnz0IhZDIMcoCsRAS8yCS40agl0B2KMW7 + E8qJW+o8KcOB+r3ESBHBQILPfAKVkaBCo8u3jj91FJtORfjpDr14a5cRKiD5v65c + BND5lZZpvQ4AWn2G98U/zLU9lUUnwiUB4CHLHQIDAQABAoIBAGs5rISompP2OwA8 + virwVRVXdPUQ5oxvbuTPys+A59RxVIU8kFW+qJ4fJMYysOFrXLtOtq+5tK20YBru + 1ZLVfVqAowrELXB/J2ID+WTMkLORLsNlq1kW+nC9LL6PDY98lLW/n7FoFSkGl5HT + AxFGNGUvpr2vIojuL6nGfmcM47uscJ9aP6IJxr4p70dhPVjZBdnMnXYwRkB3dZt/ + E0B/p8J5i3oo5Rucv4DOfB+01wXGAVyx5/zce+NZdhyrivkj3hHV55SxGhVWzWhj + a3dAlbpKwYgfILj0inRdJYmIjBdbGb2HFix7+ncBg8B2oerJXC6/fANwRGu5/LZU + 5xuPVWkCgYEA6an8TY1unIGLYL5aBJ16Tx4usqMyTXr/T4zkQyftRPMt+ZuxVQHl + GHsg7XvLFNd04MBZXtkZXaYVcpOm7OUYcl0i9ZAkWXXoXcBtn1Oom3gz/7RjAUnp + k+myvxCUSQ2JSz4u3QBtyPVyYNyBFXrKqdKfcYyG85+yQVHBNMVrdvMCgYEAvd0C + hFpm83ha+VQp+9XN1DYZNUyqhibj/E3X9jAn+gDbzlKxw/D9en2RIlQYUrl8+il8 + QKk4cfOxJYStQfxptz8QBPVeLajDN67zJ0Rk8AB50HHHcNSU8uFkaO8KxsyVjbLS + +JltqfJAEraXLinbp1Fxcg9DsQdMd6cw2DmrWa8CgYEA1UjJOUzo80i4HYWDC4Vn + OEK3o22do+WqmEVlsfsG9BH5HEdGVe7V3EO/6aY+1/ZXBDPvH8mRAs9v8lbeXow7 + hWCIYZfB5jre8HyOU4l8dPUCmdxhJrL913rRIuASSqBlet32ztnuXCnWzp1X4nBj + /yF3UqFQKZ7SihcDAZVWo4sCgYEAj7al/BcNzIcynX2mldhdh583b4/Ll+YCNm2Z + 5eDHscZKmx8fLcjRpZE8dXagPqXmwtj6E1vDvQWP9m06VDNCthFHB+nO0tLmidSk + evmbScuiaTRmmbJf2IThY0hlqNsc7PgKF2DTkIstEr0hLDFE8Z6FN6f0PiDfMcbd + Ax6L5EMCgYEA0+qhuQftKQkGdbXX9r3H8N0TVh27ByfL3kKVYy0dUJMvsOAq6d97 + 8mEhYhrYt88f1sFsPM7G09XpCcBXwiKxw8+CDt9auD4r1snBnILpqMPmanF4UDXH + L7s+4it+nIQy24P6g1PihtzsM+HD2UCErBiYUJdRK8Q9GGHdZojFk9Y= + -----END RSA PRIVATE KEY----- + ", + "update_time": "2019-03-03 16:32:30", + "admin_state_up": true, + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "expire_time": "2019-07-10 12:00:00" + }, + { + "description": null, + "domain": "www.elb.com", + "id": "ef4d341365754a959556576501791b19", + "name": "certificate_28b824c8bbee419992fb7974b2911c72", + "certificate": "-----BEGIN CERTIFICATE----- + MIIDpTCCAo2gAwIBAgIJAKdmmOBYnFvoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV + BAYTAnh4MQswCQYDVQQIDAJ4eDELMAkGA1UEBwwCeHgxCzAJBgNVBAoMAnh4MQsw + CQYDVQQLDAJ4eDELMAkGA1UEAwwCeHgxGTAXBgkqhkiG9w0BCQEWCnh4QDE2My5j + b20wHhcNMTcxMjA0MDM0MjQ5WhcNMjAxMjAzMDM0MjQ5WjBpMQswCQYDVQQGEwJ4 + eDELMAkGA1UECAwCeHgxCzAJBgNVBAcMAnh4MQswCQYDVQQKDAJ4eDELMAkGA1UE + CwwCeHgxCzAJBgNVBAMMAnh4MRkwFwYJKoZIhvcNAQkBFgp4eEAxNjMuY29tMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN + 2s8tZ/6LC3X82fajpVsYqF1xqEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYld + iE6Vp8HH5BSKaCWKVg8lGWg1UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb + 3iyNBmiZ8aZhGw2pI1YwR+15MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dz + Q8z1JXWdg8/9Zx7Ktvgwu5PQM3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5 + mf2DPkVgM08XAgaLJcLigwD513koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwID + AQABo1AwTjAdBgNVHQ4EFgQUo5A2tIu+bcUfvGTD7wmEkhXKFjcwHwYDVR0jBBgw + FoAUo5A2tIu+bcUfvGTD7wmEkhXKFjcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B + AQsFAAOCAQEAWJ2rS6Mvlqk3GfEpboezx2J3X7l1z8Sxoqg6ntwB+rezvK3mc9H0 + 83qcVeUcoH+0A0lSHyFN4FvRQL6X1hEheHarYwJK4agb231vb5erasuGO463eYEG + r4SfTuOm7SyiV2xxbaBKrXJtpBp4WLL/s+LF+nklKjaOxkmxUX0sM4CTA7uFJypY + c8Tdr8lDDNqoUtMD8BrUCJi+7lmMXRcC3Qi3oZJW76ja+kZA5mKVFPd1ATih8TbA + i34R7EQDtFeiSvBdeKRsPp8c0KT8H1B4lXNkkCQs2WX5p4lm99+ZtLD4glw8x6Ic + i1YhgnQbn5E0hz55OLu5jvOkKQjPCW+8Kg== + -----END CERTIFICATE-----", + "type": "server", + "create_time": "2018-09-28 03:00:47", + "private_key": "-----BEGIN RSA PRIVATE KEY----- + MIIEowIBAAKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN2s8tZ/6LC3X82fajpVsYqF1x + qEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYldiE6Vp8HH5BSKaCWKVg8lGWg1 + UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb3iyNBmiZ8aZhGw2pI1YwR+15 + MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dzQ8z1JXWdg8/9Zx7Ktvgwu5PQ + M3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5mf2DPkVgM08XAgaLJcLigwD5 + 13koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwIDAQABAoIBACU9S5fjD9/jTMXA + DRs08A+gGgZUxLn0xk+NAPX3LyB1tfdkCaFB8BccLzO6h3KZuwQOBPv6jkdvEDbx + Nwyw3eA/9GJsIvKiHc0rejdvyPymaw9I8MA7NbXHaJrY7KpqDQyk6sx+aUTcy5jg + iMXLWdwXYHhJ/1HVOo603oZyiS6HZeYU089NDUcX+1SJi3e5Ke0gPVXEqCq1O11/ + rh24bMxnwZo4PKBWdcMBN5Zf/4ij9vrZE+fFzW7vGBO48A5lvZxWU2U5t/OZQRtN + 1uLOHmMFa0FIF2aWbTVfwdUWAFsvAOkHj9VV8BXOUwKOUuEktdkfAlvrxmsFrO/H + yDeYYPkCgYEA/S55CBbR0sMXpSZ56uRn8JHApZJhgkgvYr+FqDlJq/e92nAzf01P + RoEBUajwrnf1ycevN/SDfbtWzq2XJGqhWdJmtpO16b7KBsC6BdRcH6dnOYh31jgA + vABMIP3wzI4zSVTyxRE8LDuboytF1mSCeV5tHYPQTZNwrplDnLQhywcCgYEAw8Yc + Uk/eiFr3hfH/ZohMfV5p82Qp7DNIGRzw8YtVG/3+vNXrAXW1VhugNhQY6L+zLtJC + aKn84ooup0m3YCg0hvINqJuvzfsuzQgtjTXyaE0cEwsjUusOmiuj09vVx/3U7siK + Hdjd2ICPCvQ6Q8tdi8jV320gMs05AtaBkZdsiWUCgYEAtLw4Kk4f+xTKDFsrLUNf + 75wcqhWVBiwBp7yQ7UX4EYsJPKZcHMRTk0EEcAbpyaJZE3I44vjp5ReXIHNLMfPs + uvI34J4Rfot0LN3n7cFrAi2+wpNo+MOBwrNzpRmijGP2uKKrq4JiMjFbKV/6utGF + Up7VxfwS904JYpqGaZctiIECgYA1A6nZtF0riY6ry/uAdXpZHL8ONNqRZtWoT0kD + 79otSVu5ISiRbaGcXsDExC52oKrSDAgFtbqQUiEOFg09UcXfoR6HwRkba2CiDwve + yHQLQI5Qrdxz8Mk0gIrNrSM4FAmcW9vi9z4kCbQyoC5C+4gqeUlJRpDIkQBWP2Y4 + 2ct/bQKBgHv8qCsQTZphOxc31BJPa2xVhuv18cEU3XLUrVfUZ/1f43JhLp7gynS2 + ep++LKUi9D0VGXY8bqvfJjbECoCeu85vl8NpCXwe/LoVoIn+7KaVIZMwqoGMfgNl + nEqm7HWkNxHhf8A6En/IjleuddS1sf9e/x+TJN1Xhnt9W6pe7Fk1 + -----END RSA PRIVATE KEY-----", + "update_time": "2018-09-28 03:00:47", + "admin_state_up": true, + "tenant_id": "601240b9c5c94059b63d484c92cfe308", + "expire_time": "2020-12-03 03:42:49" + } + ], + "instance_num": 2 + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_zq_zs_0003.html b/elb/api-ref/elb_zq_zs_0003.html new file mode 100644 index 000000000..ac583771d --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0003.html @@ -0,0 +1,214 @@ + + +

      Querying Details of a Certificate

      +

      Function

      This API is used to query details about a certificate.

      + +

      URI

      GET /v2.0/lbaas/certificates/{certificate_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies the certificate ID.

      +
      + + +

      Request

      None

      + +

      Response

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the certificate ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the certificate is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      type

      +

      String

      +

      Specifies the certificate type.

      +The value can be one of the following:
      • server: indicates the server certificate.
      • client: indicates the CA certificate.
      + +

      domain

      +

      String

      +

      Specifies the domain name associated with the server certificate.

      +

      The value contains a maximum of 100 characters.

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate in PEM format.

      +

      certificate

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required. Both types of certificates are in PEM format.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      create_time

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      update_time

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +
      + + +

      Example Request

      • Example request: Querying details of a certificate
        GET https://{Endpoint}/v2.0/lbaas/certificates/23ef9aad4ecb463580476d324a6c71af
        +
      + +

      Example Response

      • Example response
        {
        +    "certificate": 
        +"-----BEGIN CERTIFICATE-----
        +\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD
        +\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG
        +\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
        +\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5
        +\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9
        +\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS
        +\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K
        +\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy
        +\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t
        +\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA
        +\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn
        +\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa
        +\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ
        +\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI
        +\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ
        +\niYsGDVN+9QBd0eYUHce+77s96i3I
        +\n-----END CERTIFICATE-----",
        +    "create_time": "2017-02-25 09:35:27",
        +    "expire_time": "2045-11-17 13:25:47",
        +    "description": "description for certificate",
        +    "domain": "www.elb.com",
        +    "id": "23ef9aad4ecb463580476d324a6c71af",
        +    "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +    "admin_state_up": true,
        +    "name": "https_certificate",
        +    "private_key": 
        +"-----BEGIN PRIVATE KEY-----
        +\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M
        +\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe
        +\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM
        +\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt
        +\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl
        +\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k
        +\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl
        +\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB
        +\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr
        +\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M
        +\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale
        +\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT
        +\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx
        +\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt
        +\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr
        +\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ
        +\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU
        +\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB
        +\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd
        +\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak
        +\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha
        +\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf
        +\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o
        +\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk
        +\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd
        +\n3fy+1rCUwzOp9LSjtJYf4ege
        +\n-----END PRIVATE KEY-----",
        +    "type": "server",
        +    "update_time": "2017-02-25 09:35:27"
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_zq_zs_0003.rst b/elb/api-ref/elb_zq_zs_0003.rst new file mode 100644 index 000000000..a8c919ba8 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0003.rst @@ -0,0 +1,191 @@ +Querying Details of a Certificate +================================= + +Function +^^^^^^^^ + +This API is used to query details about a certificate. + +URI +^^^ + +GET /v2.0/lbaas/certificates/{certificate_id} + +.. table:: **Table 1** Parameter description + + ============== ========= ====== ============================= + Parameter Mandatory Type Description + ============== ========= ====== ============================= + certificate_id Yes String Specifies the certificate ID. + ============== ========= ====== ============================= + +Request +^^^^^^^ + +None + +Response +^^^^^^^^ + +.. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the certificate is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **server**: indicates the server | + | | | certificate. | + | | | - **client**: indicates the CA | + | | | certificate. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain name associated | + | | | with the server certificate. | + | | | | + | | | The value contains a maximum of 100 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the public key of the | + | | | server certificate or CA certificate | + | | | used to authenticate the client. The | + | | | value of parameter **type** | + | | | determines whether a public key or CA | + | | | certificate is required. Both types | + | | | of certificates are in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the | + | | | certificate was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | update_time | String | Specifies the time when the | + | | | certificate was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Querying details of a certificate + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/certificates/23ef9aad4ecb463580476d324a6c71af + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "certificate": + "-----BEGIN CERTIFICATE----- + \nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD + \nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG + \nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA + \n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5 + \nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9 + \n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS + \nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K + \ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy + \nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t + \nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA + \nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn + \njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa + \nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ + \nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI + \n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ + \niYsGDVN+9QBd0eYUHce+77s96i3I + \n-----END CERTIFICATE-----", + "create_time": "2017-02-25 09:35:27", + "expire_time": "2045-11-17 13:25:47", + "description": "description for certificate", + "domain": "www.elb.com", + "id": "23ef9aad4ecb463580476d324a6c71af", + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + "admin_state_up": true, + "name": "https_certificate", + "private_key": + "-----BEGIN PRIVATE KEY----- + \nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M + \n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe + \ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM + \nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt + \nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl + \nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k + \nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl + \nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB + \nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr + \nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M + \nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale + \nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT + \nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx + \nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt + \nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr + \niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ + \nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU + \nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB + \n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd + \nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak + \n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha + \nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf + \n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o + \njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk + \nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd + \n3fy+1rCUwzOp9LSjtJYf4ege + \n-----END PRIVATE KEY-----", + "type": "server", + "update_time": "2017-02-25 09:35:27" + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_zq_zs_0004.html b/elb/api-ref/elb_zq_zs_0004.html new file mode 100644 index 000000000..7eed0d468 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0004.html @@ -0,0 +1,326 @@ + + +

      Updating a Certificate

      +

      Function

      This API is used to update a certificate.

      + +

      URI

      PUT /v2.0/lbaas/certificates/{certificate_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies the certificate ID.

      +
      + + +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is reserved, and the default value is true.

      +

      name

      +

      No

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      domain

      +

      No

      +

      String

      +

      Specifies the domain name associated with the server certificate. The default value is null.

      +

      The value contains a maximum of 100 characters.

      +

      The value can be one of the following:

      +
      • A common domain name contains 0 to 100 characters and consists of several labels separated by dots (.). Each label can contain a maximum of 63 characters, including letters, digits, and hyphens (-), and must start and end with a letter or digit.
      • In addition to the requirements for common domain names, a wildcard domain name can start with an asterisk (*).
      + NOTE:

      This parameter is valid only when type is set to server.

      + +

      private_key

      +

      No

      +

      String

      +

      Specifies the private key of the server certificate. The value must be PEM encoded.

      +
      • This parameter will be ignored if type is set to client. A CA server can still be created and used normally. This parameter will be left blank even if you enter a private key that is not PEM encoded.
      • This parameter is valid and mandatory only when type is set to server. If you enter an invalid private key, an error is returned.
      +

      certificate

      +

      No

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required.

      +

      The public key is in PEM format.

      +
      + + +

      Response

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the certificate ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the certificate is used.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the certificate.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      name

      +

      String

      +

      Specifies the certificate name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the certificate.

      +

      The value contains a maximum of 255 characters.

      +

      type

      +

      String

      +

      Specifies the certificate type.

      +The value can be one of the following:
      • server: indicates the server certificate.
      • client: indicates the CA certificate.
      + +

      domain

      +

      String

      +

      Specifies the domain name associated with the server certificate.

      +

      The value contains a maximum of 100 characters.

      +

      private_key

      +

      String

      +

      Specifies the private key of the server certificate in PEM format.

      +

      certificate

      +

      String

      +

      Specifies the public key of the server certificate or CA certificate used to authenticate the client. The value of parameter type determines whether a public key or CA certificate is required. Both types of certificates are in PEM format.

      +

      expire_time

      +

      String

      +

      Specifies the time when the certificate expires.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      create_time

      +

      String

      +

      Specifies the time when the certificate was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      update_time

      +

      String

      +

      Specifies the time when the certificate was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +
      + + +

      Example Request

      • Example request: Updating a certificate
        PUT https://{Endpoint}/v2.0/lbaas/certificates/23ef9aad4ecb463580476d324a6c71af 
        +
        +{
        +    "certificate": 
        +"-----BEGIN CERTIFICATE-----
        +\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD
        +\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG
        +\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
        +\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5
        +\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9
        +\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS
        +\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K
        +\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy
        +\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t
        +\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA
        +\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn
        +\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa
        +\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ
        +\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI
        +\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ
        +\niYsGDVN+9QBd0eYUHce+77s96i3I
        +\n-----END CERTIFICATE-----",
        +    "description": "description for certificate",
        +    "domain": "www.elb.com",
        +    "name": "https_certificate",
        +    "private_key": 
        +"-----BEGIN PRIVATE KEY-----
        +\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M
        +\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe
        +\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM
        +\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt
        +\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl
        +\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k
        +\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl
        +\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB
        +\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr
        +\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M
        +\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale
        +\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT
        +\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx
        +\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt
        +\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr
        +\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ
        +\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU
        +\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB
        +\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd
        +\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak
        +\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha
        +\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf
        +\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o
        +\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk
        +\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd
        +\n3fy+1rCUwzOp9LSjtJYf4ege
        +\n-----END PRIVATE KEY-----"
        +}
        +
      + +

      Example Response

      • Example response
        {
        +    "certificate": "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----",
        +    "expire_time": "2045-11-17 13:25:47",
        +    "create_time": "2017-02-25 09:35:27",
        +    "description": "description for certificate",
        +    "domain": "www.elb.com",
        +    "id": "23ef9aad4ecb463580476d324a6c71af",
        +    "admin_state_up": true,
        +    "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819",
        +    "name": "https_certificate",
        +    "private_key": "-----BEGIN PRIVATE KEY-----
        +\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M
        +\n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe
        +\ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM
        +\nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt
        +\nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl
        +\nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k
        +\nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl
        +\nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB
        +\nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr
        +\nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M
        +\nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale
        +\nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT
        +\nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx
        +\nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt
        +\nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr
        +\niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ
        +\nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU
        +\nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB
        +\n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd
        +\nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak
        +\n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha
        +\nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf
        +\n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o
        +\njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk
        +\nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd
        +\n3fy+1rCUwzOp9LSjtJYf4ege
        +\n-----END PRIVATE KEY-----",
        +    "type": "server",
        +    "update_time": "2017-02-25 09:38:27"
        +}
        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_zq_zs_0004.rst b/elb/api-ref/elb_zq_zs_0004.rst new file mode 100644 index 000000000..68a9eaac9 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0004.rst @@ -0,0 +1,319 @@ +Updating a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to update a certificate. + +URI +^^^ + +PUT /v2.0/lbaas/certificates/{certificate_id} + +.. table:: **Table 1** Parameter description + + ============== ========= ====== ============================= + Parameter Mandatory Type Description + ============== ========= ====== ============================= + certificate_id Yes String Specifies the certificate ID. + ============== ========= ====== ============================= + +Request +^^^^^^^ + +.. table:: **Table 2** Parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the certificate. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the certificate | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | certificate. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | domain | No | String | Specifies the domain name | + | | | | associated with the server | + | | | | certificate. The default | + | | | | value is **null**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 100 characters. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - A common domain name | + | | | | contains 0 to 100 | + | | | | characters and consists | + | | | | of several labels | + | | | | separated by dots (.). | + | | | | Each label can contain a | + | | | | maximum of 63 | + | | | | characters, including | + | | | | letters, digits, and | + | | | | hyphens (-), and must | + | | | | start and end with a | + | | | | letter or digit. | + | | | | - In addition to the | + | | | | requirements for common | + | | | | domain names, a wildcard | + | | | | domain name can start | + | | | | with an asterisk (*). | + | | | | | + | | | | NOTE: | + | | | | This parameter is valid | + | | | | only when **type** is set | + | | | | to **server**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | private_key | No | String | Specifies the private key | + | | | | of the server certificate. | + | | | | The value must be PEM | + | | | | encoded. | + | | | | | + | | | | - This parameter will be | + | | | | ignored if **type** is | + | | | | set to **client**. A CA | + | | | | server can still be | + | | | | created and used | + | | | | normally. This parameter | + | | | | will be left blank even | + | | | | if you enter a private | + | | | | key that is not PEM | + | | | | encoded. | + | | | | - This parameter is valid | + | | | | and mandatory only when | + | | | | **type** is set to | + | | | | **server**. If you enter | + | | | | an invalid private key, | + | | | | an error is returned. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | certificate | No | String | Specifies the public key of | + | | | | the server certificate or | + | | | | CA certificate used to | + | | | | authenticate the client. | + | | | | The value of parameter | + | | | | **type** determines whether | + | | | | a public key or CA | + | | | | certificate is required. | + | | | | | + | | | | The public key is in PEM | + | | | | format. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the certificate ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the certificate is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the certificate. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the certificate name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the certificate. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the certificate type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **server**: indicates the server | + | | | certificate. | + | | | - **client**: indicates the CA | + | | | certificate. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | domain | String | Specifies the domain name associated | + | | | with the server certificate. | + | | | | + | | | The value contains a maximum of 100 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | private_key | String | Specifies the private key of the | + | | | server certificate in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | certificate | String | Specifies the public key of the | + | | | server certificate or CA certificate | + | | | used to authenticate the client. The | + | | | value of parameter **type** | + | | | determines whether a public key or CA | + | | | certificate is required. Both types | + | | | of certificates are in PEM format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | expire_time | String | Specifies the time when the | + | | | certificate expires. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the | + | | | certificate was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | update_time | String | Specifies the time when the | + | | | certificate was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Updating a certificate + + .. code:: screen + + PUT https://{Endpoint}/v2.0/lbaas/certificates/23ef9aad4ecb463580476d324a6c71af + + { + "certificate": + "-----BEGIN CERTIFICATE----- + \nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD + \nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG + \nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA + \n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5 + \nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9 + \n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS + \nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K + \ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy + \nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t + \nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA + \nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn + \njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa + \nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ + \nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI + \n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ + \niYsGDVN+9QBd0eYUHce+77s96i3I + \n-----END CERTIFICATE-----", + "description": "description for certificate", + "domain": "www.elb.com", + "name": "https_certificate", + "private_key": + "-----BEGIN PRIVATE KEY----- + \nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M + \n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe + \ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM + \nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt + \nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl + \nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k + \nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl + \nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB + \nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr + \nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M + \nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale + \nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT + \nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx + \nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt + \nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr + \niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ + \nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU + \nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB + \n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd + \nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak + \n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha + \nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf + \n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o + \njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk + \nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd + \n3fy+1rCUwzOp9LSjtJYf4ege + \n-----END PRIVATE KEY-----" + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response + + .. code:: screen + + { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlD\nb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAG\nA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5\nU0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh9\n7B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaS\nIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/K\ny09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0Wy\nYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29t\nhwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA\nA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAn\njiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDa\nezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZ\nwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI\n+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZ\niYsGDVN+9QBd0eYUHce+77s96i3I\n-----END CERTIFICATE-----", + "expire_time": "2045-11-17 13:25:47", + "create_time": "2017-02-25 09:35:27", + "description": "description for certificate", + "domain": "www.elb.com", + "id": "23ef9aad4ecb463580476d324a6c71af", + "admin_state_up": true, + "tenant_id": "a31d2bdcf7604c0faaddb058e1e08819", + "name": "https_certificate", + "private_key": "-----BEGIN PRIVATE KEY----- + \nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M + \n253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPe + \ntB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rM + \nMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXt + \nCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2Chl + \nZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08k + \nEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/Hl + \nfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQB + \nZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKr + \nciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9M + \nEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7Ale + \nkrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CT + \nXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kx + \nGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dt + \nJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLr + \niWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZ + \nlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBU + \nxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB + \n1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAd + \nXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak + \n/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4Vha + \nfI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf + \n7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9o + \njHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIuk + \nfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd + \n3fy+1rCUwzOp9LSjtJYf4ege + \n-----END PRIVATE KEY-----", + "type": "server", + "update_time": "2017-02-25 09:38:27" + } + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/elb_zq_zs_0005.html b/elb/api-ref/elb_zq_zs_0005.html new file mode 100644 index 000000000..2a63856d6 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0005.html @@ -0,0 +1,53 @@ + + +

      Deleting a Certificate

      +

      Function

      This API is used to delete a specific certificate.

      + +

      Constraints

      If the target certificate is used by a listener, the certificate cannot be deleted, and 409 code will be displayed.

      + +

      URI

      DELETE /v2.0/lbaas/certificates/{certificate_id}

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      certificate_id

      +

      Yes

      +

      String

      +

      Specifies the certificate ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      + +

      Response

      • Response parameters

        None

        +
      + +

      Example Request

      • Example request: Deleting a certificate
        DELETE https://{Endpoint}/v2.0/lbaas/certificates/23ef9aad4ecb463580476d324a6c71af
        +
      + +

      Example Response

      • Example response 1

        None

        +
      + +

      Status Code

      For details, see Status Codes.

      + + + + +Parent topic: Certificate + + + diff --git a/elb/api-ref/elb_zq_zs_0005.rst b/elb/api-ref/elb_zq_zs_0005.rst new file mode 100644 index 000000000..4a988afe1 --- /dev/null +++ b/elb/api-ref/elb_zq_zs_0005.rst @@ -0,0 +1,62 @@ +Deleting a Certificate +====================== + +Function +^^^^^^^^ + +This API is used to delete a specific certificate. + +Constraints +^^^^^^^^^^^ + +If the target certificate is used by a listener, the certificate cannot be deleted, and 409 code will be displayed. + +URI +^^^ + +DELETE /v2.0/lbaas/certificates/{certificate_id} + +.. table:: **Table 1** Parameter description + + ============== ========= ====== ============================= + Parameter Mandatory Type Description + ============== ========= ====== ============================= + certificate_id Yes String Specifies the certificate ID. + ============== ========= ====== ============================= + +Request +^^^^^^^ + +- Request parameters + + None + +Response +^^^^^^^^ + +- Response parameters + + None + +Example Request +^^^^^^^^^^^^^^^ + +- Example request: Deleting a certificate + + .. code:: screen + + DELETE https://{Endpoint}/v2.0/lbaas/certificates/23ef9aad4ecb463580476d324a6c71af + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + None + +Status Code +^^^^^^^^^^^ + +For details, see `Status Codes `__. + +**Parent topic:** `Certificate `__ diff --git a/elb/api-ref/en-us_image_0294158472.png b/elb/api-ref/en-us_image_0294158472.png new file mode 100644 index 000000000..c55acabcb Binary files /dev/null and b/elb/api-ref/en-us_image_0294158472.png differ diff --git a/elb/api-ref/en-us_topic_0000001088310753.html b/elb/api-ref/en-us_topic_0000001088310753.html new file mode 100644 index 000000000..f346bd8c6 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001088310753.html @@ -0,0 +1,11 @@ + + +

      API Call Precaution

      +

      By default, load balancers created in the eu-nl region are dedicated load balancers. APIs for dedicated load balancers are only available in this region. Shared load balancers and dedicated load balancers are called elastic load balancers collectively.

      + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/en-us_topic_0000001088310753.rst b/elb/api-ref/en-us_topic_0000001088310753.rst new file mode 100644 index 000000000..ef37eb761 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001088310753.rst @@ -0,0 +1,6 @@ +API Call Precaution +=================== + +By default, load balancers created in the **eu-nl** region are dedicated load balancers. APIs for dedicated load balancers are only available in this region. Shared load balancers and dedicated load balancers are called elastic load balancers collectively. + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/en-us_topic_0000001088335195.html b/elb/api-ref/en-us_topic_0000001088335195.html new file mode 100644 index 000000000..202053247 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001088335195.html @@ -0,0 +1,11 @@ + + +

      API Call Precaution

      +

      By default, load balancers created in the eu-de region are shared load balancers. APIs for shared load balancers are only available in this region. Shared load balancers and dedicated load balancers are called elastic load balancers collectively.

      + + + +Parent topic: Shared Load Balancer APIs + + + diff --git a/elb/api-ref/en-us_topic_0000001088335195.rst b/elb/api-ref/en-us_topic_0000001088335195.rst new file mode 100644 index 000000000..b9a577b63 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001088335195.rst @@ -0,0 +1,6 @@ +API Call Precaution +=================== + +By default, load balancers created in the **eu-de** region are shared load balancers. APIs for shared load balancers are only available in this region. Shared load balancers and dedicated load balancers are called elastic load balancers collectively. + +**Parent topic:** `Shared Load Balancer APIs `__ diff --git a/elb/api-ref/en-us_topic_0000001124568811.html b/elb/api-ref/en-us_topic_0000001124568811.html new file mode 100644 index 000000000..d4e96a711 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001124568811.html @@ -0,0 +1,11 @@ + + +

      API Call Precaution

      +

      Classic load balancers are not supported in the eu-nl region.

      + + + +Parent topic: Classic Load Balancer APIs + + + diff --git a/elb/api-ref/en-us_topic_0000001124568811.rst b/elb/api-ref/en-us_topic_0000001124568811.rst new file mode 100644 index 000000000..d568b92ad --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001124568811.rst @@ -0,0 +1,6 @@ +API Call Precaution +=================== + +Classic load balancers are not supported in the **eu-nl** region. + +**Parent topic:** `Classic Load Balancer APIs `__ diff --git a/elb/api-ref/en-us_topic_0000001127879251.html b/elb/api-ref/en-us_topic_0000001127879251.html new file mode 100644 index 000000000..eec29e9c8 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001127879251.html @@ -0,0 +1,129 @@ + + +

      Creating a Dedicated Load Balancer and Binding a New EIP to It

      +

      Scenarios

      Call APIs to create a dedicated load balancer and bind a new EIP to it.

      + +

      Prerequisites

      You have created a VPC and a subnet.

      + +

      Procedure

      1. Query the subnet you have created.
        1. Send GET https://{vpc_endpoint}/v1/{project_id}/subnets. project_id indicates the project ID.
        2. Add X-Auth-Token to the request header.
        3. Check the response.
          • The request is successful if the following response is displayed:
            {
            +    "subnets": [
            +	{
            +            "id": "0535759e-8104-49d9-902c-a05185a94bdf", // Subnet ID
            +            "name": "subnet-001", // Subnet name
            +            "description": "",
            +            "cidr": "172.16.66.0/24", //IPv4 address range
            +            "dnsList": [
            +                "100.125.4.6"
            +            ],
            +            "status": "ACTIVE",
            +            "vpc_id": "44789a9f-3e80-451a-ac03-0818f99b6cdd", // VPC ID
            +            "ipv6_enable": true,
            +            "gateway_ip_v6": "2001:db8:a583:37c::1",
            +            "cidr_v6": "2001:db8:a583:37c::/64",
            +            "gateway_ip": "172.16.66.1",
            +            "dhcp_enable": true,
            +            "primary_dns": "100.125.4.6",
            +            "availability_zone": "eu-de-01", //AZ of the subnet
            +            "neutron_network_id": "0535759e-8104-49d9-902c-a05185a94bdf", // Network ID
            +            "neutron_subnet_id": "1492f0ba-cfce-4e2c-86f7-561d757dfeee", // IPv4 subnet ID
            +            "neutron_subnet_id_v6": "3c052475-b50b-49b9-abb1-558bad45e592",
            +            "extra_dhcp_opts": [
            +                {
            +                    "opt_value": "8760h",
            +                    "opt_name": "addresstime"
            +                }
            +            ]
            +        }
            +    ]
            +}
            +
            +
          • If the request is abnormal, locate the fault by referring to HTTP Status Codes for Dedicated Load Balancers.
          +
        +
      2. Create a dedicated load balancer and bind a new EIP to it.
        1. Send POST https://{elb_endpoint}/v3/{project_id}/elb/loadbalancers. project_id indicates the project ID.
        2. Add X-Auth-Token to the request header.
        3. Ensure that the following parameters, including publicip, are passed in the request body:
          {
          +	"loadbalancer": {
          +            "vpc_id": "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b",
          +            "availability_zone_list": [
          +                "br-iaas-odin1a"
          +            ],
          +            "admin_state_up": true,
          +            "vip_subnet_cidr_id": "1800b6b8-a69f-4719-813d-24d62aaf32bd",
          +            "name": "elb-ipv4",
          +            "publicip": {
          +               "network_type": "5_bgp",
          +               "bandwidth": {
          +                   "size": 2,
          +                   "share_type": "PER",
          +                   "charge_mode": "bandwidth",
          +                   "name": "elb_eip_bandwidth"
          +               }
          +          }
          +    }
          +}
          +
          +
        4. Check the response.
          • The request is successful if the following response is displayed:
            {
            +    "request_id": "21177eb184c52c5a4540c78dc7fdaee4",
            +    "loadbalancer": {
            +        "id": "a2556f92-3310-4173-a6d1-0b2d0bb68478",
            +        "project_id": "060576782980d5762f9ec014dd2f1148",
            +        "name": "elb-ipv4",
            +        "description": "",
            +        "vip_port_id": "fff961a9-4514-4469-84d4-a2bc4fbdfbeb",
            +        "vip_address": "192.168.0.162",
            +        "admin_state_up": true,
            +        "provisioning_status": "ACTIVE",
            +        "operating_status": "ONLINE",
            +        "listeners": [],
            +        "pools": [],
            +        "tags": [],
            +        "provider": "vlb",
            +        "created_at": "2021-02-23T08:50:19Z",
            +        "updated_at": "2021-02-23T08:50:19Z",
            +        "vpc_id": "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b",
            +        "enterprise_project_id": "0",
            +        "availability_zone_list": [
            +            "br-iaas-odin1a"
            +        ],
            +        "ipv6_vip_address": null,
            +        "ipv6_vip_virsubnet_id": null,
            +        "ipv6_vip_port_id": null,
            +        "ipv6_bandwidth": null,
            +        "publicips": [
            +            {
            +                "publicip_id": "12cba100-764e-476c-bf3f-8aba98782cf5",
            +                "publicip_address": "10.246.173.188",
            +                "ip_version": 4
            +            }
            +        ],
            +        "elb_virsubnet_ids": [
            +            "4df3e391-5ebf-4300-b614-cf5a4e793666"
            +        ],
            +        "elb_virsubnet_type": "dualstack",
            +        "ip_target_enable": false,
            +        "frozen_scene": null,
            +        "eips": [
            +            {
            +                "eip_id": "12cba100-764e-476c-bf3f-8aba98782cf5",
            +                "eip_address": "10.246.173.188",
            +                "ip_version": 4
            +            }
            +        ],
            +        "guaranteed": true,
            +        "billing_info": null,
            +        "l4_flavor_id": null,
            +        "l4_scale_flavor_id": null,
            +        "l7_flavor_id": null,
            +        "l7_scale_flavor_id": null,
            +        "vip_subnet_cidr_id": "1800b6b8-a69f-4719-813d-24d62aaf32bd"
            +    }
            +}
            +
          • If the request is abnormal, locate the fault by referring to HTTP Status Codes for Dedicated Load Balancers.
          +
        +
      + + + + +Parent topic: Examples + + + diff --git a/elb/api-ref/en-us_topic_0000001127879251.rst b/elb/api-ref/en-us_topic_0000001127879251.rst new file mode 100644 index 000000000..82cb1ddf6 --- /dev/null +++ b/elb/api-ref/en-us_topic_0000001127879251.rst @@ -0,0 +1,157 @@ +Creating a Dedicated Load Balancer and Binding a New EIP to It +============================================================== + +Scenarios +^^^^^^^^^ + +Call APIs to create a dedicated load balancer and bind a new EIP to it. + +Prerequisites +^^^^^^^^^^^^^ + +You have created a VPC and a subnet. + +Procedure +^^^^^^^^^ + +#. Query the subnet you have created. + + a. Send **GET https://**\ *{vpc_endpoint}*\ **/v1/**\ *{project_id}*\ **/subnets**. *project_id* indicates the project ID. + b. Add **X-Auth-Token** to the request header. + c. Check the response. + + - The request is successful if the following response is displayed: + + .. code:: screen + + { + "subnets": [ + { + "id": "0535759e-8104-49d9-902c-a05185a94bdf", // Subnet ID + "name": "subnet-001", // Subnet name + "description": "", + "cidr": "172.16.66.0/24", //IPv4 address range + "dnsList": [ + "100.125.4.6" + ], + "status": "ACTIVE", + "vpc_id": "44789a9f-3e80-451a-ac03-0818f99b6cdd", // VPC ID + "ipv6_enable": true, + "gateway_ip_v6": "2001:db8:a583:37c::1", + "cidr_v6": "2001:db8:a583:37c::/64", + "gateway_ip": "172.16.66.1", + "dhcp_enable": true, + "primary_dns": "100.125.4.6", + "availability_zone": "eu-de-01", //AZ of the subnet + "neutron_network_id": "0535759e-8104-49d9-902c-a05185a94bdf", // Network ID + "neutron_subnet_id": "1492f0ba-cfce-4e2c-86f7-561d757dfeee", // IPv4 subnet ID + "neutron_subnet_id_v6": "3c052475-b50b-49b9-abb1-558bad45e592", + "extra_dhcp_opts": [ + { + "opt_value": "8760h", + "opt_name": "addresstime" + } + ] + } + ] + } + + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +#. Create a dedicated load balancer and bind a new EIP to it. + + a. Send **POST https://**\ *{elb_endpoint}*\ **/v3/**\ *{project_id}*\ **/elb/loadbalancers**. *project_id* indicates the project ID. + + b. Add **X-Auth-Token** to the request header. + + c. Ensure that the following parameters, including **publicip**, are passed in the request body: + + .. code:: screen + + { + "loadbalancer": { + "vpc_id": "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b", + "availability_zone_list": [ + "br-iaas-odin1a" + ], + "admin_state_up": true, + "vip_subnet_cidr_id": "1800b6b8-a69f-4719-813d-24d62aaf32bd", + "name": "elb-ipv4", + "publicip": { + "network_type": "5_bgp", + "bandwidth": { + "size": 2, + "share_type": "PER", + "charge_mode": "bandwidth", + "name": "elb_eip_bandwidth" + } + } + } + } + + d. Check the response. + + - The request is successful if the following response is displayed: + + .. code:: screen + + { + "request_id": "21177eb184c52c5a4540c78dc7fdaee4", + "loadbalancer": { + "id": "a2556f92-3310-4173-a6d1-0b2d0bb68478", + "project_id": "060576782980d5762f9ec014dd2f1148", + "name": "elb-ipv4", + "description": "", + "vip_port_id": "fff961a9-4514-4469-84d4-a2bc4fbdfbeb", + "vip_address": "192.168.0.162", + "admin_state_up": true, + "provisioning_status": "ACTIVE", + "operating_status": "ONLINE", + "listeners": [], + "pools": [], + "tags": [], + "provider": "vlb", + "created_at": "2021-02-23T08:50:19Z", + "updated_at": "2021-02-23T08:50:19Z", + "vpc_id": "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b", + "enterprise_project_id": "0", + "availability_zone_list": [ + "br-iaas-odin1a" + ], + "ipv6_vip_address": null, + "ipv6_vip_virsubnet_id": null, + "ipv6_vip_port_id": null, + "ipv6_bandwidth": null, + "publicips": [ + { + "publicip_id": "12cba100-764e-476c-bf3f-8aba98782cf5", + "publicip_address": "10.246.173.188", + "ip_version": 4 + } + ], + "elb_virsubnet_ids": [ + "4df3e391-5ebf-4300-b614-cf5a4e793666" + ], + "elb_virsubnet_type": "dualstack", + "ip_target_enable": false, + "frozen_scene": null, + "eips": [ + { + "eip_id": "12cba100-764e-476c-bf3f-8aba98782cf5", + "eip_address": "10.246.173.188", + "ip_version": 4 + } + ], + "guaranteed": true, + "billing_info": null, + "l4_flavor_id": null, + "l4_scale_flavor_id": null, + "l7_flavor_id": null, + "l7_scale_flavor_id": null, + "vip_subnet_cidr_id": "1800b6b8-a69f-4719-813d-24d62aaf32bd" + } + } + + - If the request is abnormal, locate the fault by referring to `HTTP Status Codes for Dedicated Load Balancers `__. + +**Parent topic:** `Examples `__ diff --git a/elb/api-ref/en-us_topic_0022480177.html b/elb/api-ref/en-us_topic_0022480177.html new file mode 100644 index 000000000..436dd8616 --- /dev/null +++ b/elb/api-ref/en-us_topic_0022480177.html @@ -0,0 +1,8 @@ + + +

      API Usage Guidelines

      +

      Public cloud APIs comply with the RESTful API design principles. REST-based web services are organized into resources. Each resource is identified by one or more Uniform Resource Identifiers (URIs). An application accesses a resource based on the resource's Unified Resource Locator (URL). A URL is usually in the following format: https://Endpoint/uri. In the URL, uri indicates the resource path, that is, the API access path.

      +

      Public cloud APIs use HTTPS as the transmission protocol. Requests and responses are transmitted using JSON messages, with media type represented by Application/json.

      +

      For details about how to use APIs, see API Usage Guidelines.

      + + diff --git a/elb/api-ref/en-us_topic_0022480177.rst b/elb/api-ref/en-us_topic_0022480177.rst new file mode 100644 index 000000000..934e3b2df --- /dev/null +++ b/elb/api-ref/en-us_topic_0022480177.rst @@ -0,0 +1,8 @@ +API Usage Guidelines +==================== + +Public cloud APIs comply with the RESTful API design principles. REST-based web services are organized into resources. Each resource is identified by one or more Uniform Resource Identifiers (URIs). An application accesses a resource based on the resource's Unified Resource Locator (URL). A URL is usually in the following format: *https://Endpoint/uri*. In the URL, **uri** indicates the resource path, that is, the API access path. + +Public cloud APIs use HTTPS as the transmission protocol. Requests and responses are transmitted using JSON messages, with media type represented by **Application/json**. + +For details about how to use APIs, see `API Usage Guidelines `__. diff --git a/elb/api-ref/en-us_topic_0096561504.html b/elb/api-ref/en-us_topic_0096561504.html new file mode 100644 index 000000000..99d894341 --- /dev/null +++ b/elb/api-ref/en-us_topic_0096561504.html @@ -0,0 +1,254 @@ + + +

      Querying Load Balancers

      +

      Function

      This API is used to query load balancers and display them in a list.

      + +

      URI

      GET /v1.0/{project_id}/elbaas/loadbalancers

      + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      project_id

      +

      Yes

      +

      String

      +

      Specifies the project ID.

      +
      + + +

      Request

      • Request parameters

        None

        +
      +
      • Example request

        None

        +
      + +

      Response

      • Response parameters + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Type

        +

        Description

        +

        loadbalancers

        +

        Array

        +

        Lists the load balancers.

        +

        instance_num

        +

        String

        +

        Specifies the number of load balancers.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 3 loadbalancers parameter description

        Parameter

        +

        Type

        +

        Description

        +

        vip_address

        +

        String

        +

        Specifies the private IP address of the load balancer.

        +

        update_time

        +

        String

        +

        Specifies the time when the listener was updated.

        +

        create_time

        +

        String

        +

        Specifies the time when the listener was created.

        +

        id

        +

        String

        +

        Specifies the load balancer ID.

        +

        status

        +

        String

        +
        • Specifies the load balancer status.
        • The value can be ACTIVE, PENDING_CREATE, or ERROR.
        +

        bandwidth

        +

        Integer

        +

        Specifies the bandwidth.

        +

        vpc_id

        +

        String

        +

        Specifies the VPC ID.

        +

        admin_state_up

        +

        Integer

        +
        • Specifies the administrative status of the load balancer.
        • The value options are as follows:

          0: The load balancer is disabled.

          +

          1: The load balancer is running properly.

          +

          2: The load balancer is frozen.

          +
        +

        vip_subnet_id

        +

        String

        +

        This parameter is unavailable now.

        +

        type

        +

        String

        +

        Specifies the network type of the load balancer. The value is External.

        +

        name

        +

        String

        +

        Specifies the load balancer name.

        +

        description

        +

        String

        +

        Description

        +

        security_group_id

        +

        String

        +
        • Specifies the security group ID.
        • null is displayed for this parameter when type is set to External.
        +
        + +
      +
      • Example response
        {
        +    "loadbalancers": [
        +        {
        +            "vip_address": "192.144.62.114",
        +            "update_time": "2015-09-14 02:34:32",
        +            "create_time": "2015-09-14 02:34:32",
        +            "id": "0b07acf06d243925bc24a0ac7445267a",
        +            "status": "ACTIVE",
        +            "bandwidth": 1,
        +            "security_group_id": null,
        +            "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107",
        +            "admin_state_up": 1,
        +            "vip_subnet_id": null,
        +            "type": "External",
        +            "name": "MY_ELB",
        +            "description": null
        +        }
        +    ],
        +    "instance_num": "1"
        +}
        +
      + +

      Status Codes

      • Normal

        200

        +
      • Abnormal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Status Code

        +

        Message

        +

        Description

        +

        400

        +

        badRequest

        +

        Request error.

        +

        401

        +

        unauthorized

        +

        Authentication failed.

        +

        403

        +

        userDisabled

        +

        You do not have the permission to perform the operation.

        +

        404

        +

        Not Found

        +

        The requested page does not exist.

        +

        500

        +

        authFault

        +

        Internal error.

        +

        503

        +

        serviceUnavailable

        +

        Service unavailable.

        +
        + +
      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/en-us_topic_0096561504.rst b/elb/api-ref/en-us_topic_0096561504.rst new file mode 100644 index 000000000..c024227e8 --- /dev/null +++ b/elb/api-ref/en-us_topic_0096561504.rst @@ -0,0 +1,147 @@ +Querying Load Balancers +======================= + +Function +^^^^^^^^ + +This API is used to query load balancers and display them in a list. + +URI +^^^ + +GET /v1.0/{project_id}/elbaas/loadbalancers + +.. table:: **Table 1** Parameter description + + ========== ========= ====== ========================= + Parameter Mandatory Type Description + ========== ========= ====== ========================= + project_id Yes String Specifies the project ID. + ========== ========= ====== ========================= + +Request +^^^^^^^ + +- Request parameters + + None + +- Example request + + None + +Response +^^^^^^^^ + +- Response parameters + + .. table:: **Table 2** Parameter description + + ============= ====== ======================================= + Parameter Type Description + ============= ====== ======================================= + loadbalancers Array Lists the load balancers. + instance_num String Specifies the number of load balancers. + ============= ====== ======================================= + + .. table:: **Table 3** **loadbalancers** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | vip_address | String | Specifies the private IP address of | + | | | the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | update_time | String | Specifies the time when the listener | + | | | was updated. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | create_time | String | Specifies the time when the listener | + | | | was created. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | status | String | - Specifies the load balancer | + | | | status. | + | | | - The value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | bandwidth | Integer | Specifies the bandwidth. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vpc_id | String | Specifies the VPC ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Integer | - Specifies the administrative | + | | | status of the load balancer. | + | | | | + | | | - The value options are as follows: | + | | | | + | | | **0**: The load balancer is | + | | | disabled. | + | | | | + | | | **1**: The load balancer is | + | | | running properly. | + | | | | + | | | **2**: The load balancer is | + | | | frozen. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_id | String | This parameter is unavailable now. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | type | String | Specifies the network type of the | + | | | load balancer. The value is | + | | | **External**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Description | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | security_group_id | String | - Specifies the security group ID. | + | | | - **null** is displayed for this | + | | | parameter when **type** is set to | + | | | **External**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +- Example response + + .. code:: screen + + { + "loadbalancers": [ + { + "vip_address": "192.144.62.114", + "update_time": "2015-09-14 02:34:32", + "create_time": "2015-09-14 02:34:32", + "id": "0b07acf06d243925bc24a0ac7445267a", + "status": "ACTIVE", + "bandwidth": 1, + "security_group_id": null, + "vpc_id": "f54a3ffd-7a55-4568-9e3d-f0ff2d46a107", + "admin_state_up": 1, + "vip_subnet_id": null, + "type": "External", + "name": "MY_ELB", + "description": null + } + ], + "instance_num": "1" + } + +Status Codes +^^^^^^^^^^^^ + +- Normal + + 200 + +- Abnormal + + =========== ================== ======================================================== + Status Code Message Description + =========== ================== ======================================================== + 400 badRequest Request error. + 401 unauthorized Authentication failed. + 403 userDisabled You do not have the permission to perform the operation. + 404 Not Found The requested page does not exist. + 500 authFault Internal error. + 503 serviceUnavailable Service unavailable. + =========== ================== ======================================================== + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/en-us_topic_0096561535.html b/elb/api-ref/en-us_topic_0096561535.html new file mode 100644 index 000000000..31a1b3475 --- /dev/null +++ b/elb/api-ref/en-us_topic_0096561535.html @@ -0,0 +1,570 @@ + + +

      Creating a Load Balancer

      +

      Function

      This API is used to create a private network load balancer. After the load balancer is created, its details, such as load balancer ID, IP address, and subnet ID, are returned.

      +

      To create a public network load balancer, you also need to call the API for assigning an EIP and associate this IP address to the port bound to the IP address of the private network load balancer.

      + +

      URI

      POST /v2.0/lbaas/loadbalancers

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Request parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Yes

      +

      Object

      +

      Specifies the load balancer. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 loadbalancer parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      name

      +

      No

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the load balancer is used.

      +

      The value contains a maximum of 255 characters.

      +

      The value must be the same as the value of project_id in the token.

      +

      vip_subnet_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the subnet where the load balancer works. You can obtain the value by calling the API for querying subnets {VPC endpoint}/v2.0/subnets} using the GET method.

      +

      The private IP address of the load balancer is in this subnet.

      +

      Only IPv4 subnets are supported. IPv6 subnets are not supported.

      +

      provider

      +

      No

      +

      String

      +

      Specifies the provider of the load balancer.

      +

      The value can only be vlb.

      +

      vip_address

      +

      No

      +

      String

      +

      Specifies the private IP address of the load balancer.

      +

      This IP address must be the one in the subnet specified by vip_subnet_id. If this parameter is not specified, an IP address is automatically assigned to the load balancer from the subnet specified by vip_subnet_id.

      +

      The value contains a maximum of 64 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is reserved. The default value is true.

      +
      + + +

      Response

      + + + + + + + + + + +
      Table 3 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Object

      +

      Specifies the load balancer. For details, see Table 4.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 loadbalancer parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the load balancer is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      vip_subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the load balancer works.

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the private IP address of the load balancer.

      +

      When you create a load balancer, the system automatically creates a port and associates it with a security group. However, the security group will not take effect.

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer.

      +

      vip_address

      +

      String

      +

      Specifies the private IP address of the load balancer.

      +

      The value contains a maximum of 64 characters.

      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners added to the load balancer. For details, see Table 5.

      +

      pools

      +

      Array

      +

      Lists the IDs of backend server groups associated with the load balancer. For details, see Table 6.

      +

      operating_status

      +

      String

      +

      This parameter is reserved, and its value can only be ONLINE.

      +

      It specifies the operating status of the load balancer.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the load balancer.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      tags

      +

      Array

      +

      Lists load balancer tags.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +
      + + + + + + + + + + + + +
      Table 5 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated listener.

      +
      + + + + + + + + + + + + +
      Table 6 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + +

      Example Request

      • Example request 1: Creating a private network load balancer
        POST https://{Endpoint}/v2.0/lbaas/loadbalancers 
        +
        +{ 
        +    "loadbalancer": { 
        +        "name": "loadbalancer1", 
        +        "description": "simple lb", 
        +        "tenant_id": "1867112d054b427e808cc6096d8193a1", 
        +        "vip_subnet_id": "58077bdb-d470-424b-8c45-2e3c65060a5b", 
        +        "vip_address": "192.168.0.100", 
        +        "admin_state_up": true 
        +    } 
        +}
        +
      + +
      • Example request 2

        (Bind an EIP to the port that has been bound to the load balancer's private IP address. For details about the parameters, see Table 7.)

        + + + + + + + + + + + + + + + + + + + + + + + +
        Table 7 Request parameter

        Parameter

        +

        Mandatory

        +

        Type

        +

        Description

        +

        publicip

        +

        Yes

        +

        Object

        +

        Specifies the EIP. For details, see Table 8.

        +

        bandwidth

        +

        Yes

        +

        Object

        +

        Specifies the bandwidth. For details, see Table 9.

        +

        enterprise_project_id

        +

        No

        +

        String

        +
        • Specifies the enterprise project ID. The value is 0 or a string that contains a maximum of 36 characters in UUID format with hyphens (-).
        • When assigning an EIP, you need to bind an enterprise project ID to the EIP.
        • If this parameter is not specified, the default value is 0.
        + NOTE:

        For more information about enterprise projects and how to obtain enterprise project IDs, see the Enterprise Management User Guide.

        + +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 8 publicip parameter description

        Parameter

        +

        Mandatory

        +

        Type

        +

        Description

        +

        type

        +

        Yes

        +

        String

        +
        • Specifies the EIP type.
        • Constraints:
          • The configured value must be supported by the system.
          • publicip_id is an IPv4 port. If publicip_type is not specified, the default value is 5_bgp.
          +
        +

        ip_version

        +

        No

        +

        Integer

        +
        • Specifies the EIP version.
        • The value can be 4 and 6. 4 indicates an IPv4 address, and 6 indicates an IPv6 address.
        • Constraints:
          • The configured value must be supported by the system.
          • If this parameter is left blank or is an empty string, an IPv4 address is assigned by default.
          +
        +

        ip_address

        +

        No

        +

        String

        +
        • Specifies the EIP to be assigned. The system automatically assigns an EIP if you do not specify it.
        • The value must be a valid IPv4 address in the available IP address range.
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 9 bandwidth parameter description

        Parameter

        +

        Mandatory

        +

        Type

        +

        Description

        +

        name

        +

        Yes

        +

        String

        +
        • Specifies the bandwidth name.
        • The value is a string of 1 to 64 characters that can contain letters, digits, underscores (_), hyphens (-), and periods (.).
        • This parameter is mandatory when share_type is set to PER. This parameter will be ignored when share_type is set to WHOLE with an ID specified.
        +

        size

        +

        Yes

        +

        Integer

        +
        • Specifies the bandwidth (Mbit/s).
        • The value ranges from 1 to 1000 by default. (The range may vary depending on the configuration in each region. You can see the bandwidth range of each region on the management console.)
        • This parameter is mandatory when share_type is set to PER. This parameter will be ignored when share_type is set to WHOLE with an ID specified.
        • The minimum increment for bandwidth adjustment varies depending on the bandwidth range. The details are as follows:
          • The minimum increment is 1 Mbit/s if the allowed bandwidth ranges from 0 Mbit/s to 300 Mbit/s (with 300 Mbit/s included).
          • The minimum increment is 50 Mbit/s if the allowed bandwidth ranges from 300 Mbit/s to 1000 Mbit/s.
          • The minimum increment is 500 Mbit/s if the allowed bandwidth is greater than 1000 Mbit/s.
          +
        +

        id

        +

        No

        +

        String

        +
        • Specifies the bandwidth ID. You can specify an existing shared bandwidth when assigning an EIP.
        • The value can be the ID of the shared bandwidth whose type is set to WHOLE.
        +

        share_type

        +

        Yes

        +

        String

        +
        • Specifies the bandwidth type.
        • The value is PER, indicating that the bandwidth is dedicated.
        +

        charge_mode

        +

        No

        +

        String

        +
        • If the value is traffic, the bandwidth is billed by traffic.
        +
        + +
        • Step 1: Apply for an EIP.
          POST https://{VPCEndpoint}/v1/8b7e35ad379141fc9df3e178bd64f55c/publicips
          +
          +{
          +    "publicip": {
          +        "type": "5_bgp",
          +        "ip_version": 4
          +    },
          +    "bandwidth": {
          +        "name": "bandwidth123",
          +        "size": 10,
          +        "share_type": "PER"
          +    }
          +}
          +
        • Example response
          {
          +    "publicip": {
          +        "id": "f588ccfa-8750-4d7c-bf5d-2ede24414706",
          +        "status": "PENDING_CREATE",
          +        "type": "5_bgp",
          +        "public_ip_address": "139.9.204.183",
          +        "tenant_id": "8b7e35ad379141fc9df3e178bd64f55c",
          +        "ip_version": 4,
          +        "create_time": "2019-06-29 06:45:32",
          +        "bandwidth_size": 1
          +        
          +    }
          +}
          +
        • Step 2: Bind the EIP. (The value of public_id is the same as that in the ▪ Example response, and the value of port_id is the same as that of vip_port_id in Example response 1.)
          PUT /v1/8b7e35ad379141fc9df3e178bd64f55c/publicips/f588ccfa-8750-4d7c-bf5d-2ede24414706
          +
          +{
          +    "publicip": {
          +        "port_id": "a7ecbdb5-5a63-41dd-a830-e16c0a7e04a7"
          +    }
          +}
          +
        • Example response
          {
          +  "publicip": {
          +    "id": "f588ccfa-8750-4d7c-bf5d-2ede24414706",
          +    "status": "ACTIVE",
          +    "type": "5_bgp",
          +    "port_id": "a7ecbdb5-5a63-41dd-a830-e16c0a7e04a7",
          +    "public_ip_address": "139.9.204.183",
          +    "private_ip_address": "192.168.1.131",
          +    "tenant_id": "8b7e35ad379141fc9df3e178bd64f55c",
          +    "create_time": "2019-06-29 07:33:18",
          +    "bandwidth_size": 1,
          +    "ip_version": 4
          +  }
          +}
          +
        • After the preceding steps are complete, the load balancer has the capability of accessing the public network. You can access the load balancer using 139.9.204.183, the value of parameter public_ip_address.
        + +
      +

      Example Response

      • Example response 1
        {
        +    "loadbalancer": {
        +        "description": "simple lb",
        +        "provisioning_status": "ACTIVE",
        +        "tenant_id": "1867112d054b427e808cc6096d8193a1",
        +        "created_at": "2019-01-19T05:32:56",
        +        "admin_state_up": true,
        +        "updated_at": "2019-01-19T05:32:57",
        +        "id": "ea2843da-4026-49ec-8338-8fa015b067fc",
        +        "pools": [],
        +        "listeners": [],
        +        "vip_port_id": "a7ecbdb5-5a63-41dd-a830-e16c0a7e04a7",
        +        "operating_status": "ONLINE",
        +        "vip_address": "192.168.0.100",
        +        "vip_subnet_id": "58077bdb-d470-424b-8c45-2e3c65060a5b",
        +        "provider": "vlb",
        +        "tags": [],
        +        "name": "loadbalancer1"
        +    }
        +}
        +
      + +
      • Example response 2
        POST https://{Endpoint}/v2.0/lbaas/loadbalancers 
        +
        +{ 
        +    "loadbalancer": { 
        +        "name": "loadbalancer1", 
        +        "description": "simple lb", 
        +        "tenant_id": "1867112d054b427e808cc6096d8193a1", 
        +        "vip_subnet_id": "58077bdb-d470-424b-8c45-2e3c65060a5b", 
        +        "vip_address": "192.168.0.100", 
        +        "admin_state_up": true 
        +    } 
        +}
        +
      +

      After the preceding steps are complete, the load balancer has the capability of accessing the public network. You can access the load balancer using 139.9.204.183, the value of parameter public_ip_address.

      +

      Status Codes

      See HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/en-us_topic_0096561535.rst b/elb/api-ref/en-us_topic_0096561535.rst new file mode 100644 index 000000000..aeaea6480 --- /dev/null +++ b/elb/api-ref/en-us_topic_0096561535.rst @@ -0,0 +1,557 @@ +Creating a Load Balancer +======================== + +Function +^^^^^^^^ + +This API is used to create a private network load balancer. After the load balancer is created, its details, such as load balancer ID, IP address, and subnet ID, are returned. + +To create a public network load balancer, you also need to call the API for assigning an EIP and associate this IP address to the port bound to the IP address of the private network load balancer. + +URI +^^^ + +POST /v2.0/lbaas/loadbalancers + +Request +^^^^^^^ + +.. table:: **Table 1** Request parameters + + +--------------+-----------+--------+-------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +==============+===========+========+===============================================================================+ + | loadbalancer | Yes | Object | Specifies the load balancer. For details, see `Table | + | | | | 2 <#en-us_topic_0096 | + | | | | 561535__en-us_topic_0141008273_en-us_topic_0096561535_table1673416344910>`__. | + +--------------+-----------+--------+-------------------------------------------------------------------------------+ + +.. table:: **Table 2** **loadbalancer** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | No | String | Specifies the load balancer | + | | | | name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the load | + | | | | balancer. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the load | + | | | | balancer is used. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **project_id** in the | + | | | | token. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_subnet_id | Yes | String | Specifies the ID of the | + | | | | subnet where the load | + | | | | balancer works. You can | + | | | | obtain the value by calling | + | | | | the API for querying | + | | | | subnets {VPC | + | | | | endpoint}/v2.0/subnets} | + | | | | using the GET method. | + | | | | | + | | | | The private IP address of | + | | | | the load balancer is in | + | | | | this subnet. | + | | | | | + | | | | Only IPv4 subnets are | + | | | | supported. IPv6 subnets are | + | | | | not supported. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | provider | No | String | Specifies the provider of | + | | | | the load balancer. | + | | | | | + | | | | The value can only be | + | | | | **vlb**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | vip_address | No | String | Specifies the private IP | + | | | | address of the load | + | | | | balancer. | + | | | | | + | | | | This IP address must be the | + | | | | one in the subnet specified | + | | | | by **vip_subnet_id**. If | + | | | | this parameter is not | + | | | | specified, an IP address is | + | | | | automatically assigned to | + | | | | the load balancer from the | + | | | | subnet specified by | + | | | | **vip_subnet_id**. | + | | | | | + | | | | The value contains a | + | | | | maximum of 64 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the load balancer. | + | | | | | + | | | | This parameter is reserved. | + | | | | The default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 3** Response parameters + + +--------------+--------+--------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +==============+========+============================================================================================+ + | loadbalancer | Object | Specifies the load balancer. For details, see `Table | + | | | 4 <#en- | + | | | us_topic_0096561535__en-us_topic_0141008273_en-us_topic_0096561535_table1857116262516>`__. | + +--------------+--------+--------------------------------------------------------------------------------------------+ + +.. table:: **Table 4** **loadbalancer** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the load balancer is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_id | String | Specifies the ID of the subnet where | + | | | the load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the private IP address of the load | + | | | balancer. | + | | | | + | | | When you create a load balancer, the | + | | | system automatically creates a port | + | | | and associates it with a security | + | | | group. However, the security group | + | | | will not take effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IP address of | + | | | the load balancer. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners added to | + | | | the load balancer. For details, see | + | | | `Table | + | | | 5 <#en-us_topic_0096561535__en-us_to | + | | | pic_0141008273_table107875111574>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the IDs of backend server | + | | | groups associated with the load | + | | | balancer. For details, see `Table | + | | | 6 <#en-us_topic_0096561535__en-us_top | + | | | ic_0141008273_table1566642411246>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | This parameter is reserved, and its | + | | | value can only be **ONLINE**. | + | | | | + | | | It specifies the operating status of | + | | | the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the load balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Lists load balancer tags. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 5** **listeners** parameter description + + ========= ====== ============================================ + Parameter Type Description + ========= ====== ============================================ + id String Specifies the ID of the associated listener. + ========= ====== ============================================ + +.. table:: **Table 6** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Creating a private network load balancer + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/loadbalancers + + { + "loadbalancer": { + "name": "loadbalancer1", + "description": "simple lb", + "tenant_id": "1867112d054b427e808cc6096d8193a1", + "vip_subnet_id": "58077bdb-d470-424b-8c45-2e3c65060a5b", + "vip_address": "192.168.0.100", + "admin_state_up": true + } + } + +- Example request 2 + + (Bind an EIP to the port that has been bound to the load balancer's private IP address. For details about the parameters, see `Table 7 <#en-us_topic_0096561535__en-us_topic_0141008273_table88881449047>`__.) + + .. table:: **Table 7** Request parameter + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | publicip | Yes | Object | Specifies the EIP. For | + | | | | details, see `Table | + | | | | 8 <#en-us_topic_00 | + | | | | 96561535__en-us_topic_01410 | + | | | | 08273_table16889549343>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | bandwidth | Yes | Object | Specifies the bandwidth. | + | | | | For details, see `Table | + | | | | 9 <#en-us_topic_00 | + | | | | 96561535__en-us_topic_01410 | + | | | | 08273_table14891249945>`__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | enterprise_project_id | No | String | - Specifies the enterprise | + | | | | project ID. The value is | + | | | | **0** or a string that | + | | | | contains a maximum of 36 | + | | | | characters in UUID | + | | | | format with hyphens (-). | + | | | | - When assigning an EIP, | + | | | | you need to bind an | + | | | | enterprise project ID to | + | | | | the EIP. | + | | | | - If this parameter is not | + | | | | specified, the default | + | | | | value is **0**. | + | | | | | + | | | | NOTE: | + | | | | For more information about | + | | | | enterprise projects and how | + | | | | to obtain enterprise | + | | | | project IDs, see the | + | | | | *Enterprise Management User | + | | | | Guide*. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + + .. table:: **Table 8** **publicip** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | type | Yes | String | - Specifies the EIP type. | + | | | | - Constraints: | + | | | | | + | | | | - The configured value | + | | | | must be supported by | + | | | | the system. | + | | | | - **publicip_id** is an | + | | | | IPv4 port. If | + | | | | **publicip_type** is | + | | | | not specified, the | + | | | | default value is | + | | | | **5_bgp**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_version | No | Integer | - Specifies the EIP | + | | | | version. | + | | | | - The value can be **4** | + | | | | and **6**. **4** | + | | | | indicates an IPv4 | + | | | | address, and **6** | + | | | | indicates an IPv6 | + | | | | address. | + | | | | - Constraints: | + | | | | | + | | | | - The configured value | + | | | | must be supported by | + | | | | the system. | + | | | | - If this parameter is | + | | | | left blank or is an | + | | | | empty string, an IPv4 | + | | | | address is assigned | + | | | | by default. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | ip_address | No | String | - Specifies the EIP to be | + | | | | assigned. The system | + | | | | automatically assigns an | + | | | | EIP if you do not | + | | | | specify it. | + | | | | - The value must be a | + | | | | valid IPv4 address in | + | | | | the available IP address | + | | | | range. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + + .. table:: **Table 9** **bandwidth** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | name | Yes | String | - Specifies the bandwidth | + | | | | name. | + | | | | - The value is a string of | + | | | | 1 to 64 characters that | + | | | | can contain letters, | + | | | | digits, underscores (_), | + | | | | hyphens (-), and periods | + | | | | (.). | + | | | | - This parameter is | + | | | | mandatory when | + | | | | **share_type** is set to | + | | | | **PER**. This parameter | + | | | | will be ignored when | + | | | | **share_type** is set to | + | | | | **WHOLE** with an ID | + | | | | specified. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | size | Yes | Integer | - Specifies the bandwidth | + | | | | (Mbit/s). | + | | | | - The value ranges from | + | | | | **1** to **1000** by | + | | | | default. (The range may | + | | | | vary depending on the | + | | | | configuration in each | + | | | | region. You can see the | + | | | | bandwidth range of each | + | | | | region on the management | + | | | | console.) | + | | | | - This parameter is | + | | | | mandatory when | + | | | | **share_type** is set to | + | | | | **PER**. This parameter | + | | | | will be ignored when | + | | | | **share_type** is set to | + | | | | **WHOLE** with an ID | + | | | | specified. | + | | | | - The minimum increment | + | | | | for bandwidth adjustment | + | | | | varies depending on the | + | | | | bandwidth range. The | + | | | | details are as follows: | + | | | | | + | | | | - The minimum increment | + | | | | is 1 Mbit/s if the | + | | | | allowed bandwidth | + | | | | ranges from 0 Mbit/s | + | | | | to 300 Mbit/s (with | + | | | | 300 Mbit/s included). | + | | | | - The minimum increment | + | | | | is 50 Mbit/s if the | + | | | | allowed bandwidth | + | | | | ranges from 300 | + | | | | Mbit/s to 1000 | + | | | | Mbit/s. | + | | | | - The minimum increment | + | | | | is 500 Mbit/s if the | + | | | | allowed bandwidth is | + | | | | greater than 1000 | + | | | | Mbit/s. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | - Specifies the bandwidth | + | | | | ID. You can specify an | + | | | | existing shared | + | | | | bandwidth when assigning | + | | | | an EIP. | + | | | | - The value can be the ID | + | | | | of the shared bandwidth | + | | | | whose type is set to | + | | | | **WHOLE**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | share_type | Yes | String | - Specifies the bandwidth | + | | | | type. | + | | | | - The value is **PER**, | + | | | | indicating that the | + | | | | bandwidth is dedicated. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | charge_mode | No | String | - If the value is | + | | | | **traffic**, the | + | | | | bandwidth is billed by | + | | | | traffic. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + + - Step 1: Apply for an EIP. + + .. code:: screen + + POST https://{VPCEndpoint}/v1/8b7e35ad379141fc9df3e178bd64f55c/publicips + + { + "publicip": { + "type": "5_bgp", + "ip_version": 4 + }, + "bandwidth": { + "name": "bandwidth123", + "size": 10, + "share_type": "PER" + } + } + + - Example response + + .. code:: screen + + { + "publicip": { + "id": "f588ccfa-8750-4d7c-bf5d-2ede24414706", + "status": "PENDING_CREATE", + "type": "5_bgp", + "public_ip_address": "139.9.204.183", + "tenant_id": "8b7e35ad379141fc9df3e178bd64f55c", + "ip_version": 4, + "create_time": "2019-06-29 06:45:32", + "bandwidth_size": 1 + + } + } + + - Step 2: Bind the EIP. (The value of **public_id** is the same as that in the `▪ Example response <#en-us_topic_0096561535__en-us_topic_0141008273_li4893134914410>`__, and the value of **port_id** is the same as that of **vip_port_id** in `Example response 1 <#en-us_topic_0096561535__en-us_topic_0141008273_li4893134914410>`__.) + + .. code:: screen + + PUT /v1/8b7e35ad379141fc9df3e178bd64f55c/publicips/f588ccfa-8750-4d7c-bf5d-2ede24414706 + + { + "publicip": { + "port_id": "a7ecbdb5-5a63-41dd-a830-e16c0a7e04a7" + } + } + + - Example response + + .. code:: screen + + { + "publicip": { + "id": "f588ccfa-8750-4d7c-bf5d-2ede24414706", + "status": "ACTIVE", + "type": "5_bgp", + "port_id": "a7ecbdb5-5a63-41dd-a830-e16c0a7e04a7", + "public_ip_address": "139.9.204.183", + "private_ip_address": "192.168.1.131", + "tenant_id": "8b7e35ad379141fc9df3e178bd64f55c", + "create_time": "2019-06-29 07:33:18", + "bandwidth_size": 1, + "ip_version": 4 + } + } + + - After the preceding steps are complete, the load balancer has the capability of accessing the public network. You can access the load balancer using 139.9.204.183, the value of parameter **public_ip_address**. + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "loadbalancer": { + "description": "simple lb", + "provisioning_status": "ACTIVE", + "tenant_id": "1867112d054b427e808cc6096d8193a1", + "created_at": "2019-01-19T05:32:56", + "admin_state_up": true, + "updated_at": "2019-01-19T05:32:57", + "id": "ea2843da-4026-49ec-8338-8fa015b067fc", + "pools": [], + "listeners": [], + "vip_port_id": "a7ecbdb5-5a63-41dd-a830-e16c0a7e04a7", + "operating_status": "ONLINE", + "vip_address": "192.168.0.100", + "vip_subnet_id": "58077bdb-d470-424b-8c45-2e3c65060a5b", + "provider": "vlb", + "tags": [], + "name": "loadbalancer1" + } + } + +- Example response 2 + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/loadbalancers + + { + "loadbalancer": { + "name": "loadbalancer1", + "description": "simple lb", + "tenant_id": "1867112d054b427e808cc6096d8193a1", + "vip_subnet_id": "58077bdb-d470-424b-8c45-2e3c65060a5b", + "vip_address": "192.168.0.100", + "admin_state_up": true + } + } + +After the preceding steps are complete, the load balancer has the capability of accessing the public network. You can access the load balancer using 139.9.204.183, the value of parameter **public_ip_address**. + +Status Codes +^^^^^^^^^^^^ + +See `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/en-us_topic_0096561547.html b/elb/api-ref/en-us_topic_0096561547.html new file mode 100644 index 000000000..cf5017352 --- /dev/null +++ b/elb/api-ref/en-us_topic_0096561547.html @@ -0,0 +1,459 @@ + + +

      Querying Backend Server Groups

      +

      Request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Request parameters

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      marker

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group from which pagination query starts, that is, the ID of the last backend server group on the previous page. If this parameter is not specified, the first page will be queried.

      +

      This parameter must be used together with limit.

      +

      limit

      +

      No

      +

      Integer

      +

      Specifies the number of backend server groups on each page.

      +

      page_reverse

      +

      No

      +

      Boolean

      +

      Specifies the page direction. The value can be true or false, and the default value is false. The last page in the list requested with page_reverse set to false will not contain the "next" link, and the last page in the list requested with page_reverse set to true will not contain the "previous" link.

      +

      This parameter must be used together with limit.

      +

      id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the backend server group is used.

      +

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the backend server group name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      healthmonitor_id

      +

      No

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      loadbalancer_id

      +

      No

      +

      String

      +

      Specifies the ID of the load balancer associated with the backend server group.

      +

      protocol

      +

      No

      +

      String

      +

      Specifies the protocol that the backend server group uses to receive requests.

      +

      TCP, UDP, and HTTP are supported.

      +

      lb_algorithm

      +

      No

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +The value options are as follows:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm.
      + +

      When the value is SOURCE_IP, the weights of backend servers in the server group are invalid. For details about parameter weight, see Table 2.

      +

      member_address

      +

      No

      +

      String

      +

      Lists the IDs of backend servers in the backend server group.

      +

      member_device_id

      +

      No

      +

      String

      +

      Specifies the ID of the ECS corresponding to the backend server in the backend server group.

      +
      + + +

      Response

      + + + + + + + + + + + + + + +
      Table 2 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      pools

      +

      Array

      +

      Lists the backend server groups. For details, see Table 3.

      +

      pools_links

      +

      List

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      This parameter exists only in the response body of pagination query. For details, see Table 8.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the backend server group.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the backend server group is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the backend server group name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the backend server group.

      +

      The value contains a maximum of 255 characters.

      +

      protocol

      +

      String

      +

      Specifies the protocol that the backend server group uses to receive requests.

      +

      TCP, UDP, and HTTP are supported.

      +

      lb_algorithm

      +

      String

      +

      Specifies the load balancing algorithm of the backend server group.

      +The value options are as follows:
      • ROUND_ROBIN: indicates the weighted round robin algorithm.
      • LEAST_CONNECTIONS: indicates the weighted least connections algorithm.
      • SOURCE_IP: indicates the source IP hash algorithm.
      + +

      When the value is SOURCE_IP, the weights of backend servers in the server group are invalid.

      +

      members

      +

      Array

      +

      Lists the IDs of backend servers in the backend server group.

      +

      healthmonitor_id

      +

      String

      +

      Specifies the ID of the health check configured for the backend server group.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the backend server group.

      +

      This parameter is reserved. The default value is true.

      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners associated with the backend server group.

      +

      loadbalancers

      +

      String

      +

      Lists the IDs of load balancers associated with the backend server group.

      +

      session_persistence

      +

      Object

      +

      Specifies whether to enable the sticky session feature. For details, see Table 7.

      +

      Once the sticky session feature is enabled, requests from the same client are sent to the same backend server within the specified period.

      +

      When this feature is disabled, the parameter value is null.

      +
      + + + + + + + + + + + + +
      Table 4 members parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server.

      +
      + + + + + + + + + + + + +
      Table 5 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + + + + + + + + + + + +
      Table 6 loadbalancers parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated load balancer.

      +
      + + + + + + + + + + + + + + + + + + + + +
      Table 7 session_persistence parameter description

      Parameter

      +

      Type

      +

      Description

      +

      type

      +

      String

      +

      Specifies the sticky session type.

      +The value can be one of the following:
      • SOURCE_IP: Requests are distributed based on the client's IP address. Requests from the same IP address are sent to the same backend server.
      • HTTP_COOKIE: When the client sends a request for the first time, the load balancer automatically generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to the backend server that processes the first request.
      • APP_COOKIE: When the client sends a request for the first time, the backend server that receives the request generates a cookie and inserts the cookie into the response message. Subsequent requests are sent to this backend server.
      + +

      When the protocol of the backend server group is TCP, only SOURCE_IP takes effect. When the protocol of the backend server group is HTTP, only HTTP_COOKIE or APP_COOKIE takes effect.

      +

      cookie_name

      +

      String

      +

      Specifies the cookie name.

      +

      This parameter is mandatory when the sticky session type is APP_COOKIE.

      +

      persistence_timeout

      +

      Integer

      +

      Specifies the sticky session timeout duration in minutes.

      +

      This parameter is invalid when type is set to APP_COOKIE.

      +
      • Optional value ranges are as follows:
        • When the protocol of the backend server group is TCP or UDP, the value ranges from 1 to 60.
        • When the protocol of the backend server group is HTTP or HTTPS, the value ranges from 1 to 1440.
        +
      +
      + + + + + + + + + + + + + + + + +
      Table 8 pools_links parameter description

      Parameter

      +

      Type

      +

      Description

      +

      href

      +

      String

      +

      Provides links to the previous or next page during pagination query, respectively.

      +

      rel

      +

      String

      +

      Specifies the prompt of the previous or next page. The value can be next or previous.

      +
      • next: indicates the URL of the next page.
      • previous: indicates the URL of the previous page.
      +
      + + +

      Example Request

      • Example request 1: Adding a backend server group with the sticky session feature disabled
        POST https://{Endpoint}/v2.0/lbaas/pools 
        +
        +{
        +    "pool": {
        +        "lb_algorithm":"ROUND_ROBIN",
        +        "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117",
        +        "protocol":"HTTP"
        +    }
        +}
        +
      + +
      • Example request 2: Querying backend server groups whose load balancing algorithm is SOURCE_IP
        GET https://{Endpoint}/v2.0/lbaas/pools
        +
      +
      • Example response 2
        {
        +    "pools": [
        +        {
        +            "lb_algorithm": "SOURCE_IP",
        +            "protocol": "TCP",
        +            "description": "",
        +            "admin_state_up": true,
        +            "loadbalancers": [
        +                {
        +                    "id": "07d28d4a-4899-40a3-a939-5d09d69019e1"
        +                }
        +            ],
        +            "tenant_id": "1867112d054b427e808cc6096d8193a1",
        +            "session_persistence": null,
        +            "healthmonitor_id": null,
        +            "listeners": [
        +                {
        +                    "id": "1b421c2d-7e78-4a78-9ee4-c8ccba41f15b"
        +                }
        +            ],
        +            "members": [
        +                {
        +                    "id": "88f9c079-29cb-435a-b98f-0c5c0b90c2bd"
        +                },
        +                {
        +                    "id": "2f4c9644-d5d2-4cf8-a3c0-944239a4f58c"
        +                }
        +            ],
        +            "id": "3a9f50bb-f041-4eac-a117-82472d8a0007",
        +            "name": "my-pool"
        +        }
        +    ]
        +}
        +
      +

      Status Codes

      See HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Backend Server Group + + + diff --git a/elb/api-ref/en-us_topic_0096561547.rst b/elb/api-ref/en-us_topic_0096561547.rst new file mode 100644 index 000000000..7dc0a3c5e --- /dev/null +++ b/elb/api-ref/en-us_topic_0096561547.rst @@ -0,0 +1,408 @@ +Querying Backend Server Groups +============================== + +Request +^^^^^^^ + +.. table:: **Table 1** Request parameters + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | marker | No | String | Specifies the ID of the | + | | | | backend server group from | + | | | | which pagination query | + | | | | starts, that is, the ID of | + | | | | the last backend server | + | | | | group on the previous page. | + | | | | If this parameter is not | + | | | | specified, the first page | + | | | | will be queried. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | limit | No | Integer | Specifies the number of | + | | | | backend server groups on | + | | | | each page. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | page_reverse | No | Boolean | Specifies the page | + | | | | direction. The value can be | + | | | | **true** or **false**, and | + | | | | the default value is | + | | | | **false**. The last page in | + | | | | the list requested with | + | | | | **page_reverse** set to | + | | | | **false** will not contain | + | | | | the "next" link, and the | + | | | | last page in the list | + | | | | requested with | + | | | | **page_reverse** set to | + | | | | **true** will not contain | + | | | | the "previous" link. | + | | | | | + | | | | This parameter must be used | + | | | | together with **limit**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | id | No | String | Specifies the ID of the | + | | | | backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the backend | + | | | | server group is used. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the backend | + | | | | server group name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | backend server group. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | healthmonitor_id | No | String | Specifies the ID of the | + | | | | health check configured for | + | | | | the backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | loadbalancer_id | No | String | Specifies the ID of the | + | | | | load balancer associated | + | | | | with the backend server | + | | | | group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | protocol | No | String | Specifies the protocol that | + | | | | the backend server group | + | | | | uses to receive requests. | + | | | | | + | | | | TCP, UDP, and HTTP are | + | | | | supported. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | lb_algorithm | No | String | Specifies the load | + | | | | balancing algorithm of the | + | | | | backend server group. | + | | | | | + | | | | The value options are as | + | | | | follows: | + | | | | | + | | | | - **ROUND_ROBIN**: | + | | | | indicates the weighted | + | | | | round robin algorithm. | + | | | | - **LEAST_CONNECTIONS**: | + | | | | indicates the weighted | + | | | | least connections | + | | | | algorithm. | + | | | | - **SOURCE_IP**: indicates | + | | | | the source IP hash | + | | | | algorithm. | + | | | | | + | | | | When the value is | + | | | | **SOURCE_IP**, the weights | + | | | | of backend servers in the | + | | | | server group are invalid. | + | | | | For details about parameter | + | | | | **weight**, see `Table | + | | | | 2 `__. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_address | No | String | Lists the IDs of backend | + | | | | servers in the backend | + | | | | server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | member_device_id | No | String | Specifies the ID of the ECS | + | | | | corresponding to the | + | | | | backend server in the | + | | | | backend server group. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 2** Parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | pools | Array | Lists the backend server groups. For | + | | | details, see `Table | + | | | 3 <#en-us_to | + | | | pic_0096561547__table92302230217>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools_links | List | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + | | | | + | | | This parameter exists only in the | + | | | response body of pagination query. | + | | | For details, see `Table | + | | | 8 <#en-us_topic | + | | | _0096561547__table18892135113610>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** **pools** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the ID of the backend | + | | | server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the backend server group is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the backend server group | + | | | name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the backend server group. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | protocol | String | Specifies the protocol that the | + | | | backend server group uses to receive | + | | | requests. | + | | | | + | | | TCP, UDP, and HTTP are supported. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | lb_algorithm | String | Specifies the load balancing | + | | | algorithm of the backend server | + | | | group. | + | | | | + | | | The value options are as follows: | + | | | | + | | | - **ROUND_ROBIN**: indicates the | + | | | weighted round robin algorithm. | + | | | - **LEAST_CONNECTIONS**: indicates | + | | | the weighted least connections | + | | | algorithm. | + | | | - **SOURCE_IP**: indicates the | + | | | source IP hash algorithm. | + | | | | + | | | When the value is **SOURCE_IP**, the | + | | | weights of backend servers in the | + | | | server group are invalid. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | members | Array | Lists the IDs of backend servers in | + | | | the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | healthmonitor_id | String | Specifies the ID of the health check | + | | | configured for the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the backend server group. | + | | | | + | | | This parameter is reserved. The | + | | | default value is **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners associated | + | | | with the backend server group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | loadbalancers | String | Lists the IDs of load balancers | + | | | associated with the backend server | + | | | group. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | session_persistence | Object | Specifies whether to enable the | + | | | sticky session feature. For details, | + | | | see `Table | + | | | 7 <#en-us_top | + | | | ic_0096561547__table576515134510>`__. | + | | | | + | | | Once the sticky session feature is | + | | | enabled, requests from the same | + | | | client are sent to the same backend | + | | | server within the specified period. | + | | | | + | | | When this feature is disabled, the | + | | | parameter value is **null**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 4** **members** parameter description + + ========= ====== ================================================== + Parameter Type Description + ========= ====== ================================================== + id String Specifies the ID of the associated backend server. + ========= ====== ================================================== + +.. table:: **Table 5** **listeners** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +.. table:: **Table 6** **loadbalancers** parameter description + + ========= ====== ================================================= + Parameter Type Description + ========= ====== ================================================= + id String Specifies the ID of the associated load balancer. + ========= ====== ================================================= + +.. table:: **Table 7** **session_persistence** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | type | String | Specifies the sticky session type. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **SOURCE_IP**: Requests are | + | | | distributed based on the client's | + | | | IP address. Requests from the same | + | | | IP address are sent to the same | + | | | backend server. | + | | | - **HTTP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the load balancer | + | | | automatically generates a cookie | + | | | and inserts the cookie into the | + | | | response message. Subsequent | + | | | requests are sent to the backend | + | | | server that processes the first | + | | | request. | + | | | - **APP_COOKIE**: When the client | + | | | sends a request for the first | + | | | time, the backend server that | + | | | receives the request generates a | + | | | cookie and inserts the cookie into | + | | | the response message. Subsequent | + | | | requests are sent to this backend | + | | | server. | + | | | | + | | | When the protocol of the backend | + | | | server group is TCP, only | + | | | **SOURCE_IP** takes effect. When the | + | | | protocol of the backend server group | + | | | is HTTP, only **HTTP_COOKIE** or | + | | | **APP_COOKIE** takes effect. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | cookie_name | String | Specifies the cookie name. | + | | | | + | | | This parameter is mandatory when the | + | | | sticky session type is | + | | | **APP_COOKIE**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | persistence_timeout | Integer | Specifies the sticky session timeout | + | | | duration in minutes. | + | | | | + | | | This parameter is invalid when | + | | | **type** is set to **APP_COOKIE**. | + | | | | + | | | - Optional value ranges are as | + | | | follows: | + | | | | + | | | - When the protocol of the | + | | | backend server group is TCP or | + | | | UDP, the value ranges from | + | | | **1** to **60**. | + | | | - When the protocol of the | + | | | backend server group is HTTP or | + | | | HTTPS, the value ranges from | + | | | **1** to **1440**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 8** **pools_links** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | href | String | Provides links to the previous or | + | | | next page during pagination query, | + | | | respectively. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rel | String | Specifies the prompt of the previous | + | | | or next page. The value can be | + | | | **next** or **previous**. | + | | | | + | | | - **next**: indicates the URL of the | + | | | next page. | + | | | - **previous**: indicates the URL of | + | | | the previous page. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Adding a backend server group with the sticky session feature disabled + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/pools + + { + "pool": { + "lb_algorithm":"ROUND_ROBIN", + "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117", + "protocol":"HTTP" + } + } + +- Example request 2: Querying backend server groups whose load balancing algorithm is **SOURCE_IP** + + .. code:: screen + + GET https://{Endpoint}/v2.0/lbaas/pools + +- Example response 2 + + .. code:: screen + + { + "pools": [ + { + "lb_algorithm": "SOURCE_IP", + "protocol": "TCP", + "description": "", + "admin_state_up": true, + "loadbalancers": [ + { + "id": "07d28d4a-4899-40a3-a939-5d09d69019e1" + } + ], + "tenant_id": "1867112d054b427e808cc6096d8193a1", + "session_persistence": null, + "healthmonitor_id": null, + "listeners": [ + { + "id": "1b421c2d-7e78-4a78-9ee4-c8ccba41f15b" + } + ], + "members": [ + { + "id": "88f9c079-29cb-435a-b98f-0c5c0b90c2bd" + }, + { + "id": "2f4c9644-d5d2-4cf8-a3c0-944239a4f58c" + } + ], + "id": "3a9f50bb-f041-4eac-a117-82472d8a0007", + "name": "my-pool" + } + ] + } + +Status Codes +^^^^^^^^^^^^ + +See `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Backend Server Group `__ diff --git a/elb/api-ref/en-us_topic_0141008271.html b/elb/api-ref/en-us_topic_0141008271.html new file mode 100644 index 000000000..b40c7d814 --- /dev/null +++ b/elb/api-ref/en-us_topic_0141008271.html @@ -0,0 +1,209 @@ + + +

      Querying Details of a Load Balancer

      +

      Response

      + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Type

      +

      Description

      +

      loadbalancer

      +

      Object

      +

      Specifies the load balancer. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 loadbalancer parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the load balancer ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the load balancer is used.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      String

      +

      Specifies the load balancer name.

      +

      The value contains a maximum of 255 characters.

      +

      description

      +

      String

      +

      Provides supplementary information about the load balancer.

      +

      The value contains a maximum of 255 characters.

      +

      vip_subnet_id

      +

      String

      +

      Specifies the ID of the subnet where the load balancer works.

      +

      vip_port_id

      +

      String

      +

      Specifies the ID of the port bound to the private IP address of the load balancer.

      +

      provider

      +

      String

      +

      Specifies the provider of the load balancer.

      +

      vip_address

      +

      String

      +

      Specifies the private IP address of the load balancer.

      +

      The value contains a maximum of 64 characters.

      +

      listeners

      +

      Array

      +

      Lists the IDs of listeners added to the load balancer. For details, see Table 3.

      +

      pools

      +

      Array

      +

      Lists the IDs of backend server groups associated with the load balancer. For details, see Table 4.

      +

      operating_status

      +

      String

      +

      Specifies the operating status of the load balancer.

      +

      The value can be ONLINE, OFFLINE, DEGRADED, DISABLED, or NO_MONITOR.

      +

      This parameter is reserved. The default value is ONLINE.

      +

      The value contains a maximum of 16 characters.

      +

      provisioning_status

      +

      String

      +

      Specifies the provisioning status of the load balancer.

      +

      The value can be ACTIVE, PENDING_CREATE, or ERROR.

      +

      This parameter is reserved. The default value is ACTIVE.

      +

      The value contains a maximum of 16 characters.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the load balancer.

      +

      This parameter is reserved. The default value is true.

      +

      tags

      +

      Array

      +

      Lists the tags added to the load balancer.

      +

      created_at

      +

      String

      +

      Specifies the time when the load balancer was created.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +

      updated_at

      +

      String

      +

      Specifies the time when the load balancer was updated.

      +

      The UTC time is in YYYY-MM-DDTHH:MM:SS format.

      +

      The value contains a maximum of 19 characters.

      +
      + + + + + + + + + + + + +
      Table 3 listeners parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated listener.

      +
      + + + + + + + + + + + + +
      Table 4 pools parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the ID of the associated backend server group.

      +
      + + +

      Status Codes

      See HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Load Balancer + + + diff --git a/elb/api-ref/en-us_topic_0141008271.rst b/elb/api-ref/en-us_topic_0141008271.rst new file mode 100644 index 000000000..6ce69b22f --- /dev/null +++ b/elb/api-ref/en-us_topic_0141008271.rst @@ -0,0 +1,142 @@ +Querying Details of a Load Balancer +=================================== + +Response +^^^^^^^^ + +.. table:: **Table 1** Parameter description + + +--------------+--------+--------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +==============+========+============================================================================================+ + | loadbalancer | Object | Specifies the load balancer. For details, see `Table | + | | | 2 <#en-us_topic_0141008271__en-us_topic_0096561532_table1943718352380>`__. | + +--------------+--------+--------------------------------------------------------------------------------------------+ + +.. table:: **Table 2** **loadbalancer** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the load balancer ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the load balancer is used. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the load balancer name. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the load balancer. | + | | | | + | | | The value contains a maximum of 255 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_subnet_id | String | Specifies the ID of the subnet where | + | | | the load balancer works. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_port_id | String | Specifies the ID of the port bound to | + | | | the private IP address of the load | + | | | balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provider | String | Specifies the provider of the load | + | | | balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | vip_address | String | Specifies the private IP address of | + | | | the load balancer. | + | | | | + | | | The value contains a maximum of 64 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listeners | Array | Lists the IDs of listeners added to | + | | | the load balancer. For details, see | + | | | `Table | + | | | 3 <#en-us_top | + | | | ic_0141008271__table107875111574>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | pools | Array | Lists the IDs of backend server | + | | | groups associated with the load | + | | | balancer. For details, see `Table | + | | | 4 <#en-us_topi | + | | | c_0141008271__table1566642411246>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | operating_status | String | Specifies the operating status of the | + | | | load balancer. | + | | | | + | | | The value can be **ONLINE**, | + | | | **OFFLINE**, **DEGRADED**, | + | | | **DISABLED**, or **NO_MONITOR**. | + | | | | + | | | This parameter is reserved. The | + | | | default value is **ONLINE**. | + | | | | + | | | The value contains a maximum of 16 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | Specifies the provisioning status of | + | | | the load balancer. | + | | | | + | | | The value can be **ACTIVE**, | + | | | **PENDING_CREATE**, or **ERROR**. | + | | | | + | | | This parameter is reserved. The | + | | | default value is **ACTIVE**. | + | | | | + | | | The value contains a maximum of 16 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the load balancer. | + | | | | + | | | This parameter is reserved. The | + | | | default value is **true**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tags | Array | Lists the tags added to the load | + | | | balancer. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | created_at | String | Specifies the time when the load | + | | | balancer was created. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | updated_at | String | Specifies the time when the load | + | | | balancer was updated. | + | | | | + | | | The UTC time is in | + | | | *YYYY-MM-DDTHH:MM:SS* format. | + | | | | + | | | The value contains a maximum of 19 | + | | | characters. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 3** **listeners** parameter description + + ========= ====== ============================================ + Parameter Type Description + ========= ====== ============================================ + id String Specifies the ID of the associated listener. + ========= ====== ============================================ + +.. table:: **Table 4** **pools** parameter description + + ========= ====== ======================================================== + Parameter Type Description + ========= ====== ======================================================== + id String Specifies the ID of the associated backend server group. + ========= ====== ======================================================== + +Status Codes +^^^^^^^^^^^^ + +See `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Load Balancer `__ diff --git a/elb/api-ref/errorcode.html b/elb/api-ref/errorcode.html new file mode 100644 index 000000000..da8cd9f52 --- /dev/null +++ b/elb/api-ref/errorcode.html @@ -0,0 +1,207 @@ + + +

      HTTP Status Codes for Dedicated Load Balancers

      +

      The following code descriptions are only suitable for dedicated load balancers.

      + + + + + + + + + + + + + + + + + + + +

      Status Code

      +

      Type

      +

      Description

      +

      200

      +

      OK

      +

      Normal response to GET and PUT requests.

      +

      201

      +

      Created

      +

      Normal response to POST requests.

      +

      204

      +

      No Content

      +

      Normal response to DELETE requests.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Module

      +

      Status Code

      +

      Type

      +

      Error Code

      +

      Possible Cause

      +

      Public

      +

      400

      +

      Bad request

      +

      ELB.8902

      +

      Malformed request URI or body.

      +

      Invalid admin _state_up value.

      +

      Invalid parameters.

      +

      Batch operations are not allowed.

      +

      Failed to verify the parameters.

      +

      Incorrect request method, for example, updating attributes that can be specified during creation only.

      +

      The network is not external (the value of router:external is set to false).

      +

      The IaaS OpenStack network port has no floating IP address bound.

      +

      The requested floating IP address is not in the IP address range of the external network.

      +

      Invalid fixed IP address.

      +

      The router port does not have a fixed IP address.

      +

      The subnet for the router interface must have a gateway IP address.

      +

      401

      +

      Unauthorized

      +

      SYS.0401

      +

      Authentication required.

      +

      403

      +

      +

      Forbidden

      +

      +

      ELB.8903

      +

      The URI does not exist.

      +

      The resource cannot be found.

      +

      SYS.0403

      +

      Authentication required.

      +

      404

      +

      Not Found

      +

      ELB.8904

      +

      The URI does not exist.

      +

      The resource cannot be found.

      +

      The port UUID is not valid.

      +

      409

      +

      Conflict

      +

      ELB.8907

      +

      The port is already in use.

      +

      The IP address is already in use.

      +

      The IP address pool cannot contain gateway and broadcast addresses.

      +

      The requested floating IP address is already in use.

      +

      The internal IaaS OpenStack network port and fixed IP address are already associated with another floating IP addresses.

      +

      ELB.8905

      +

      The quota is used up.

      +

      500

      +

      Internal server error

      +

      ELB.8906

      +

      Internal IaaS OpenStack network error.

      +

      Load balancer

      +

      400

      +

      Bad request

      +

      ELB.8931

      +

      The subnet IP version is not the same.

      +

      ELB.8932

      +

      IPv6 subnets are not supported, but the value of ipv6_vip_virsubnet_id is not null.

      +

      Backend server

      +

      400

      +

      Bad request

      +

      ELB.8933

      +

      IPv6 subnets are not supported, but backend servers use IPv6 addresses.

      +
      + + + + +Parent topic: Common Parameters + + + diff --git a/elb/api-ref/errorcode.rst b/elb/api-ref/errorcode.rst new file mode 100644 index 000000000..23b5fcc9f --- /dev/null +++ b/elb/api-ref/errorcode.rst @@ -0,0 +1,132 @@ +HTTP Status Codes for Dedicated Load Balancers +============================================== + +The following code descriptions are only suitable for dedicated load balancers. + +=========== ========== ======================================== +Status Code Type Description +=========== ========== ======================================== +200 OK Normal response to GET and PUT requests. +201 Created Normal response to POST requests. +204 No Content Normal response to DELETE requests. +=========== ========== ======================================== + ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| Module | Status Code | Type | Error Code | Possible Cause | ++=======================+=======================+=======================+=======================+=======================+ +| Public | 400 | Bad request | ELB.8902 | Malformed request URI | +| | | | | or body. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | Invalid **admin | +| | | | | \_state_up** value. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | Invalid parameters. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | Batch operations are | +| | | | | not allowed. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | Failed to verify the | +| | | | | parameters. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | Incorrect request | +| | | | | method, for example, | +| | | | | updating attributes | +| | | | | that can be specified | +| | | | | during creation only. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The network is not | +| | | | | external (the value | +| | | | | of | +| | | | | **router:external** | +| | | | | is set to **false**). | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The IaaS OpenStack | +| | | | | network port has no | +| | | | | floating IP address | +| | | | | bound. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The requested | +| | | | | floating IP address | +| | | | | is not in the IP | +| | | | | address range of the | +| | | | | external network. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | Invalid fixed IP | +| | | | | address. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The router port does | +| | | | | not have a fixed IP | +| | | | | address. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The subnet for the | +| | | | | router interface must | +| | | | | have a gateway IP | +| | | | | address. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | 401 | Unauthorized | SYS.0401 | Authentication | +| | | | | required. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | 403 | Forbidden | ELB.8903 | The URI does not | +| | | | | exist. | +| | | | | | +| | | | | The resource cannot | +| | | | | be found. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | SYS.0403 | Authentication | +| | | | | required. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | 404 | Not Found | ELB.8904 | The URI does not | +| | | | | exist. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The resource cannot | +| | | | | be found. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The port UUID is not | +| | | | | valid. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | 409 | Conflict | ELB.8907 | The port is already | +| | | | | in use. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The IP address is | +| | | | | already in use. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The IP address pool | +| | | | | cannot contain | +| | | | | gateway and broadcast | +| | | | | addresses. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The requested | +| | | | | floating IP address | +| | | | | is already in use. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | | The internal IaaS | +| | | | | OpenStack network | +| | | | | port and fixed IP | +| | | | | address are already | +| | | | | associated with | +| | | | | another floating IP | +| | | | | addresses. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | ELB.8905 | The quota is used up. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | 500 | Internal server error | ELB.8906 | Internal IaaS | +| | | | | OpenStack network | +| | | | | error. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| Load balancer | 400 | Bad request | ELB.8931 | The subnet IP version | +| | | | | is not the same. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| | | | ELB.8932 | IPv6 subnets are not | +| | | | | supported, but the | +| | | | | value of | +| | | | | **ip | +| | | | | v6_vip_virsubnet_id** | +| | | | | is not **null**. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| Backend server | 400 | Bad request | ELB.8933 | IPv6 subnets are not | +| | | | | supported, but | +| | | | | backend servers use | +| | | | | IPv6 addresses. | ++-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ + +**Parent topic:** `Common Parameters `__ diff --git a/elb/api-ref/l7.html b/elb/api-ref/l7.html new file mode 100644 index 000000000..92b26d4df --- /dev/null +++ b/elb/api-ref/l7.html @@ -0,0 +1,485 @@ + + +

      Adding a Forwarding Policy

      +

      Function

      This API is used to add a forwarding policy. The listener and forwarding policy determine how traffic is forwarded to backend servers.

      +
      • By matching the URL or domain name specified in the forwarding policy when action is set to REDIRECT_TO_POOL, the load balancer distributes the traffic to backend servers in a specific backend server group.
      • When action is set to REDIRECT_TO_LISTENER, the HTTP listener is redirected to an HTTPS listener, and requests are routed by the HTTPS listener.
      + +

      Constraints

      Currently, only redirects from an HTTP listener to an HTTPS listener are supported. When action is set to REDIRECT_TO_LISTENER, the listener specified by listener_id can only be an HTTP listener, and the listener specified by redirect_listener_id can only be an HTTPS listener.

      +

      The load balancer of the HTTPS listener to which traffic is redirected must be the same as that of the HTTP listener.

      + +

      URI

      POST /v2.0/lbaas/l7policies

      + +

      Request

      + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      l7policy

      +

      Yes

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 2.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 l7policy parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      tenant_id

      +

      No

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      +

      The value must be the same as the value of tenant_id in the token.

      +

      The value contains a maximum of 255 characters.

      +

      name

      +

      No

      +

      String

      +

      Specifies the forwarding policy name.

      +

      The value contains a maximum of 255 characters.

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved, and the default value is true.

      +

      description

      +

      No

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      The value contains a maximum of 255 characters.

      +

      listener_id

      +

      Yes

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +
      • When action is set to REDIRECT_TO_POOL, forwarding policies can be added to a listener with protocol set to HTTP or TERMINATED_HTTPS.
      • When action is set to REDIRECT_TO_LISTENER, forwarding policies can be added to a listener with protocol set to HTTP.
      +

      action

      +

      Yes

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      No

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded. The default value is null.

      +

      This parameter is mandatory when action is set to REDIRECT_TO_POOL.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_LISTENER.

      +

      The backend server group must meet the following requirements:

      +
      • Cannot be the default backend server group of the listener.
      • Cannot be the backend server group used by forwarding policies of other listeners.
      +

      redirect_listener_id

      +

      No

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected. The default value is null.

      +

      This parameter cannot be specified when action is set to REDIRECT_TO_POOL.

      +

      This parameter is mandatory when action is set to REDIRECT_TO_LISTENER, and the listener must meet the following requirements:

      +
      • Can only be an HTTPS listener.
      • Can only be a listener of the same load balancer.
      +

      redirect_url

      +

      No

      +

      String

      +

      Specifies the URL to which traffic is redirected. The default value is null.

      +

      This parameter is reserved.

      +

      The value contains a maximum of 255 characters.

      +

      position

      +

      No

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      rules

      +

      No

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 3.

      +

      The list contains a maximum of two rules, and the type parameter of each rule must be unique.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 rules parameter description

      Parameter

      +

      Mandatory

      +

      Type

      +

      Description

      +

      admin_state_up

      +

      No

      +

      Boolean

      +

      Specifies the administrative status of the forwarding rule.

      +

      This parameter is reserved, and the default value is true.

      +

      type

      +

      Yes

      +

      String

      +

      Specifies the match type of a forwarding rule.

      +

      The value range varies depending on the protocol of the backend server group:

      +
      • HOST_NAME: matches the domain name in the request.
      • PATH: matches the path in the request.
      +

      The match type of forwarding rules in a forwarding policy must be unique.

      +

      compare_type

      +

      Yes

      +

      String

      +

      Specifies the match mode. The options are as follows:

      +

      When type is set to HOST_NAME, the value of this parameter can only be the following:

      +
      • EQUAL_TO: indicates exact match.
      +

      When type is set to PATH, the value of this parameter can be one of the following:

      +
      • REGEX: indicates regular expression match.
      • STARTS_WITH: indicates prefix match.
      • EQUAL_TO: indicates exact match.
      +

      invert

      +

      No

      +

      Boolean

      +

      Specifies whether reverse matching is supported.

      +

      The value can be true or false. The default value is false.

      +

      This parameter is reserved.

      +

      key

      +

      No

      +

      String

      +

      Specifies the key of the match content. The default value is null.

      +

      This parameter is reserved.

      +

      value

      +

      Yes

      +

      String

      +

      +

      Specifies the value of the match content. The value cannot contain spaces.

      +
      • When type is set to HOST_NAME, the value can contain a maximum of 100 characters that contain only letters, digits, hyphens (-), and periods (.), and must start with a letter or digit.
      • When type is set to PATH, the value can contain a maximum of 128 characters. When compare_type is set to STARTS_WITH or EQUAL_TO, the value must start with a slash (/) and can contain only letters, digits, and special characters _~';@^-%#&$.*+?,=!:|\/()[]{}
      +
      + + +

      Response

      + + + + + + + + + + +
      Table 4 Response parameters

      Parameter

      +

      Type

      +

      Description

      +

      l7policy

      +

      Object

      +

      Specifies the forwarding policy. For details, see Table 5.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 l7policy parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Specifies the forwarding policy ID.

      +

      tenant_id

      +

      String

      +

      Specifies the ID of the project where the forwarding policy is used.

      +

      name

      +

      String

      +

      Specifies the forwarding policy name.

      +

      admin_state_up

      +

      Boolean

      +

      Specifies the administrative status of the forwarding policy.

      +

      This parameter is reserved. The value can be true or false.

      +
      • true: Enabled
      • false: Disabled
      +

      description

      +

      String

      +

      Provides supplementary information about the forwarding policy.

      +

      listener_id

      +

      String

      +

      Specifies the ID of the listener to which the forwarding policy is added.

      +

      action

      +

      String

      +

      Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

      +

      The value can be one of the following:

      +
      • REDIRECT_TO_POOL: Requests are forwarded to the backend server group specified by redirect_pool_id.
      • REDIRECT_TO_LISTENER: Requests are redirected from the HTTP listener specified by listener_id to the HTTPS listener specified by redirect_listener_id.
      +

      redirect_pool_id

      +

      String

      +

      Specifies the ID of the backend server group to which traffic is forwarded.

      +

      redirect_listener_id

      +

      String

      +

      Specifies the ID of the listener to which the traffic is redirected.

      +

      redirect_url

      +

      String

      +

      Specifies the URL to which traffic is redirected.

      +

      This parameter is reserved.

      +

      rules

      +

      Array

      +

      Lists the forwarding rules of the forwarding policy. For details, see Table 6.

      +

      position

      +

      Integer

      +

      Specifies the forwarding priority. The value ranges from 1 to 100. The default value is 100.

      +

      This parameter is reserved.

      +

      provisioning_status

      +

      String

      +

      This parameter is reserved, and its value can only be ACTIVE.

      +

      It specifies the provisioning status of the forwarding policy.

      +
      + + + + + + + + + + + + +
      Table 6 rules parameter description

      Parameter

      +

      Type

      +

      Description

      +

      id

      +

      String

      +

      Lists the IDs of the forwarding rules in the forwarding policy.

      +
      + + +

      Example Request

      • Example request 1: Adding a forwarding policy
        POST https://{Endpoint}/v2.0/lbaas/l7policies 
        +
        +{
        +    "l7policy": {
        +        "name": "niubiao_yaqing_api-2", 
        +        "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", 
        +        "action": "REDIRECT_TO_POOL", 
        +        "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", 
        +        "rules": [
        +            {
        +                "type": "PATH", 
        +                "compare_type": "EQUAL_TO", 
        +                "value": "/test"
        +            }, 
        +            {
        +                "type": "HOST_NAME", 
        +                "compare_type": "EQUAL_TO", 
        +                "value": "www.test.com"
        +            }
        +        ]
        +    }
        +}
        +
      • Example request 2: Creating a redirect
        POST https://{Endpoint}/v2.0/lbaas/l7policies
        +
        +{
        +    "l7policy": {
        +        "action": "REDIRECT_TO_LISTENER", 
        +        "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", 
        +        "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", 
        +        "name": "redirect-test"
        +    }
        +}
        +
      + +

      Example Response

      • Example response 1
        {
        +    "l7policy": {
        +        "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", 
        +        "description": "", 
        +        "admin_state_up": true, 
        +        "rules": [
        +            {
        +                "id": "742600d9-2a14-4808-af69-336883dbb590"
        +            }, 
        +            {
        +                "id": "3251ed77-0d52-412b-9310-733636bb3fbf"
        +            }
        +        ], 
        +        "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +        "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", 
        +        "redirect_url": null, 
        +        "redirect_listener_id": null, 
        +        "action": "REDIRECT_TO_POOL", 
        +        "position": 100, 
        +        "provisioning_status": "ACTIVE", 
        + 
        +        "id": "65d6e115-f179-4bcd-9bbb-1484e5f8ee81", 
        +        "name": "niubiao_yaqing-_api-2"
        +    }
        +}
        +
      • Example response 2
        {
        +    "l7policy": {
        +        "redirect_pool_id": null, 
        +        "description": "", 
        +        "admin_state_up": true, 
        +        "rules": [ ], 
        +        "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
        +        "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", 
        +        "redirect_url": null, 
        +        "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", 
        +        "action": "REDIRECT_TO_LISTENER", 
        +        "position": 100, 
        +        "provisioning_status": "ACTIVE", 
        +        "id": "bc4e4338-480f-4a98-8245-5bb1964f0e1d", 
        +        "name": "redirect-test"
        +    }
        +}
        +
      + +

      Status Code

      For details, see HTTP Status Codes of Shared Load Balancers.

      + + + + +Parent topic: Forwarding Policy + + + diff --git a/elb/api-ref/l7.rst b/elb/api-ref/l7.rst new file mode 100644 index 000000000..4a9df22bd --- /dev/null +++ b/elb/api-ref/l7.rst @@ -0,0 +1,498 @@ +Adding a Forwarding Policy +========================== + +Function +^^^^^^^^ + +This API is used to add a forwarding policy. The listener and forwarding policy determine how traffic is forwarded to backend servers. + +- By matching the URL or domain name specified in the forwarding policy when **action** is set to **REDIRECT_TO_POOL**, the load balancer distributes the traffic to backend servers in a specific backend server group. +- When **action** is set to **REDIRECT_TO_LISTENER**, the HTTP listener is redirected to an HTTPS listener, and requests are routed by the HTTPS listener. + +Constraints +^^^^^^^^^^^ + +Currently, only redirects from an HTTP listener to an HTTPS listener are supported. When **action** is set to **REDIRECT_TO_LISTENER**, the listener specified by **listener_id** can only be an HTTP listener, and the listener specified by **redirect_listener_id** can only be an HTTPS listener. + +The load balancer of the HTTPS listener to which traffic is redirected must be the same as that of the HTTP listener. + +URI +^^^ + +POST /v2.0/lbaas/l7policies + +Request +^^^^^^^ + +.. table:: **Table 1** Parameter description + + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========+===========+========+==================================================================================+ + | l7policy | Yes | Object | Specifies the forwarding policy. For details, see `Table | + | | | | 2 <#elb_zq_zf_0001__en-us_topic_0136295317_table173601118133515>`__. | + +-----------+-----------+--------+----------------------------------------------------------------------------------+ + +.. table:: **Table 2** **l7policy** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | Parameter | Mandatory | Type | Description | + +=============================+=============================+=============================+=============================+ + | tenant_id | No | String | Specifies the ID of the | + | | | | project where the | + | | | | forwarding policy is used. | + | | | | | + | | | | The value must be the same | + | | | | as the value of | + | | | | **tenant_id** in the token. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | name | No | String | Specifies the forwarding | + | | | | policy name. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding policy. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | description | No | String | Provides supplementary | + | | | | information about the | + | | | | forwarding policy. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | listener_id | Yes | String | Specifies the ID of the | + | | | | listener to which the | + | | | | forwarding policy is added. | + | | | | | + | | | | - When **action** is set | + | | | | to **REDIRECT_TO_POOL**, | + | | | | forwarding policies can | + | | | | be added to a listener | + | | | | with **protocol** set to | + | | | | **HTTP** or | + | | | | **TERMINATED_HTTPS**. | + | | | | - When **action** is set | + | | | | to | + | | | | | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | forwarding policies can | + | | | | be added to a listener | + | | | | with **protocol** set to | + | | | | **HTTP**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | action | Yes | String | Specifies whether requests | + | | | | are forwarded to another | + | | | | backend server group or | + | | | | redirected to an HTTPS | + | | | | listener. | + | | | | | + | | | | The value can be one of the | + | | | | following: | + | | | | | + | | | | - **REDIRECT_TO_POOL**: | + | | | | Requests are forwarded | + | | | | to the backend server | + | | | | group specified by | + | | | | **redirect_pool_id**. | + | | | | - | + | | | | **REDIRECT_TO_LISTENER**: | + | | | | Requests are redirected | + | | | | from the HTTP listener | + | | | | specified by | + | | | | **listener_id** to the | + | | | | HTTPS listener specified | + | | | | by | + | | | | | + | | | | **redirect_listener_id**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_pool_id | No | String | Specifies the ID of the | + | | | | backend server group to | + | | | | which traffic is forwarded. | + | | | | The default value is | + | | | | **null**. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **action** is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_LISTENER**. | + | | | | | + | | | | The backend server group | + | | | | must meet the following | + | | | | requirements: | + | | | | | + | | | | - Cannot be the default | + | | | | backend server group of | + | | | | the listener. | + | | | | - Cannot be the backend | + | | | | server group used by | + | | | | forwarding policies of | + | | | | other listeners. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_listener_id | No | String | Specifies the ID of the | + | | | | listener to which the | + | | | | traffic is redirected. The | + | | | | default value is **null**. | + | | | | | + | | | | This parameter cannot be | + | | | | specified when **action** | + | | | | is set to | + | | | | **REDIRECT_TO_POOL**. | + | | | | | + | | | | This parameter is mandatory | + | | | | when **action** is set to | + | | | | **REDIRECT_TO_LISTENER**, | + | | | | and the listener must meet | + | | | | the following requirements: | + | | | | | + | | | | - Can only be an HTTPS | + | | | | listener. | + | | | | - Can only be a listener | + | | | | of the same load | + | | | | balancer. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | redirect_url | No | String | Specifies the URL to which | + | | | | traffic is redirected. The | + | | | | default value is **null**. | + | | | | | + | | | | This parameter is reserved. | + | | | | | + | | | | The value contains a | + | | | | maximum of 255 characters. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | position | No | Integer | Specifies the forwarding | + | | | | priority. The value ranges | + | | | | from **1** to **100**. The | + | | | | default value is **100**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | rules | No | Array | Lists the forwarding rules | + | | | | of the forwarding policy. | + | | | | For details, see `Table | + | | | | 3 <#elb_zq_zf | + | | | | _0001__en-us_topic_01362953 | + | | | | 17_table16998194317143>`__. | + | | | | | + | | | | The list contains a maximum | + | | | | of two rules, and the | + | | | | **type** parameter of each | + | | | | rule must be unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +.. table:: **Table 3** **rules** parameter description + + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | **Parameter** | **Mandatory** | **Type** | **Description** | + +=============================+=============================+=============================+=============================+ + | admin_state_up | No | Boolean | Specifies the | + | | | | administrative status of | + | | | | the forwarding rule. | + | | | | | + | | | | This parameter is reserved, | + | | | | and the default value is | + | | | | **true**. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | type | Yes | String | Specifies the match type of | + | | | | a forwarding rule. | + | | | | | + | | | | The value range varies | + | | | | depending on the protocol | + | | | | of the backend server | + | | | | group: | + | | | | | + | | | | - **HOST_NAME**: matches | + | | | | the domain name in the | + | | | | request. | + | | | | - **PATH**: matches the | + | | | | path in the request. | + | | | | | + | | | | The match type of | + | | | | forwarding rules in a | + | | | | forwarding policy must be | + | | | | unique. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | compare_type | Yes | String | Specifies the match mode. | + | | | | The options are as follows: | + | | | | | + | | | | When **type** is set to | + | | | | **HOST_NAME**, the value of | + | | | | this parameter can only be | + | | | | the following: | + | | | | | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + | | | | | + | | | | When **type** is set to | + | | | | **PATH**, the value of this | + | | | | parameter can be one of the | + | | | | following: | + | | | | | + | | | | - **REGEX**: indicates | + | | | | regular expression | + | | | | match. | + | | | | - **STARTS_WITH**: | + | | | | indicates prefix match. | + | | | | - **EQUAL_TO**: indicates | + | | | | exact match. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | invert | No | Boolean | Specifies whether reverse | + | | | | matching is supported. | + | | | | | + | | | | The value can be **true** | + | | | | or **false**. The default | + | | | | value is **false**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | key | No | String | Specifies the key of the | + | | | | match content. The default | + | | | | value is **null**. | + | | | | | + | | | | This parameter is reserved. | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + | value | Yes | String | Specifies the value of the | + | | | | match content. The value | + | | | | cannot contain spaces. | + | | | | | + | | | | - When **type** is set to | + | | | | **HOST_NAME**, the value | + | | | | can contain a maximum of | + | | | | 100 characters that | + | | | | contain only letters, | + | | | | digits, hyphens (-), and | + | | | | periods (.), and must | + | | | | start with a letter or | + | | | | digit. | + | | | | - When **type** is set to | + | | | | **PATH**, the value can | + | | | | contain a maximum of 128 | + | | | | characters. When | + | | | | **compare_type** is set | + | | | | to **STARTS_WITH** or | + | | | | **EQUAL_TO**, the value | + | | | | must start with a slash | + | | | | (/) and can contain only | + | | | | letters, digits, and | + | | | | special characters | + | | | | \_ | + | | | | ~';@^-%#&$.*+?,=!:|\/()[]{} | + +-----------------------------+-----------------------------+-----------------------------+-----------------------------+ + +Response +^^^^^^^^ + +.. table:: **Table 4** Response parameters + + +-----------+--------+-----------------------------------------------------------------------------------------------+ + | Parameter | Type | Description | + +===========+========+===============================================================================================+ + | l7policy | Object | Specifies the forwarding policy. For details, see `Table | + | | | 5 <#elb_zq_zf_0001__en-us_topic_0136295317_table1251155618376>`__. | + +-----------+--------+-----------------------------------------------------------------------------------------------+ + +.. table:: **Table 5** **l7policy** parameter description + + +---------------------------------------+---------------------------------------+---------------------------------------+ + | Parameter | Type | Description | + +=======================================+=======================================+=======================================+ + | id | String | Specifies the forwarding policy ID. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | tenant_id | String | Specifies the ID of the project where | + | | | the forwarding policy is used. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | name | String | Specifies the forwarding policy name. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | admin_state_up | Boolean | Specifies the administrative status | + | | | of the forwarding policy. | + | | | | + | | | This parameter is reserved. The value | + | | | can be **true** or **false**. | + | | | | + | | | - **true**: Enabled | + | | | - **false**: Disabled | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | description | String | Provides supplementary information | + | | | about the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | listener_id | String | Specifies the ID of the listener to | + | | | which the forwarding policy is added. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | action | String | Specifies whether requests are | + | | | forwarded to another backend server | + | | | group or redirected to an HTTPS | + | | | listener. | + | | | | + | | | The value can be one of the | + | | | following: | + | | | | + | | | - **REDIRECT_TO_POOL**: Requests are | + | | | forwarded to the backend server | + | | | group specified by | + | | | **redirect_pool_id**. | + | | | - **REDIRECT_TO_LISTENER**: Requests | + | | | are redirected from the HTTP | + | | | listener specified by | + | | | **listener_id** to the HTTPS | + | | | listener specified by | + | | | **redirect_listener_id**. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_pool_id | String | Specifies the ID of the backend | + | | | server group to which traffic is | + | | | forwarded. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_listener_id | String | Specifies the ID of the listener to | + | | | which the traffic is redirected. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | redirect_url | String | Specifies the URL to which traffic is | + | | | redirected. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | rules | Array | Lists the forwarding rules of the | + | | | forwarding policy. For details, see | + | | | `Table | + | | | 6 <#elb_zq_zf_0001__en-us_to | + | | | pic_0136295317_table129777459104>`__. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | position | Integer | Specifies the forwarding priority. | + | | | The value ranges from **1** to | + | | | **100**. The default value is | + | | | **100**. | + | | | | + | | | This parameter is reserved. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + | provisioning_status | String | This parameter is reserved, and its | + | | | value can only be **ACTIVE**. | + | | | | + | | | It specifies the provisioning status | + | | | of the forwarding policy. | + +---------------------------------------+---------------------------------------+---------------------------------------+ + +.. table:: **Table 6** **rules** parameter description + + ========= ====== =============================================================== + Parameter Type Description + ========= ====== =============================================================== + id String Lists the IDs of the forwarding rules in the forwarding policy. + ========= ====== =============================================================== + +Example Request +^^^^^^^^^^^^^^^ + +- Example request 1: Adding a forwarding policy + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/l7policies + + { + "l7policy": { + "name": "niubiao_yaqing_api-2", + "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", + "action": "REDIRECT_TO_POOL", + "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", + "rules": [ + { + "type": "PATH", + "compare_type": "EQUAL_TO", + "value": "/test" + }, + { + "type": "HOST_NAME", + "compare_type": "EQUAL_TO", + "value": "www.test.com" + } + ] + } + } + +- Example request 2: Creating a redirect + + .. code:: screen + + POST https://{Endpoint}/v2.0/lbaas/l7policies + + { + "l7policy": { + "action": "REDIRECT_TO_LISTENER", + "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", + "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", + "name": "redirect-test" + } + } + +Example Response +^^^^^^^^^^^^^^^^ + +- Example response 1 + + .. code:: screen + + { + "l7policy": { + "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", + "description": "", + "admin_state_up": true, + "rules": [ + { + "id": "742600d9-2a14-4808-af69-336883dbb590" + }, + { + "id": "3251ed77-0d52-412b-9310-733636bb3fbf" + } + ], + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", + "redirect_url": null, + "redirect_listener_id": null, + "action": "REDIRECT_TO_POOL", + "position": 100, + "provisioning_status": "ACTIVE", + + "id": "65d6e115-f179-4bcd-9bbb-1484e5f8ee81", + "name": "niubiao_yaqing-_api-2" + } + } + +- Example response 2 + + .. code:: screen + + { + "l7policy": { + "redirect_pool_id": null, + "description": "", + "admin_state_up": true, + "rules": [ ], + "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", + "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", + "redirect_url": null, + "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", + "action": "REDIRECT_TO_LISTENER", + "position": 100, + "provisioning_status": "ACTIVE", + "id": "bc4e4338-480f-4a98-8245-5bb1964f0e1d", + "name": "redirect-test" + } + } + +Status Code +^^^^^^^^^^^ + +For details, see `HTTP Status Codes of Shared Load Balancers `__. + +**Parent topic:** `Forwarding Policy `__ diff --git a/elb/api-ref/public_sys-resources/ExpandCollapse.js b/elb/api-ref/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..3f1b7db00 --- /dev/null +++ b/elb/api-ref/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";var href="";function ExpandorCollapseNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseClassName}else{a.className=expandClassName}}function ExpandorCollapseTableNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseTableClassName}else{a.className=expandClassName}}function ExpandorCollapseAllNodes(g,h,c){var a=g.getAttribute("title");var b=g.parentNode;if(a=="collapse"){g.setAttribute("title","expand");g.className="dropdownAllButtonexpand";g.innerHTML=h}else{g.setAttribute("title","collapse");g.className="dropdownAllButtoncollapse";g.innerHTML=c}var f=b.getElementsByTagName("*");for(var d=0;d-1){ExpandForHref(href.substring(href.lastIndexOf("#")+1))}}catch(a){}}; \ No newline at end of file diff --git a/elb/api-ref/public_sys-resources/caution_3.0-en-us.png b/elb/api-ref/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 000000000..60f607621 Binary files /dev/null and b/elb/api-ref/public_sys-resources/caution_3.0-en-us.png differ diff --git a/elb/api-ref/public_sys-resources/commonltr.css b/elb/api-ref/public_sys-resources/commonltr.css new file mode 100644 index 000000000..c5480b0ab --- /dev/null +++ b/elb/api-ref/public_sys-resources/commonltr.css @@ -0,0 +1 @@ +body{font-size:10pt;font-family:Arial;margin:1.5em;border-top:2pt;padding-top:1em;padding-bottom:2em}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:.6em;margin-bottom:.6em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.figcap{font-size:10pt}img{margin-top:.3em}.figdesc{font-style:normal}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.fignone{font-size:10pt;margin-top:8pt;margin-bottom:8pt}.familylinks{margin-top:1.5em;margin-bottom:1em}.ullinks{list-style-type:none}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-top:.6em;margin-bottom:.6em}.reltasks{margin-top:.6em;margin-bottom:.6em}.relref{margin-top:.6em;margin-bottom:.6em}.relinfo{margin-top:.6em;margin-bottom:.6em}.breadcrumb{font-size:smaller;margin-bottom:.6em}.prereq{margin-left:20px}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.topictitle1{margin-top:0;margin-bottom:1em;font-size:14pt;color:#007af4}.topictitle2{margin-top:1pc;margin-bottom:.45em;font-size:1.17em;color:#007af4}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-size:1.17em;font-weight:bold;color:#007af4}.topictitle4{margin-top:.83em;font-size:1.17em;font-weight:bold}.topictitle5{font-size:1.17em;font-weight:bold}.topictitle6{font-size:1.17em;font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:1em;color:black;font-size:10.5pt;font-weight:bold;color:#007af4;overflow:auto}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}.sectiontitle2contents:link{color:#007af4}.sectiontitle2contents:visited{color:#800080}.note{margin-top:1em;margin-bottom:1em;background-color:#ffc}.notetitle{font-weight:bold}.notelisttitle{font-weight:bold}.tip{margin-top:1em;margin-bottom:1em;background-color:#ffc}.tiptitle{font-weight:bold}.fastpath{margin-top:1em;margin-bottom:1em;background-color:#ffc}.fastpathtitle{font-weight:bold}.important{margin-top:1em;margin-bottom:1em;background-color:#ffc}.importanttitle{font-weight:bold}.remember{margin-top:1em;margin-bottom:1em;background-color:#ffc}.remembertitle{font-weight:bold}.restriction{margin-top:1em;margin-bottom:1em;background-color:#ffc}.restrictiontitle{font-weight:bold}.attention{margin-top:1em;margin-bottom:1em;background-color:#ffc}.attentiontitle{font-weight:bold}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;background-color:#ffc}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;background-color:#ffc}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;background-color:#ffc}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;background-color:#ffc}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}ol{margin-top:1em;margin-bottom:1em;margin-left:2.4em;padding-left:0}ul{margin-top:1em;margin-bottom:1em;margin-left:2.0em;padding-left:0}ol ul{list-style:disc}ul ul{list-style:square}ol ul ul{list-style:square}ol ul{list-style-type:disc}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}.firstcol{font-weight:bold}th{background-color:#cfcfcf}table{margin-top:8pt;margin-bottom:12pt;width:100%}table caption{margin-top:8pt;text-align:left}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:.3em;margin-bottom:.3em}.substepexpand{margin-top:.3em;margin-bottom:.3em}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}.hrcopyright{color:#3f4e5d;margin-top:18pt}.hwcopyright{text-align:center}.comment{margin:2px 2px 2px 2px;font-family:Arial;font-size:10pt;background-color:#bfb;color:#000}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowncontext{display:none}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdowncollapsetable{border:0}.dropdowncollapsetable .dropdowncontext{display:none}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}pre{font-size:10pt;font-weight:normal;margin-left:9;margin-top:2;margin-bottom:2}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0} \ No newline at end of file diff --git a/elb/api-ref/public_sys-resources/commonltr_print.css b/elb/api-ref/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/elb/api-ref/public_sys-resources/commonltr_print.css @@ -0,0 +1 @@ +body{font-size:12.0pt;margin:1.5em;margin-left:1.6cm}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:1em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.covertable{border:0;width:100% cellpadding:8pt;cellspacing:8pt}.cover_productname{font-size:15.0pt;font-family:"Arial"}.cover_manualtitle{font-size:24.0pt;font-weight:bold;font-family:"Arial"}.cover_manualsubtitle{font-size:18.0pt;font-weight:bold;font-family:"Arial"}.cover_heading{font-size:12.0pt;font-weight:bold;font-family:"Arial"}.cover_text{font-size:9.0pt;font-family:"Arial"}.tocheading,.heading1,.topictitle1{margin-top:40.0pt;margin-right:0;margin-bottom:20.0pt;margin-left:-1cm;text-align:left;border:0;border-bottom:solid windowtext .5pt;font-size:22.0pt;font-family:"Arial";font-weight:bold}.topictitlenumber1{font-size:72.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle2{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Arial";font-weight:bold}.topictitle3{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:16.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle4{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:14.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle5{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.blocklabel,.topictitle6{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.sectiontitle{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:-1cm;text-indent:0;font-size:13.0pt;font-family:"Arial";font-weight:bold}.tocentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Book Antiqua";font-weight:bold}.tocentry2{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry3{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry4{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry5{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tofentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.totentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.indexheading{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.indexentry1{margin-top:4pt;margin-right:0;margin-bottom:0;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Times New Roman"}.indexentry2{margin-top:0;margin-right:0;margin-bottom:0;margin-left:24.0pt;line-height:12.0pt;font-size:12.0pt}.indexentry3{margin-top:0;margin-right:0;margin-bottom:0;margin-left:48pt;line-height:12.0pt;font-size:12.0pt}.figurenumber{font-weight:bold}.tablenumber{font-weight:bold}.familylinks{margin-top:1.5em;margin-bottom:1em}.figcap{font-size:11.0pt}.tablecap{font-size:11.0pt}.figdesc{font-style:normal}.fignone{margin-top:8.0pt}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.ullinks{margin-left:0;list-style-type:none}.ulchildlink{margin-top:1em;margin-bottom:1em}.olchildlink{margin-top:1em;margin-bottom:1em;margin-left:1em}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-left:1cm;margin-top:1em;margin-bottom:1em}.reltasks{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relref{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relinfo{margin-top:1em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-left:0}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}table .note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.notetitle{font-weight:bold;font-size:11.0pt}.notelisttitle{font-weight:bold}table .tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.tiptitle{font-weight:bold;font-size:11.0pt}table .fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.fastpathtitle{font-weight:bold;font-size:11.0pt}table .important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.importanttitle{font-weight:bold;font-size:11.0pt}table .remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.remembertitle{font-weight:bold;font-size:11.0pt}table .restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.restrictiontitle{font-weight:bold;font-size:11.0pt}table .attention{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.attention{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}.attentiontitle{font-weight:bold}table .danger{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .notice{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .warning{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .caution{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}table caption{margin-top:8pt;text-align:left;font-weight:bold}.tablenoborder{margin-top:8pt}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}.firstcol{font-weight:bold}th{background-color:#cfcfcf}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:1em;margin-bottom:1em}.substepexpand{margin-top:1em;margin-bottom:1em}table{margin-top:8pt;margin-bottom:10.0pt;width:100%}thead{font-size:10.0pt;font-family:"Book Antiqua";font-weight:bold}tbody{font-size:11.0pt}ol{margin-top:1em;margin-bottom:1em;margin-left:1.7em;-webkit-padding-start:0}ul{margin-top:1em;margin-bottom:1em;margin-left:1.2em;-webkit-padding-start:0}ol ul{list-style:disc}ul ul{list-style:square}ol ol{list-style-type:lower-alpha}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre{font-size:10.0pt;border-width:2px;padding:2px;margin-top:5px;margin-bottom:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.prefacesectiontitle1{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Book Antiqua";font-weight:bold;overflow:auto}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0}.hrcopyright{color:#3f4e5d;margin-top:18pt;margin-left:-1cm}.hwcopyright{text-align:center;font-family:Arial;margin-left:-1cm} \ No newline at end of file diff --git a/elb/api-ref/public_sys-resources/commonrtl.css b/elb/api-ref/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..947a9a033 --- /dev/null +++ b/elb/api-ref/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +.msgph{font-family:Courier New}.unresolved{background-color:#87ceeb}.noTemplate{background-color:#ff0}.base{background-color:#fff}/*! Add space for top level topics */.nested0,.p{margin-top:1em}/*! div with class=p is used for paragraphs that contain blocks, to keep the XHTML valid *//*! Default of italics to set apart figure captions */.figcap,.italic,.var{font-style:italic}.figdesc{font-style:normal}/*! Use @frame to create frames on figures */.figborder{padding-left:3px;padding-right:3px;margin-top:1em;border:2px solid Silver}.figsides{margin-top:1em;padding-left:3px;padding-right:3px;border-left:2px solid Silver;border-right:2px solid Silver}.figtop{border-top:2px solid Silver;margin-top:1em}.figbottom{border-bottom:2px solid Silver}.figtopbot{border-top:2px solid Silver;border-bottom:2px solid Silver;margin-top:1em}/*! Most link groups are created with
      . Ensure they have space before and after. */.ullinks,ul.simple{list-style-type:none}.attention,.danger,.ddexpand,.dlexpand,.example,.fastpath,.important,.liexpand,.linklist,.note,.notice,.olchildlink,.relconcepts,.relinfo,.relref,.reltasks,.remember,.restriction,.section,.sliexpand,.stepexpand,.substepexpand,.tip,.ulchildlink,.warning{margin-top:1em;margin-bottom:1em}.linklistwithchild,.sublinklist{margin-top:1em;margin-right:1.5em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-right:20px}/*! Set heading sizes, getting smaller for deeper nesting */.topictitle1{font-size:1.34em;margin-top:0;margin-bottom:.1em}.topictitle2,.topictitle3,.topictitle4,.topictitle5,.topictitle6,.sectiontitle{font-size:1.17em}.topictitle2{margin-top:1pc;margin-bottom:.45em}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-weight:700}.topictitle4{margin-top:.83em;font-weight:700}.topictitle5{font-weight:700}.topictitle6{font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:0;color:#000;font-weight:700}/*! All note formats have the same default presentation */.attentiontitle,.bold,.cautiontitle,.dangertitle,.dlterm,.fastpathtitle,.firstcol,.importanttitle,.notelisttitle,.notetitle,.noticetitle,.parmname,.remembertitle,.restrictiontitle,.tiptitle,.uicontrol,.warningtitle{font-weight:700}.caution{font-weight:700;margin-bottom:1em}/*! Simple lists do not get a bullet *//*! Used on the first column of a table, when rowheader="firstcol" is used *//*! Various basic phrase styles */.boldItalic{font-weight:700;font-style:italic}.shortcut,.underlined{text-decoration:underline}/*! 2008-10-27 keyword采用跟随上下文的样式 +*//*! Default of bold for definition list terms *//*! Use CSS to expand lists with @compact="no" */.dltermexpand{font-weight:700;margin-top:1em}[compact="yes"]>li{margin-top:0}[compact="no"]>li{margin-top:.53em}/*! Align images based on @align on topic/image */div.imageleft,.text-align-left{text-align:left}div.imagecenter,.text-align-center{text-align:center}div.imageright,.text-align-right{text-align:right}div.imagejustify,.text-align-justify{text-align:justify}.cellrowborder{border-right:0;border-top:0;border-left:1px solid;border-bottom:1px solid}.row-nocellborder{border-left:hidden;border-right:0;border-top:0;border-bottom:1px solid}.cell-norowborder{border-top:0;border-bottom:hidden;border-right:0;border-left:1px solid}.nocellnorowborder{border:0;border-left:hidden;border-bottom:hidden}pre.codeblock,pre.screen{padding:5px;border:outset;background-color:#ccc;margin-top:2px;margin-bottom:2px;white-space:pre} \ No newline at end of file diff --git a/elb/api-ref/public_sys-resources/danger_3.0-en-us.png b/elb/api-ref/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 000000000..47a9c7235 Binary files /dev/null and b/elb/api-ref/public_sys-resources/danger_3.0-en-us.png differ diff --git a/elb/api-ref/public_sys-resources/delta.gif b/elb/api-ref/public_sys-resources/delta.gif new file mode 100644 index 000000000..0d1b1f674 Binary files /dev/null and b/elb/api-ref/public_sys-resources/delta.gif differ diff --git a/elb/api-ref/public_sys-resources/deltaend.gif b/elb/api-ref/public_sys-resources/deltaend.gif new file mode 100644 index 000000000..cc7da0fc8 Binary files /dev/null and b/elb/api-ref/public_sys-resources/deltaend.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-arrowdn.gif b/elb/api-ref/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 000000000..84eec9be2 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-arrowdn.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-arrowrt.gif b/elb/api-ref/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 000000000..39583d168 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-arrowrt.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-caution.gif b/elb/api-ref/public_sys-resources/icon-caution.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-caution.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-danger.gif b/elb/api-ref/public_sys-resources/icon-danger.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-danger.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-huawei.gif b/elb/api-ref/public_sys-resources/icon-huawei.gif new file mode 100644 index 000000000..a31d60f89 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-huawei.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-note.gif b/elb/api-ref/public_sys-resources/icon-note.gif new file mode 100644 index 000000000..31be2b039 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-note.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-notice.gif b/elb/api-ref/public_sys-resources/icon-notice.gif new file mode 100644 index 000000000..409070650 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-notice.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-tip.gif b/elb/api-ref/public_sys-resources/icon-tip.gif new file mode 100644 index 000000000..c47bae05c Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-tip.gif differ diff --git a/elb/api-ref/public_sys-resources/icon-warning.gif b/elb/api-ref/public_sys-resources/icon-warning.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/elb/api-ref/public_sys-resources/icon-warning.gif differ diff --git a/elb/api-ref/public_sys-resources/note_3.0-en-us.png b/elb/api-ref/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 000000000..57a0e1f53 Binary files /dev/null and b/elb/api-ref/public_sys-resources/note_3.0-en-us.png differ diff --git a/elb/api-ref/public_sys-resources/notice_3.0-en-us.png b/elb/api-ref/public_sys-resources/notice_3.0-en-us.png new file mode 100644 index 000000000..fa4b64990 Binary files /dev/null and b/elb/api-ref/public_sys-resources/notice_3.0-en-us.png differ diff --git a/elb/api-ref/public_sys-resources/popup.js b/elb/api-ref/public_sys-resources/popup.js new file mode 100644 index 000000000..5305962bc --- /dev/null +++ b/elb/api-ref/public_sys-resources/popup.js @@ -0,0 +1 @@ +var i=0;var dhtmlgoodies_tooltipFlag=false;var dhtmlgoodies_tooltip="";var dhtmlgoodies_tooltipShadow="";var dhtmlgoodies_shadowSize=3;var dhtmlgoodies_tooltipMaxWidth=500;var dhtmlgoodies_tooltipMinWidth=100;var dhtmlgoodies_iframe=false;var timeId;var clickFlag=false;var tooltip_is_msie=(navigator.userAgent.indexOf("MSIE")>=0&&navigator.userAgent.indexOf("opera")==-1&&document.all)?true:false;var xPos;var yPos;window.document.onmousemove=function(a){a=a||window.event;if(a.pageX){xPos=a.pageX;yPos=a.pageY}else{if(document.body!=null){xPos=a.clientX+document.body.scrollLeft-document.body.clientLeft;yPos=a.clientY+document.body.scrollTop-document.body.clientTop}}};function showTooltip(tooltipTxt){if(document.body==null){return}if(i==0){return}clickFlag=true;var text=eval("jsonData."+tooltipTxt);var bodyWidth=Math.max(document.body.clientWidth,document.documentElement.clientWidth)-20;if(!dhtmlgoodies_tooltipFlag){dhtmlgoodies_tooltip=document.createElement("DIV");dhtmlgoodies_tooltip.id="dhtmlgoodies_tooltip";dhtmlgoodies_tooltipShadow=document.createElement("DIV");dhtmlgoodies_tooltipShadow.id="dhtmlgoodies_tooltipShadow";document.body.appendChild(dhtmlgoodies_tooltip);document.body.appendChild(dhtmlgoodies_tooltipShadow);if(tooltip_is_msie){dhtmlgoodies_iframe=document.createElement("IFRAME");dhtmlgoodies_iframe.frameborder="5";dhtmlgoodies_iframe.style.backgroundColor="#FFFFFF";dhtmlgoodies_iframe.src="#";dhtmlgoodies_iframe.style.zIndex=100;dhtmlgoodies_iframe.style.position="absolute";document.body.appendChild(dhtmlgoodies_iframe)}}dhtmlgoodies_tooltip.style.display="block";dhtmlgoodies_tooltipShadow.style.display="block";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="block"}var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(navigator.userAgent.toLowerCase().indexOf("safari")>=0){st=0}var leftPos=xPos+10;dhtmlgoodies_tooltip.style.width=null;dhtmlgoodies_tooltip.innerHTML=text;dhtmlgoodies_tooltip.style.left=leftPos+"px";if(tooltip_is_msie){dhtmlgoodies_tooltip.style.top=yPos+20+st+"px"}else{dhtmlgoodies_tooltip.style.top=yPos+20+"px"}dhtmlgoodies_tooltipShadow.style.left=leftPos+dhtmlgoodies_shadowSize+"px";if(tooltip_is_msie){dhtmlgoodies_tooltipShadow.style.top=yPos+20+st+dhtmlgoodies_shadowSize+"px"}else{dhtmlgoodies_tooltipShadow.style.top=yPos+20+dhtmlgoodies_shadowSize+"px"}if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){dhtmlgoodies_tooltip.style.width=dhtmlgoodies_tooltipMaxWidth+"px"}var tooltipWidth=dhtmlgoodies_tooltip.offsetWidth;if(tooltipWidthbodyWidth){dhtmlgoodies_tooltip.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((leftPos+tooltipWidth)-bodyWidth))+"px";dhtmlgoodies_tooltipShadow.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((leftPos+tooltipWidth)-bodyWidth)+dhtmlgoodies_shadowSize)+"px"}if(tooltip_is_msie){dhtmlgoodies_iframe.style.left=dhtmlgoodies_tooltip.style.left;dhtmlgoodies_iframe.style.top=dhtmlgoodies_tooltip.style.top;dhtmlgoodies_iframe.style.width=dhtmlgoodies_tooltip.offsetWidth+"px";dhtmlgoodies_iframe.style.height=dhtmlgoodies_tooltip.offsetHeight+"px"}}function hideTooltip(){i=0;clickFlag=false;if(dhtmlgoodies_tooltip!=null&&dhtmlgoodies_tooltip.style!=null){dhtmlgoodies_tooltip.style.display="none";dhtmlgoodies_tooltipShadow.style.display="none";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="none"}}if(timeId!=null&&timeId!=""){clearTimeout(timeId)}}function showText(a){i=1;timeId=setTimeout(function(){showTooltip(a)},500)}function showText2(a){if(!clickFlag){i=1;showTooltip(a);i=0;if(timeId!=null&&timeId!=""){clearTimeout(timeId)}}}function anchorScroll(b){var d=document.getElementsByName(b);if(d!=null&&d.length>0){var c=d[0];var a=c.getBoundingClientRect().left+(document.body.scrollLeft||(document.documentElement&&document.documentElement.scrollLeft));var e=c.getBoundingClientRect().top+(document.body.scrollTop||(document.documentElement&&document.documentElement.scrollTop));window.scrollTo(a,e-30)}}; \ No newline at end of file diff --git a/elb/api-ref/public_sys-resources/warning_3.0-en-us.png b/elb/api-ref/public_sys-resources/warning_3.0-en-us.png new file mode 100644 index 000000000..def5c3565 Binary files /dev/null and b/elb/api-ref/public_sys-resources/warning_3.0-en-us.png differ diff --git a/elb/api-ref/topic_300000000.html b/elb/api-ref/topic_300000000.html new file mode 100644 index 000000000..a1d77cc09 --- /dev/null +++ b/elb/api-ref/topic_300000000.html @@ -0,0 +1,16 @@ + + +

      Quota

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000000.rst b/elb/api-ref/topic_300000000.rst new file mode 100644 index 000000000..dae4e46e3 --- /dev/null +++ b/elb/api-ref/topic_300000000.rst @@ -0,0 +1,6 @@ +Quota +===== + +- `Querying Quotas `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000001.html b/elb/api-ref/topic_300000001.html new file mode 100644 index 000000000..504ccbc88 --- /dev/null +++ b/elb/api-ref/topic_300000001.html @@ -0,0 +1,16 @@ + + +

      AZ

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000001.rst b/elb/api-ref/topic_300000001.rst new file mode 100644 index 000000000..fe2c10c33 --- /dev/null +++ b/elb/api-ref/topic_300000001.rst @@ -0,0 +1,6 @@ +AZ +== + +- `Querying AZs `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000002.html b/elb/api-ref/topic_300000002.html new file mode 100644 index 000000000..02ce27844 --- /dev/null +++ b/elb/api-ref/topic_300000002.html @@ -0,0 +1,18 @@ + + +

      Load Balancer Flavor

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000002.rst b/elb/api-ref/topic_300000002.rst new file mode 100644 index 000000000..743465233 --- /dev/null +++ b/elb/api-ref/topic_300000002.rst @@ -0,0 +1,7 @@ +Load Balancer Flavor +==================== + +- `Querying Flavors `__ +- `Viewing Details of a Flavor `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000003.html b/elb/api-ref/topic_300000003.html new file mode 100644 index 000000000..2664c3857 --- /dev/null +++ b/elb/api-ref/topic_300000003.html @@ -0,0 +1,26 @@ + + +

      Load Balancer

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000003.rst b/elb/api-ref/topic_300000003.rst new file mode 100644 index 000000000..6a2b80aa6 --- /dev/null +++ b/elb/api-ref/topic_300000003.rst @@ -0,0 +1,11 @@ +Load Balancer +============= + +- `Creating a Load Balancer `__ +- `Querying Load Balancers `__ +- `Viewing Details of a Load Balancer `__ +- `Updating a Load Balancer `__ +- `Deleting a Load Balancer `__ +- `Querying the Status Tree of a Load Balancer `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000004.html b/elb/api-ref/topic_300000004.html new file mode 100644 index 000000000..207128d20 --- /dev/null +++ b/elb/api-ref/topic_300000004.html @@ -0,0 +1,24 @@ + + +

      Certificate

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000004.rst b/elb/api-ref/topic_300000004.rst new file mode 100644 index 000000000..865995244 --- /dev/null +++ b/elb/api-ref/topic_300000004.rst @@ -0,0 +1,10 @@ +Certificate +=========== + +- `Creating a Certificate `__ +- `Querying Certificates `__ +- `Viewing Details of a Certificate `__ +- `Updating a Certificate `__ +- `Deleting a Certificate `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000005.html b/elb/api-ref/topic_300000005.html new file mode 100644 index 000000000..094dd2c35 --- /dev/null +++ b/elb/api-ref/topic_300000005.html @@ -0,0 +1,24 @@ + + +

      Listener

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000005.rst b/elb/api-ref/topic_300000005.rst new file mode 100644 index 000000000..aef6f154f --- /dev/null +++ b/elb/api-ref/topic_300000005.rst @@ -0,0 +1,10 @@ +Listener +======== + +- `Adding a Listener `__ +- `Querying Listeners `__ +- `Viewing Details of a Listener `__ +- `Updating a Listener `__ +- `Deleting a Listener `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000006.html b/elb/api-ref/topic_300000006.html new file mode 100644 index 000000000..ba4d4ee07 --- /dev/null +++ b/elb/api-ref/topic_300000006.html @@ -0,0 +1,24 @@ + + +

      Backend Server Group

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000006.rst b/elb/api-ref/topic_300000006.rst new file mode 100644 index 000000000..8a8a1ffaa --- /dev/null +++ b/elb/api-ref/topic_300000006.rst @@ -0,0 +1,10 @@ +Backend Server Group +==================== + +- `Creating a Backend Server Group `__ +- `Querying Backend Server Groups `__ +- `Viewing Details of a Backend Server Group `__ +- `Updating a Backend Server Group `__ +- `Deleting a Backend Server Group `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000007.html b/elb/api-ref/topic_300000007.html new file mode 100644 index 000000000..0d7cf9f58 --- /dev/null +++ b/elb/api-ref/topic_300000007.html @@ -0,0 +1,24 @@ + + +

      Backend Server

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000007.rst b/elb/api-ref/topic_300000007.rst new file mode 100644 index 000000000..0fa230fa5 --- /dev/null +++ b/elb/api-ref/topic_300000007.rst @@ -0,0 +1,10 @@ +Backend Server +============== + +- `Adding a Backend Server `__ +- `Querying Backend Servers `__ +- `Viewing Details of a Backend Server `__ +- `Updating a Backend Server `__ +- `Removing a Backend Server `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000008.html b/elb/api-ref/topic_300000008.html new file mode 100644 index 000000000..d7b2c959e --- /dev/null +++ b/elb/api-ref/topic_300000008.html @@ -0,0 +1,24 @@ + + +

      Health Check

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000008.rst b/elb/api-ref/topic_300000008.rst new file mode 100644 index 000000000..0b19d42c5 --- /dev/null +++ b/elb/api-ref/topic_300000008.rst @@ -0,0 +1,10 @@ +Health Check +============ + +- `Configuring a Health Check `__ +- `Querying Health Checks `__ +- `Viewing Details of a Health Check `__ +- `Updating a Health Check `__ +- `Deleting a Health Check `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000009.html b/elb/api-ref/topic_300000009.html new file mode 100644 index 000000000..78565f394 --- /dev/null +++ b/elb/api-ref/topic_300000009.html @@ -0,0 +1,24 @@ + + +

      Forwarding Policy

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000009.rst b/elb/api-ref/topic_300000009.rst new file mode 100644 index 000000000..236d4f95c --- /dev/null +++ b/elb/api-ref/topic_300000009.rst @@ -0,0 +1,10 @@ +Forwarding Policy +================= + +- `Adding a Forwarding Policy `__ +- `Querying Forwarding Policies `__ +- `Viewing Details of a Forwarding Policy `__ +- `Updating a Forwarding Policy `__ +- `Deleting a Forwarding Policy `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/api-ref/topic_300000010.html b/elb/api-ref/topic_300000010.html new file mode 100644 index 000000000..d14b311ed --- /dev/null +++ b/elb/api-ref/topic_300000010.html @@ -0,0 +1,24 @@ + + +

      Forwarding Rule

      +

      + + + + + +Parent topic: Dedicated Load Balancer APIs + + + diff --git a/elb/api-ref/topic_300000010.rst b/elb/api-ref/topic_300000010.rst new file mode 100644 index 000000000..78ab04f1c --- /dev/null +++ b/elb/api-ref/topic_300000010.rst @@ -0,0 +1,10 @@ +Forwarding Rule +=============== + +- `Adding a Forwarding Rule `__ +- `Querying Forwarding Rules `__ +- `Viewing Details of a Forwarding Rule `__ +- `Updating a Forwarding Rule `__ +- `Deleting a Forwarding Rule `__ + +**Parent topic:** `Dedicated Load Balancer APIs `__ diff --git a/elb/umn/ALL_META.TXT.json b/elb/umn/ALL_META.TXT.json new file mode 100644 index 000000000..34b5c7eff --- /dev/null +++ b/elb/umn/ALL_META.TXT.json @@ -0,0 +1,1082 @@ +[ + { + "uri":"elb_pro_0000.html", + "product_code":"elb", + "code":"1", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Service Overview", + "title":"Service Overview", + "githuburl":"" + }, + { + "uri":"en-us_topic_0015479966.html", + "product_code":"elb", + "code":"2", + "des":"Elastic Load Balancing (ELB) automatically distributes incoming traffic across multiple backend servers based on the listening rules you configure. ELB expands the servic", + "doc_type":"usermanual", + "kw":"What Is ELB?,Service Overview,User Guide", + "title":"What Is ELB?", + "githuburl":"" + }, + { + "uri":"elb_pro_0005.html", + "product_code":"elb", + "code":"3", + "des":"Robust performanceEach dedicated load balancer has exclusive use of isolated underlying resources and can provide guaranteed performance. A single dedicated load balancer", + "doc_type":"usermanual", + "kw":"Product Advantages,Service Overview,User Guide", + "title":"Product Advantages", + "githuburl":"" + }, + { + "uri":"elb_pro_0006.html", + "product_code":"elb", + "code":"4", + "des":"For an application with heavy traffic, such as a large portal or mobile app store, ELB evenly distributes incoming traffic to multiple backend servers, balancing the load", + "doc_type":"usermanual", + "kw":"Application Scenarios,Service Overview,User Guide", + "title":"Application Scenarios", + "githuburl":"" + }, + { + "uri":"en-us_elb_01_0007.html", + "product_code":"elb", + "code":"5", + "des":"Each type of load balancer has their advantages.Classic load balancers are suitable for web services with low traffic and simple traffic patterns.Classic load balancers c", + "doc_type":"usermanual", + "kw":"Differences Between Classic and Shared Load Balancers,Service Overview,User Guide", + "title":"Differences Between Classic and Shared Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_pro_0004.html", + "product_code":"elb", + "code":"6", + "des":"Each type of load balancer has their advantages.Dedicated load balancers have exclusive use of underlying resources, so that the performance of a dedicated load balancer ", + "doc_type":"usermanual", + "kw":"Differences Between Dedicated and Shared Load Balancers,Service Overview,User Guide", + "title":"Differences Between Dedicated and Shared Load Balancers", + "githuburl":"" + }, + { + "uri":"en-us_topic_0287737145.html", + "product_code":"elb", + "code":"7", + "des":"Dedicated load balancers are available in different specifications. Each specification contains some key metrics from which you can decide whether the specification meets", + "doc_type":"usermanual", + "kw":"Specifications of Dedicated Load Balancers,Service Overview,User Guide", + "title":"Specifications of Dedicated Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_pro_0003.html", + "product_code":"elb", + "code":"8", + "des":"To balance the load of your applications, create a load balancer to receive requests from clients and route the requests to backend servers in one or more AZs. Add at lea", + "doc_type":"usermanual", + "kw":"How ELB Works,Service Overview,User Guide", + "title":"How ELB Works", + "githuburl":"" + }, + { + "uri":"en-us_elb_01_0004.html", + "product_code":"elb", + "code":"9", + "des":"A load balancer can work on either a public or private network.You can bind an EIP to a load balancer so that it can receive requests from clients on the Internet and rou", + "doc_type":"usermanual", + "kw":"Load Balancing on a Public or Private Network,Service Overview,User Guide", + "title":"Load Balancing on a Public or Private Network", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0003_01.html", + "product_code":"elb", + "code":"10", + "des":"Load balancers communicate with backend servers over a private network.If backend servers process only requests routed from load balancers, there is no need to assign EIP", + "doc_type":"usermanual", + "kw":"Network Traffic Paths,Service Overview,User Guide", + "title":"Network Traffic Paths", + "githuburl":"" + }, + { + "uri":"en-us_topic_0195131496.html", + "product_code":"elb", + "code":"11", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Product Concepts", + "title":"Product Concepts", + "githuburl":"" + }, + { + "uri":"elb_pro_0001.html", + "product_code":"elb", + "code":"12", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Basic Concepts,Product Concepts,User Guide", + "title":"Basic Concepts", + "githuburl":"" + }, + { + "uri":"elb_pro_0002.html", + "product_code":"elb", + "code":"13", + "des":"A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.A region is a physical data center, which", + "doc_type":"usermanual", + "kw":"Region and AZ,Product Concepts,User Guide", + "title":"Region and AZ", + "githuburl":"" + }, + { + "uri":"elb_pro_0008.html", + "product_code":"elb", + "code":"14", + "des":"Virtual Private Cloud (VPC)Provides IP addresses and bandwidth for load balancers.Provides IP addresses and bandwidth for load balancers.Auto Scaling (AS)Works with ELB t", + "doc_type":"usermanual", + "kw":"Integration with Other Services,Service Overview,User Guide", + "title":"Integration with Other Services", + "githuburl":"" + }, + { + "uri":"elb_qs_0000.html", + "product_code":"elb", + "code":"15", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Getting Started", + "title":"Getting Started", + "githuburl":"" + }, + { + "uri":"elb_qs_0001.html", + "product_code":"elb", + "code":"16", + "des":"Two examples are given to show how you can quickly create a shared load balancer to distribute incoming traffic across backend servers.Entry level: A large number of requ", + "doc_type":"usermanual", + "kw":"Overview,Getting Started,User Guide", + "title":"Overview", + "githuburl":"" + }, + { + "uri":"en-us_topic_0052569751.html", + "product_code":"elb", + "code":"17", + "des":"You have a web application, which often needs to handle heavy traffic and is deployed on two ECSs for load balancing.You can create a shared load balancer to distribute t", + "doc_type":"usermanual", + "kw":"Using Shared Load Balancers — Entry Level,Getting Started,User Guide", + "title":"Using Shared Load Balancers — Entry Level", + "githuburl":"" + }, + { + "uri":"en-us_elb_02_0001.html", + "product_code":"elb", + "code":"18", + "des":"You have two web applications deployed on two ECSs separately, and the web applications provide one domain name but different URLs for users to access.To forward requests", + "doc_type":"usermanual", + "kw":"Using Shared Load Balancers — Advanced Level,Getting Started,User Guide", + "title":"Using Shared Load Balancers — Advanced Level", + "githuburl":"" + }, + { + "uri":"en-us_elb_03_0001.html", + "product_code":"elb", + "code":"19", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Load Balancer", + "title":"Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0004.html", + "product_code":"elb", + "code":"20", + "des":"Before creating a load balancer, you must plan its region, network, protocol, and backend servers.When you select a region, pay attention to the following:The region must", + "doc_type":"usermanual", + "kw":"Preparations for Creating a Load Balancer,Load Balancer,User Guide", + "title":"Preparations for Creating a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_lb_000006.html", + "product_code":"elb", + "code":"21", + "des":"You have prepared everything required for creating a dedicated load balancer. For details, see Preparations for Creating a Load Balancer.Dedicated load balancers can be c", + "doc_type":"usermanual", + "kw":"Creating a Dedicated Load Balancer,Load Balancer,User Guide", + "title":"Creating a Dedicated Load Balancer", + "githuburl":"" + }, + { + "uri":"en-us_topic_0015479967.html", + "product_code":"elb", + "code":"22", + "des":"You have prepared everything required for creating a load balancer. For details, see Preparations for Creating a Load Balancer.Load balancers receive requests from client", + "doc_type":"usermanual", + "kw":"Creating a Shared Load Balancer,Load Balancer,User Guide", + "title":"Creating a Shared Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0006.html", + "product_code":"elb", + "code":"23", + "des":"You can modify the bandwidth used by the EIP bound to the load balancer as required.Log in to the management console.In the upper left corner of the page, click and sele", + "doc_type":"usermanual", + "kw":"Modifying Load Balancer Settings,Load Balancer,User Guide", + "title":"Modifying Load Balancer Settings", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0009.html", + "product_code":"elb", + "code":"24", + "des":"You can bind an IP address to a load balancer or unbind an IP address from a load balancer based on service requirements. If you bind an EIP to a load balancer, it can ro", + "doc_type":"usermanual", + "kw":"Binding an IP Address to or Unbinding an IP Address from a Load Balancer,Load Balancer,User Guide", + "title":"Binding an IP Address to or Unbinding an IP Address from a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0007.html", + "product_code":"elb", + "code":"25", + "des":"You can enable or disable a load balancer at any time. A disabled load balancer cannot distribute traffic.You can enable or disable only classic load balancers.Classic lo", + "doc_type":"usermanual", + "kw":"Enabling or Disabling a Load Balancer,Load Balancer,User Guide", + "title":"Enabling or Disabling a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0008.html", + "product_code":"elb", + "code":"26", + "des":"You can delete a load balancer if you do not need it any longer.A deleted load balancer cannot be recovered.After a public network load balancer is deleted, its EIP will ", + "doc_type":"usermanual", + "kw":"Deleting a Load Balancer,Load Balancer,User Guide", + "title":"Deleting a Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_ug_fz_0011.html", + "product_code":"elb", + "code":"27", + "des":"You can export the load balancer list for backup.Log in to the management console.In the upper left corner of the page, click and select the desired region and project.H", + "doc_type":"usermanual", + "kw":"Exporting the Load Balancer List,Load Balancer,User Guide", + "title":"Exporting the Load Balancer List", + "githuburl":"" + }, + { + "uri":"en-us_topic_0015479923.html", + "product_code":"elb", + "code":"28", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Listener", + "title":"Listener", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0001.html", + "product_code":"elb", + "code":"29", + "des":"You need to add at least one listener after you have created a load balancer. This listener receives requests from clients and routes requests to backend servers using th", + "doc_type":"usermanual", + "kw":"Overview,Listener,User Guide", + "title":"Overview", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0002.html", + "product_code":"elb", + "code":"30", + "des":"Frontend protocols and ports are used by load balancers to receive requests from clients. Load balancers use TCP, UDP, or SSL at Layer 4, and HTTP or HTTPS at Layer 7. Se", + "doc_type":"usermanual", + "kw":"Protocols and Ports,Listener,User Guide", + "title":"Protocols and Ports", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0011.html", + "product_code":"elb", + "code":"31", + "des":"After you create a load balancer, add at least one listener to the load balancer. This listener is a process that checks for requests using the protocol and port you conf", + "doc_type":"usermanual", + "kw":"Adding a Listener,Listener,User Guide", + "title":"Adding a Listener", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0003.html", + "product_code":"elb", + "code":"32", + "des":"Load balancers receive requests from clients and forward them to backend servers in one or more AZs. Each load balancer has at least a listener and a backend server. The ", + "doc_type":"usermanual", + "kw":"Load Balancing Algorithms,Listener,User Guide", + "title":"Load Balancing Algorithms", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0004.html", + "product_code":"elb", + "code":"33", + "des":"Sticky sessions ensure that requests from a client always get routed to the same backend server before a session elapses.Here is an example that describes what sticky ses", + "doc_type":"usermanual", + "kw":"Sticky Session,Listener,User Guide", + "title":"Sticky Session", + "githuburl":"" + }, + { + "uri":"en-us_elb_03_0003.html", + "product_code":"elb", + "code":"34", + "des":"Access control allows you to whitelist certain IP addresses to allow them to access a listener.You can add whitelists only to listeners of shared load balancers. Adding w", + "doc_type":"usermanual", + "kw":"Access Control,Listener,User Guide", + "title":"Access Control", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0012.html", + "product_code":"elb", + "code":"35", + "des":"You can modify a listener as needed or delete a listener if you no longer need it.Deleted listeners cannot be recovered.Frontend Protocol/Port and Backend Protocol cannot", + "doc_type":"usermanual", + "kw":"Modifying or Deleting a Listener,Listener,User Guide", + "title":"Modifying or Deleting a Listener", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0013.html", + "product_code":"elb", + "code":"36", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Advanced Features of HTTP/HTTPS Listeners", + "title":"Advanced Features of HTTP/HTTPS Listeners", + "githuburl":"" + }, + { + "uri":"en-us_topic_0114694934.html", + "product_code":"elb", + "code":"37", + "des":"You can add forwarding policies to HTTP or HTTPS listeners to forward requests to different backend server groups based on domain names or URLs.This is suited for applica", + "doc_type":"usermanual", + "kw":"Forwarding Policy,Advanced Features of HTTP/HTTPS Listeners,User Guide", + "title":"Forwarding Policy", + "githuburl":"" + }, + { + "uri":"en_us_elb_03_0006.html", + "product_code":"elb", + "code":"38", + "des":"In common HTTPS service scenarios, only the server certificate is required for authentication. For some mission-critical services, such as financial transactions, you nee", + "doc_type":"usermanual", + "kw":"Mutual Authentication,Advanced Features of HTTP/HTTPS Listeners,User Guide", + "title":"Mutual Authentication", + "githuburl":"" + }, + { + "uri":"en-us_topic_0118840332.html", + "product_code":"elb", + "code":"39", + "des":"HTTPS is an extension of HTTP. HTTPS encrypts data between a web server and a browser.If you enable redirection, all HTTP requests to your website are transmitted over HT", + "doc_type":"usermanual", + "kw":"HTTP Redirection to HTTPS,Advanced Features of HTTP/HTTPS Listeners,User Guide", + "title":"HTTP Redirection to HTTPS", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0022.html", + "product_code":"elb", + "code":"40", + "des":"When you add HTTPS listeners, you can select desired security policies to improve service security. A security policy is a combination of TLS protocols and cipher suites.", + "doc_type":"usermanual", + "kw":"Security Policy,Advanced Features of HTTP/HTTPS Listeners,User Guide", + "title":"Security Policy", + "githuburl":"" + }, + { + "uri":"elb_ug_jt_0021.html", + "product_code":"elb", + "code":"41", + "des":"If you have an application that can be accessed through multiple domain names and each domain name uses a different certificate, you can enable SNI when you add an HTTPS ", + "doc_type":"usermanual", + "kw":"SNI Certificate (for HTTPS Listeners),Advanced Features of HTTP/HTTPS Listeners,User Guide", + "title":"SNI Certificate (for HTTPS Listeners)", + "githuburl":"" + }, + { + "uri":"elb_ug_hd_0000.html", + "product_code":"elb", + "code":"42", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Backend Server", + "title":"Backend Server", + "githuburl":"" + }, + { + "uri":"elb_ug_hd_0001.html", + "product_code":"elb", + "code":"43", + "des":"A backend server is a cloud server added to a backend server group associated with a load balancer. When you add a listener to a load balancer, you can create or select a", + "doc_type":"usermanual", + "kw":"Overview,Backend Server,User Guide", + "title":"Overview", + "githuburl":"" + }, + { + "uri":"elb_ug_hd_0007.html", + "product_code":"elb", + "code":"44", + "des":"When you add a backend server to a backend server group, ensure that the rules of the security group that containing the backend server allows access from the CIDR block ", + "doc_type":"usermanual", + "kw":"Configuring Security Group Rules for Backend Servers (Dedicated Load Balancers),Backend Server,User ", + "title":"Configuring Security Group Rules for Backend Servers (Dedicated Load Balancers)", + "githuburl":"" + }, + { + "uri":"elb_ug_hd_0002.html", + "product_code":"elb", + "code":"45", + "des":"Before you add servers to a backend server group, ensure that their security groups have inbound rules that allow traffic from 100.125.0.0/16, and specify the health chec", + "doc_type":"usermanual", + "kw":"Configuring Security Group Rules for Backend Servers (Shared Load Balancers),Backend Server,User Gui", + "title":"Configuring Security Group Rules for Backend Servers (Shared Load Balancers)", + "githuburl":"" + }, + { + "uri":"elb_ug_hd_0008.html", + "product_code":"elb", + "code":"46", + "des":"Each backend server can be given a numeral value from 0 to 100 to indicate the proportion of requests to receive. Requests will not be routed to the backend server whose ", + "doc_type":"usermanual", + "kw":"Configuring Weights for Backend Servers,Backend Server,User Guide", + "title":"Configuring Weights for Backend Servers", + "githuburl":"" + }, + { + "uri":"elb_ug_hd_0003.html", + "product_code":"elb", + "code":"47", + "des":"When you use ELB, ensure that at least a healthy backend server is in the backend server group associated with your load balancer. If incoming traffic increases, you need", + "doc_type":"usermanual", + "kw":"Adding or Removing Backend Servers (Dedicated Load Balancers),Backend Server,User Guide", + "title":"Adding or Removing Backend Servers (Dedicated Load Balancers)", + "githuburl":"" + }, + { + "uri":"en-us_topic_0052569729.html", + "product_code":"elb", + "code":"48", + "des":"A backend server group has at least a healthy backend server. If incoming traffic increases, you need to add more backend servers.After a backend server is removed, it ca", + "doc_type":"usermanual", + "kw":"Adding or Removing Backend Servers (Shared Load Balancers),Backend Server,User Guide", + "title":"Adding or Removing Backend Servers (Shared Load Balancers)", + "githuburl":"" + }, + { + "uri":"elb_ug_hc_0000.html", + "product_code":"elb", + "code":"49", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Health Check", + "title":"Health Check", + "githuburl":"" + }, + { + "uri":"en-us_topic_0162227063.html", + "product_code":"elb", + "code":"50", + "des":"You can configure a health check when you add a listener. If you have no special requirements, retain the default settings.The health check protocol can be different from", + "doc_type":"usermanual", + "kw":"Configuring a Health Check,Health Check,User Guide", + "title":"Configuring a Health Check", + "githuburl":"" + }, + { + "uri":"elb_ug_hc_0003.html", + "product_code":"elb", + "code":"51", + "des":"If you do not require health check, you can disable it when you add listeners. If you have already added listeners with health check enabled, you can also disable it when", + "doc_type":"usermanual", + "kw":"Disabling a Health Check,Health Check,User Guide", + "title":"Disabling a Health Check", + "githuburl":"" + }, + { + "uri":"elb_ug_zs_0000.html", + "product_code":"elb", + "code":"52", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Certificate", + "title":"Certificate", + "githuburl":"" + }, + { + "uri":"en-us_topic_0092382555.html", + "product_code":"elb", + "code":"53", + "des":"You can copy and paste the certificate content to create a certificate or directly upload the certificate.A certificate issued by the Root CA is unique, and no additional", + "doc_type":"usermanual", + "kw":"Certificate and Private Key Format,Certificate,User Guide", + "title":"Certificate and Private Key Format", + "githuburl":"" + }, + { + "uri":"elb_ug_zs_0003.html", + "product_code":"elb", + "code":"54", + "des":"ELB supports certificates only in PEM format. If you have a certificate in any other format, you must convert it to a PEM-encoded certificate. There are some common metho", + "doc_type":"usermanual", + "kw":"Converting Certificate Formats,Certificate,User Guide", + "title":"Converting Certificate Formats", + "githuburl":"" + }, + { + "uri":"en-us_elb_03_0005.html", + "product_code":"elb", + "code":"55", + "des":"To enable authentication for securing data transmission over HTTPS, ELB allows you to deploy certificates on load balancers.A certificate can be bound to only one type of", + "doc_type":"usermanual", + "kw":"Creating and Managing a Certificate,Certificate,User Guide", + "title":"Creating and Managing a Certificate", + "githuburl":"" + }, + { + "uri":"elb_ug_bq_0000.html", + "product_code":"elb", + "code":"56", + "des":"If you have a large number of cloud resources, you can assign different tags to the resources to quickly identify them and use these tags to easily manage your resources.", + "doc_type":"usermanual", + "kw":"Tag,User Guide", + "title":"Tag", + "githuburl":"" + }, + { + "uri":"elb_ug_rzfw_0001.html", + "product_code":"elb", + "code":"57", + "des":"Access logs record HTTP and HTTPS requests made to load balancers, and these logs are stored in an OBS bucket. Only public network classic load balancers support access l", + "doc_type":"usermanual", + "kw":"Access Logging,User Guide", + "title":"Access Logging", + "githuburl":"" + }, + { + "uri":"elb_ug_jk_0000.html", + "product_code":"elb", + "code":"58", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Monitoring", + "title":"Monitoring", + "githuburl":"" + }, + { + "uri":"elb_ug_jk_0001.html", + "product_code":"elb", + "code":"59", + "des":"This section describes the namespace, the metrics that can be monitored by Cloud Eye, and dimensions of these metrics. You can use APIs provided by Cloud Eye to query the", + "doc_type":"usermanual", + "kw":"Monitoring Metrics,Monitoring,User Guide", + "title":"Monitoring Metrics", + "githuburl":"" + }, + { + "uri":"elb_ug_jk_0002.html", + "product_code":"elb", + "code":"60", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Setting an Alarm Rule", + "title":"Setting an Alarm Rule", + "githuburl":"" + }, + { + "uri":"elb_ug_jk_0003.html", + "product_code":"elb", + "code":"61", + "des":"Log in to the management console.Under Management & Deployment, click Cloud Eye.In the navigation pane on the left, choose Alarm Management > Alarm Rules.On the Alarm Rul", + "doc_type":"usermanual", + "kw":"Adding an Alarm Rule,Setting an Alarm Rule,User Guide", + "title":"Adding an Alarm Rule", + "githuburl":"" + }, + { + "uri":"elb_ug_jk_0004.html", + "product_code":"elb", + "code":"62", + "des":"Log in to the management console.Under Management & Deployment, click Cloud Eye.In the navigation pane on the left, choose Alarm Management > Alarm Rules.On the Alarm Rul", + "doc_type":"usermanual", + "kw":"Modifying an Alarm Rule,Setting an Alarm Rule,User Guide", + "title":"Modifying an Alarm Rule", + "githuburl":"" + }, + { + "uri":"elb_ug_jk_0005.html", + "product_code":"elb", + "code":"63", + "des":"Cloud Eye allows you to monitor your resources, including load balancers.The transmission of monitoring data takes a while, so the status of each load balancer displayed ", + "doc_type":"usermanual", + "kw":"Viewing Metrics,Monitoring,User Guide", + "title":"Viewing Metrics", + "githuburl":"" + }, + { + "uri":"elb_ug_sj_0000.html", + "product_code":"elb", + "code":"64", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Auditing", + "title":"Auditing", + "githuburl":"" + }, + { + "uri":"elb_ug_sj_0001.html", + "product_code":"elb", + "code":"65", + "des":"You can use CTS to record operations on ELB for query, auditing, and backtracking.Table 1 lists the operations recorded by CTS.", + "doc_type":"usermanual", + "kw":"Key Operations Recorded by CTS,Auditing,User Guide", + "title":"Key Operations Recorded by CTS", + "githuburl":"" + }, + { + "uri":"elb_ug_sj_0002.html", + "product_code":"elb", + "code":"66", + "des":"CTS records the operations performed on ELB and allows you to view the operation records of the last seven days on the CTS console. To query these records, perform the fo", + "doc_type":"usermanual", + "kw":"Viewing Traces,Auditing,User Guide", + "title":"Viewing Traces", + "githuburl":"" + }, + { + "uri":"elb_ug_qy_0002.html", + "product_code":"elb", + "code":"67", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Load Balancer Migration", + "title":"Load Balancer Migration", + "githuburl":"" + }, + { + "uri":"elb-03-qy-0001.html", + "product_code":"elb", + "code":"68", + "des":"Classic load balancers are no longer provided. It is recommended that you use load balancers instead because they provide comprehensive Layer 7 load balancing and better", + "doc_type":"usermanual", + "kw":"Migrating from Classic Load Balancers to Shared Load Balancers,Load Balancer Migration,User Guide", + "title":"Migrating from Classic Load Balancers to Shared Load Balancers", + "githuburl":"" + }, + { + "uri":"elb_ug_pe_0000.html", + "product_code":"elb", + "code":"69", + "des":"Quotas are enforced for service resources on the platform to prevent unforeseen spikes in resource usage. Quotas can limit the number or amount of resources available to ", + "doc_type":"usermanual", + "kw":"Quotas,Common FAQs,quota,Quota,Quotas,User Guide", + "title":"Quotas", + "githuburl":"" + }, + { + "uri":"elb_faq_0000.html", + "product_code":"elb", + "code":"70", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"FAQs", + "title":"FAQs", + "githuburl":"" + }, + { + "uri":"elb_faq_0200.html", + "product_code":"elb", + "code":"71", + "des":"How Can I Obtain the IP Address of a Client?How Do I Troubleshoot an Unhealthy Backend Server?How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Hea", + "doc_type":"usermanual", + "kw":"Popular Questions,FAQs,User Guide", + "title":"Popular Questions", + "githuburl":"" + }, + { + "uri":"elb_faq_0212.html", + "product_code":"elb", + "code":"72", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"ELB Use", + "title":"ELB Use", + "githuburl":"" + }, + { + "uri":"elb_faq_0211.html", + "product_code":"elb", + "code":"73", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"ELB Functionality", + "title":"ELB Functionality", + "githuburl":"" + }, + { + "uri":"elb_faq_0060.html", + "product_code":"elb", + "code":"74", + "des":"ELB cannot be used alone.ELB is a service that distributes incoming traffic across servers and must be used with the ECS or BMS service.", + "doc_type":"usermanual", + "kw":"Can ELB Be Used Separately?,ELB Functionality,User Guide", + "title":"Can ELB Be Used Separately?", + "githuburl":"" + }, + { + "uri":"en-us_elb_05_0011.html", + "product_code":"elb", + "code":"75", + "des":"During the lifecycle of a classic load balancer, the EIP is exclusively assigned to it. The EIP is released only when you delete the load balancer.For each shared load ba", + "doc_type":"usermanual", + "kw":"Is an EIP Exclusively Assigned to a Load Balancer?,ELB Functionality,User Guide", + "title":"Is an EIP Exclusively Assigned to a Load Balancer?", + "githuburl":"" + }, + { + "uri":"en-us_elb_05_0004.html", + "product_code":"elb", + "code":"76", + "des":"By default, you can use an account to create a maximum of 50 shared and dedicated load balancers and 100 listeners. If you need more load balancers or listeners, apply to", + "doc_type":"usermanual", + "kw":"How Many Load Balancers and Listeners Can I Have?,ELB Functionality,User Guide", + "title":"How Many Load Balancers and Listeners Can I Have?", + "githuburl":"" + }, + { + "uri":"elb_faq_0062.html", + "product_code":"elb", + "code":"77", + "des":"You can adjust the number of backend servers associated with a load balancer at any time. You can also change the type of backend servers according to your business needs", + "doc_type":"usermanual", + "kw":"Can I Adjust the Number of Backend Servers When a Load Balancer is Running?,ELB Functionality,User G", + "title":"Can I Adjust the Number of Backend Servers When a Load Balancer is Running?", + "githuburl":"" + }, + { + "uri":"elb_faq_0064.html", + "product_code":"elb", + "code":"78", + "des":"Yes.ELB does not restrict OSs of backend servers as long as applications on these servers are the same and the data is consistent. However, it is recommended that you ins", + "doc_type":"usermanual", + "kw":"Can Backend Servers Run Different OSs?,ELB Functionality,User Guide", + "title":"Can Backend Servers Run Different OSs?", + "githuburl":"" + }, + { + "uri":"elb_faq_0127.html", + "product_code":"elb", + "code":"79", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Service Performance and Load", + "title":"Service Performance and Load", + "githuburl":"" + }, + { + "uri":"elb_faq_0049.html", + "product_code":"elb", + "code":"80", + "des":"Check for failed requests on the clients, especially when 4xx status codes are returned. A possible cause is that the requests are rejected by ELB and are not routed to b", + "doc_type":"usermanual", + "kw":"How Do I Check Traffic Inconsistency?,Service Performance and Load,User Guide", + "title":"How Do I Check Traffic Inconsistency?", + "githuburl":"" + }, + { + "uri":"elb_faq_0050.html", + "product_code":"elb", + "code":"81", + "des":"Check whether sticky sessions are enabled. If sticky sessions are enabled and there are few clients, traffic may be unevenly distributed.Check the health of backend serve", + "doc_type":"usermanual", + "kw":"How Do I Check If Traffic Is Evenly Distributed?,Service Performance and Load,User Guide", + "title":"How Do I Check If Traffic Is Evenly Distributed?", + "githuburl":"" + }, + { + "uri":"elb_faq_0052.html", + "product_code":"elb", + "code":"82", + "des":"Check the load of backend servers. If their CPU usage reaches 100%, applications may have performance bottlenecks.Check the incoming traffic. If the incoming traffic exce", + "doc_type":"usermanual", + "kw":"What Do I Do If a Load Balancer Fails the Stress Test?,Service Performance and Load,User Guide", + "title":"What Do I Do If a Load Balancer Fails the Stress Test?", + "githuburl":"" + }, + { + "uri":"elb_faq_0201.html", + "product_code":"elb", + "code":"83", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Load Balancer", + "title":"Load Balancer", + "githuburl":"" + }, + { + "uri":"elb_faq_0038.html", + "product_code":"elb", + "code":"84", + "des":"ELB uses FullNAT to forward the incoming traffic. For load balancing at Layer 4, LVS forwards the incoming traffic to backend servers directly. For load balancing at Laye", + "doc_type":"usermanual", + "kw":"How Does ELB Distribute Traffic?,Load Balancer,User Guide", + "title":"How Does ELB Distribute Traffic?", + "githuburl":"" + }, + { + "uri":"elb_faq_0202.html", + "product_code":"elb", + "code":"85", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Listener", + "title":"Listener", + "githuburl":"" + }, + { + "uri":"en-us_elb_05_0008.html", + "product_code":"elb", + "code":"86", + "des":"Sticky sessions ensure that requests from the same client are forwarded to the same backend server. ELB supports three types of sticky sessions. Table 3 lists the relatio", + "doc_type":"usermanual", + "kw":"What Are the Relationships Between Load Balancing Algorithms and Sticky Session Types?,Listener,User", + "title":"What Are the Relationships Between Load Balancing Algorithms and Sticky Session Types?", + "githuburl":"" + }, + { + "uri":"elb_faq_0111.html", + "product_code":"elb", + "code":"87", + "des":"For HTTP listeners, unencrypted WebSocket (ws://) is supported by default. For HTTPS listeners, encrypted WebSocket (wss://) is supported by default.", + "doc_type":"usermanual", + "kw":"How Can I Use WebSocket?,Listener,User Guide", + "title":"How Can I Use WebSocket?", + "githuburl":"" + }, + { + "uri":"elb_faq_0203.html", + "product_code":"elb", + "code":"88", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Backend Server", + "title":"Backend Server", + "githuburl":"" + }, + { + "uri":"elb_faq_0112.html", + "product_code":"elb", + "code":"89", + "des":"Each LVS node and Nginx node in the ELB system detect backend servers at the health check interval that you have specified for the backend server group.During this period", + "doc_type":"usermanual", + "kw":"Why Is the Interval at Which Backend Servers Receive Health Check Packets Different from the Configu", + "title":"Why Is the Interval at Which Backend Servers Receive Health Check Packets Different from the Configured Health Check Interval?", + "githuburl":"" + }, + { + "uri":"elb_faq_099.html", + "product_code":"elb", + "code":"90", + "des":"Yes. Backend servers can access the Internet whether or not they are associated with a load balancer.", + "doc_type":"usermanual", + "kw":"Can Backend Servers Access the Internet After They Are Associated with a Load Balancer?,Backend Serv", + "title":"Can Backend Servers Access the Internet After They Are Associated with a Load Balancer?", + "githuburl":"" + }, + { + "uri":"elb_faq_0039.html", + "product_code":"elb", + "code":"91", + "des":"Verify that an IP address has been assigned to the server's primary NIC.Log in to the server. (An ECS is used as an example here.)Run the ifconfig or ip address command t", + "doc_type":"usermanual", + "kw":"How Do I Check the Network Conditions of a Backend Server?,Backend Server,User Guide", + "title":"How Do I Check the Network Conditions of a Backend Server?", + "githuburl":"" + }, + { + "uri":"elb_faq_0040.html", + "product_code":"elb", + "code":"92", + "des":"Check whether the security group of the server is correctly configured.On the server details page, view the security group.Check whether the security group allows access ", + "doc_type":"usermanual", + "kw":"How Do I Check the Network Configuration of a Backend Server?,Backend Server,User Guide", + "title":"How Do I Check the Network Configuration of a Backend Server?", + "githuburl":"" + }, + { + "uri":"elb_faq_0041.html", + "product_code":"elb", + "code":"93", + "des":"Verify that the applications on the backend server are enabled.Log in to the backend server. (An ECS is used as an example here.)Run the following command to check the po", + "doc_type":"usermanual", + "kw":"How Do I Check the Status of a Backend Server?,Backend Server,User Guide", + "title":"How Do I Check the Status of a Backend Server?", + "githuburl":"" + }, + { + "uri":"elb_faq_0001.html", + "product_code":"elb", + "code":"94", + "des":"If a backend server is associated with a load balancer for the first time, the backend server is considered healthy after one health check. After this, the server is dete", + "doc_type":"usermanual", + "kw":"When Is a Backend Server Considered Healthy?,Backend Server,User Guide", + "title":"When Is a Backend Server Considered Healthy?", + "githuburl":"" + }, + { + "uri":"elb_faq_0204.html", + "product_code":"elb", + "code":"95", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Health Check", + "title":"Health Check", + "githuburl":"" + }, + { + "uri":"en-us_topic_0018127975.html", + "product_code":"elb", + "code":"96", + "des":"If a client cannot access a backend server through a load balancer, the backend server is declared unhealthy. You can check the health check result of the backend server ", + "doc_type":"usermanual", + "kw":"How Do I Troubleshoot an Unhealthy Backend Server?,Health Check,User Guide", + "title":"How Do I Troubleshoot an Unhealthy Backend Server?", + "githuburl":"" + }, + { + "uri":"elb_faq_0024.html", + "product_code":"elb", + "code":"97", + "des":"UDP is a connectionless protocol, and a UDP health check is implemented as follows:The health check node sends an ICMP request message to the backend server based on the ", + "doc_type":"usermanual", + "kw":"How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Health Checks?,Health Check", + "title":"How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Health Checks?", + "githuburl":"" + }, + { + "uri":"elb_faq_0114.html", + "product_code":"elb", + "code":"98", + "des":"ELB is deployed in cluster mode, and all nodes for request forwarding in the cluster send requests to backend servers at the same time. If the health check interval is to", + "doc_type":"usermanual", + "kw":"Why Does ELB Frequently Send Requests to Backend Servers During Health Checks?,Health Check,User Gui", + "title":"Why Does ELB Frequently Send Requests to Backend Servers During Health Checks?", + "githuburl":"" + }, + { + "uri":"elb_faq_0170.html", + "product_code":"elb", + "code":"99", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Obtaining Source IP Addresses", + "title":"Obtaining Source IP Addresses", + "githuburl":"" + }, + { + "uri":"elb_faq_0090.html", + "product_code":"elb", + "code":"100", + "des":"When you use ELB to route requests to backend servers, IP addresses of the clients will be translated by the ELB system. This FAQ provides the operations for obtaining th", + "doc_type":"usermanual", + "kw":"How Can I Obtain the IP Address of a Client?,Obtaining Source IP Addresses,User Guide", + "title":"How Can I Obtain the IP Address of a Client?", + "githuburl":"" + }, + { + "uri":"elb_faq_0180.html", + "product_code":"elb", + "code":"101", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"HTTP/HTTPS Listener", + "title":"HTTP/HTTPS Listener", + "githuburl":"" + }, + { + "uri":"elb_faq_0118.html", + "product_code":"elb", + "code":"102", + "des":"The following may cause the system to display a message indicating that a certificate is insecure:The domain name used by the certificate is different from the domain nam", + "doc_type":"usermanual", + "kw":"Why Is the Security Warning Still Displayed After a Certificate Is Configured?,HTTP/HTTPS Listener,U", + "title":"Why Is the Security Warning Still Displayed After a Certificate Is Configured?", + "githuburl":"" + }, + { + "uri":"elb_faq_0190.html", + "product_code":"elb", + "code":"103", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Sticky Session", + "title":"Sticky Session", + "githuburl":"" + }, + { + "uri":"elb_faq_0046.html", + "product_code":"elb", + "code":"104", + "des":"Check whether sticky sessions are enabled for the backend server group. If sticky sessions are enabled, go to the next step.Check the health check result of the backend s", + "doc_type":"usermanual", + "kw":"How Do I Check If Sticky Sessions Fail to Take Effect?,Sticky Session,User Guide", + "title":"How Do I Check If Sticky Sessions Fail to Take Effect?", + "githuburl":"" + }, + { + "uri":"elb_faq_0085.html", + "product_code":"elb", + "code":"105", + "des":"Dedicated load balancers: Source IP address and Load balancer cookieShared load balancers: Source IP address, Load balancer cookie, and Application cookieClassic load bal", + "doc_type":"usermanual", + "kw":"What Types of Sticky Sessions Does ELB Support?,Sticky Session,User Guide", + "title":"What Types of Sticky Sessions Does ELB Support?", + "githuburl":"" + }, + { + "uri":"en-us_elb_06_0000.html", + "product_code":"elb", + "code":"106", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Appendix", + "title":"Appendix", + "githuburl":"" + }, + { + "uri":"en-us_elb_06_0001.html", + "product_code":"elb", + "code":"107", + "des":"ELB provides customized strategies for managing service access. Before customizing these strategies, ELB needs to obtain the client's IP address contained in the access r", + "doc_type":"usermanual", + "kw":"Configuring the TOA Plug-in,Appendix,User Guide", + "title":"Configuring the TOA Plug-in", + "githuburl":"" + }, + { + "uri":"en-us_elb_07_0000.html", + "product_code":"elb", + "code":"108", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Change History,User Guide", + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/elb/umn/CLASS.TXT.json b/elb/umn/CLASS.TXT.json new file mode 100644 index 000000000..41fa123bc --- /dev/null +++ b/elb/umn/CLASS.TXT.json @@ -0,0 +1,974 @@ +[ + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Service Overview", + "uri":"elb_pro_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"1" + }, + { + "desc":"Elastic Load Balancing (ELB) automatically distributes incoming traffic across multiple backend servers based on the listening rules you configure. ELB expands the servic", + "product_code":"elb", + "title":"What Is ELB?", + "uri":"en-us_topic_0015479966.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"2" + }, + { + "desc":"Robust performanceEach dedicated load balancer has exclusive use of isolated underlying resources and can provide guaranteed performance. A single dedicated load balancer", + "product_code":"elb", + "title":"Product Advantages", + "uri":"elb_pro_0005.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"3" + }, + { + "desc":"For an application with heavy traffic, such as a large portal or mobile app store, ELB evenly distributes incoming traffic to multiple backend servers, balancing the load", + "product_code":"elb", + "title":"Application Scenarios", + "uri":"elb_pro_0006.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"4" + }, + { + "desc":"Each type of load balancer has their advantages.Classic load balancers are suitable for web services with low traffic and simple traffic patterns.Classic load balancers c", + "product_code":"elb", + "title":"Differences Between Classic and Shared Load Balancers", + "uri":"en-us_elb_01_0007.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"5" + }, + { + "desc":"Each type of load balancer has their advantages.Dedicated load balancers have exclusive use of underlying resources, so that the performance of a dedicated load balancer ", + "product_code":"elb", + "title":"Differences Between Dedicated and Shared Load Balancers", + "uri":"elb_pro_0004.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"6" + }, + { + "desc":"Dedicated load balancers are available in different specifications. Each specification contains some key metrics from which you can decide whether the specification meets", + "product_code":"elb", + "title":"Specifications of Dedicated Load Balancers", + "uri":"en-us_topic_0287737145.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"7" + }, + { + "desc":"To balance the load of your applications, create a load balancer to receive requests from clients and route the requests to backend servers in one or more AZs. Add at lea", + "product_code":"elb", + "title":"How ELB Works", + "uri":"elb_pro_0003.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"8" + }, + { + "desc":"A load balancer can work on either a public or private network.You can bind an EIP to a load balancer so that it can receive requests from clients on the Internet and rou", + "product_code":"elb", + "title":"Load Balancing on a Public or Private Network", + "uri":"en-us_elb_01_0004.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"9" + }, + { + "desc":"Load balancers communicate with backend servers over a private network.If backend servers process only requests routed from load balancers, there is no need to assign EIP", + "product_code":"elb", + "title":"Network Traffic Paths", + "uri":"elb_ug_fz_0003_01.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"10" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Product Concepts", + "uri":"en-us_topic_0195131496.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"11" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Basic Concepts", + "uri":"elb_pro_0001.html", + "doc_type":"usermanual", + "p_code":"11", + "code":"12" + }, + { + "desc":"A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.A region is a physical data center, which", + "product_code":"elb", + "title":"Region and AZ", + "uri":"elb_pro_0002.html", + "doc_type":"usermanual", + "p_code":"11", + "code":"13" + }, + { + "desc":"Virtual Private Cloud (VPC)Provides IP addresses and bandwidth for load balancers.Provides IP addresses and bandwidth for load balancers.Auto Scaling (AS)Works with ELB t", + "product_code":"elb", + "title":"Integration with Other Services", + "uri":"elb_pro_0008.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"14" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Getting Started", + "uri":"elb_qs_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"15" + }, + { + "desc":"Two examples are given to show how you can quickly create a shared load balancer to distribute incoming traffic across backend servers.Entry level: A large number of requ", + "product_code":"elb", + "title":"Overview", + "uri":"elb_qs_0001.html", + "doc_type":"usermanual", + "p_code":"15", + "code":"16" + }, + { + "desc":"You have a web application, which often needs to handle heavy traffic and is deployed on two ECSs for load balancing.You can create a shared load balancer to distribute t", + "product_code":"elb", + "title":"Using Shared Load Balancers — Entry Level", + "uri":"en-us_topic_0052569751.html", + "doc_type":"usermanual", + "p_code":"15", + "code":"17" + }, + { + "desc":"You have two web applications deployed on two ECSs separately, and the web applications provide one domain name but different URLs for users to access.To forward requests", + "product_code":"elb", + "title":"Using Shared Load Balancers — Advanced Level", + "uri":"en-us_elb_02_0001.html", + "doc_type":"usermanual", + "p_code":"15", + "code":"18" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer", + "uri":"en-us_elb_03_0001.html", + "doc_type":"usermanual", + "p_code":"", + "code":"19" + }, + { + "desc":"Before creating a load balancer, you must plan its region, network, protocol, and backend servers.When you select a region, pay attention to the following:The region must", + "product_code":"elb", + "title":"Preparations for Creating a Load Balancer", + "uri":"elb_ug_fz_0004.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"20" + }, + { + "desc":"You have prepared everything required for creating a dedicated load balancer. For details, see Preparations for Creating a Load Balancer.Dedicated load balancers can be c", + "product_code":"elb", + "title":"Creating a Dedicated Load Balancer", + "uri":"elb_lb_000006.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"21" + }, + { + "desc":"You have prepared everything required for creating a load balancer. For details, see Preparations for Creating a Load Balancer.Load balancers receive requests from client", + "product_code":"elb", + "title":"Creating a Shared Load Balancer", + "uri":"en-us_topic_0015479967.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"22" + }, + { + "desc":"You can modify the bandwidth used by the EIP bound to the load balancer as required.Log in to the management console.In the upper left corner of the page, click and sele", + "product_code":"elb", + "title":"Modifying Load Balancer Settings", + "uri":"elb_ug_fz_0006.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"23" + }, + { + "desc":"You can bind an IP address to a load balancer or unbind an IP address from a load balancer based on service requirements. If you bind an EIP to a load balancer, it can ro", + "product_code":"elb", + "title":"Binding an IP Address to or Unbinding an IP Address from a Load Balancer", + "uri":"elb_ug_fz_0009.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"24" + }, + { + "desc":"You can enable or disable a load balancer at any time. A disabled load balancer cannot distribute traffic.You can enable or disable only classic load balancers.Classic lo", + "product_code":"elb", + "title":"Enabling or Disabling a Load Balancer", + "uri":"elb_ug_fz_0007.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"25" + }, + { + "desc":"You can delete a load balancer if you do not need it any longer.A deleted load balancer cannot be recovered.After a public network load balancer is deleted, its EIP will ", + "product_code":"elb", + "title":"Deleting a Load Balancer", + "uri":"elb_ug_fz_0008.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"26" + }, + { + "desc":"You can export the load balancer list for backup.Log in to the management console.In the upper left corner of the page, click and select the desired region and project.H", + "product_code":"elb", + "title":"Exporting the Load Balancer List", + "uri":"elb_ug_fz_0011.html", + "doc_type":"usermanual", + "p_code":"19", + "code":"27" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Listener", + "uri":"en-us_topic_0015479923.html", + "doc_type":"usermanual", + "p_code":"", + "code":"28" + }, + { + "desc":"You need to add at least one listener after you have created a load balancer. This listener receives requests from clients and routes requests to backend servers using th", + "product_code":"elb", + "title":"Overview", + "uri":"elb_ug_jt_0001.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"29" + }, + { + "desc":"Frontend protocols and ports are used by load balancers to receive requests from clients. Load balancers use TCP, UDP, or SSL at Layer 4, and HTTP or HTTPS at Layer 7. Se", + "product_code":"elb", + "title":"Protocols and Ports", + "uri":"elb_ug_jt_0002.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"30" + }, + { + "desc":"After you create a load balancer, add at least one listener to the load balancer. This listener is a process that checks for requests using the protocol and port you conf", + "product_code":"elb", + "title":"Adding a Listener", + "uri":"elb_ug_jt_0011.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"31" + }, + { + "desc":"Load balancers receive requests from clients and forward them to backend servers in one or more AZs. Each load balancer has at least a listener and a backend server. The ", + "product_code":"elb", + "title":"Load Balancing Algorithms", + "uri":"elb_ug_jt_0003.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"32" + }, + { + "desc":"Sticky sessions ensure that requests from a client always get routed to the same backend server before a session elapses.Here is an example that describes what sticky ses", + "product_code":"elb", + "title":"Sticky Session", + "uri":"elb_ug_jt_0004.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"33" + }, + { + "desc":"Access control allows you to whitelist certain IP addresses to allow them to access a listener.You can add whitelists only to listeners of shared load balancers. Adding w", + "product_code":"elb", + "title":"Access Control", + "uri":"en-us_elb_03_0003.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"34" + }, + { + "desc":"You can modify a listener as needed or delete a listener if you no longer need it.Deleted listeners cannot be recovered.Frontend Protocol/Port and Backend Protocol cannot", + "product_code":"elb", + "title":"Modifying or Deleting a Listener", + "uri":"elb_ug_jt_0012.html", + "doc_type":"usermanual", + "p_code":"28", + "code":"35" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Advanced Features of HTTP/HTTPS Listeners", + "uri":"elb_ug_jt_0013.html", + "doc_type":"usermanual", + "p_code":"", + "code":"36" + }, + { + "desc":"You can add forwarding policies to HTTP or HTTPS listeners to forward requests to different backend server groups based on domain names or URLs.This is suited for applica", + "product_code":"elb", + "title":"Forwarding Policy", + "uri":"en-us_topic_0114694934.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"37" + }, + { + "desc":"In common HTTPS service scenarios, only the server certificate is required for authentication. For some mission-critical services, such as financial transactions, you nee", + "product_code":"elb", + "title":"Mutual Authentication", + "uri":"en_us_elb_03_0006.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"38" + }, + { + "desc":"HTTPS is an extension of HTTP. HTTPS encrypts data between a web server and a browser.If you enable redirection, all HTTP requests to your website are transmitted over HT", + "product_code":"elb", + "title":"HTTP Redirection to HTTPS", + "uri":"en-us_topic_0118840332.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"39" + }, + { + "desc":"When you add HTTPS listeners, you can select desired security policies to improve service security. A security policy is a combination of TLS protocols and cipher suites.", + "product_code":"elb", + "title":"Security Policy", + "uri":"elb_ug_jt_0022.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"40" + }, + { + "desc":"If you have an application that can be accessed through multiple domain names and each domain name uses a different certificate, you can enable SNI when you add an HTTPS ", + "product_code":"elb", + "title":"SNI Certificate (for HTTPS Listeners)", + "uri":"elb_ug_jt_0021.html", + "doc_type":"usermanual", + "p_code":"36", + "code":"41" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend Server", + "uri":"elb_ug_hd_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"42" + }, + { + "desc":"A backend server is a cloud server added to a backend server group associated with a load balancer. When you add a listener to a load balancer, you can create or select a", + "product_code":"elb", + "title":"Overview", + "uri":"elb_ug_hd_0001.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"43" + }, + { + "desc":"When you add a backend server to a backend server group, ensure that the rules of the security group that containing the backend server allows access from the CIDR block ", + "product_code":"elb", + "title":"Configuring Security Group Rules for Backend Servers (Dedicated Load Balancers)", + "uri":"elb_ug_hd_0007.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"44" + }, + { + "desc":"Before you add servers to a backend server group, ensure that their security groups have inbound rules that allow traffic from 100.125.0.0/16, and specify the health chec", + "product_code":"elb", + "title":"Configuring Security Group Rules for Backend Servers (Shared Load Balancers)", + "uri":"elb_ug_hd_0002.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"45" + }, + { + "desc":"Each backend server can be given a numeral value from 0 to 100 to indicate the proportion of requests to receive. Requests will not be routed to the backend server whose ", + "product_code":"elb", + "title":"Configuring Weights for Backend Servers", + "uri":"elb_ug_hd_0008.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"46" + }, + { + "desc":"When you use ELB, ensure that at least a healthy backend server is in the backend server group associated with your load balancer. If incoming traffic increases, you need", + "product_code":"elb", + "title":"Adding or Removing Backend Servers (Dedicated Load Balancers)", + "uri":"elb_ug_hd_0003.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"47" + }, + { + "desc":"A backend server group has at least a healthy backend server. If incoming traffic increases, you need to add more backend servers.After a backend server is removed, it ca", + "product_code":"elb", + "title":"Adding or Removing Backend Servers (Shared Load Balancers)", + "uri":"en-us_topic_0052569729.html", + "doc_type":"usermanual", + "p_code":"42", + "code":"48" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Health Check", + "uri":"elb_ug_hc_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"49" + }, + { + "desc":"You can configure a health check when you add a listener. If you have no special requirements, retain the default settings.The health check protocol can be different from", + "product_code":"elb", + "title":"Configuring a Health Check", + "uri":"en-us_topic_0162227063.html", + "doc_type":"usermanual", + "p_code":"49", + "code":"50" + }, + { + "desc":"If you do not require health check, you can disable it when you add listeners. If you have already added listeners with health check enabled, you can also disable it when", + "product_code":"elb", + "title":"Disabling a Health Check", + "uri":"elb_ug_hc_0003.html", + "doc_type":"usermanual", + "p_code":"49", + "code":"51" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Certificate", + "uri":"elb_ug_zs_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"52" + }, + { + "desc":"You can copy and paste the certificate content to create a certificate or directly upload the certificate.A certificate issued by the Root CA is unique, and no additional", + "product_code":"elb", + "title":"Certificate and Private Key Format", + "uri":"en-us_topic_0092382555.html", + "doc_type":"usermanual", + "p_code":"52", + "code":"53" + }, + { + "desc":"ELB supports certificates only in PEM format. If you have a certificate in any other format, you must convert it to a PEM-encoded certificate. There are some common metho", + "product_code":"elb", + "title":"Converting Certificate Formats", + "uri":"elb_ug_zs_0003.html", + "doc_type":"usermanual", + "p_code":"52", + "code":"54" + }, + { + "desc":"To enable authentication for securing data transmission over HTTPS, ELB allows you to deploy certificates on load balancers.A certificate can be bound to only one type of", + "product_code":"elb", + "title":"Creating and Managing a Certificate", + "uri":"en-us_elb_03_0005.html", + "doc_type":"usermanual", + "p_code":"52", + "code":"55" + }, + { + "desc":"If you have a large number of cloud resources, you can assign different tags to the resources to quickly identify them and use these tags to easily manage your resources.", + "product_code":"elb", + "title":"Tag", + "uri":"elb_ug_bq_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"56" + }, + { + "desc":"Access logs record HTTP and HTTPS requests made to load balancers, and these logs are stored in an OBS bucket. Only public network classic load balancers support access l", + "product_code":"elb", + "title":"Access Logging", + "uri":"elb_ug_rzfw_0001.html", + "doc_type":"usermanual", + "p_code":"", + "code":"57" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Monitoring", + "uri":"elb_ug_jk_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"58" + }, + { + "desc":"This section describes the namespace, the metrics that can be monitored by Cloud Eye, and dimensions of these metrics. You can use APIs provided by Cloud Eye to query the", + "product_code":"elb", + "title":"Monitoring Metrics", + "uri":"elb_ug_jk_0001.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"59" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Setting an Alarm Rule", + "uri":"elb_ug_jk_0002.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"60" + }, + { + "desc":"Log in to the management console.Under Management & Deployment, click Cloud Eye.In the navigation pane on the left, choose Alarm Management > Alarm Rules.On the Alarm Rul", + "product_code":"elb", + "title":"Adding an Alarm Rule", + "uri":"elb_ug_jk_0003.html", + "doc_type":"usermanual", + "p_code":"60", + "code":"61" + }, + { + "desc":"Log in to the management console.Under Management & Deployment, click Cloud Eye.In the navigation pane on the left, choose Alarm Management > Alarm Rules.On the Alarm Rul", + "product_code":"elb", + "title":"Modifying an Alarm Rule", + "uri":"elb_ug_jk_0004.html", + "doc_type":"usermanual", + "p_code":"60", + "code":"62" + }, + { + "desc":"Cloud Eye allows you to monitor your resources, including load balancers.The transmission of monitoring data takes a while, so the status of each load balancer displayed ", + "product_code":"elb", + "title":"Viewing Metrics", + "uri":"elb_ug_jk_0005.html", + "doc_type":"usermanual", + "p_code":"58", + "code":"63" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Auditing", + "uri":"elb_ug_sj_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"64" + }, + { + "desc":"You can use CTS to record operations on ELB for query, auditing, and backtracking.Table 1 lists the operations recorded by CTS.", + "product_code":"elb", + "title":"Key Operations Recorded by CTS", + "uri":"elb_ug_sj_0001.html", + "doc_type":"usermanual", + "p_code":"64", + "code":"65" + }, + { + "desc":"CTS records the operations performed on ELB and allows you to view the operation records of the last seven days on the CTS console. To query these records, perform the fo", + "product_code":"elb", + "title":"Viewing Traces", + "uri":"elb_ug_sj_0002.html", + "doc_type":"usermanual", + "p_code":"64", + "code":"66" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer Migration", + "uri":"elb_ug_qy_0002.html", + "doc_type":"usermanual", + "p_code":"", + "code":"67" + }, + { + "desc":"Classic load balancers are no longer provided. It is recommended that you use load balancers instead because they provide comprehensive Layer 7 load balancing and better", + "product_code":"elb", + "title":"Migrating from Classic Load Balancers to Shared Load Balancers", + "uri":"elb-03-qy-0001.html", + "doc_type":"usermanual", + "p_code":"67", + "code":"68" + }, + { + "desc":"Quotas are enforced for service resources on the platform to prevent unforeseen spikes in resource usage. Quotas can limit the number or amount of resources available to ", + "product_code":"elb", + "title":"Quotas", + "uri":"elb_ug_pe_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"69" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"FAQs", + "uri":"elb_faq_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"70" + }, + { + "desc":"How Can I Obtain the IP Address of a Client?How Do I Troubleshoot an Unhealthy Backend Server?How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Hea", + "product_code":"elb", + "title":"Popular Questions", + "uri":"elb_faq_0200.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"71" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"ELB Use", + "uri":"elb_faq_0212.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"72" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"ELB Functionality", + "uri":"elb_faq_0211.html", + "doc_type":"usermanual", + "p_code":"72", + "code":"73" + }, + { + "desc":"ELB cannot be used alone.ELB is a service that distributes incoming traffic across servers and must be used with the ECS or BMS service.", + "product_code":"elb", + "title":"Can ELB Be Used Separately?", + "uri":"elb_faq_0060.html", + "doc_type":"usermanual", + "p_code":"73", + "code":"74" + }, + { + "desc":"During the lifecycle of a classic load balancer, the EIP is exclusively assigned to it. The EIP is released only when you delete the load balancer.For each shared load ba", + "product_code":"elb", + "title":"Is an EIP Exclusively Assigned to a Load Balancer?", + "uri":"en-us_elb_05_0011.html", + "doc_type":"usermanual", + "p_code":"73", + "code":"75" + }, + { + "desc":"By default, you can use an account to create a maximum of 50 shared and dedicated load balancers and 100 listeners. If you need more load balancers or listeners, apply to", + "product_code":"elb", + "title":"How Many Load Balancers and Listeners Can I Have?", + "uri":"en-us_elb_05_0004.html", + "doc_type":"usermanual", + "p_code":"73", + "code":"76" + }, + { + "desc":"You can adjust the number of backend servers associated with a load balancer at any time. You can also change the type of backend servers according to your business needs", + "product_code":"elb", + "title":"Can I Adjust the Number of Backend Servers When a Load Balancer is Running?", + "uri":"elb_faq_0062.html", + "doc_type":"usermanual", + "p_code":"73", + "code":"77" + }, + { + "desc":"Yes.ELB does not restrict OSs of backend servers as long as applications on these servers are the same and the data is consistent. However, it is recommended that you ins", + "product_code":"elb", + "title":"Can Backend Servers Run Different OSs?", + "uri":"elb_faq_0064.html", + "doc_type":"usermanual", + "p_code":"73", + "code":"78" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Service Performance and Load", + "uri":"elb_faq_0127.html", + "doc_type":"usermanual", + "p_code":"72", + "code":"79" + }, + { + "desc":"Check for failed requests on the clients, especially when 4xx status codes are returned. A possible cause is that the requests are rejected by ELB and are not routed to b", + "product_code":"elb", + "title":"How Do I Check Traffic Inconsistency?", + "uri":"elb_faq_0049.html", + "doc_type":"usermanual", + "p_code":"79", + "code":"80" + }, + { + "desc":"Check whether sticky sessions are enabled. If sticky sessions are enabled and there are few clients, traffic may be unevenly distributed.Check the health of backend serve", + "product_code":"elb", + "title":"How Do I Check If Traffic Is Evenly Distributed?", + "uri":"elb_faq_0050.html", + "doc_type":"usermanual", + "p_code":"79", + "code":"81" + }, + { + "desc":"Check the load of backend servers. If their CPU usage reaches 100%, applications may have performance bottlenecks.Check the incoming traffic. If the incoming traffic exce", + "product_code":"elb", + "title":"What Do I Do If a Load Balancer Fails the Stress Test?", + "uri":"elb_faq_0052.html", + "doc_type":"usermanual", + "p_code":"79", + "code":"82" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Load Balancer", + "uri":"elb_faq_0201.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"83" + }, + { + "desc":"ELB uses FullNAT to forward the incoming traffic. For load balancing at Layer 4, LVS forwards the incoming traffic to backend servers directly. For load balancing at Laye", + "product_code":"elb", + "title":"How Does ELB Distribute Traffic?", + "uri":"elb_faq_0038.html", + "doc_type":"usermanual", + "p_code":"83", + "code":"84" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Listener", + "uri":"elb_faq_0202.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"85" + }, + { + "desc":"Sticky sessions ensure that requests from the same client are forwarded to the same backend server. ELB supports three types of sticky sessions. Table 3 lists the relatio", + "product_code":"elb", + "title":"What Are the Relationships Between Load Balancing Algorithms and Sticky Session Types?", + "uri":"en-us_elb_05_0008.html", + "doc_type":"usermanual", + "p_code":"85", + "code":"86" + }, + { + "desc":"For HTTP listeners, unencrypted WebSocket (ws://) is supported by default. For HTTPS listeners, encrypted WebSocket (wss://) is supported by default.", + "product_code":"elb", + "title":"How Can I Use WebSocket?", + "uri":"elb_faq_0111.html", + "doc_type":"usermanual", + "p_code":"85", + "code":"87" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Backend Server", + "uri":"elb_faq_0203.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"88" + }, + { + "desc":"Each LVS node and Nginx node in the ELB system detect backend servers at the health check interval that you have specified for the backend server group.During this period", + "product_code":"elb", + "title":"Why Is the Interval at Which Backend Servers Receive Health Check Packets Different from the Configured Health Check Interval?", + "uri":"elb_faq_0112.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"89" + }, + { + "desc":"Yes. Backend servers can access the Internet whether or not they are associated with a load balancer.", + "product_code":"elb", + "title":"Can Backend Servers Access the Internet After They Are Associated with a Load Balancer?", + "uri":"elb_faq_099.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"90" + }, + { + "desc":"Verify that an IP address has been assigned to the server's primary NIC.Log in to the server. (An ECS is used as an example here.)Run the ifconfig or ip address command t", + "product_code":"elb", + "title":"How Do I Check the Network Conditions of a Backend Server?", + "uri":"elb_faq_0039.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"91" + }, + { + "desc":"Check whether the security group of the server is correctly configured.On the server details page, view the security group.Check whether the security group allows access ", + "product_code":"elb", + "title":"How Do I Check the Network Configuration of a Backend Server?", + "uri":"elb_faq_0040.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"92" + }, + { + "desc":"Verify that the applications on the backend server are enabled.Log in to the backend server. (An ECS is used as an example here.)Run the following command to check the po", + "product_code":"elb", + "title":"How Do I Check the Status of a Backend Server?", + "uri":"elb_faq_0041.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"93" + }, + { + "desc":"If a backend server is associated with a load balancer for the first time, the backend server is considered healthy after one health check. After this, the server is dete", + "product_code":"elb", + "title":"When Is a Backend Server Considered Healthy?", + "uri":"elb_faq_0001.html", + "doc_type":"usermanual", + "p_code":"88", + "code":"94" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Health Check", + "uri":"elb_faq_0204.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"95" + }, + { + "desc":"If a client cannot access a backend server through a load balancer, the backend server is declared unhealthy. You can check the health check result of the backend server ", + "product_code":"elb", + "title":"How Do I Troubleshoot an Unhealthy Backend Server?", + "uri":"en-us_topic_0018127975.html", + "doc_type":"usermanual", + "p_code":"95", + "code":"96" + }, + { + "desc":"UDP is a connectionless protocol, and a UDP health check is implemented as follows:The health check node sends an ICMP request message to the backend server based on the ", + "product_code":"elb", + "title":"How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Health Checks?", + "uri":"elb_faq_0024.html", + "doc_type":"usermanual", + "p_code":"95", + "code":"97" + }, + { + "desc":"ELB is deployed in cluster mode, and all nodes for request forwarding in the cluster send requests to backend servers at the same time. If the health check interval is to", + "product_code":"elb", + "title":"Why Does ELB Frequently Send Requests to Backend Servers During Health Checks?", + "uri":"elb_faq_0114.html", + "doc_type":"usermanual", + "p_code":"95", + "code":"98" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Obtaining Source IP Addresses", + "uri":"elb_faq_0170.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"99" + }, + { + "desc":"When you use ELB to route requests to backend servers, IP addresses of the clients will be translated by the ELB system. This FAQ provides the operations for obtaining th", + "product_code":"elb", + "title":"How Can I Obtain the IP Address of a Client?", + "uri":"elb_faq_0090.html", + "doc_type":"usermanual", + "p_code":"99", + "code":"100" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"HTTP/HTTPS Listener", + "uri":"elb_faq_0180.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"101" + }, + { + "desc":"The following may cause the system to display a message indicating that a certificate is insecure:The domain name used by the certificate is different from the domain nam", + "product_code":"elb", + "title":"Why Is the Security Warning Still Displayed After a Certificate Is Configured?", + "uri":"elb_faq_0118.html", + "doc_type":"usermanual", + "p_code":"101", + "code":"102" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Sticky Session", + "uri":"elb_faq_0190.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"103" + }, + { + "desc":"Check whether sticky sessions are enabled for the backend server group. If sticky sessions are enabled, go to the next step.Check the health check result of the backend s", + "product_code":"elb", + "title":"How Do I Check If Sticky Sessions Fail to Take Effect?", + "uri":"elb_faq_0046.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"104" + }, + { + "desc":"Dedicated load balancers: Source IP address and Load balancer cookieShared load balancers: Source IP address, Load balancer cookie, and Application cookieClassic load bal", + "product_code":"elb", + "title":"What Types of Sticky Sessions Does ELB Support?", + "uri":"elb_faq_0085.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"105" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Appendix", + "uri":"en-us_elb_06_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"106" + }, + { + "desc":"ELB provides customized strategies for managing service access. Before customizing these strategies, ELB needs to obtain the client's IP address contained in the access r", + "product_code":"elb", + "title":"Configuring the TOA Plug-in", + "uri":"en-us_elb_06_0001.html", + "doc_type":"usermanual", + "p_code":"106", + "code":"107" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"elb", + "title":"Change History", + "uri":"en-us_elb_07_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"108" + } +] \ No newline at end of file diff --git a/elb/umn/PARAMETERS.txt b/elb/umn/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/elb/umn/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/elb/umn/elb-03-qy-0001.html b/elb/umn/elb-03-qy-0001.html new file mode 100644 index 000000000..804c54de1 --- /dev/null +++ b/elb/umn/elb-03-qy-0001.html @@ -0,0 +1,95 @@ + + +

      Migrating from Classic Load Balancers to Shared Load Balancers

      +

      Scenarios

      Classic load balancers are no longer provided. It is recommended that you use load balancers instead because they provide comprehensive Layer 7 load balancing and better forwarding performance.

      + +

      Prerequisites

      You have the Tenant Administrator permission.

      + +

      Impacts on Traffic Routing

      Traffic routing over persistent connections will be interrupted during migration and rollback. For the impact on traffic routing over short connections, see the following table.

      + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Impact on traffic routing over short connections

      Scenario

      +

      During Migration

      +

      Before Finishing Migration

      +

      Rollback

      +

      Migrating a private network load balancer

      +

      Not interrupted

      +

      On a client that is on the same subnet as the load balancer, run the arping -b Private IP address of the classic load balancer command to refresh ARP entries to ensure service continuity.

      +

      If ARP entries are not refreshed, traffic from this client will be interrupted. The interruption duration is the ARP aging period, which ranges from 30s to 300s, depending on parameter settings of the client.

      + NOTE:

      The private IP address of the classic load balancer is bound to the shared load balancer.

      + +

      If ARP entries are not refreshed, traffic from the client is interrupted. The interruption duration is the ARP aging period, which ranges from 30s to 300s, depending on parameter settings of the client.

      +

      To refresh ARP entries and shorten the interruption duration to a few seconds, run the arping -b Private IP address of the classic load balancer command on the client.

      +

      Migrating a public network load balancer with the EIP changed

      +

      Not interrupted

      +

      Before you click Finish Migration, ensure that the domain name has been mapped to the new EIP of the newly created shared load balancer.

      +

      If the new EIP has not been configured, traffic is still routed by the classic load balancer. After you click Finish Migration, traffic routing will be interrupted.

      +

      Before you click Roll Back, map the domain name to the EIP of the classic load balancer.

      +

      If the EIP is not configured, traffic is still routed by the shared load balancer. After you click Finish Migration, traffic routing will be interrupted.

      +

      Migrating a public network load balancer without changing the EIP

      +

      After the shared load balancer is created, traffic will be interrupted for about 5s, during which the EIP is released from the classic public network load balancer and bound to the shared load balancer.

      +

      Not interrupted

      +

      Not interrupted

      +
      + + +

      Migration Process

      The following are migration processes for three scenarios:

      + +
      • Migrating a private network load balancerFigure 1 Migration process
        +
      • Migrating a public network load balancer with the EIP changedFigure 2 Migration process
        +
      • Migrating a public network load balancer without changing the EIPFigure 3 Migration process
        +
      +

      Migrating a Classic Load Balancer

      1. Log in to the management console.
      2. In the upper left corner of the page, click and select the desired region and project.
      3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
      4. In the classic load balancer list, locate the load balancer you want to migrate and choose More > Migrate.
      5. Check whether the load balancer to be migrated is a private network load balancer.
        • If it is a private network load balancer, go to 6.
        • If it is not a private network load balancer, go to 7.
        +
      6. Run command arping -b Private IP address of the classic load balancer on the client that is on the same subnet as the load balancer to update the ARP entries. Then, go to 11.

        The private IP address of the classic load balancer is bound to the shared load balancer.

        +
      +
    • Determine whether you want to change the EIP.
      • If you want to change the EIP, go to 8.
      • If you do not want to change the EIP, go to 10.
      +
    • Modify the DNS configuration to map the domain name to the EIP bound to the shared load balancer.
    • Switch to the Cloud Eye console, view monitoring data of the classic load balancer and then go to 11.

      If both the number of concurrent connections and the number of new connections are 0, traffic is diverted to the shared load balancer.

      +
    • Send requests to the shared load balancer to test whether it can route requests to associated backend servers.
    • Locate the classic load balancer that has been migrated and choose More > Finish Migration.

      The classic load balancer will be automatically deleted.

      +
    • Switch to the load balancer list and view the newly created shared load balancer.
    • + +

      Rolling Back to a Classic Load Balancer

      If you decide to roll back, the newly created shared load balancer will be deleted, and the original classic load balancer will be restored.

      +
      1. Log in to the management console.
      2. In the upper left corner of the page, click and select the desired region and project.
      3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
      4. In the classic load balancer list, locate the load balancer you want to roll back and choose More > Roll Back.

        Alternatively, select the load balancer you want to roll back and click Roll Back above the load balancer list.

        +
      + +

      Batch Migration or Rollback

      1. Log in to the management console.
      2. In the upper left corner of the page, click and select the desired region and project.
      3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
      4. In the classic load balancer list, select the load balancers and click Migrate or Roll Back.
      5. Perform subsequent operations as needed.
        • If you choose Migrate, go to 6.
        • If you choose Roll Back, no further operations are required.
        +
      6. Check whether the load balancers to be migrated are private network load balancers.
        • If they are private network load balancers, go to 7.
        • If they are not private network load balancers, go to 8.
        +
      7. After the migration, run command arping -b Private IP address of each classic load balancer on the client that is on the same subnet as the load balancer to update the ARP entries. Then, go to 12.

        The private IP address of the classic load balancer will be bound to the shared load balancer.

        +
      +
    • Determine whether you want to change the EIP.
      • If you want to change the EIP, go to 9.
      • If you do not want to change the EIP, go to 11.
      +
    • Modify the DNS configuration to map the domain name to the EIP bound to each shared load balancer.
    • Switch to the Cloud Eye console, view monitoring data of each classic load balancer and then go to 12.

      If both the number of concurrent connections and the number of new connections are 0, traffic is diverted to the shared load balancers.

      +
    • Send requests to shared load balancers to test whether they can route requests to associated backend servers.
    • Select all classic load balancers that have been migrated and click Finish Migration.

      These classic load balancers will be automatically deleted.

      +
    • Switch to the load balancer list, view the newly created shared load balancers.
    • + +

      Causes of Migration Failure

      The following are possible causes why a classic load balancer cannot be migrated:

      + +
      • The quota of the shared load balancer, listener, backend server group, or certificate is insufficient.
      • The classic load balancer is not in the Running state.
      • The classic load balancer listener is not in the Running state.
      • The shared load balancer does not support the SSL protocol.
      +
      • During the migration, the listeners and backend servers of the classic load balancer are also migrated. Your applications and data will not be affected. To ensure successful migration, ensure that backend servers can be accessed from 100.125.0.0/16.
      • After the migration, the original classic load balancer will be deleted and cannot be restored, and its private IP address and EIP will be used by the newly created shared load balancer. If the classic load balancer does not have an EIP, you can bind one to the newly created shared load balancer.
      • During batch migration of public network load balancers, ensure that the number of EIPs and the number of load balancers are the same. After the migration, the system automatically binds one EIP to each shared load balancer in sequence.
      • Integration with the AS service becomes invalid after the migration. Configure AS if you want to scale the number of backend servers associated with each shared load balancer.
      • Access logs stored in the OBS bucket are lost because shared load balancers do not support access logging.
      +
      + + + +Parent topic: Load Balancer Migration + + + diff --git a/elb/umn/elb_faq_0000.html b/elb/umn/elb_faq_0000.html new file mode 100644 index 000000000..1e6d0246f --- /dev/null +++ b/elb/umn/elb_faq_0000.html @@ -0,0 +1,27 @@ + + +

      FAQs

      + + + + + diff --git a/elb/umn/elb_faq_0001.html b/elb/umn/elb_faq_0001.html new file mode 100644 index 000000000..90526edc9 --- /dev/null +++ b/elb/umn/elb_faq_0001.html @@ -0,0 +1,11 @@ + + +

      When Is a Backend Server Considered Healthy?

      +

      If a backend server is associated with a load balancer for the first time, the backend server is considered healthy after one health check. After this, the server is detected healthy after the maximum retries of health checks.

      + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_faq_0024.html b/elb/umn/elb_faq_0024.html new file mode 100644 index 000000000..cb72fd364 --- /dev/null +++ b/elb/umn/elb_faq_0024.html @@ -0,0 +1,43 @@ + + +

      How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Health Checks?

      +

      How UDP Health Checks Work

      UDP is a connectionless protocol, and a UDP health check is implemented as follows:

      + +
      1. The health check node sends an ICMP request message to the backend server based on the health check configuration.
        • If the health check node receives an ICMP reply message from the backend server, it considers the backend server healthy and continues the health check.
        • If the health check node does not receive an ICMP reply message from the backend server, it considers the backend server unhealthy.
        +
      2. After receiving the ICMP reply message, the health check node sends a UDP probe packet to the backend server.
        • If the health check node receives an ICMP Port Unreachable message from the backend server within the timeout duration, the backend server is considered unhealthy.
        • If the health check node does not receive an ICMP Port Unreachable message from the backend server within the timeout duration, the backend server is considered healthy.
        +
      +

      When you use UDP for health checks, retain default parameter settings.

      +

      Troubleshooting Procedure

      If the backend server is unhealthy, use either of the following methods to locate the fault:

      + +
      1. Check whether the timeout duration is too short.

        A possible cause is that the ICMP Echo Reply or ICMP Port Unreachable message returned by the backend server does not reach the health check node within the timeout duration. As a result, the health check result is inaccurate.

        +

        It is recommended that you change the timeout duration to a larger value.

        +

        UDP health checks are different from other health checks. If the health check timeout duration is too short, the health check result of the backend server changes between Healthy and Unhealthy frequently.

        +
      2. Check whether the backend server restricts the rate at which ICMP messages are generated.
      +

      For Linux servers, run the following commands to query the rate limit and rate mask:

      +
      sysctl -q net.ipv4.icmp_ratelimit
      +

      The default rate limit is 1000.

      +
      sysctl -q net.ipv4.icmp_ratemask
      +

      The default rate mask is 6168.

      +

      If the returned value of the first command is the default value or 0, run the following command to remove the rate limit of Port Unreachable messages:

      +
      sysctl -w net.ipv4.icmp_ratemask=6160
      +

      For more information, see the Linux Programmer's Manual. On the Linux CLI, run the following command to display the manual:

      +
      man 7 icmp
      +

      Alternatively, visit http://man7.org/linux/man-pages/man7/icmp.7.html.

      +

      Once the rate limit is lifted, the number of ICMP Port Unreachable messages on the backend server will not be limited.

      +
      +

      Precautions

      Note the following when you configure UDP health checks:

      + +
      • UDP health checks use ping packets to detect the health of the backend server. To ensure smooth transmission of these packets, ensure that ICMP is enabled on the backend server by performing the following:

        Log in to the server and run the following command as user root:

        +

        cat /proc/sys/net/ipv4/icmp_echo_ignore_all

        +
        • If the returned value is 1, ICMP is disabled.
        • If the returned value is 0, ICMP is enabled.
        +
      • The health check result may be different from the actual health of the backend server.

        If the backend server runs a Linux OS, the rate of ICMP packets is limited due to protection from ICMP floods of Linux when there is a large number of concurrent requests. In this case, if a service exception occurs, the load balancer will not receive error message port XX unreachable and will still determine that the health check is successful. As a result, there is an inconsistency between the health check result and the actual server health.

        +
      • UDP listeners cannot be added to a private network classic load balancer.

        Classic load balancers can no longer be created on the management console.

        +
      +
    + + + +Parent topic: Health Check + + + diff --git a/elb/umn/elb_faq_0038.html b/elb/umn/elb_faq_0038.html new file mode 100644 index 000000000..e39fe476a --- /dev/null +++ b/elb/umn/elb_faq_0038.html @@ -0,0 +1,13 @@ + + +

    How Does ELB Distribute Traffic?

    +

    ELB uses FullNAT to forward the incoming traffic. For load balancing at Layer 4, LVS forwards the incoming traffic to backend servers directly. For load balancing at Layer 7, LVS forwards the incoming traffic to Nginx, which then forwards the traffic to backend servers.

    +Figure 1 Load balancing at Layer 4
    +Figure 2 Load balancing at Layer 7
    + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_faq_0039.html b/elb/umn/elb_faq_0039.html new file mode 100644 index 000000000..f98300f6d --- /dev/null +++ b/elb/umn/elb_faq_0039.html @@ -0,0 +1,15 @@ + + +

    How Do I Check the Network Conditions of a Backend Server?

    +
    1. Verify that an IP address has been assigned to the server's primary NIC.
      1. Log in to the server. (An ECS is used as an example here.)
      2. Run the ifconfig or ip address command to view the IP address.

        For Windows ECSs, run ipconfig on the CLI to view their IP addresses.

        +
    + +
  • Ping the gateway of the subnet where the ECS resides to check basic network communication.
    1. On the VPC details page, locate the subnet and view the gateway address in the Gateway column. Generally, the gateway address ends with .1.
    2. Ping the gateway from the ECS. If the gateway cannot be pinged, check the networks at Layer 2 and Layer 3.
    +
  • + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_faq_0040.html b/elb/umn/elb_faq_0040.html new file mode 100644 index 000000000..7e5741a2d --- /dev/null +++ b/elb/umn/elb_faq_0040.html @@ -0,0 +1,13 @@ + + +

    How Do I Check the Network Configuration of a Backend Server?

    +
    1. Check whether the security group of the server is correctly configured.
      1. On the server details page, view the security group.
      2. Check whether the security group allows access from IP addresses in 100.125.0.0/16. If access is not allowed, add inbound rules for 100.125.0.0/16.
      +
    2. Ensure that the network ACLs of the subnet where the server resides does not intercept the traffic.

      In the left navigation pane on the VPC console, choose Access Control> Network ACLs and check whether the subnet allows traffic.

      +
    + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_faq_0041.html b/elb/umn/elb_faq_0041.html new file mode 100644 index 000000000..5c135ed3e --- /dev/null +++ b/elb/umn/elb_faq_0041.html @@ -0,0 +1,18 @@ + + +

    How Do I Check the Status of a Backend Server?

    +
    1. Verify that the applications on the backend server are enabled.
      1. Log in to the backend server. (An ECS is used as an example here.)
      2. Run the following command to check the port status:

        netstat -ntpl

        + For Windows ECSs, run the netstat -ano command on the CLI to view the port status or server software status.Figure 1 Port status
        + +
    + +
  • Check the network communication of the ECS.

    For example, if the ECS uses port 80, run the curl command to check whether the communication is normal.

    +

    +
  • + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_faq_0046.html b/elb/umn/elb_faq_0046.html new file mode 100644 index 000000000..963e4cd94 --- /dev/null +++ b/elb/umn/elb_faq_0046.html @@ -0,0 +1,11 @@ + + +

    How Do I Check If Sticky Sessions Fail to Take Effect?

    +
    1. Check whether sticky sessions are enabled for the backend server group. If sticky sessions are enabled, go to the next step.
    2. Check the health check result of the backend server. If the health check result is Unhealthy, traffic is routed to other backend servers and sticky sessions become invalid.
    3. If you select the source IP hash algorithm, check whether the IP address of the request changes before the load balancer receives the request.
    4. If an HTTP or HTTPS listener is configured with sticky sessions enabled, check whether the request carries a cookie. If yes, check whether the cookie value changes (because load balancing at Layer 7 uses cookies to maintain sessions).
    + + + +Parent topic: Sticky Session + + + diff --git a/elb/umn/elb_faq_0049.html b/elb/umn/elb_faq_0049.html new file mode 100644 index 000000000..30840d80d --- /dev/null +++ b/elb/umn/elb_faq_0049.html @@ -0,0 +1,11 @@ + + +

    How Do I Check Traffic Inconsistency?

    +

    Check for failed requests on the clients, especially when 4xx status codes are returned. A possible cause is that the requests are rejected by ELB and are not routed to backend servers because ELB considers these requests abnormal.

    + + + +Parent topic: Service Performance and Load + + + diff --git a/elb/umn/elb_faq_0050.html b/elb/umn/elb_faq_0050.html new file mode 100644 index 000000000..371649297 --- /dev/null +++ b/elb/umn/elb_faq_0050.html @@ -0,0 +1,13 @@ + + +

    How Do I Check If Traffic Is Evenly Distributed?

    +
    1. Check whether sticky sessions are enabled. If sticky sessions are enabled and there are few clients, traffic may be unevenly distributed.
    2. Check the health of backend servers, especially those whose health changes over time. If the health check result is Unhealthy or switches between Healthy and Unhealthy, traffic is unbalanced.
    3. Check whether the Source IP hash algorithm is used. If the algorithm is used, requests sent from the same IP address are routed to the same backend server, resulting in unbalanced traffic.
    4. Check whether applications on the backend server use keepalive to maintain TCP persistent connections. If keepalive is used, traffic may be unbalanced because the number of requests on persistent connections is different.
    5. Check whether different weights are assigned to backend servers. The traffic varies according to the weights.
    +

    Generally, in addition to the load balancing algorithm, factors that affect load balancing include connection type, session stickiness, and server weights.

    +
    + + + +Parent topic: Service Performance and Load + + + diff --git a/elb/umn/elb_faq_0052.html b/elb/umn/elb_faq_0052.html new file mode 100644 index 000000000..b46ce8d9e --- /dev/null +++ b/elb/umn/elb_faq_0052.html @@ -0,0 +1,11 @@ + + +

    What Do I Do If a Load Balancer Fails the Stress Test?

    +
    1. Check the load of backend servers. If their CPU usage reaches 100%, applications may have performance bottlenecks.
    2. Check the incoming traffic. If the incoming traffic exceeds the maximum bandwidth set for the EIP, a large number of packets will be lost and requests will not be responded to, thereby affecting the load balancer's performance.
    3. Check the number of short connections in the time_wait state on the clients. A possible cause is that there are insufficient client ports.
    4. The listening queue backlog of the backend servers is full. As a result, the backend server does not respond to SYN ACK packets, and the client times out. You can increase the upper limit of the backlog by adjusting the net.core.somaxconn parameter.
    + + + +Parent topic: Service Performance and Load + + + diff --git a/elb/umn/elb_faq_0060.html b/elb/umn/elb_faq_0060.html new file mode 100644 index 000000000..139f5f732 --- /dev/null +++ b/elb/umn/elb_faq_0060.html @@ -0,0 +1,12 @@ + + +

    Can ELB Be Used Separately?

    +

    ELB cannot be used alone.

    +

    ELB is a service that distributes incoming traffic across servers and must be used with the ECS or BMS service.

    + + + +Parent topic: ELB Functionality + + + diff --git a/elb/umn/elb_faq_0062.html b/elb/umn/elb_faq_0062.html new file mode 100644 index 000000000..5abfb57bc --- /dev/null +++ b/elb/umn/elb_faq_0062.html @@ -0,0 +1,11 @@ + + +

    Can I Adjust the Number of Backend Servers When a Load Balancer is Running?

    +

    You can adjust the number of backend servers associated with a load balancer at any time. You can also change the type of backend servers according to your business needs. To ensure service stability, ensure that health checks are normal and that at least one healthy backend server is associated with the load balancer.

    + + + +Parent topic: ELB Functionality + + + diff --git a/elb/umn/elb_faq_0064.html b/elb/umn/elb_faq_0064.html new file mode 100644 index 000000000..e401d996d --- /dev/null +++ b/elb/umn/elb_faq_0064.html @@ -0,0 +1,12 @@ + + +

    Can Backend Servers Run Different OSs?

    +

    Yes.

    +

    ELB does not restrict OSs of backend servers as long as applications on these servers are the same and the data is consistent. However, it is recommended that you install the same OS on backend servers to simplify management.

    + + + +Parent topic: ELB Functionality + + + diff --git a/elb/umn/elb_faq_0085.html b/elb/umn/elb_faq_0085.html new file mode 100644 index 000000000..8ce08bda2 --- /dev/null +++ b/elb/umn/elb_faq_0085.html @@ -0,0 +1,15 @@ + + +

    What Types of Sticky Sessions Does ELB Support?

    +

    Dedicated load balancers: Source IP address and Load balancer cookie

    +

    Shared load balancers: Source IP address, Load balancer cookie, and Application cookie

    +

    Classic load balancers: Source IP address and Load balancer cookie

    +

    Classic load balancers can no longer be created on the management console.

    +
    + + + +Parent topic: Sticky Session + + + diff --git a/elb/umn/elb_faq_0090.html b/elb/umn/elb_faq_0090.html new file mode 100644 index 000000000..f458860b7 --- /dev/null +++ b/elb/umn/elb_faq_0090.html @@ -0,0 +1,81 @@ + + +

    How Can I Obtain the IP Address of a Client?

    +

    When you use ELB to route requests to backend servers, IP addresses of the clients will be translated by the ELB system. This FAQ provides the operations for obtaining the IP addresses of the clients.

    +

    Constraints and Limitations

    • If Network Address Translation (NAT) or Web Application Firewall (WAF) is used, you cannot obtain the IP addresses of the clients.
    • If the client is a container, you can obtain only the IP address of the node where the container is located, but cannot obtain the IP address of the container.
    • If the Obtain Client IP Address option is enabled for TCP or UDP listeners, a cloud server cannot be used as a backend server and a client at the same time. In this case, you can configure the TOA plug-in to obtain the source IP addresses.
    • By default, the Obtain Client IP Address option is enabled for TCP and UDP listeners of dedicated load balancers. You do not need to manually enable it.
    + +

    Layer 7 Load Balancing

    Configure the application server and obtain the IP address of a client from the HTTP header.

    + +

    The real IP address is placed in the X-Forwarded-For header field by the load balancer in the following format:

    +
    X-Forwarded-For: IP address of the client,Proxy server 1-IP address,Proxy server 2-IP address,...
    +

    If you use this method, the first IP address obtained is the IP address of the client.

    +

    Apache Server

    +
    1. Install Apache 2.4.

      For example, if CentOS 7.5 is used as the OS, run the following command to install the software:

      +
      yum install httpd
      +
    2. Add the following content to the end of Apache configuration file /etc/httpd/conf/httpd.conf:
      LoadModule remoteip_module modules/mod_remoteip.so
      +RemoteIPHeader X-Forwarded-For
      +RemoteIPInternalProxy 100.125.0.0/16
      +Figure 1 Content to be added
      +

      Add the IP address range of the proxy server after RemoteIPInternalProxy.

      +
      • Shared load balancers: 100.125.0.0/16 and the IP address range used by the AAD service. 100.125.0.0/16 is used by load balancers to communicate with backend servers, and there are no security risks. Use commas (,) to separate multiple entries.
      • Dedicated load balancers: the CIDR block of the subnet where the load balancer resides
      +
    +
  • Change the log output format in the Apache configuration file to the following (%a indicates the source IP address):
    LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    +
  • Restart Apache.
    systemctl restart httpd
    +
  • Obtain the actual IP address of the client from the httpd access logs.
  • +

    Nginx Server

    +

    For example, if CentOS 7.5 is used as the OS, run the following command to install the software:

    +
    1. Run the following commands to install http_realip_module:
      yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
      +wget http://nginx.org/download/nginx-1.17.0.tar.gz
      +tar zxvf nginx-1.17.0.tar.gz
      +cd nginx-1.17.0
      +./configure --prefix=/path/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
      +make
      +make install
      +
    2. Run the following command to open the nginx.conf file:
      vi /path/server/nginx/conf/nginx.conf
      +
    3. Add the following content under http or server:
      ;100.125.0.0/16set_real_ip_from 
      +real_ip_header X-Forwarded-For;
      +Figure 2 Content to be added
      +

      Add the IP address range of the proxy server after set_real_ip_from.

      +
      • Shared load balancers: 100.125.0.0/16 and the IP address range used by the AAD service. (100.125.0.0/16 is used by load balancers to communicate with backend servers, and there are no security risks. Use commas to separate multiple entries.
      +
      • Dedicated load balancers: the CIDR block of the subnet where the load balancer resides
      +
    +
  • Start Nginx.
    /path/server/nginx/sbin/nginx
    +
  • Obtain the actual IP address of the client from the Nginx access logs.
    cat /path/server/nginx/logs/access.log
    +
  • +

    Tomcat Servers

    +

    In the following operations, the Tomcat installation path is /usr/tomcat/tomcat8/.

    +
    1. Log in to a server on which Tomcat is installed.
    2. Check whether Tomcat is running properly.
      ps -ef|grep tomcat
      +netstat -anpt|grep java
      +Figure 3 Tomcat running properly
      +
    3. Add the following configuration items to the server.xml file:
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
      +prefix="localhost_access_log." suffix=".txt"
      +pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false" />
      +Figure 4 Example configuration
      +
    4. Restart the Tomcat service.
      cd /usr/tomcat/tomcat8/bin && sh startup.sh
      +

      In this command, /usr/tomcat/tomcat8/ is the Tomcat installation path. Change it based on site requirements.

      +Figure 5 Restarting the Tomcat service
      +
    5. View the latest logs.

      As highlighted in the following figure, IP addresses that are not in the IP address range starting with 100.125 are the source IP addresses.

      +
      cat localhost_access_log..2020-09-10.txt
      +

      In this command, localhost_access_log..2020-09-10.txt indicates the log path of the current day. Change it based on site requirements.

      +Figure 6 Querying the source IP address
      +
    +

    Windows Server with IIS Deployed

    +

    The following uses Windows Server 2012 with IIS7 as an example to describe how to obtain the source IP address.

    +
    1. Download and install IIS.
    2. Download the F5XForwardedFor.dll plug-in and copy the plug-ins in the x86 and x64 directories to a directory for which IIS has the access permission, for example, C:\F5XForwardedFor2008.
    3. Open the Server Manager and choose Modules > Configure Native Modules.Figure 7 Selecting modules
      +Figure 8 Configure Native Modules
      +
    4. Click Register to register the x86 and x64 plug-ins.Figure 9 Registering plug-ins
      +
    5. In the Modules dialog box, verify that the registered plug-ins are displayed in the list.Figure 10 Confirming the registration
      +
    6. Select ISAPI Filters on the Server Manager homepage and authorize two plug-ins to run ISAPI and CGI extensions.Figure 11 Adding authorization
      +
    7. Select ISAPI and CGI Restriction to set the execution permission for the two plug-ins.Figure 12 Allowing the plug-ins to execute
      +
    8. Click Restart on the homepage to restart IIS. The configuration will take effect after the restart.Figure 13 Restarting IIS
      +
    +

    Layer 4 Load Balancing

    TCP listeners require the TOA plug-in to obtain real IP addresses. For details, see Configuring the TOA Plug-in.

    + + + + + +Parent topic: Obtaining Source IP Addresses + + + diff --git a/elb/umn/elb_faq_0111.html b/elb/umn/elb_faq_0111.html new file mode 100644 index 000000000..da9e01e6f --- /dev/null +++ b/elb/umn/elb_faq_0111.html @@ -0,0 +1,11 @@ + + +

    How Can I Use WebSocket?

    +

    For HTTP listeners, unencrypted WebSocket (ws://) is supported by default. For HTTPS listeners, encrypted WebSocket (wss://) is supported by default.

    + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_faq_0112.html b/elb/umn/elb_faq_0112.html new file mode 100644 index 000000000..d0c3af27f --- /dev/null +++ b/elb/umn/elb_faq_0112.html @@ -0,0 +1,12 @@ + + +

    Why Is the Interval at Which Backend Servers Receive Health Check Packets Different from the Configured Health Check Interval?

    +

    Each LVS node and Nginx node in the ELB system detect backend servers at the health check interval that you have specified for the backend server group.

    +

    During this period, backend servers receive multiple detection packets from LVS and Nginx nodes. This makes it seem that backend servers receive these packets at intervals shorter than the specified health check interval.

    + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_faq_0114.html b/elb/umn/elb_faq_0114.html new file mode 100644 index 000000000..6ea7c07c7 --- /dev/null +++ b/elb/umn/elb_faq_0114.html @@ -0,0 +1,11 @@ + + +

    Why Does ELB Frequently Send Requests to Backend Servers During Health Checks?

    +

    ELB is deployed in cluster mode, and all nodes for request forwarding in the cluster send requests to backend servers at the same time. If the health check interval is too short, health checks are performed once every few seconds, and a large number of packets are sent to backend servers. To control the frequency of access to backend servers, change the health check interval by referring to Configuring a Health Check.

    + + + +Parent topic: Health Check + + + diff --git a/elb/umn/elb_faq_0118.html b/elb/umn/elb_faq_0118.html new file mode 100644 index 000000000..1b0c81e5e --- /dev/null +++ b/elb/umn/elb_faq_0118.html @@ -0,0 +1,13 @@ + + +

    Why Is the Security Warning Still Displayed After a Certificate Is Configured?

    +

    The following may cause the system to display a message indicating that a certificate is insecure:

    +
    • The domain name used by the certificate is different from the domain name accessed by users. (If this is the case, check the domain name used the certificate to ensure that the domain names are the same or create a self-signed certificate.)
    • SNI is configured, but the specified domain name is different from the one used by the certificate.
    • The domain name level is inconsistent with the certificate level.
    +

    If the problem persists, run the curl Domain name command to locate the fault based on the error information returned by the system.

    + + + +Parent topic: HTTP/HTTPS Listener + + + diff --git a/elb/umn/elb_faq_0127.html b/elb/umn/elb_faq_0127.html new file mode 100644 index 000000000..db582ded4 --- /dev/null +++ b/elb/umn/elb_faq_0127.html @@ -0,0 +1,20 @@ + + +

    Service Performance and Load

    +

    + + + + + +Parent topic: ELB Use + + + diff --git a/elb/umn/elb_faq_0170.html b/elb/umn/elb_faq_0170.html new file mode 100644 index 000000000..84c27080b --- /dev/null +++ b/elb/umn/elb_faq_0170.html @@ -0,0 +1,19 @@ + + + +

    Obtaining Source IP Addresses

    + +

    + + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0180.html b/elb/umn/elb_faq_0180.html new file mode 100644 index 000000000..2e482d2b4 --- /dev/null +++ b/elb/umn/elb_faq_0180.html @@ -0,0 +1,16 @@ + + +

    HTTP/HTTPS Listener

    +

    + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0190.html b/elb/umn/elb_faq_0190.html new file mode 100644 index 000000000..8caa5715b --- /dev/null +++ b/elb/umn/elb_faq_0190.html @@ -0,0 +1,21 @@ + + + +

    Sticky Session

    + +

    + + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0200.html b/elb/umn/elb_faq_0200.html new file mode 100644 index 000000000..102989a28 --- /dev/null +++ b/elb/umn/elb_faq_0200.html @@ -0,0 +1,11 @@ + + +

    Popular Questions

    + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0201.html b/elb/umn/elb_faq_0201.html new file mode 100644 index 000000000..2bbf2c283 --- /dev/null +++ b/elb/umn/elb_faq_0201.html @@ -0,0 +1,15 @@ + + +

    Load Balancer

    + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0202.html b/elb/umn/elb_faq_0202.html new file mode 100644 index 000000000..cd3bec5c6 --- /dev/null +++ b/elb/umn/elb_faq_0202.html @@ -0,0 +1,17 @@ + + +

    Listener

    + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0203.html b/elb/umn/elb_faq_0203.html new file mode 100644 index 000000000..21955ddec --- /dev/null +++ b/elb/umn/elb_faq_0203.html @@ -0,0 +1,25 @@ + + +

    Backend Server

    + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0204.html b/elb/umn/elb_faq_0204.html new file mode 100644 index 000000000..898c3b86d --- /dev/null +++ b/elb/umn/elb_faq_0204.html @@ -0,0 +1,19 @@ + + +

    Health Check

    + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_0211.html b/elb/umn/elb_faq_0211.html new file mode 100644 index 000000000..14877f94c --- /dev/null +++ b/elb/umn/elb_faq_0211.html @@ -0,0 +1,23 @@ + + +

    ELB Functionality

    + + + + + +Parent topic: ELB Use + + + diff --git a/elb/umn/elb_faq_0212.html b/elb/umn/elb_faq_0212.html new file mode 100644 index 000000000..3c061fd0a --- /dev/null +++ b/elb/umn/elb_faq_0212.html @@ -0,0 +1,18 @@ + + +

    ELB Use

    +

    + + + + + +Parent topic: FAQs + + + diff --git a/elb/umn/elb_faq_099.html b/elb/umn/elb_faq_099.html new file mode 100644 index 000000000..9adbbc85f --- /dev/null +++ b/elb/umn/elb_faq_099.html @@ -0,0 +1,12 @@ + + +

    Can Backend Servers Access the Internet After They Are Associated with a Load Balancer?

    +

    Yes. Backend servers can access the Internet whether or not they are associated with a load balancer.

    +

    + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_lb_000006.html b/elb/umn/elb_lb_000006.html new file mode 100644 index 000000000..c7a9f53ae --- /dev/null +++ b/elb/umn/elb_lb_000006.html @@ -0,0 +1,166 @@ + + +

    Creating a Dedicated Load Balancer

    +

    Scenarios

    You have prepared everything required for creating a dedicated load balancer. For details, see Preparations for Creating a Load Balancer.

    +

    Dedicated load balancers can be created only in the eu-nl region. By default, load balancers created in this region are dedicated load balancers.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Click Create Load Balancer and configure the parameters based on Table 1. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Type

      +

      Specifies the type of the load balancer.

      +

      Dedicated

      +

      Region

      +

      Specifies the region. Resources in different regions cannot communicate with each other over internal networks. For lower network latency and faster access to resources, select the nearest region.

      +

      eu-nl

      +

      AZ

      +

      Specifies the AZs of the load balancer. You can deploy the load balancer in multiple AZs to ensure service continuity and improve application reliability. When an AZ becomes faulty or unavailable, requests are quickly routed to backend servers in other AZs.

      +

      If backend servers reside in two AZs, for example, AZ 1 and AZ 2, but you plan to create the load balancer only in AZ 1, Xen ECSs cannot be used as clients.

      + NOTE:

      If you change the AZs of an existing load balancer, the load balancer may fail to route requests for several seconds. It is recommended that you plan the AZs in advance, or change the AZs during off-peak hours when necessary.

      + +

      N/A

      +

      Network Type

      +

      Specifies the type of the network where the load balancer works. You can select one or more network types.

      +
      • Public IPv4 network: The load balancer routes requests from the clients to backend servers over the Internet.
      • Private IPv4 network: The load balancer routes requests from the clients to backend servers in a VPC.
      + NOTE:

      If you do not select any of the options, the load balancer cannot communicate with the clients after it is created. When you are using ELB or testing network connectivity, ensure that the load balancer has a public or private IP address bound.

      + +

      Private IPv4 network

      +

      VPC

      +

      Specifies the VPC where the load balancer works. You need to configure this parameter regardless of the selected network type.

      +

      Select an existing VPC or create one.

      +

      For more information about VPC, see the Virtual Private Cloud User Guide.

      +

      vpc-4536

      +

      Subnet

      +

      Specifies the subnet where the load balancer will reside.

      +

      You need to configure this parameter regardless of the selected network type.

      +

      subnet-4536

      +

      Public IPv4 network configuration

      +

      EIP

      +

      If you select Public IPv4 network for Network Type, you need to bind an EIP to the load balancer. Two options are available:

      +
      • New EIP: The system will assign a new EIP to the load balancer.
      • Use existing: Select an existing EIP for the load balancer. NOTE:
        • By default, load balancers created in the eu-nl region are dedicated load balancers. You can unbind an EIP from a dedicated load balancer only on the ELB console if you no longer need the EIP.
        • If you bind a new EIP to the load balancer and specify a shared bandwidth, this EIP will be added to the shared bandwidth.
        • If you set EIP to New EIP when you create a dedicated load balancer in the eu-de region, the system will automatically assign and bind a dedicated EIP to the load balancer for exclusive use. This type of EIPs can be assigned only when you create dedicated load balancers and can only be bound to dedicated load balancers. If you set EIP to Use existing, you can select one from the dedicated EIPs that were assigned when you created dedicated load balancers and have been unbound from the dedicated load balancers.
        • To unbind an EIP from a load balancer, locate the load balancer and choose More > Unbind EIP in the Operation column.
        + +
      +

      N/A

      +

      EIP Type

      +

      Specifies the link type (BGP) when a new EIP is used.

      +

      Dynamic BGP

      +

      Private IPv4 network configuration

      +

      IPv4 Address

      +

      Specifies how you want the IPv4 address to be assigned.

      +
      • Automatically-assigned IP address: The system automatically assigns an IPv4 address to the load balancer.
      • Manually-specified IP address: Manually specify an IPv4 address to the load balancer.
      +

      Automatically-assigned IP address

      +

      Specification

      +
      • Select either Application load balancing (HTTP/HTTPS) or Network load balancing (TCP/UDP) or both, and then select the desired specification. You can select only one specification for Application load balancing (HTTP/HTTPS) and Network load balancing (TCP/UDP), respectively.
      • For application load balancing, the number of IP addresses varies depending on the specification. You can view the number of IP addresses required by the load balancer in the infotip after the selected subnet.
      • The performance of load balancers varies depending on the selected specifications. You can evaluate the actual traffic and select appropriate specifications based on the key metrics.
      • Dedicated load balancers have the following six specifications:
        • Small I
        • Small II
        • Medium I
        • Medium II
        • Large I
        • Large II
        +
      +

      Medium II

      +

      Name

      +

      Specifies the load balancer name.

      +

      elb93wd

      +

      Description

      +

      Provides supplementary information about the load balancer.

      +

      N/A

      +

      Tag

      +

      Identifies load balancers so that they can be easily found. A tag consists of a tag key and a tag value. The tag key marks a tag, and the tag value specifies the tag content. For details about the naming specifications, see Table 2.

      +
      • Key: elb_key1
      • Value: elb-01
      +
      + + + + + + + + + + + + + + + + +
      Table 2 Tag naming rules

      Item

      +

      Requirement

      +

      Example Value

      +

      Tag key

      +
      • Cannot be left blank.
      • Must be unique for the same load balancer.
      • Can contain a maximum of 36 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb_key1

      +

      Tag value

      +
      • Can contain a maximum of 43 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb-01

      +
      + +
    5. Click Create Now.
    6. Confirm the configuration and submit your request.
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_pro_0000.html b/elb/umn/elb_pro_0000.html new file mode 100644 index 000000000..ada8e3c45 --- /dev/null +++ b/elb/umn/elb_pro_0000.html @@ -0,0 +1,31 @@ + + +

    Service Overview

    + + + + + diff --git a/elb/umn/elb_pro_0001.html b/elb/umn/elb_pro_0001.html new file mode 100644 index 000000000..ca75b0a62 --- /dev/null +++ b/elb/umn/elb_pro_0001.html @@ -0,0 +1,80 @@ + + +

    Basic Concepts

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Some concepts about ELB

    Term

    +

    Definition

    +

    Load balancer

    +

    A load balancer distributes incoming traffic across backend servers.

    +

    Listener

    +

    A listener listens on requests from clients and routes the requests to backend servers based on the settings that you configure when you add the listener.

    +

    Backend server

    +

    A backend server is a cloud server added to a backend server group associated with a load balancer. When you add a listener to a load balancer, you can create or select a backend server group to receive requests from the load balancer by using the port and protocol you specify for the backend server group and the load balancing algorithm you select.

    +

    Backend server group

    +

    A backend server group is a collection of cloud servers that have same features. When you add a listener, you select a load balancing algorithm and create or select a backend server group. Incoming traffic is routed to the corresponding backend server group based on the listener's configuration.

    +

    Health check

    +

    ELB periodically sends requests to backend servers to check whether they can process requests. If a backend server is detected as unhealthy, the load balancer stops routing requests to it. After the backend server recovers, the load balancer will resume routing requests to it.

    +

    Redirect

    +

    HTTPS is an extension of HTTP. HTTPS encrypts data between a web server and a browser.

    +

    Sticky session

    +

    Sticky sessions ensure that requests from a client always get routed to the same backend server before a session elapses.

    +

    WebSocket

    +

    WebSocket is a new HTML5 protocol that provides full-duplex communication between the browser and the server. WebSocket saves server resources and bandwidth, and enables real-time communication. Both WebSocket and HTTP depend on TCP to transmit data. A handshake connection is required between the browser and server, so that they can communicate with each other only after the connection is established. However, as a bidirectional communication protocol, WebSocket is different from HTTP. After the handshake succeeds, both the server and browser (or client agent) can actively send data to or receive data from each other.

    +

    SNI

    +

    SNI is an extension to TLS and enables a server to present multiple certificates on the same IP address and TCP port number. This allows multiple secure (HTTPS) websites (or any other service over TLS) to be served by the same IP address without requiring all websites to use the same certificate. SNI allows the client to submit the domain name information while sending an SSL handshake request. Once the load balancer receives the request, it queries the right certificate based on the domain name and returns the corresponding certificate to the client. If no certificate is found, the load balancer will return a default certificate.

    +

    Persistent connection

    +

    A persistent connection allows multiple data packets to be sent continuously over a TCP connection. If no data packet is sent during the connection, the client and server send link detection packets to each other to maintain the connection.

    +

    Short connection

    +

    A short connection is a connection established when data is exchanged between the client and server and immediately closed after the data is sent.

    +

    Concurrent connection

    +

    Concurrent connections are total number of TCP connections initiated by clients and routed to backend servers by a load balancer per second.

    +
    + + + + +Parent topic: Product Concepts + + + diff --git a/elb/umn/elb_pro_0002.html b/elb/umn/elb_pro_0002.html new file mode 100644 index 000000000..f15f1f6d1 --- /dev/null +++ b/elb/umn/elb_pro_0002.html @@ -0,0 +1,22 @@ + + +

    Region and AZ

    +

    Concept

    A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.

    +
    • A region is a physical data center, which is completely isolated to improve fault tolerance and stability. The region that is selected during resource creation cannot be changed after the resource is created.
    • An AZ is a physical location where resources use independent power supplies and networks. A region contains one or more AZs that are physically isolated but interconnected through internal networks. Because AZs are isolated from each other, any fault that occurs in one AZ will not affect others.
    +

    Figure 1 shows the relationship between regions and AZs.

    +Figure 1 Regions and AZs
    + +

    Selecting a Region

    Select a region closest to your target users for lower network latency and quick access.

    + +

    Selecting an AZ

    When deploying resources, consider your applications' requirements on disaster recovery (DR) and network latency.

    +
    • For high DR capability, deploy resources in different AZs within the same region.
    • For lower network latency, deploy resources in the same AZ.
    + +

    Regions and Endpoints

    Before you use an API to call resources, specify its region and endpoint. For more details, see Regions and Endpoints.

    + + + + +Parent topic: Product Concepts + + + diff --git a/elb/umn/elb_pro_0003.html b/elb/umn/elb_pro_0003.html new file mode 100644 index 000000000..ec346aa15 --- /dev/null +++ b/elb/umn/elb_pro_0003.html @@ -0,0 +1,25 @@ + + +

    How ELB Works

    +

    To balance the load of your applications, create a load balancer to receive requests from clients and route the requests to backend servers in one or more AZs. Add at least a listener to the load balancer and associate at least a backend server with it. The load balancing algorithm you select when you add the listener determines how requests are distributed.

    +

    Load Balancing Algorithms

    Shared load balancers and dedicated load balancers support the following load balancing algorithms:

    +
    • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests. This algorithm is often used for short connections, such as HTTP connections.

      The following figure shows an example of how requests are distributed using the weighted round robin algorithm. Two backend servers are in the same AZ and have the same weight, and each server receives the same proportion of requests.

      +Figure 1 Traffic distribution using the weighted round robin algorithm
      +
    • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio. In addition to the number of connections, each server is assigned a weight based on its capacity. Requests are routed to the server with the lowest connections-to-weight ratio. This algorithm is often used for persistent connections, such as connections to a database.

      The following figure shows an example of how requests are distributed using the weighted least connections algorithm. Two backend servers are in the same AZ and have the same weight, 100 connections have been established with backend server 01, and 50 connections have been connected with backend server 02. New requests are preferentially routed to backend server 02.

      +Figure 2 Traffic distribution using the weighted least connections algorithm
      +
    • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously. This algorithm works well for TCP connections of load balancers that do not use cookies.

      The following figure shows an example of how requests are distributed using the source IP hash algorithm. Two backend servers are in the same AZ and have the same weight. If backend server 01 has processed a request from IP address A, the load balancer will route new requests from IP address A to backend server 01.

      +Figure 3 Traffic distribution using the source IP hash algorithm
      +
    + +Classic load balancers support the following load balancing algorithms:
    • Round robin: Requests are distributed sequentially, evenly across all servers. This algorithm is often used for short connections, such as HTTP connections.
    • Least connections: Requests are preferentially routed to backend servers with the minimum number of active connections. This algorithm is often used for persistent connections, such as connections to a database.
    • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously. This algorithm works well for TCP connections of load balancers that do not use cookies.
    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    +
    + + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/elb_pro_0004.html b/elb/umn/elb_pro_0004.html new file mode 100644 index 000000000..06a40aea0 --- /dev/null +++ b/elb/umn/elb_pro_0004.html @@ -0,0 +1,280 @@ + + +

    Differences Between Dedicated and Shared Load Balancers

    +

    Each type of load balancer has their advantages.

    +
    • Dedicated load balancers have exclusive use of underlying resources, so that the performance of a dedicated load balancer is not affected by other load balancers. In addition, there are a wide range of specifications available for selection.
    • Shared load balancers share underlying resources so that the performance of a load balancer is affected by other load balancers. Shared load balancers were previously named enhanced load balancers.

      Currently, dedicated load balancers are supported only in the eu-nl region.

      +
    +
+

Advantages of Dedicated Load Balancers

  • Robust performance

    Each dedicated load balancer has exclusive use of isolated underlying resources and can provide guaranteed performance. A single dedicated load balancer deployed in one AZ can establish up to 20 million concurrent connections, and a load balancer deployed across two AZs can establish up to 40 million concurrent connections, meeting your requirements for handling a massive number of requests.

    +
  • High availability

    Dedicated load balancers provide a comprehensive health check mechanism to ensure that incoming traffic is routed to only healthy backend servers, improving the availability of your applications.

    +

    Dedicated load balancers on both public and private networks can route traffic across AZs and support automatic DR and service isolation between users.

    +
  • Ultra security

    Dedicated load balancers also allow you to select security policies that fit your security requirements.

    +
  • Multiple protocols

    Dedicated load balancers support the following protocols, including TCP, UDP, HTTP, and HTTPS, so that they can route requests from different types of applications.

    +
  • Hybrid load balancing

    Dedicated load balancers can route requests to both servers on the cloud and on premises, allowing you to leverage the public cloud to handle burst traffic.

    +
+ +

Feature Comparisons

Dedicated load balancers provide more powerful forwarding performance, while shared load balancers are less expensive. You can select the appropriate load balancer based on your application needs. The following tables compare the features supported by the two types of load balancers. (√ indicates that an item is supported, and ╳ indicates that an item is not supported.)

+ + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Supported protocols

Protocol

+

Description

+

Dedicated Load Balancers

+

Shared Load Balancers

+

TCP/UDP (Layer 4)

+

After receiving TCP or UDP requests from the clients, the load balancer directly routes the requests to backend servers. Load balancing at Layer 4 features high routing efficiency.

+

+

+

HTTP/HTTPS (Layer 7)

+

After receiving a request, the listener needs to identify the request and forward data based on the fields in the HTTP/HTTPS packet header. Though the routing efficiency is lower than that at Layer 4, load balancing at Layer 7 provides some advanced features such as encrypted transmission and cookie-based sticky sessions.

+

+

+

WebSocket

+

WebSocket is a new HTML5 protocol that provides full-duplex communication between the browser and the server. WebSocket saves server resources and bandwidth, and enables real-time communication.

+

+

+
+ + + + + + + + + + + + + + + + + + + +
Table 2 Supported Backend types

Backend Type

+

Description

+

Dedicated Load Balancers

+

Shared Load Balancers

+

ECS

+

You can use load balancers to distribute incoming traffic across ECSs.

+

+

+

BMS

+

You can use load balancers to distribute incoming traffic across BMSs.

+

+

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Advanced features

Feature

+

Description

+

Dedicated Load Balancers

+

Shared Load Balancers

+

Multiple specifications

+

Load balancers allow you to select appropriate specifications based on your requirements. For details, see Specifications of Dedicated Load Balancers.

+

+

x

+

HTTPS support

+

Load balancers can receive HTTPS requests from clients and route them to backend servers.

+

+

x

+

Mutual authentication

+

In this case, you need to deploy both the server certificate and client certificate.

+

Mutual authentication is supported only by HTTPS listeners.

+

+

+

SNI

+

Server Name Indication (SNI) is an extension to TLS and is used when a server uses multiple domain names and certificates. After SNI is enabled, certificates corresponding to the domain names are required.

+

+

+

Security policies

+

When you add HTTPS listeners, you can select desired security policies to improve service security. A security policy is a combination of TLS protocols and cipher suites.

+

+

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Other features

Feature

+

Description

+

Dedicated Load Balancers

+

Shared Load Balancers

+

Cross-AZ deployment

+

You can create a load balancer in multiple AZs. Each AZ selects an optimal path to process requests. In addition, the AZs back up each other, improving service processing efficiency and reliability.

+

+

x

+

Load balancing algorithms

+

Load balancers support weighted round robin, weighted least connections, and source IP hash.

+

+

+

Load balancing over public and private networks

+
  • Each load balancer on a public network has a public IP address bound to it and routes requests from clients to backend servers over the Internet.
  • Load balancers on a private network work within a VPC and route requests from clients to backend servers in the same VPC.
+

+

+

Modifying the bandwidth

+

You can modify the bandwidth used by the EIP bound to the load balancer as required.

+

+

+

Binding/Unbinding an IP address

+

You can bind an IP address to a load balancer or unbind the IP address from a load balancer based on service requirements.

+

+

+

Sticky session

+

If you enable sticky sessions, requests from the same client will be routed to the same backend server during the session.

+

+

+

Access control

+

You can add IP addresses to a whitelist or blacklist to control access to a listener.

+
  • A whitelist allows specified IP addresses to access the listener.
  • A blacklist denies access from specified IP addresses.
+

+

+

Health check

+

Load balancers periodically send requests to backend servers to check whether they can process requests.

+

+

+

Certificate management

+

You can create two types of certificates: server certificate and CA certificate. If you need an HTTPS listener, you need to bind a server certificate to it. To enable mutual authentication, you also need to bind a CA certificate to the listener. You can also replace a certificate that is already used by a load balancer.

+

+

+

Tagging

+

If you have a large number of cloud resources, you can assign different tags to the resources to quickly identify them and use these tags to easily manage your resources.

+

+

+

Support the display of monitoring metrics.

+

You can use Cloud Eye to monitor load balancers and associated resources and view metrics on the management console.

+

+

+

Log auditing

+

You can use Cloud Trace Service (CTS) to record operations on load balancers and associated resources for query, auditing, and backtracking.

+

+

+
+ + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/elb_pro_0005.html b/elb/umn/elb_pro_0005.html new file mode 100644 index 000000000..96251720f --- /dev/null +++ b/elb/umn/elb_pro_0005.html @@ -0,0 +1,26 @@ + + +

Product Advantages

+

Dedicated Load Balancers

  • Robust performance

    Each dedicated load balancer has exclusive use of isolated underlying resources and can provide guaranteed performance. A single dedicated load balancer deployed in one AZ can establish up to 20 million concurrent connections, and a load balancer deployed across two AZs can establish up to 40 million concurrent connections, meeting your requirements for handling a massive number of requests.

    +
  • High availability

    Underlying resources are deployed in clusters to ensure that load balancers can route traffic uninterruptedly. If your servers in one AZ are unhealthy, dedicated load balancers automatically route traffic to healthy servers in other AZs. Dedicated load balancers provide a comprehensive health check mechanism to ensure that incoming traffic is routed to only healthy backend servers, improving the availability of your applications.

    +
  • Ultra security

    Dedicated load balancers also allow you to select security policies that fit your security requirements.

    +
  • Multiple protocols

    Dedicated load balancers support the following protocols, including TCP, UDP, HTTP, and HTTPS, so that they can route requests from different types of applications.

    +
  • Hybrid load balancing

    Dedicated load balancers can route requests to both servers on the cloud and on premises, allowing you to leverage the public cloud to handle burst traffic.

    +
  • Ease-of-use

    Dedicated load balancers provide a diverse set of algorithms that allow you to configure different traffic routing policies to meet your requirements while keeping deployments simple.

    +
  • High reliability

    Load balancers can be deployed across AZs and can distribute traffic more evenly.

    +
+ +

Shared Load Balancers

  • Robust performance

    A shared load balancer can establish up to 100 million concurrent connections and up to 1 million new connections per second, and can handle up to 1 million requests per second, meeting your requirements for handling huge numbers of concurrent requests.

    +
  • High availability

    Underlying resources are deployed in clusters to ensure that load balancers can route traffic uninterruptedly. If your servers in one AZ are unhealthy, shared load balancers automatically route traffic to healthy servers in other AZs. Shared load balancers provide a comprehensive health check mechanism to ensure that incoming traffic is routed to only healthy backend servers, improving the availability of your applications.

    +
  • Multiple protocols

    Shared load balancers support the following protocols, including TCP, UDP, HTTP, and HTTPS.

    +
  • Ease-of-use

    Shared load balancers provide a diverse set of algorithms that allow you to configure different traffic routing policies to meet your requirements while keeping deployments simple.

    +
  • High reliability

    Shared load balancers can be deployed across AZs and can distribute traffic more evenly.

    +
+ + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/elb_pro_0006.html b/elb/umn/elb_pro_0006.html new file mode 100644 index 000000000..298a1299d --- /dev/null +++ b/elb/umn/elb_pro_0006.html @@ -0,0 +1,25 @@ + + +

Application Scenarios

+

Heavy-Traffic Applications

For an application with heavy traffic, such as a large portal or mobile app store, ELB evenly distributes incoming traffic to multiple backend servers, balancing the load while ensuring steady performance.

+

Sticky sessions ensure that requests from one client are always forwarded to the same backend server for fast processing.

+Figure 1 Session stickiness
+ +

Applications with Predictable Peaks and Troughs in Traffic

For an application that has predictable peaks and troughs in traffic volumes, ELB works with AS to add or remove backend servers to keep up with changing demands. An example is flash sales, during which application traffic spikes in a short period. ELB can work with AS to run only the required number of backend servers to handle the load of your application.

+Figure 2 Flexible scalability
+ +

Zero SPOFs

ELB routinely performs health checks on backend servers to monitor their healthy state. If any backend server is detected unhealthy, ELB will not route requests to this server until it recovers.

+

This makes ELB a good choice for running services that require high reliability, such as websites and toll collection systems.

+Figure 3 Eliminating SPOFs
+ +

Cross-AZ Load Balancing

ELB can distribute traffic across AZs. When an AZ becomes faulty, ELB distributes traffic across backend servers in other AZs.

+

ELB is ideal for banking, policing, and large application systems that require high availability.

+Figure 4 Traffic distribution to servers in one or more AZs
+ + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/elb_pro_0008.html b/elb/umn/elb_pro_0008.html new file mode 100644 index 000000000..2a96b7281 --- /dev/null +++ b/elb/umn/elb_pro_0008.html @@ -0,0 +1,18 @@ + + +

Integration with Other Services

+
  • Virtual Private Cloud (VPC)

    Provides IP addresses and bandwidth for load balancers.

    +
  • Auto Scaling (AS)

    Works with ELB to automatically scale the number of backend servers for faster traffic distribution.

    +
  • Identity and Access Management (IAM)

    Provides authentication for ELB.

    +
  • Elastic Cloud Server (ECS)

    Provides cloud servers to run your applications in the cloud. Configure load balancers to route traffic to the servers or containers.

    +
  • Log Tank Service (LTS)

    Stores access logs of HTTP or HTTPS requests to your load balancer for query and analysis later if you have enabled access logging.

    +
  • Cloud Trace Service (CTS)

    Records the operations performed on ELB resources.

    +
  • Cloud Eye

    Monitors the status of load balancers and listeners, without any additional plug-in.

    +
+ + + +Parent topic: Service Overview + + + diff --git a/elb/umn/elb_qs_0000.html b/elb/umn/elb_qs_0000.html new file mode 100644 index 000000000..d408ba3ec --- /dev/null +++ b/elb/umn/elb_qs_0000.html @@ -0,0 +1,15 @@ + + +

Getting Started

+ + + + + diff --git a/elb/umn/elb_qs_0001.html b/elb/umn/elb_qs_0001.html new file mode 100644 index 000000000..f6fb2ee83 --- /dev/null +++ b/elb/umn/elb_qs_0001.html @@ -0,0 +1,16 @@ + + +

Overview

+

Two examples are given to show how you can quickly create a shared load balancer to distribute incoming traffic across backend servers.

+
  • Entry level: A large number of requests need to be routed to backend servers. Health checks are required to monitor the health of backend servers to ensure that incoming traffic is routed only to healthy backend servers to eliminate SPOFs and improve service availability.Figure 1 Entry level
    +

    As the incoming traffic increases, you can add more servers to balance the load across backend servers.

    +
  • Advanced level: Two or more applications use the domain name to provide services, and requests are routed to applications based on their URLs. Forwarding policies are required to forward requests from different URLs to the corresponding backend server groups.Figure 2 Advanced level
    +

    As the incoming traffic increases, you can add more backend servers to the two backend server groups. You can also configure health checks to monitor the health of backend servers to ensure that incoming traffic is routed only to healthy backend servers.

    +
+ + + +Parent topic: Getting Started + + + diff --git a/elb/umn/elb_ug_bq_0000.html b/elb/umn/elb_ug_bq_0000.html new file mode 100644 index 000000000..d0a4a2833 --- /dev/null +++ b/elb/umn/elb_ug_bq_0000.html @@ -0,0 +1,29 @@ + + +

Tag

+

Scenarios

If you have a large number of cloud resources, you can assign different tags to the resources to quickly identify them and use these tags to easily manage your resources.

+ +

Adding a Tag to a Load Balancer

You can add a tag to a load balancer in either of the following scenarios:

+
  • Add a tag when you create a load balancer.

    For detailed operations, see Creating a Shared Load Balancer.

    +
  • Add a tag to an existing load balancer.
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Tags, click Add Tag.
    6. In the Add Tag dialog box, enter a tag key and value and click OK.
      • A maximum of 20 tags can be added to a load balancer.
      • Each tag is a key-value pair, and the tag key is unique.
      +
+ + + +

Adding a Tag to a Listener

You can add tags when you add listeners.

+

To add a tag to an existing listener, perform the following steps:

+
  1. Log in to the management console.
  2. In the upper left corner of the page, click and select the desired region and project.
  3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
  4. Locate the load balancer and click its name.
  5. Click Listeners, locate the listener, and click its name.
  6. Under Tags, click Add Tag.
  7. In the Add Tag dialog box, enter a tag key and value and click OK.
    • A maximum of 20 tags can be added to a listener.
    • Each tag is a key-value pair, and the tag key is unique.
    +
+ +

+ +

Modifying a Tag

  1. Log in to the management console.
  2. In the upper left corner of the page, click and select the desired region and project.
  3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
  4. Locate the load balancer and click its name.
  5. Click Tags, select the tag to be edited, and click Edit in the Operation column. In the Edit Tag dialog box, change the tag value.

    The tag key cannot be changed.

    +
+
  • Click OK.
  • +

    The operations for modifying a listener tag are not detailed here. Refer to the operations of modifying a load balancer tag.

    + +

    Deleting a Tag

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Tags, select the tag to be deleted, and click Delete in the Operation column.
    6. In the Delete Tag dialog box, click Yes.
    +

    The operations for deleting a listener tag are not detailed here. Refer to the operations of deleting a load balancer tag.

    + + + diff --git a/elb/umn/elb_ug_fz_0003_01.html b/elb/umn/elb_ug_fz_0003_01.html new file mode 100644 index 000000000..9f73e6196 --- /dev/null +++ b/elb/umn/elb_ug_fz_0003_01.html @@ -0,0 +1,23 @@ + + +

    Network Traffic Paths

    +

    Load balancers communicate with backend servers over a private network.

    +
    • If backend servers process only requests routed from load balancers, there is no need to assign EIPs or create NAT gateways.
    • If backend servers need to provide Internet-accessible services or access the Internet, you must assign EIPs or create NAT gateways.
    +

    Inbound Network Traffic Paths

    The listeners' configurations determine how load balancers distribute incoming traffic.Figure 1 Inbound network traffic
    + +When a listener uses TCP or UDP to receive incoming traffic:
    • Incoming traffic is routed only through the LVS cluster.
    • The LVS cluster directly routes incoming traffic to backend servers using the load balancing algorithm you select when you add the listener.
    + +When a listener uses HTTP or HTTPS to receive incoming traffic:
    • Incoming traffic is routed first to the LVS cluster, then to the Nginx cluster, and finally across backend servers.
    • For HTTPS traffic, the Nginx cluster validates certificates and decrypts data packets before distributing the traffic across backend servers using HTTP.
    + + +

    Outbound Network Traffic Paths

    The outbound traffic is routed back the same way the traffic came in.Figure 2 Outbound network traffic
    +
    • Because the load balancer receives and responds to requests over the Internet, traffic transmission depends on the bandwidth, which is not limited by ELB. The load balancer communicates with backend servers over a private network.
    • If you have a NAT gateway, it receives and responds to incoming traffic. The NAT gateway has an EIP bound, through which backend servers can access the Internet and provide services accessible from the Internet. Although there is a restriction on the connections that can be processed by a NAT gateway, traffic transmission depends on the bandwidth
    • If each backend server has an EIP bound, they receive and respond to incoming traffic directly. Traffic transmission depends on the bandwidth.
    + + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/elb_ug_fz_0004.html b/elb/umn/elb_ug_fz_0004.html new file mode 100644 index 000000000..24e949cbd --- /dev/null +++ b/elb/umn/elb_ug_fz_0004.html @@ -0,0 +1,25 @@ + + +

    Preparations for Creating a Load Balancer

    +

    Before creating a load balancer, you must plan its region, network, protocol, and backend servers.

    +

    Region

    When you select a region, pay attention to the following:
    • The region must be close to your users' location to reduce network latency and improve the download speed.
    • The region must be the same as that of backend servers. Currently, ELB cannot be deployed across regions.
    + + +

    Specifications

    Dedicated load balancers provide a broad range of specifications to meet different requirements. Specifications for network load balancing are suitable for TCP or UDP requests, while specifications for application load balancing are broadly used to handle HTTP or HTTPS requests. Select appropriate specifications based on your traffic volume and service requirements. The following are some principles for you to select the specifications:
    • For TCP or UDP load balancing, pay attention to the number of concurrent persistent connections, and consider Maximum Connections as a key metric. Estimate the maximum number of concurrent connections that a load balancer can handle in the actual service scenario and select the corresponding specification.
    • For HTTP or HTTPS load balancers, focus more on queries per second (QPS), which determines the service throughput of an application system. Estimate the QPS that a load balancer can handle in the actual service scenario and select the corresponding specification.
    • Use the monitoring data from Cloud Eye to analyze the peak traffic, trend and regularity of the traffic to select the specifications more accurately.
    + + +

    Protocol

    ELB provides load balancing at both Layer 4 and Layer 7.

    +
    • If you choose TCP or UDP, the load balancer routes requests directly to backend servers. In this process, the destination IP address in the packets is changed to the IP address of the backend server, and the source IP address to the private IP address of the load balancer. A connection is established after a three-way handshake between the client and the backend server, and the load balancer only forwards the data.Figure 1 Layer-4 load balancing
      +
    • Load balancing at Layer 7 is also called "content exchange". After the load balancer receives a request, it works as a proxy of backend servers to establish a connection (three-way handshake) with the client and then determines to which backend server the request is to be routed based on the fields in the HTTP/HTTPS request header and the load balancing algorithm you selected when you add the listener.Figure 2 Layer-7 load balancing
      +
    + +

    Backend Servers

    Before you use ELB, you need to create cloud servers, deploy required applications on them, and add the cloud servers to one or more backend server groups. When you create ECSs or BMSs, note the following:

    +
    • Cloud servers must be in the same region as the load balancer.
    • Cloud servers that run the same OS are recommended so that you can manage them more easily.
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_ug_fz_0006.html b/elb/umn/elb_ug_fz_0006.html new file mode 100644 index 000000000..62cbebfd8 --- /dev/null +++ b/elb/umn/elb_ug_fz_0006.html @@ -0,0 +1,18 @@ + + +

    Modifying Load Balancer Settings

    +

    Scenarios

    You can modify the bandwidth used by the EIP bound to the load balancer as required.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. On the Load Balancers page:

      Dedicated load balancers: Click Elastic Load Balancers, locate the load balancer whose bandwidth you want to modify and click Modify IPv4 Bandwidth or More > Modify IPv6 Bandwidth in the Operation column (if the load balancer has an IPv6 address that has been added to a shared bandwidth).

      +

      Shared load balancers: Click Elastic Load Balancers, locate the load balancer whose bandwidth you want to modify and click Modify Bandwidth or Modify IPv4 Bandwidth in the Operation column (in regions where either dedicated load balancers or both shared and dedicated load balancers are available).

      +

      Classic load balancers: Locate the load balancer whose bandwidth you want to modify and click Modify Bandwidth in the Operation column.

      +
    5. In the New Configuration area, change the bandwidth and click Next.

      Select the bandwidth defined by the system or enter a value from 1 Mbit/s to 2,000 Mbit/s.

      +
    6. Confirm the modified bandwidth and click Submit.
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_ug_fz_0007.html b/elb/umn/elb_ug_fz_0007.html new file mode 100644 index 000000000..72766be72 --- /dev/null +++ b/elb/umn/elb_ug_fz_0007.html @@ -0,0 +1,17 @@ + + +

    Enabling or Disabling a Load Balancer

    +

    Scenarios

    You can enable or disable a load balancer at any time. A disabled load balancer cannot distribute traffic.

    +

    You can enable or disable only classic load balancers.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    +
    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer, and click More > Enable or More > Disable.
    5. Click Yes.
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_ug_fz_0008.html b/elb/umn/elb_ug_fz_0008.html new file mode 100644 index 000000000..1f8d01a37 --- /dev/null +++ b/elb/umn/elb_ug_fz_0008.html @@ -0,0 +1,19 @@ + + +

    Deleting a Load Balancer

    +

    Scenarios

    You can delete a load balancer if you do not need it any longer.

    +

    A deleted load balancer cannot be recovered.

    +
    +

    After a public network load balancer is deleted, its EIP will not be released and can be used by other resources.

    + +

    Prerequisites

    You have removed backend servers from the associated backend server groups, deleted the associated backend server groups, and deleted the listeners added to the load balancer.

    + +

    Deleting a Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click Delete in the Operation column.
    5. Click Yes.
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_ug_fz_0009.html b/elb/umn/elb_ug_fz_0009.html new file mode 100644 index 000000000..c5b82b01b --- /dev/null +++ b/elb/umn/elb_ug_fz_0009.html @@ -0,0 +1,19 @@ + + +

    Binding an IP Address to or Unbinding an IP Address from a Load Balancer

    +

    Scenarios

    You can bind an IP address to a load balancer or unbind an IP address from a load balancer based on service requirements. If you bind an EIP to a load balancer, it can route requests over the Internet. If the EIP is not needed any longer, you can unbind it from the load balancer.

    +

    You can only bind EIPs to or unbind EIPs from shared load balancers.

    + +

    Binding an EIP

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click More > Bind EIP in the Operation column.
    5. In the Bind EIP dialog box, select the EIP to be bound and click OK.
    +

    Alternatively, go to the basic information page of the load balancer and click Bind next to EIP.

    + +

    Unbinding an EIP

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click More > Unbind EIP in the Operation column.
    5. Click Yes.
    +

    Alternatively, go to the basic information page of the load balancer and click Unbind next to EIP.

    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_ug_fz_0011.html b/elb/umn/elb_ug_fz_0011.html new file mode 100644 index 000000000..b96841ff6 --- /dev/null +++ b/elb/umn/elb_ug_fz_0011.html @@ -0,0 +1,14 @@ + + +

    Exporting the Load Balancer List

    +

    Scenarios

    You can export the load balancer list for backup.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the upper right corner of the load balancer list, click .
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/elb_ug_hc_0000.html b/elb/umn/elb_ug_hc_0000.html new file mode 100644 index 000000000..d609a4046 --- /dev/null +++ b/elb/umn/elb_ug_hc_0000.html @@ -0,0 +1,13 @@ + + +

    Health Check

    + + + + + diff --git a/elb/umn/elb_ug_hc_0003.html b/elb/umn/elb_ug_hc_0003.html new file mode 100644 index 000000000..592c52998 --- /dev/null +++ b/elb/umn/elb_ug_hc_0003.html @@ -0,0 +1,15 @@ + + +

    Disabling a Health Check

    +

    Scenarios

    If you do not require health check, you can disable it when you add listeners. If you have already added listeners with health check enabled, you can also disable it when you modify the listeners.

    +

    After health check is disabled, the load balancer will consider all backend servers healthy and will still route requests to a backend server even if this server becomes faulty or is working abnormally. As a result, applications on this server are inaccessible. If this happens, ensure that the ports used by the backend servers are normal. You are advised not to disable health checks unless necessary.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    1. Click Backend Server Groups, locate the backend server group, and click its name.
    2. Click More in the Operation column.
    3. Select Configure Health Check from the drop-down list.
    1. In the Configure Health Check dialog box, disable the health check.
    1. Click OK.
    + + + + +Parent topic: Health Check + + + diff --git a/elb/umn/elb_ug_hd_0000.html b/elb/umn/elb_ug_hd_0000.html new file mode 100644 index 000000000..7bd5ea9fb --- /dev/null +++ b/elb/umn/elb_ug_hd_0000.html @@ -0,0 +1,21 @@ + + +

    Backend Server

    + + + + + diff --git a/elb/umn/elb_ug_hd_0001.html b/elb/umn/elb_ug_hd_0001.html new file mode 100644 index 000000000..c6eb3941a --- /dev/null +++ b/elb/umn/elb_ug_hd_0001.html @@ -0,0 +1,19 @@ + + +

    Overview

    +

    A backend server is a cloud server added to a backend server group associated with a load balancer. When you add a listener to a load balancer, you can create or select a backend server group to receive requests from the load balancer by using the port and protocol you specify for the backend server group and the load balancing algorithm you select.

    +

    After a new server is added to the associated backend server group for which the health check is configured, the load balancer will check its running status. If the backend server responds normally, it is declared healthy. If the backend server does not respond normally, the load balancer periodically checks its health for multiple times. Only after the backend server is considered healthy, it can receive requests from the load balancer.

    +

    You can adjust the number of backend servers to ensure stable and reliable service with the minimum budget. Load balancers can distribute requests across backend servers in different AZs to prevent SPOFs. You must ensure that at least one backend server is working normally in each AZ.

    +

    On the ELB console, you can view the load balancer that the backend server is associated with by the IP address or ID of the backend server.

    +

    If a backend server is stopped or restarted, connections established with the server will be disconnected, and data being transmitted over these connections will be lost. Configure the retry function on the clients to prevent data loss.

    +

    Notes

    When you add backend servers, note the following:

    +
    • Backend servers must be in the same VPC as the load balancer.
    • For ease of management and maintenance, backend servers must run the same OS.
    • You can set a weight for each server in the backend server group. The larger the weight is, the higher proportion of requests the backend server receives.
    • If you enable sticky sessions, the proportions of requests processed by backend servers may become unbalanced. In this case, disable sticky sessions and check the requests received by each backend server.
    + + + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_ug_hd_0002.html b/elb/umn/elb_ug_hd_0002.html new file mode 100644 index 000000000..1972df38b --- /dev/null +++ b/elb/umn/elb_ug_hd_0002.html @@ -0,0 +1,27 @@ + + +

    Configuring Security Group Rules for Backend Servers (Shared Load Balancers)

    +

    Scenarios

    Before you add servers to a backend server group, ensure that their security groups have inbound rules that allow traffic from 100.125.0.0/16, and specify the health check protocol and port. Otherwise, health checks will be affected, and backend servers cannot receive requests from the load balancer. If UDP is used for health checks, inbound security group rules must also allow the ICMP traffic.

    +

    If you have no VPCs when creating a server, the system will automatically create a VPC with default security rules. Default security group rules allow only communications among the servers in the VPC. You also need to configure inbound rules to enable the load balancer to communicate with these servers over the frontend port and health check port.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. In the ECS list, locate the ECS and click its name.

      The ECS details page is displayed.

      +
    5. Click Security Groups, locate the security group, and view security group rules.
    6. Click the security group rule ID or Modify Security Group Rule.

      The security group details page is displayed.

      +
    7. Under Inbound Rules, click Add Rule.

      TCP, HTTP, or HTTPS listeners

      +
      • If the health check port is not the one used by each backend server, add inbound rules to allow TCP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow TCP traffic over the ports used by backend servers.
      • The inbound rules must also allow access from 100.125.0.0/16. Otherwise, health checks will fail.
      +

      UDP listeners

      +
      • If the health check port is not the one used by each backend server, add inbound rules to allow UDP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow UDP traffic over the ports used by backend servers.
      • The inbound rules must also allow access from 100.125.0.0/16. Otherwise, health checks will fail.
      • You need also to add an inbound rule to allow ICMP traffic.
      +
    8. Click OK.
    + +

    Firewall Rule

    You can associate one or more subnets with a firewall for controlling traffic in and out of the subnets. Similar to security groups, firewalls provide access control functions, but add an additional layer of defense to your VPC. Default firewall rules reject all inbound and outbound traffic. If the subnet of a load balancer or associated backend servers has a firewall associated, the load balancer cannot receive traffic from the Internet or route traffic to backend servers, and backend servers cannot receive traffic from and respond to the load balancer.

    +

    You can configure an inbound firewall rule to permit access from 100.125.0.0/16.

    +

    ELB translates public IP addresses that access backend servers into IP addresses in 100.125.0.0/16. You cannot configure firewall rules to prevent public IP addresses from accessing backend servers to allow traffic from 100.125.0.0/16 to all backend servers.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Under Network, click Virtual Private Cloud.
    4. In the navigation pane on the left, choose Access Control > Firewalls.
    5. Locate the firewall, and click the firewall name to switch to the firewall details page.
    6. On the Inbound Rules or Outbound Rules tab page, click Add Rule to add a rule.
      • Action: Select Allow.
      • Protocol: The protocol must be the same as the frontend protocol you select when you add the listener.
      • Source: Set the value to 100.125.0.0/16.
      • Source Port Range: Select the port range.
      • Destination: Enter the default value 0.0.0.0/0. Traffic will be destined for all IP addresses.
      • Destination Port Range: Select the port range.
      • Description: Enter a description for the firewall rule if necessary.
      +
    7. Click OK.
    + + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_ug_hd_0003.html b/elb/umn/elb_ug_hd_0003.html new file mode 100644 index 000000000..47db01edc --- /dev/null +++ b/elb/umn/elb_ug_hd_0003.html @@ -0,0 +1,191 @@ + + +

    Adding or Removing Backend Servers (Dedicated Load Balancers)

    +

    Scenarios

    When you use ELB, ensure that at least a healthy backend server is in the backend server group associated with your load balancer. If incoming traffic increases, you need to add more backend servers.

    +

    After a backend server is removed, it cannot receive requests from the load balancer. You can add it back to the backend server group when the traffic goes up again.

    +

    If the load balancer is associated with an AS group, instances in the AS group are automatically added to the backend server group associated with the load balancer. If instances are removed from the AS group, they will be automatically removed from the backend server group.

    + + +

    Adding Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. On the Backend Server Groups tab page, click Add Backend Server under Backend Servers.
    6. Perform the following operations based on the type of the backend servers:
      • Backend servers in the same VPC as the load balancer: In the Add Backend Server dialog box, select the subnet where the backend servers reside, select the backend servers to be added, and click Next. Set the server weights and backend ports, and click Finish.
      • Cross-VPC backend servers: In the Add Cross-VPC Backend Server dialog box, specify the IP addresses, ports, and weights, and click OK.
      +
    + +

    Removing Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. In the Basic Information area, locate the target backend server and click Remove in the Operation column. To remove multiple backend servers, select the backend servers you want to remove and click Remove above the server list.
    7. Click Yes.
    + +

    Adding a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Backend Server Groups, click Add Backend Server Group.
    6. In the Add Backend Server Group dialog box, configure the parameters.

      Configure the parameters based on Table 1 and Table 2.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for adding a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      The backend protocol can be TCP, UDP, HTTP, or HTTPS.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the number of active connections established with each backend server, each server is assigned a weight based on their processing capability. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously.
      + NOTE:
      • Choose an appropriate algorithm based on your requirements for better traffic distribution.
      • For Weighted round robin or Weighted least connections, no requests will be routed to a server with a weight of 0.
      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client are sent to the same backend server.

      + NOTE:

      You can enable sticky sessions only if you select Weighted round robin for Load Balancing Algorithm.

      + +

      -

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Load balancer cookie

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained. You can enable sticky sessions only if you select Weighted round robin or Weighted least connections for Load Balancing Algorithm.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Slow Start

      +

      Specifies whether to enable slow start, which is disabled by default.

      +

      After you enable slow start, the load balancer linearly increases the proportion of requests to send to backend servers in this mode. When the slow start duration elapses, the load balancer sends full share of requests to backend servers and exits the slow start mode. For details, see Configuring Slow Start (Dedicated Load Balancers).

      +

      -

      +

      Slow Start Duration

      +

      Specifies how long the slow start will last.

      +

      The duration ranges from 30 to 1200, in seconds, and the default value is 30.

      +

      30

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      You can enter a maximum of 255 characters.

      +

      -

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +

      Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.

      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks.

      +

      The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. The field is left blank by default and is available only when the health check protocol is HTTP.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      If you do not specify a health check port, the backend port will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      3

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    7. Click OK.
    + +

    Modifying a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Modify the parameters as needed and click OK.
    + +

    Deleting a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Click Yes.
    + + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_ug_hd_0006.html b/elb/umn/elb_ug_hd_0006.html new file mode 100644 index 000000000..de0c6fa5c --- /dev/null +++ b/elb/umn/elb_ug_hd_0006.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + +Configuring Slow Start (Dedicated Load Balancers) + + + +

    Configuring Slow Start (Dedicated Load Balancers)

    +

    Scenarios

    You can enable slow start for HTTP or HTTPS listeners. After you enable it, the load balancer linearly increases the proportion of requests to send to backend servers in this mode. When the slow start duration elapses, the load balancer sends full share of requests to backend servers and exits the slow start mode. Slow start gives applications time to warm up and respond to requests with optimal performance. When the health check function is enabled, slow start takes effect after backend servers are detected healthy. If the health check is not working normally during the slow start, the slow start duration will not stop.

    +

    Backend servers will exit slow start in either of the following cases:

    +
    1. The slow start duration elapses.
    2. Backend servers become unhealthy during the slow start duration.
    +

    If an unhealthy backend server exits slow start, it will enter slow start again once it is detected healthy.

    + +

    Prerequisites

    • You have created a dedicated load balancer.
    • You have added an HTTP or HTTPS listener to the dedicated load balancer.
    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. On the Load Balancers page, locate the dedicated load balancer that you have created and click its name.
    5. In the Backend Server Groups tab, click Add Backend Server Group.
    6. Enable Slow Start and set the slow start duration. Set other parameters based on service requirements.
    7. Click OK.
    + +

    Follow-Up Operations

    • For an existing backend server group, you can click on the right of the backend server group on the Backend Server Groups tab page to enable slow start.
    • Add backend servers to the newly added backend server group by performing the operations in Adding or Removing Backend Servers (Dedicated Load Balancers).
    + + + + + \ No newline at end of file diff --git a/elb/umn/elb_ug_hd_0007.html b/elb/umn/elb_ug_hd_0007.html new file mode 100644 index 000000000..8c6a23fe4 --- /dev/null +++ b/elb/umn/elb_ug_hd_0007.html @@ -0,0 +1,26 @@ + + +

    Configuring Security Group Rules for Backend Servers (Dedicated Load Balancers)

    +

    Scenarios

    When you add a backend server to a backend server group, ensure that the rules of the security group that containing the backend server allows access from the CIDR block of the VPC where the backend server resides, and that the destination port is that used by the backend server. You also need to configure the protocol and port used for health checks. If you use UDP for health checks, configure inbound rules to allow ICMP traffic. Otherwise, health checks cannot be performed on the added backend server.

    +

    If you have no VPCs when creating a server, the system will automatically create a VPC with default security rules. Default security group rules allow only communications among the servers in the VPC. You also need to configure inbound rules to enable the load balancer to communicate with these servers over the frontend port and health check port.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. In the ECS list, locate the ECS and click its name.

      The ECS details page is displayed.

      +
    5. Click Security Groups, locate the security group, and view security group rules.
    6. Click the security group rule ID or Modify Security Group Rule. The security group details page is displayed.
    7. Under Inbound Rules, click Add Rule.

      TCP, HTTP, or HTTPS listeners

      +
      • If the health check port is not the one used by each backend server, add an inbound rule to allow TCP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow TCP traffic over the ports used by backend servers.
      • To ensure normal health checks, ensure that security group rules allow traffic from the CIDR block of the subnet where the load balancer resides and traffic from the health check port and from the ports used by backend servers.
      +

      UDP listeners

      +
      • If the health check port is not the one used by each backend server, add an inbound rule to allow UDP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow UDP traffic over the ports used by backend servers.
      • To ensure normal health checks, ensure that security group rules allow traffic from the CIDR block of the subnet where the load balancer resides and traffic from the health check port and from the ports used by backend servers.
      • You need also to add an inbound rule to allow ICMP traffic.
      +
    8. Click OK.
    + +

    Firewall Rule

    You can associate one or more subnets with a firewall for controlling traffic in and out of the subnets. Similar to security groups, firewalls provide access control functions, but add an additional layer of defense to your VPC. Default firewall rules reject all inbound and outbound traffic. If the subnet of a load balancer or associated backend servers has a firewall associated, the load balancer cannot receive traffic from the Internet or route traffic to backend servers, and backend servers cannot receive traffic from and respond to the load balancer.

    +

    Configure an inbound firewall rule to allow access from the VPC CIDR block to backend servers.

    +

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Virtual Private Cloud.
    4. In the navigation pane on the left, choose Access Control > Firewalls.
    5. Locate the firewall, and click the firewall name to switch to the firewall details page.
    6. On the Inbound Rules or Outbound Rules tab page, click Add Rule to add a rule.
      • Action: Select Allow.
      • Protocol: The protocol must be the same as the frontend protocol you select when you add the listener.
      • Source: Set the value to the VPC CIDR block.
      • Source Port Range: Select the port range.
      • Destination: Enter the default value 0.0.0.0/0. Traffic will be destined for all IP addresses.
      • Destination Port Range: Select the port range.
      • Description: Enter a description for the firewall rule if necessary.
      +
    7. Click OK.
    + + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_ug_hd_0008.html b/elb/umn/elb_ug_hd_0008.html new file mode 100644 index 000000000..bd38f1429 --- /dev/null +++ b/elb/umn/elb_ug_hd_0008.html @@ -0,0 +1,14 @@ + + +

    Configuring Weights for Backend Servers

    +Each backend server can be given a numeral value from 0 to 100 to indicate the proportion of requests to receive. Requests will not be routed to the backend server whose weight is 0, even if the backend server is considered healthy. You can set a weight for each backend server when you select one of the following algorithms:
    • Weighted round robin: If none of the servers have a weight of 0, the load balancer routes requests to these servers using the round robin algorithm based on their weights. If two backend servers have the same weights, they receive the same number of requests.
    • Weighted least connections: If none of the servers have a weight of 0, the load balancer calculates the load of each backend server using the formula: Overhead = Number of current connections/Server weight. The load balancer routes requests to the backend server with the lowest overhead in each request distribution.
    • Source IP hash: Requests will not be routed to backend servers if their weights are set to 0. Server weights will not take effect if they are not 0, and requests from the same IP address will be routed to the same backend server.
    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group and then the server, and click the number in the Weight column to set the server weight.
    6. Click OK.
    + + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/elb_ug_jk_0000.html b/elb/umn/elb_ug_jk_0000.html new file mode 100644 index 000000000..095934b6a --- /dev/null +++ b/elb/umn/elb_ug_jk_0000.html @@ -0,0 +1,15 @@ + + +

    Monitoring

    + + + + + diff --git a/elb/umn/elb_ug_jk_0001.html b/elb/umn/elb_ug_jk_0001.html new file mode 100644 index 000000000..cde1678c6 --- /dev/null +++ b/elb/umn/elb_ug_jk_0001.html @@ -0,0 +1,333 @@ + + +

    Monitoring Metrics

    +

    Overview

    This section describes the namespace, the metrics that can be monitored by Cloud Eye, and dimensions of these metrics. You can use APIs provided by Cloud Eye to query the metrics of a monitored object and generated alarms.

    + +

    Namespace

    SYS.ELB

    + +

    Metrics

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Metric ID

    +

    Name

    +

    Description

    +

    Value

    +

    Monitored Object

    +

    Monitoring Period

    +

    (Raw Data)

    +

    m1_cps

    +

    Concurrent Connections

    +

    Load balancing at Layer 4: total number of TCP and UDP connections from the monitored object to backend servers

    +

    Load balancing at Layer 7: total number of TCP connections from the clients to the monitored object

    +

    Unit: N/A

    +

    ≥ 0

    +

    Shared load balancer or its listener, classic load balancer, dedicated load balancer or its listener

    +

    1 minute

    +

    m2_act_conn

    +

    Active Connections

    +

    Number of TCP and UDP connections in the ESTABLISHED state between the monitored object and backend servers

    +

    You can run the following command to view the connections (both Windows and Linux servers):

    +
    netstat -an
    +

    Unit: N/A

    +

    ≥ 0

    +

    m3_inact_conn

    +

    Inactive Connections

    +

    Number of TCP connections between the monitored object and backend servers except those in the ESTABLISHED state

    +

    You can run the following command to view the connections (both Windows and Linux servers):

    +
    netstat -an
    +

    Unit: N/A

    +

    ≥ 0

    +

    m4_ncps

    +

    New Connections

    +

    Number of TCP and UDP connections established between clients and the monitored object per second

    +

    Unit: N/A

    +

    ≥ 0/second

    +

    m5_in_pps

    +

    Incoming Packets

    +

    Number of packets received by the monitored object per second

    +

    Unit: Packet/s

    +

    ≥ 0/second

    +

    m6_out_pps

    +

    Outgoing Packets

    +

    Number of packets sent from the monitored object per second

    +

    Unit: Packet/s

    +

    ≥ 0/second

    +

    m7_in_Bps

    +

    Inbound Rate

    +

    Traffic used for accessing the monitored object from the Internet

    +

    Unit: byte/s

    +

    ≥ 0 bytes/s

    +

    m8_out_Bps

    +

    Outbound Rate

    +

    Traffic used by the monitored object to access the Internet

    +

    Unit: byte/s

    +

    ≥ 0 bytes/s

    +

    m9_abnormal_servers

    +

    Unhealthy Servers

    +

    Number of unhealthy backend servers associated with the monitored object

    +

    Unit: N/A

    +

    ≥ 0

    +

    Shared load balancer, classic load balancer, or dedicated load balancer

    +

    1 minute

    +

    ma_normal_servers

    +

    Healthy Servers

    +

    Number of healthy backend servers associated with the monitored object

    +

    Unit: N/A

    +

    ≥ 0

    +

    Layer 7 (HTTP/HTTPS) metrics: These metrics are available only when the frontend protocol is HTTP or HTTPS.

    +

    mb_l7_qps

    +

    Layer-7 Query Rate

    +

    Number of requests the monitored object receives per second

    +

    Unit: Query/s

    +

    ≥ 0/second

    +

    Shared load balancer or its listener, dedicated load balancer or its listener

    +

    1 minute

    +

    mc_l7_http_2xx

    +

    2xx Status Codes

    +

    Number of 2xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    md_l7_http_3xx

    +

    3xx Status Codes

    +

    Number of 3xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    me_l7_http_4xx

    +

    4xx Status Codes

    +

    Number of 4xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    mf_l7_http_5xx

    +

    5xx Status Codes

    +

    Number of 5xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m10_l7_http_other_status

    +

    Other Status Codes

    +

    Number of status codes returned by the monitored object except 2xx, 3xx, 4xx, and 5xx status codes

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m11_l7_http_404

    +

    404 Not Found

    +

    Number of 404 Not Found status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m12_l7_http_499

    +

    499 Client Closed Request

    +

    Number of 499 Client Closed Request status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m13_l7_http_502

    +

    502 Bad Gateway

    +

    Number of 502 Bad Gateway status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m14_l7_rt

    +

    Average Layer-7 Response Time

    +

    Average response time of the monitored object

    +

    The response time starts when the monitored object receives requests from the clients and ends when it returns all responses to the clients.

    +

    Unit: ms

    +

    ≥ 0 ms

    +

    m15_l7_upstream_4xx

    +

    4xx Status Codes_Backend

    +

    Number of 4xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    Shared load balancer or its listener, dedicated load balancer or its listener

    +

    1 minute

    +

    m16_l7_upstream_5xx

    +

    5xx Status Codes_Backend

    +

    Number of 5xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m17_l7_upstream_rt

    +

    Average Server Response Time

    +

    Average response time of backend servers

    +

    The response time starts when the monitored object routes the requests to the backend server and ends when the monitored object receives a response from the backend server.

    +

    Unit: ms

    +

    ≥ 0 ms

    +
    + +

    a: If a service is being monitored from multiple dimensions, include all dimensions when you use APIs to query the metrics.

    +
    • Example of querying a single metric from both dimensions: dim.0=lbaas_instance_id,223e9eed-2b02-4ed2-a126-7e806a6fee1f&dim.1=lbaas_listener_id,3baa7335-8886-4867-8481-7cbba967a917
    • Example of querying metrics in batches from both dimensions:
      "dimensions": [
      +{
      +"name": "lbaas_instance_id",
      +"value": "223e9eed-2b02-4ed2-a126-7e806a6fee1f"
      +}
      +{
      +"name": "lbaas_listener_id",
      +"value": "3baa7335-8886-4867-8481-7cbba967a917"
      +}
      +],
      +
    + +

    Dimensions

    + + + + + + + + + + + + + + + + + +

    Key

    +

    Value

    +

    lb_instance_id

    +

    Specifies the ID of the classic load balancer.

    +

    lbaas_instance_id

    +

    Specifies the ID of the shared load balancer.

    +

    lbaas_listener_id

    +

    Specifies the ID of the shared load balancer listener.

    +

    lbaas_pool_id

    +

    Specifies the backend server group ID.

    +
    + + + + + +Parent topic: Monitoring + + + diff --git a/elb/umn/elb_ug_jk_0002.html b/elb/umn/elb_ug_jk_0002.html new file mode 100644 index 000000000..c722ff705 --- /dev/null +++ b/elb/umn/elb_ug_jk_0002.html @@ -0,0 +1,17 @@ + + +

    Setting an Alarm Rule

    + + + + + +Parent topic: Monitoring + + + diff --git a/elb/umn/elb_ug_jk_0003.html b/elb/umn/elb_ug_jk_0003.html new file mode 100644 index 000000000..5836e2df0 --- /dev/null +++ b/elb/umn/elb_ug_jk_0003.html @@ -0,0 +1,16 @@ + + +

    Adding an Alarm Rule

    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Eye.
    3. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
    4. On the Alarm Rules page, click Create Alarm Rule.The following describes how to create an alarm rule for a load balancer.
      1. Select Elastic Load Balancing for Resource Type.
      2. For Dimension, select Elastic Load Balancers. In the following operations, a load balancer is used as an example.
      3. Set other parameters as required and then click Create.

        Once the alarm rule is set and you have enabled the notification function, the system automatically sends you a notification when an alarm is generated.

        +

        For more information about alarm rules of load balancers and listeners, see the Cloud Eye User Guide.

        +
    + + + + + + +Parent topic: Setting an Alarm Rule + + + diff --git a/elb/umn/elb_ug_jk_0004.html b/elb/umn/elb_ug_jk_0004.html new file mode 100644 index 000000000..aa5e3c56a --- /dev/null +++ b/elb/umn/elb_ug_jk_0004.html @@ -0,0 +1,16 @@ + + +

    Modifying an Alarm Rule

    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Eye.
    3. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
    4. On the Alarm Rules page, locate the alarm rule. In the Operation column, click More > Modify.
      1. Click the name of the alarm rule.
      2. In the upper right corner of the displayed page, click Modify.
      3. On the Modify Alarm Rule page, set parameters as prompted.
      4. Set other parameters as required and then click Modify.

        Once the alarm rule is set and you have enabled the notification function, the system automatically sends you a notification when an alarm is generated.

        +

        For more information about alarm rules of load balancers and listeners, see the Cloud Eye User Guide.

        + +
      + +
    + + + +Parent topic: Setting an Alarm Rule + + + diff --git a/elb/umn/elb_ug_jk_0005.html b/elb/umn/elb_ug_jk_0005.html new file mode 100644 index 000000000..0747bfd5f --- /dev/null +++ b/elb/umn/elb_ug_jk_0005.html @@ -0,0 +1,23 @@ + + +

    Viewing Metrics

    +

    Scenarios

    Cloud Eye allows you to monitor your resources, including load balancers.

    +

    The transmission of monitoring data takes a while, so the status of each load balancer displayed on the Cloud Eye dashboard is not its real-time status. For a newly created load balancer or a newly added listener, you need to wait for about 5 minutes to 10 minutes before you can view its metrics.

    + +

    Prerequisites

    + +

    Background

    If you set the weight of a backend server to 0, the load balancer will not route traffic to this server even if it is included in Healthy Servers on the Cloud Eye console.

    + +

    Procedure

    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Eye.
    3. In the navigation pane on the left, choose Cloud Service Monitoring > Elastic Load Balancing.
    4. Locate the load balancer and click View Metric in the Operation column.
    + + + + +Parent topic: Monitoring + + + diff --git a/elb/umn/elb_ug_jt_0001.html b/elb/umn/elb_ug_jt_0001.html new file mode 100644 index 000000000..de5b43447 --- /dev/null +++ b/elb/umn/elb_ug_jt_0001.html @@ -0,0 +1,71 @@ + + +

    Overview

    +

    You need to add at least one listener after you have created a load balancer. This listener receives requests from clients and routes requests to backend servers using the protocol, port, and load balancing algorithm you select.

    +

    Supported Protocols

    ELB provides load balancing at both Layer 4 and Layer 7.

    +

    Select TCP or UDP for load balancing at Layer 4 and HTTP or HTTPS at Layer 7.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Protocols supported by ELB

    Protocol

    +

    Description

    +

    Application Scenario

    +

    Layer 4

    +

    TCP

    +
    • Source IP address-based sticky sessions
    • Fast data transfer
    +
    • Scenarios that require high reliability and data accuracy, such as file transfer, email, and remote login
    • Web applications that receive a large number of concurrent requests and require high performance
    +

    Layer 4

    +

    UDP

    +
    • Low reliability
    • Fast data transfer
    +

    Scenarios that require quick response, such as video chat, gaming, and real-time financial quotations

    +

    Layer 4

    +

    SSL

    +
    • TCP-based security encryption
    • High reliability
    • Supported by only classic load balancers
    +

    Web applications that require encrypted transmission

    +

    Layer 7

    +

    HTTP

    +
    • Cookie-based sticky sessions
    • X-Forward-For request header
    +

    Web applications where data content needs to be identified, such as mobile games

    +

    Layer 7

    +

    HTTPS

    +
    • An extension of HTTP for encrypted data transmission to prevent unauthorized access
    • Encryption and decryption performed on load balancers
    • Multiple versions of encryption protocols and cipher suites
    +

    Web applications that require encrypted transmission

    +
    + + + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_ug_jt_0002.html b/elb/umn/elb_ug_jt_0002.html new file mode 100644 index 000000000..b95dc0ec3 --- /dev/null +++ b/elb/umn/elb_ug_jt_0002.html @@ -0,0 +1,73 @@ + + +

    Protocols and Ports

    +

    Frontend Protocols and Ports

    Frontend protocols and ports are used by load balancers to receive requests from clients. Load balancers use TCP, UDP, or SSL at Layer 4, and HTTP or HTTPS at Layer 7. Select a protocol and a port that best suit your requirements.

    + + + + + + + + + + + + + + + + + +
    Table 1 Frontend protocols and ports

    Protocol

    +

    Port

    +

    TCP

    +

    There are some restrictions when you select the protocols and port numbers.

    +
    • For each load balancer, UDP can use the same ports as other protocols, but these other protocols must have unique ports. For example, if you have a UDP listener that uses port 88, you can add a TCP, HTTP, or HTTPS listener that also uses port 88. However, if you already have an HTTP listener that uses port 443, you cannot add an HTTPS or TCP listener that uses the same port.
    • The port numbers of the same protocol must be unique. For example, if you have a TCP listener that uses port 80, you cannot add another TCP listener that uses the same port.
    +

    The port number ranges from 1 to 65535.

    +

    The following are some commonly-used protocols and port numbers:

    +

    TCP/80

    +

    HTTPS/443

    +

    UDP

    +

    HTTP

    +

    HTTPS

    +

    SSL (only classic load balancers)

    +
    + + +

    Backend Protocols and Ports

    Backend protocols and ports are used by backend servers to receive requests from load balancers. If Windows servers have Internet Information Services (IIS) installed, the default backend protocol and port are HTTP and 80.

    + + + + + + + + + + + + + + + +
    Table 2 Backend protocols and ports

    Protocol

    +

    Port

    +

    TCP

    +

    Backend servers can use the same ports. The port number ranges from 1 to 65535.

    +

    The following are some commonly-used protocols and port numbers:

    +

    TCP/80

    +

    HTTP/443

    +

    UDP

    +

    HTTP

    +

    HTTPS

    +
    + + + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_ug_jt_0003.html b/elb/umn/elb_ug_jt_0003.html new file mode 100644 index 000000000..cc14c2e39 --- /dev/null +++ b/elb/umn/elb_ug_jt_0003.html @@ -0,0 +1,29 @@ + + +

    Load Balancing Algorithms

    +

    Load balancers receive requests from clients and forward them to backend servers in one or more AZs. Each load balancer has at least a listener and a backend server. The load balancing algorithm you select when you add the listener determines how requests are distributed.

    +

    Load Balancing Algorithms

    Shared load balancers and dedicated load balancers support the following load balancing algorithms:

    + + +Classic load balancers support the following load balancing algorithms: +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + + + +

    Changing the Load Balancing Algorithm

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups and click on the right of the backend server group name.
    6. Select a load balancing algorithm.

      The modification will take effect immediately. The load balancer will establish new connections with the clients, and request routing over established connections will not be affected.

      + +
    7. Click OK.
    + + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_ug_jt_0004.html b/elb/umn/elb_ug_jt_0004.html new file mode 100644 index 000000000..73bcafe72 --- /dev/null +++ b/elb/umn/elb_ug_jt_0004.html @@ -0,0 +1,64 @@ + + +

    Sticky Session

    +

    Sticky sessions ensure that requests from a client always get routed to the same backend server before a session elapses.

    +

    Here is an example that describes what sticky sessions. Assume that you have logged in to a server. After a while, you send another request. If sticky sessions are not enabled, the request may be routed to another server, and you will be asked to log in again. If sticky sessions are enabled, all your requests are processed by the same server, and you do not need to repeatedly log in.

    +

    Sticky sessions at Layer 4 are different from those at Layer 7.

    +

    Prerequisites

    You have selected Weighted round robin for Load Balancing Algorithm.

    + +

    Differences Between Sticky Sessions at Layer 4 and Layer 7

    + + + + + + + + + + + + + + + + + + + + +
    Table 1 Sticky session comparison

    OSI Layer

    +

    Listener's Protocol

    +

    Sticky Session Type

    +

    Stickiness Duration

    +

    Scenarios Where Sticky Sessions Become Invalid

    +

    Layer 4

    +

    TCP or UDP

    +

    Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hash key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.

    +
    • Default: 20 minutes
    • Maximum: 1 hour
    • Range: 1 minute to 60 minutes
    +
    • Source IP addresses of the clients change.
    • The session stickiness duration has been reached.
    +

    Layer 7

    +

    HTTP or HTTPS

    +
    • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
    • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
    +
    • Default: 20 minutes
    • Maximum: 24 hours
    • Range: 1 minute to 1,440 minutes
    +
    • If requests sent by the clients do not contain a cookie, sticky sessions will not take effect.
    • The session stickiness duration has been reached.
    +
    + + +

    Dedicated load balancers support two types of sticky sessions: Source IP address and Load balancer cookie

    +

    Shared load balancers support three types of sticky session, including Source IP address, Load balancer cookie, and Application cookie.

    +

    Classic load balancers support Source IP address.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + +

    Enabling Sticky Sessions

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. For a shared load balancer and a dedicated load balancer, click Backend Server Groups, locate the backend server group, and click on the right of its name.

      For a classic load balancer, click Listeners, locate the listener, and click Modify in the Operation column.

      +
    6. Enable Sticky Session, select the sticky session type, and set the session stickiness duration.
    7. Click OK.
    +

    You can also configure sticky sessions when adding a listener or creating a backend server group.

    + + + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_ug_jt_0011.html b/elb/umn/elb_ug_jt_0011.html new file mode 100644 index 000000000..044a5544b --- /dev/null +++ b/elb/umn/elb_ug_jt_0011.html @@ -0,0 +1,577 @@ + + +

    Adding a Listener

    +

    Scenarios

    After you create a load balancer, add at least one listener to the load balancer. This listener is a process that checks for requests using the protocol and port you configure for connections from clients to the load balancer, and the protocol and port from the load balancer to backend servers.

    +

    The listener also defines the health check configuration, based on which the load balancer continually checks the running statuses of backend servers. If a backend server is detected unhealthy, the load balancer routes traffic to these healthy ones. Traffic forwarding to this server resumes once it recovers.

    +

    When you add an HTTP listener, ensure that the subnet of the load balancer has sufficient IP addresses. If the IP addresses are insufficient, add multiple subnets on the Basic Information page of the load balancer. After you select a subnet, ensure that ACL rules are not configured for this subnet. If rules are configured, request packets may not be allowed.

    + +

    Adding a Listener to a Dedicated Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener. Configure the parameters based on Table 1, Table 2, and Table 3. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring a listener

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the listener name.

      +

      listener-pnqy

      +

      Frontend Protocol/Port

      +

      Specifies the protocol and port used by the load balancer to receive requests from clients and forward the requests to backend servers.

      +

      The port number ranges from 1 to 65535, and the following protocols are supported:

      +
      • HTTP
      +
      • TCP
      • HTTPS
      • UDP
      +

      TCP/80

      +

      Redirect

      +

      Redirects requests to an HTTPS listener when HTTP is used as the frontend protocol. If you have both HTTPS and HTTP listeners, you can use this function to redirect the requests from the HTTP listener to the HTTPS listener to ensure security.

      +

      If you create a redirect for an HTTP listener, the load balancer will return HTTP 301 Move Permanently to the clients.

      +

      N/A

      +

      Redirected To

      +

      Specifies the HTTPS listener to which requests are redirected.

      +

      N/A

      +

      Server Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol.

      +

      N/A

      +

      Enable SNI

      +

      Specifies whether to enable SNI when HTTPS is used as the frontend protocol.

      +

      SNI is an extension to TLS and is used when a server uses multiple domain names and certificates. This allows the client to submit the domain name information while sending an SSL handshake request. After the load balancer receives the request, the load balancer queries the corresponding certificate based on the domain name and returns it to the client. If no certificate is found, the load balancer will return a default certificate.

      +

      N/A

      +

      SNI Certificate

      +

      Specifies the certificate associated with the domain name when the frontend protocol is HTTPS and SNI is enabled.

      +

      N/A

      +

      Advanced Settings

      +

      Security Policy

      +

      Specifies the security policy you can use if you select HTTPS as the frontend protocol. The following options are available (for details, see Security Policy):

      +
      • TLS-1-0
      • TLS-1-1
      • TLS-1-2
      • TLS-1-2-Strict
      +

      TLS-1-0

      +

      Mutual Authentication

      +

      Specifies whether to enable mutual authentication between the server and client. Both a server certificate and CA certificate are required for mutual authentication. You can enable this option if you have set Frontend Protocol to HTTPS.

      +

      N/A

      +

      CA Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol. This parameter is mandatory if you have set Frontend Protocol to HTTPS and enabled mutual authentication.

      +

      N/A

      +

      Obtain Load Balancer EIP

      +

      Specifies whether to pass the load balancer EIP to backend servers if you select HTTPS or HTTP for Frontend Protocol.

      +

      N/A

      +

      Description

      +

      Provides supplementary information about the listener.

      +

      N/A

      +

      Tag

      +

      Adds tags to the listener. Each tag is a key-value pair, and the tag key is unique.

      +

      11/11

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters for adding a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Backend Server Group

      +

      Specifies a group of servers with the same features to receive requests from the load balancer. Two options are available:

      +
      • Create new
      • Use existing NOTE:

        To associate an existing backend server group, ensure that it is not in use. Select the backend server group with the correct protocol. For example, if the frontend protocol is TCP, the backend protocol can only be TCP.

        + +
      +

      Create new

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of the request is input into a hash algorithm, and the resulting hash is used to identify a server in the static fragment table.
      + NOTE:

      Choose an appropriate algorithm based on your requirements for better traffic distribution.

      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client during one session are sent to the same backend server.

      + NOTE:

      For HTTP and HTTPS listeners, enabling or disabling sticky sessions may cause few seconds of service interruption.

      + +

      N/A

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hash key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Source IP address

      +

      Cookie Name

      +

      Specifies the cookie name. If you select Application cookie, enter a cookie name.

      +

      cookieName-qsps

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      N/A

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks. The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. This field is left blank by default and needs to be configured only if you use HTTP as the health check protocol.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      This parameter is optional. If you do not specify a health check port, a port of the backend server will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Provides some advanced features.

      +

      N/A

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout ranges from 1 to 50.

      +

      10

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    1. Click Finish.
    2. Click OK.
    + +

    Adding a Listener to a Shared Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener. Configure the parameters based on Table 4, Table 5, and Table 6. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Parameters for configuring a listener

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the listener name.

      +

      listener-pnqy

      +

      Frontend Protocol/Port

      +

      Specifies the protocol and port used by the load balancer to receive requests from clients and forward the requests to backend servers.

      +

      The port number ranges from 1 to 65535, and the following protocols are supported:

      +
      • HTTP
      +
      • TCP
      • HTTPS
      • UDP
      +

      TCP/80

      +

      Redirect

      +

      Redirects requests to an HTTPS listener when HTTP is used as the frontend protocol. If you have both HTTPS and HTTP listeners, you can use this function to redirect the requests from the HTTP listener to the HTTPS listener to ensure security.

      +

      If you create a redirect for an HTTP listener, the load balancer will return HTTP 301 Move Permanently to the clients.

      +

      N/A

      +

      Redirected To

      +

      Specifies the HTTPS listener to which requests are redirected.

      +

      N/A

      +

      Server Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol.

      +

      N/A

      +

      Enable SNI

      +

      Specifies whether to enable SNI when HTTPS is used as the frontend protocol.

      +

      SNI is an extension to TLS and is used when a server uses multiple domain names and certificates. This allows the client to submit the domain name information while sending an SSL handshake request. After the load balancer receives the request, the load balancer queries the corresponding certificate based on the domain name and returns it to the client. If no certificate is found, the load balancer will return a default certificate.

      +

      N/A

      +

      SNI Certificate

      +

      Specifies the certificate associated with the domain name when the frontend protocol is HTTPS and SNI is enabled.

      +

      Select an existing certificate or create one.

      +

      N/A

      +

      Advanced Settings

      +

      Security Policy

      +

      Specifies the security policy you can use if you select HTTPS as the frontend protocol. The following options are available (for details, see Security Policy):

      +
      • TLS-1-0
      • TLS-1-1
      • TLS-1-2
      • TLS-1-2-Strict
      +

      TLS-1-0

      +

      Idle Timeout

      +

      Specifies the length of time for a connection to keep alive, in seconds. If no request is received within this period, the load balancer closes the connection and establishes a new one with the client when the next request arrives. This parameter is mandatory when you have set Frontend Protocol to TCP, HTTP or HTTPS.

      +

      The idle timeout duration varies depending on the protocol:

      +
      • TCP: 10 to 4000
      • HTTP or HTTPS: 0 to 4000
      +
      • TCP: The default value is 300.
      • HTTP or HTTPS: The default value is 60.
      +

      Mutual Authentication

      +

      Specifies whether to enable mutual authentication between the server and client. Both a server certificate and CA certificate are required for mutual authentication. You can enable this option if you have set Frontend Protocol to HTTPS.

      +

      N/A

      +

      CA Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol. This parameter is mandatory if you have set Frontend Protocol to HTTPS and enabled mutual authentication.

      +

      N/A

      +

      Description

      +

      Provides supplementary information about the listener.

      +

      N/A

      +

      Tag

      +

      Adds tags to the listener. Each tag is a key-value pair, and the tag key is unique.

      +

      11/11

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 Parameters for adding a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Backend Server Group

      +

      Specifies a group of servers with the same features to receive requests from the load balancer. Two options are available:

      +
      • Create new
      • Use existing NOTE:

        To associate an existing backend server group, ensure that it is not in use. Select the backend server group with the correct protocol. For example, if the frontend protocol is TCP, the backend protocol can only be TCP.

        + +
      +

      Create new

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of the request is input into a hash algorithm, and the resulting hash is used to identify a server in the static fragment table.
      + NOTE:

      Choose an appropriate algorithm based on your requirements for better traffic distribution.

      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client during one session are sent to the same backend server.

      + NOTE:

      For HTTP and HTTPS listeners, enabling or disabling sticky sessions may cause few seconds of service interruption.

      + +

      N/A

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hash key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Source IP address

      +

      Cookie Name

      +

      Specifies the cookie name. If you select Application cookie, enter a cookie name.

      +

      cookieName-qsps

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      N/A

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks. The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. This field is left blank by default and needs to be configured only if you use HTTP as the health check protocol.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      This parameter is optional. If you do not specify a health check port, a port of the backend server will be used for health checks by default.

      + +

      80

      +

      Advanced Settings

      +

      Provides some advanced features.

      +

      N/A

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      10

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    1. Click Finish.
    2. Click OK.
    + + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_ug_jt_0012.html b/elb/umn/elb_ug_jt_0012.html new file mode 100644 index 000000000..5332e1146 --- /dev/null +++ b/elb/umn/elb_ug_jt_0012.html @@ -0,0 +1,23 @@ + + +

    Modifying or Deleting a Listener

    +

    Scenarios

    You can modify a listener as needed or delete a listener if you no longer need it.

    +

    Deleted listeners cannot be recovered.

    +

    Frontend Protocol/Port and Backend Protocol cannot be modified after you have configured them. If you want to modify the protocol or port of the listener, add another listener to the load balancer.

    + + +

    Modifying a Listener

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners.

      Shared load balancers: Locate the target listener and click on the right of its name. In the Modify Listener dialog box, modify the parameters as needed.

      +
    6. Click OK.
    + +

    Deleting a Listener

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
      • If the listener has backend servers associated, disassociate the backend servers before deleting the listener.
      • If HTTP requests are redirected to an HTTPS listener, delete the redirect before deleting the HTTPS listener.
      • If the listener has a forwarding policy, delete the forwarding policy before deleting the listener.
      • After a listener is deleted, the associated backend server group is also deleted.
      + +
    5. Click Listeners.
      • For a shared load balancer listener, locate the listener and click on the right of its name. In the Modify Listener dialog box, modify the parameters as needed.
      • For a classic load balancer listener, locate the listener and click Delete in the Operation column.
      +
    6. Click Yes.
    + + + + +Parent topic: Listener + + + diff --git a/elb/umn/elb_ug_jt_0013.html b/elb/umn/elb_ug_jt_0013.html new file mode 100644 index 000000000..f5c2c7bd0 --- /dev/null +++ b/elb/umn/elb_ug_jt_0013.html @@ -0,0 +1,19 @@ + + +

    Advanced Features of HTTP/HTTPS Listeners

    + + + + + diff --git a/elb/umn/elb_ug_jt_0021.html b/elb/umn/elb_ug_jt_0021.html new file mode 100644 index 000000000..a9d7a9f5c --- /dev/null +++ b/elb/umn/elb_ug_jt_0021.html @@ -0,0 +1,22 @@ + + +

    SNI Certificate (for HTTPS Listeners)

    +

    Scenarios

    If you have an application that can be accessed through multiple domain names and each domain name uses a different certificate, you can enable SNI when you add an HTTPS listener.

    +

    SNI is an extension to TLS and enables a server to present multiple certificates on the same IP address and TCP port number. This allows multiple secure (HTTPS) websites (or any other service over TLS) to be served by the same IP address without requiring all websites to use the same certificate. SNI allows the client to submit the domain name information while sending an SSL handshake request. Once the load balancer receives the request, it queries the right certificate based on the domain name and returns the corresponding certificate to the client. If no certificate is found, the load balancer will return a default certificate.

    +

    A maximum of 30 SNI certificates can be configured for each listener.

    + +

    Prerequisites

    You have created a certificate by performing the operations in Creating and Managing a Certificate.

    + + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    1. Locate the load balancer and click its name.
    2. Click Listeners.
      • For a shared load balancer, locate the listener and click Configure on the right of SNI.
      • For a classic load balancer, click Listeners, locate the listener, and click Modify in the Operation column. In the Modify Listener dialog box, modify the parameters as needed.
      +
    3. Enable SNI and select the SNI certificate to be used.
    4. Click OK.
    + + + + +Parent topic: Advanced Features of HTTP/HTTPS Listeners + + + diff --git a/elb/umn/elb_ug_jt_0022.html b/elb/umn/elb_ug_jt_0022.html new file mode 100644 index 000000000..8d1278ca9 --- /dev/null +++ b/elb/umn/elb_ug_jt_0022.html @@ -0,0 +1,377 @@ + + +

    Security Policy

    +

    Scenarios

    When you add HTTPS listeners, you can select desired security policies to improve service security. A security policy is a combination of TLS protocols and cipher suites.

    + +

    Adding a Security Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener.
    6. In the Add Listener dialog, expand Advanced Settings, and select a security policy. Table 1 lists the parameters to be configured. + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Security policy parameters

      Parameter

      +

      Description

      +

      TLS Version

      +

      Cipher Suite

      +

      TLS-1-0

      +

      TLS 1.0, TLS 1.1, and TLS 1.2 and supported cipher suites (high compatibility and moderate security)

      +

      TLS 1.2

      +

      TLS 1.1

      +

      TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA

      +

      TLS-1-1

      +

      TLS 1.1 and TLS 1.2 and supported cipher suites (moderate compatibility and moderate security)

      +

      TLS 1.2

      +

      TLS 1.1

      +

      TLS-1-2

      +

      TLS 1.2 and supported cipher suites (moderate compatibility and high security)

      +

      TLS 1.2

      +

      TLS-1-2-Strict

      +

      Strict TLS 1.2 and supported cipher suites (low compatibility and ultra-high security)

      +

      TLS 1.2

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384

      +
      + +
    7. Click OK.
    + +

    Differences Between Security Policies

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Differences among the four types of security policies

    Security Policy

    +

    TLS-1-0

    +

    TLS-1-1

    +

    TLS-1-2

    +

    TLS-1-2-Strict

    +

    TLS-1-2-FS

    +

    TLS versions

    +

    Protocol-TLS 1.3

    +

    -

    +

    -

    +

    -

    +

    -

    +

    +

    Protocol-TLS 1.2

    +

    +

    +

    +

    +

    +

    Protocol-TLS 1.1

    +

    +

    +

    -

    +

    -

    +

    -

    +

    Protocol-TLS 1.0

    +

    +

    -

    +

    -

    +

    -

    +

    -

    +

    Cipher suites

    +

    EDHE-RSA-AES128-GCM-SHA256

    +

    +

    +

    +

    +

    -

    +

    ECDHE-RSA-AES256-GCM-SHA384

    +

    +

    +

    +

    +

    +

    ECDHE-RSA-AES128-SHA256

    +

    +

    +

    +

    +

    +

    ECDHE-RSA-AES256-SHA384

    +

    +

    +

    +

    +

    +

    AES128-GCM-SHA256

    +

    +

    +

    +

    +

    -

    +

    AES256-GCM-SHA384

    +

    +

    +

    +

    +

    -

    +

    AES128-SHA256

    +

    +

    +

    +

    +

    -

    +

    AES256-SHA256

    +

    +

    +

    +

    +

    -

    +

    ECDHE-RSA-AES128-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    ECDHE-RSA-AES256-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    AES128-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    AES256-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    ECDHE-ECDSA-AES128-GCM-SHA256

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES128-SHA256

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES128-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    ECDHE-ECDSA-AES256-GCM-SHA384

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES256-SHA384

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES256-SHA

    +

    +

    +

    +

    -

    +

    -

    +
    + + +

    Modifying a Security Policy

    When you modify a security policy, ensure that the security group containing backend servers allows access from 100.125.0.0/16 and allows ICMP packets for UDP health checks. Otherwise, backend servers will be considered unhealthy, and routing will be affected.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Locate the listener and click on the right of its name.
    6. On the Modify Listener page, expand Advanced Settings and modify the security policy.
    7. Click OK.
    + + + + +Parent topic: Advanced Features of HTTP/HTTPS Listeners + + + diff --git a/elb/umn/elb_ug_pe_0000.html b/elb/umn/elb_ug_pe_0000.html new file mode 100644 index 000000000..ced5bc159 --- /dev/null +++ b/elb/umn/elb_ug_pe_0000.html @@ -0,0 +1,19 @@ + + +

    Quotas

    +

    What Is Quota?

    Quotas are enforced for service resources on the platform to prevent unforeseen spikes in resource usage. Quotas can limit the number or amount of resources available to users, such as the maximum number of ECSs or EVS disks that can be created.

    +

    If the existing resource quota cannot meet your service requirements, you can apply for a higher quota.

    + +

    How Do I View My Quotas?

    1. Log in to the management console.
    2. Click in the upper left corner and select the desired region and project.
    3. In the upper right corner of the page, click .

      The Service Quota page is displayed.

      +
    4. View the used and total quota of each type of resources on the displayed page.

      If a quota cannot meet service requirements, apply for a higher quota.

      +
    + +

    How Do I Apply for a Higher Quota?

    The system does not support online quota adjustment. If you need to adjust a quota, call the hotline or send an email to the customer service mailbox. Customer service personnel will timely process your request for quota adjustment and inform you of the real-time progress by making a call or sending an email.

    +

    Before dialing the hotline number or sending an email, make sure that the following information has been obtained:

    + +

    Learn how to obtain the service hotline and email address.

    + + + diff --git a/elb/umn/elb_ug_qy_0002.html b/elb/umn/elb_ug_qy_0002.html new file mode 100644 index 000000000..d9459921d --- /dev/null +++ b/elb/umn/elb_ug_qy_0002.html @@ -0,0 +1,12 @@ + + +

    Load Balancer Migration

    +

    + + + + + diff --git a/elb/umn/elb_ug_rzfw_0001.html b/elb/umn/elb_ug_rzfw_0001.html new file mode 100644 index 000000000..6d4504f4f --- /dev/null +++ b/elb/umn/elb_ug_rzfw_0001.html @@ -0,0 +1,87 @@ + + +

    Access Logging

    +

    Access logs record HTTP and HTTPS requests made to load balancers, and these logs are stored in an OBS bucket. Only public network classic load balancers support access logging.

    +

    Before configuring access logging, ensure that you have created a load balancer and OBS bucket. For details, see "Creating a Bucket" in the Object Storage Service User Guide.

    +
    1. Grant read and write permissions to the ELB administrator.
      1. Log in to the management console. On the Object Storage Service page, click the name of the destination bucket.
      2. In the navigation pane on the left, choose Permissions.
      3. On the displayed page, click Bucket ACLs.
      4. Click Add and set the parameters.
      + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Account

      +

      Specifies the account ID or account name of the ELB administrator.

      +

      N/A

      +

      Access to Bucket

      +

      Specifies the permissions to read data from or write data to an OBS bucket.

      +

      Read/Write

      +

      Access to ACL

      +

      Allows the authorized user to read or write the bucket ACL.

      +

      Read/Write

      +
      + +
      1. Click Save.
      +
    2. Associate the bucket with a load balancer.
      1. Locate the load balancer and click More in the Operation column.
      2. Select Configure Access Log.
      3. In the Configure Access Log dialog box, enable access logging.
      4. Select the associated OBS bucket and configure log information.Figure 1 Configure Access Log
        + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Description

        +

        Example Value

        +

        Enable Logging

        +

        Whether to enable access logging

        +

        N/A

        +

        Backup Interval (min)

        +

        Log backup interval in minutes, which is 60 minutes by default

        +

        60

        +

        OBS Bucket

        +

        Destination bucket with read and write permissions

        +

        obs01

        +

        Prefix

        +

        Log storage directory

        +

        If this field is left blank, logs will be saved to the root directory of the destination bucket.

        +

        log01

        +
        + +
      +
    + + + diff --git a/elb/umn/elb_ug_sj_0000.html b/elb/umn/elb_ug_sj_0000.html new file mode 100644 index 000000000..ff317bbea --- /dev/null +++ b/elb/umn/elb_ug_sj_0000.html @@ -0,0 +1,13 @@ + + +

    Auditing

    + + + + + diff --git a/elb/umn/elb_ug_sj_0001.html b/elb/umn/elb_ug_sj_0001.html new file mode 100644 index 000000000..aa56f2d87 --- /dev/null +++ b/elb/umn/elb_ug_sj_0001.html @@ -0,0 +1,206 @@ + + +

    Key Operations Recorded by CTS

    +

    You can use CTS to record operations on ELB for query, auditing, and backtracking.

    +

    Table 1 lists the operations recorded by CTS.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ELB operations recorded by CTS

    Action

    +

    Resource Type

    +

    Trace

    +

    Configuring access logs

    +

    accesslog

    +

    create access log

    +

    Deleting access logs

    +

    accesslog

    +

    delete access log

    +

    Creating a certificate

    +

    certificate

    +

    create certificate

    +

    Modifying a certificate

    +

    certificate

    +

    update certificate

    +

    Deleting a certificate

    +

    certificate

    +

    delete certificate

    +

    Creating a health check

    +

    healthmonitor

    +

    create healthmonitor

    +

    Modifying a health check

    +

    healthmonitor

    +

    update healthmonitor

    +

    Deleting a health check

    +

    healthmonitor

    +

    delete healthmonitor

    +

    Adding a forwarding policy

    +

    l7policy

    +

    create forwarding policy

    +

    Modifying a forwarding policy

    +

    l7policy

    +

    update forwarding policy

    +

    Deleting a forwarding policy

    +

    l7policy

    +

    delete forwarding policy

    +

    Adding a forwarding rule

    +

    l7rule

    +

    create forwarding rule

    +

    Modifying a forwarding rule

    +

    l7rule

    +

    update forwarding rule

    +

    Deleting a forwarding rule

    +

    l7rule

    +

    delete forwarding rule

    +

    Adding a listener

    +

    listener

    +

    create listener

    +

    Modifying a listener

    +

    listener

    +

    update listener

    +

    Deleting a listener

    +

    listener

    +

    delete listener

    +

    Creating a load balancer

    +

    loadbalancer

    +

    create loadbalancer

    +

    Modifying a load balancer

    +

    loadbalancer

    +

    update loadbalancer

    +

    Deleting a load balancer

    +

    loadbalancer

    +

    delete loadbalancer

    +

    Adding a backend server

    +

    member

    +

    add backend ecs

    +

    Modifying a backend server

    +

    member

    +

    update backend ecs

    +

    Removing a backend server

    +

    member

    +

    remove backend ecs

    +

    Creating a backend server group

    +

    pool

    +

    create backend member group

    +

    Modifying a backend server group

    +

    pool

    +

    update backend member group

    +

    Deleting a backend server group

    +

    pool

    +

    delete backend member group

    +
    + + + + +Parent topic: Auditing + + + diff --git a/elb/umn/elb_ug_sj_0002.html b/elb/umn/elb_ug_sj_0002.html new file mode 100644 index 000000000..d4382cc96 --- /dev/null +++ b/elb/umn/elb_ug_sj_0002.html @@ -0,0 +1,23 @@ + + +

    Viewing Traces

    +

    Scenarios

    CTS records the operations performed on ELB and allows you to view the operation records of the last seven days on the CTS console. To query these records, perform the following operations.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Under Management & Deployment, click Cloud Trace Service.
    4. In the navigation pane on the left, choose Trace List.
    5. Specify the filters used for querying traces. The following filters are available:Figure 1 Filters
      +
      • Trace Type, Trace Source, Resource Type, and Search By

        Select a filter from the drop-down list.

        +

        If you select Trace name for Search By, you need to select a specific trace name.

        +

        If you select Resource ID for Search By, select or enter a specific resource ID.

        +

        If you select Resource name for Search By, select or enter a specific resource name.

        +
      • Operator: Select a specific operator (at the user level rather than the tenant level).
      • Trace Status: Available options include All trace statuses, Normal, Warning, and Incident. You can only select one of them.
      • Time range: You can query traces generated at any time range of the last seven days.
      +
    6. Click on the left of the required trace to expand its details.Figure 2 Expanding trace details
      +
    7. Click View Trace in the Operation column to view trace details.Figure 3 View Trace
      +

      For details about key fields in the trace, see the Cloud Trace Service User Guide.

      +
    + + + + +Parent topic: Auditing + + + diff --git a/elb/umn/elb_ug_zs_0000.html b/elb/umn/elb_ug_zs_0000.html new file mode 100644 index 000000000..b89da207a --- /dev/null +++ b/elb/umn/elb_ug_zs_0000.html @@ -0,0 +1,15 @@ + + +

    Certificate

    + + + + + diff --git a/elb/umn/elb_ug_zs_0003.html b/elb/umn/elb_ug_zs_0003.html new file mode 100644 index 000000000..3e99aaf7e --- /dev/null +++ b/elb/umn/elb_ug_zs_0003.html @@ -0,0 +1,28 @@ + + +

    Converting Certificate Formats

    +

    Scenarios

    ELB supports certificates only in PEM format. If you have a certificate in any other format, you must convert it to a PEM-encoded certificate. There are some common methods for converting a certificate from any other format to PEM.

    + +

    From DER to PEM

    The DER format is usually used on a Java platform.

    +

    Run the following command to convert the certificate format:

    +
    openssl x509 -inform der -in certificate.cer -out certificate.pem
    +

    Run the following command to convert the private key format:

    +
    openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem
    + +

    From P7B to PEM

    The P7B format is usually used by Windows Server and Tomcat.

    +

    Run the following command to convert the certificate format:

    +
    openssl pkcs7 -print_certs -in incertificate.p7b -out outcertificate.cer
    + +

    From PFX to PEM

    The PFX format is usually used by Windows Server.

    +

    Run the following command to convert the certificate format:

    +
    openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
    +

    Run the following command to convert the private key format:

    +
    openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
    + + + + +Parent topic: Certificate + + + diff --git a/elb/umn/en-us_elb_01_0004.html b/elb/umn/en-us_elb_01_0004.html new file mode 100644 index 000000000..d2dacc1bb --- /dev/null +++ b/elb/umn/en-us_elb_01_0004.html @@ -0,0 +1,73 @@ + + +

    Load Balancing on a Public or Private Network

    +

    A load balancer can work on either a public or private network.

    +

    Load Balancing on a Public Network

    You can bind an EIP to a load balancer so that it can receive requests from clients on the Internet and route the requests to backend servers.

    +Figure 1 Load balancing on a public network
    + +

    Load Balancing on a Private Network

    A load balancer has only a private IP address to receive requests from clients in a VPC and route the requests to backend servers in the same VPC. This type of load balancer can only be accessed in a VPC.

    +Figure 2 Load balancing on a private network
    + +

    Network Types and Load Balancer Types

    + + + + + + + + + + + + + + + + +
    Table 1 Dedicated load balancers and their network types

    Load Balancer Type

    +

    Network Type

    +

    Network Type

    +

    Dedicated load balancers

    +

    Public IPv4 network

    +

    Each load balancer has an IPv4 EIP bound to enable it to route requests over the Internet.

    +

    Private IPv4 network

    +

    Each load balancer has only a private IPv4 address and can route requests in a VPC.

    +

    IPv6 network

    +

    Each load balancer has an IPv6 address bound.

    +
    • If the IPv6 address is added to a shared bandwidth, the load balancer can route requests over the Internet.
    • If the IPv6 address is not added to a shared bandwidth, the load balancer can route requests only in a VPC.
    +
    + + + + + + + + + + + + + + + +
    Table 2 Shared load balancers and their network types

    Load Balancer Type

    +

    Network Type

    +

    Description

    +

    Shared load balancers

    +

    Public network

    +

    Load balancers can route requests on both public and private networks.

    +
    • Each load balancer has an EIP bound to enable it to route requests over the Internet.
    • The load balancer also has a private IP address and can route requests in a VPC.
    +

    Private network

    +

    Each load balancer has only a private IP address and can route requests in a VPC.

    +
    + + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/en-us_elb_01_0007.html b/elb/umn/en-us_elb_01_0007.html new file mode 100644 index 000000000..c137a5d01 --- /dev/null +++ b/elb/umn/en-us_elb_01_0007.html @@ -0,0 +1,191 @@ + + +

    Differences Between Classic and Shared Load Balancers

    +

    Each type of load balancer has their advantages.

    + +

    Table 1 compares the features supported by the two types of load balancers. √ indicates that an item is supported, and — indicates that an item is not supported.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Features supported by each type of load balancers

    Feature

    +

    Description

    +

    Classic

    +

    Shared

    +

    Load balancing over public and private networks

    +
    • Each load balancer on a public network has a public IP address bound to it and routes requests from clients to backend servers over the Internet.
    • Load balancers on a private network work within a VPC and route requests from clients to backend servers in the same VPC.
    +

    +

    +

    Layer 4 and Layer 7 load balancing

    +
    • Layer 4 load balancing: After receiving TCP or UDP requests from the clients, the load balancer directly routes the requests to backend servers. Load balancing at Layer 4 features high routing efficiency.
    • Layer 7 load balancing: After receiving an HTTP or HTTPS request, the load balancer identifies the fields in the HTTP/HTTPS packet header and routes the request based on these fields. Though the routing efficiency is lower than that at Layer 4, load balancing at Layer 7 provides some advanced features such as encrypted transmission and cookie-based sticky sessions.
    +

    √ (UDP is not supported for load balancers on a private network.)

    +

    +

    Load balancing algorithm

    +

    Round robin, least connections, and source IP hash

    +

    +

    +

    Sticky session

    +

    If you enable sticky sessions, requests from the same client will be routed to the same backend server during the session.

    +

    +

    +

    WebSocket protocol

    +

    WebSocket is a new HTML5 protocol that provides full-duplex communication between the browser and the server. WebSocket saves server resources and bandwidth, and enables real-time communication.

    +

    +

    +

    Domain name- or URL-based forwarding

    +

    ELB allows you to add forwarding policies to forward requests to different backend server groups based on the domain names or URLs specified in the forwarding policies.

    +

    +

    √ (Currently, you can add forwarding policies only to HTTP or HTTPS listeners.)

    +

    Adding ECSs as backend servers

    +

    You can add ECSs to backend server groups to handle requests from load balancers.

    +

    +

    +

    Whitelist-based access control

    +

    You can whitelist the IP addresses that can access a listener.

    +

    +

    +

    Standard OpenStack APIs

    +

    OpenStack APIs are supported and are compatible with self-developed APIs.

    +

    +

    +

    Adding BMSs as backend servers

    +

    BMSs can also be used as backend servers to handle requests distributed by load balancers.

    +

    +

    +

    SNI for certificates

    +

    Server Name Indication (SNI) is an extension to Transport Layer Security (TLS) and is used in cases that a server uses multiple domain names and certificates. After SNI is enabled, certificates corresponding to the domain names are required.

    +

    +

    +

    SSL protocol

    +

    Load balancers use SSL to receive requests from clients.

    +

    +

    +

    OBS storage for access logs

    +

    Access logs of load balancers can be dumped to OBS buckets for storage.

    +

    +

    +

    Server weight

    +

    You can configure different weights for backend servers when you select the round robin or least connections as the load balancing algorithm.

    +

    +

    +

    Modifying certificate content

    +

    You can modify the content of a certificate.

    +

    +

    +

    Mutual authentication

    +

    The identities of both communication parties are authenticated to ensure security. You need to deploy both the server certificate and client certificate. Only HTTPS listeners support this feature.

    +

    +

    +

    HTTP redirection

    +

    HTTP traffic is redirected to HTTPS. When the client sends an HTTP request, the backend server returns an HTTPS response.

    +

    +

    +

    Performance monitoring on a per listener basis

    +

    Cloud Eye allows you to monitor your resources, including load balancers.

    +

    +

    +
    + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/en-us_elb_02_0001.html b/elb/umn/en-us_elb_02_0001.html new file mode 100644 index 000000000..0bac0cfaa --- /dev/null +++ b/elb/umn/en-us_elb_02_0001.html @@ -0,0 +1,155 @@ + + +

    Using Shared Load Balancers — Advanced Level

    +

    Scenarios

    You have two web applications deployed on two ECSs separately, and the web applications provide one domain name but different URLs for users to access.

    +

    To forward requests based on URLs, you need to create a load balancer, add an HTTP or HTTPS listener, and add forwarding policies to specify the URLs.

    +

    An HTTP listener is used as an example to describe how to route requests from two URLs (/ELB01 and /ELB02) of the same domain name (www.example.com) to different backend servers.

    + +

    Prerequisites

    + +

    Creating ECSs

    ECSs are used as backend servers.

    +

    Each ECS needs an EIP to allow you to deploy the backend service on each ECS. In actual use, you can unbind the EIP from each ECS if the ECSs do not need to access the Internet or provide Internet-accessible services after the deployment is complete. Determine whether you need an EIP for your load balancer by referring to Load Balancing on a Public or Private Network.

    + +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. Click Create ECS, configure the parameters, and click Create Now.

      +

      +The following table lists the specifications of the two ECSs. + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 ECS specifications

      Item

      +

      Example Value

      +

      Name

      +

      ECS01 and ECS02

      +

      OS

      +

      CentOS 7.2 64bit

      +

      vCPUs

      +

      2

      +

      Memory

      +

      4 GB

      +

      System disk

      +

      40 GB

      +

      Data disk

      +

      100 GB

      +

      Bandwidth

      +

      5 Mbit/s

      +
      + + +
    5. Submit your request.
    +

    Deploying the Application

    Deploy Nginx on the two ECSs and edit two HTML pages for the web applications so that a page with message "Welcome to ELB test page one!" is returned when ECS01 is accessed, and the other page with message "Welcome to ELB test page two!" is returned when ECS02 is accessed.

    +
    1. Log in to the ECSs.
    2. Install and start Nginx.
      1. Install Nginx:

        yum -y install nginx

        +
      2. Start Nginx:

        systemctl start nginx.service

        +
      3. Enter http://EIP bound to the ECS in the address box of your browser.If the following page is displayed, Nginx has been installed.Figure 1 Nginx installed successfully
        + +
      +
    3. Modify the HTML page of ECS01.Move the index.html file from the default root directory of Nginx /usr/share/nginx/html to the ELB01 directory and modify the file to identify access to ECS01.
      1. Create the ELB01 directory and copy the index.html file to this directory:

        mkdir /usr/share/nginx/html/ELB01

        +

        cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB01/

        +
      2. Open the index.html file.

        vim /usr/share/nginx/html/ELB01/index.html

        +
      3. Press i to enter editing mode.
      4. Modify the index.html file to be as follows:
         ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page one!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB01</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                </div>
        +            </div>
        +        </div>
        +    </body>
        +
      5. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    4. Modify the HTML page of ECS02.Move the index.html file from the default root directory of Nginx /usr/share/nginx/html to the ELB02 directory and modify the file to identify access to ECS02.
      1. Create the ELB02 directory and copy the index.html file to this directory:

        mkdir /usr/share/nginx/html/ELB02

        +

        cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB02/

        +
      2. Open the index.html file.

        vim /usr/share/nginx/html/ELB02/index.html

        +
      3. Press i to enter editing mode.
      4. Modify the index.html file to be as follows:
        ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page two!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB02</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                </div>
        +             </div>
        +        </div>
        +    </body>
        +
      5. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    5. Use your browser to access http://ECS01 EIP/ELB01/ and http://ECS02 EIP/ELB02/ to verify that Nginx has been deployed.

      If the modified HTML pages are displayed, Nginx has been deployed.

      +
      • HTML page of ECS01Figure 2 Nginx successfully deployed on ECS01
        +
      • HTML page of ECS02Figure 3 Nginx successfully deployed on ECS02
        +
      +
    + +

    Creating a Load Balancer

    1. In the upper left corner of the page, click and select the desired region and project.
    2. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    3. Click Create Elastic Load Balancer and then configure the parameters.
    4. Click Create Now.
    5. Confirm the configuration and submit your request.
    6. View the newly created load balancer in the load balancer list.
    + +

    Adding a Listener

    Add a listener to the created load balancer. When you add the listener, create a backend server group, configure a health check, and add the two ECSs to the created backend server group.

    +Configure two forwarding policies to forward HTTP requests to the two ECSs, for example, requests from www.example.com/ELB01/ to ECS01, and those from www.example.com/ELB02/ to ECS02.Figure 4 Traffic forwarding
    + +
    1. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    2. Locate the created load balancer and click its name.
    3. Under Listeners, click Add Listener.
    4. Configure the listener and click Next.
      • Name: Enter a name, for example, listener-HTTP.
      • Frontend Protocol/Port: Select a protocol and enter a port for the load balancer to receive requests. For example, set it to HTTP and 80.
      +
    5. Create a backend server group, configure a health check, and click Finish.
      • Backend server group
        • Name: Enter a name, for example, server_group-ELB.
        • Load Balancing Algorithm: Select an algorithm that the load balancer will use to route requests, for example, Weighted round robin.
        +
      +
      • Health check
        • Protocol: Select a protocol for the load balancer to perform health checks on backend servers. If the load balancer uses TCP, HTTP, or HTTPS to receive requests, the health check protocol can be TCP or HTTP. Here we use HTTP as an example. Note that the protocol cannot be changed after the listener is added.
        • Domain Name: Enter a domain name that will be used for health checks, for example, www.example.com.
        • Port: Enter a port for the load balancer to perform health checks on backend servers, for example, 80.
        +
      +
    + +

    Adding Forwarding Policies

    1. Click the name of the newly added listener and then click Add next to Forwarding Policies.
    2. Configure the forwarding policy and click Next.
      • Name: Enter a name for the forwarding policy, for example, forwarding_policy-ELB01.
      • Domain Name: Enter a domain name that will be used to forward the requests, for example, www.example.com. The domain name in the request must exactly match that specified in the forwarding policy.
      • URL: You can also specify a URL to forward the requests, for example, /ELB01/.
      • URL Matching Rule: Select the rule for matching specified URL string with the requested URL. Three options are available, Exact match, Prefix match, and Regular expression match. Exact match enjoys the highest priority, and Regular expression match the lowest priority. Select Exact match here.
      +
    3. Add the backend server group and configure a health check.
      • Backend server group
        • Name: Enter a name, for example, server_group-ELB01.
        • Load Balancing Algorithm: Select an algorithm that the load balancer will use to route requests, for example, Weighted round robin.
        +
      +
      • Health check
        • Protocol: Select a protocol for the load balancer to perform health checks on backend servers. If the load balancer uses TCP, HTTP, or HTTPS to receive requests, the health check protocol can be TCP or HTTP. Here we use HTTP as an example. Note that the protocol cannot be changed after the listener is added.
        • Domain Name: Enter a domain name that will be used for health checks, for example, www.example.com.
        • Port: Enter a port for the load balancer to perform health checks on backend servers, for example, 80.
        +
      +
    4. Select the newly added forwarding policy. On the Backend Server Groups tab page on the right, click Add.
    5. Select the server you want to add, set the backend port, and click Finish.
      • Backend server: ECS01
      • Backend port: Set it to 80. Backend servers will use this port to communicate with the load balancer.
      +
    6. Repeat 1 to 5 to add another forwarding policy, create a backend server group, and add ECS02 to the backend server group. Configure the parameters.
    + +

    Verifying Load Balancing

    After the load balancer is configured, you can access the domain name or the specified URL to check whether the two ECSs are accessible.

    +
    1. Modify the C:\Windows\System32\drivers\etc\hosts file on your PC to map the domain name to the load balancer EIP.View the load balancer EIP on the basic information page of the load balancer.Figure 5 hosts file on your PC
      + +
    2. On the CLI of your PC, run the following command to check whether the domain name is mapped to the load balancer EIP:

      ping www.example.com

      +

      If data packets are returned, the domain name has been mapped to the load balancer EIP.

      +
    3. Use your browser to access http://www.example.com/ELB01/. If the following page is displayed, the load balancer has routed the request to ECS01.Figure 6 Accessing ECS01
      +

      ELB01/ indicates that the default directory named ECS01 is accessed, while ELB01 indicates the file name. Therefore, the slash (/) following ELB01 must be retained.

      + +
    4. Use your browser to access http://www.example.com/ELB02/. If the following page is displayed, the load balancer has routed the request to ECS02.Figure 7 Accessing ECS02
      +
    + + + + +Parent topic: Getting Started + + + diff --git a/elb/umn/en-us_elb_03_0001.html b/elb/umn/en-us_elb_03_0001.html new file mode 100644 index 000000000..2bb695a53 --- /dev/null +++ b/elb/umn/en-us_elb_03_0001.html @@ -0,0 +1,25 @@ + + +

    Load Balancer

    + + + + + diff --git a/elb/umn/en-us_elb_03_0003.html b/elb/umn/en-us_elb_03_0003.html new file mode 100644 index 000000000..df5c95da0 --- /dev/null +++ b/elb/umn/en-us_elb_03_0003.html @@ -0,0 +1,46 @@ + + +

    Access Control

    +

    Access control allows you to whitelist certain IP addresses to allow them to access a listener.

    + + +

    Adding a Whitelist

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    1. Locate the load balancer and click its name.
    2. Click Listeners, locate the listener, and click its name. In the Basic Information area, click Configure next to Access Control. + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Access Control

      +

      Enabled

      +
      • If access control is enabled and no whitelist is set, no IP address can access the listener.
      • If access control is enabled and a whitelist is set, only IP addresses in the whitelist can access the listener.
      +

      Disabled

      +
      • If access control is disabled, the listener can be accessed from any IP address.
      +

      N/A

      +

      Whitelist

      +

      Lists the IP addresses that can access the listener.

      + NOTE:
      • A maximum of 300 IP addresses or IP address ranges are supported. A comma (,) is used to separate every two entries.
      • The whitelist cannot contain IPv6 addresses.
      + +

      10.168.2.24,10.168.16.0/24

      +
      + +
    3. Click OK.
    + + + + +Parent topic: Listener + + + diff --git a/elb/umn/en-us_elb_03_0005.html b/elb/umn/en-us_elb_03_0005.html new file mode 100644 index 000000000..9f9fc8206 --- /dev/null +++ b/elb/umn/en-us_elb_03_0005.html @@ -0,0 +1,50 @@ + + +

    Creating and Managing a Certificate

    +

    Scenarios

    To enable authentication for securing data transmission over HTTPS, ELB allows you to deploy certificates on load balancers.

    + + + +

    Creating a Certificate

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the navigation pane on the left, choose Certificates.
    5. Click Create Certificate. In the Create Certificate dialog box, configure the following parameters:
      • Certificate Name
      • Certificate Type
        • Server certificate: used for SSL handshake negotiations if an HTTPS listener is used. Both the certificate content and private key are required.
        • CA certificate: issued by a certificate authority (CA) and used to verify the certificate issuer. If HTTPS mutual authentication is required, HTTPS connections can be established only when the client provides a certificate issued by a specific CA.
        +
      • Domain Name: If the certificate is used for SNI, a domain name must be specified.
      • Certificate Content: The content must be in PEM format.

        Click Upload and select the certificate to be uploaded. Ensure that your browser is of the latest version.

        +

        The format of the certificate body is as follows:

        +
        -----BEGIN CERTIFICATE-----
        +Base64–encoded certificate
        +-----END CERTIFICATE-----
        +
      • Private Key

        Click Upload and select the private key to be uploaded. Ensure that your browser is of the latest version.

        +Private Key: This must be an unencrypted private key. The format is as follows:
        -----BEGIN PRIVATE KEY-----
        +[key]
        +-----END PRIVATE KEY-----
        +

        If there is a certificate chain, you need to configure the certificates in the following sequence: sub-certificate (server certificate), intermediate certificate, and root certificate. If the root certificate has been preset on the server and is not contained in the issued certificates, first configure the sub-certificate (server certificate) and then the intermediate certificate.

        + + +

        For example, if a CA issued a private key private.key and two certificates: a sub-certificate (server certificate) server.cer and an intermediate certificate mid.crt, paste the content of server.cer in the Certificate Content text box, press Enter, then paste the content of mid.crt in the Certificate Content text box, and paste the content of private.key in the Private Key text box to make the entire certificate chain take effect. The format of the certificate body in a certificate chain is as follows:

        +

        Certificate body

        +
        -----BEGIN CERTIFICATE-----
        +Content of the server certificate file server.cer
        +-----END CERTIFICATE-----
        +-----BEGIN CERTIFICATE-----
        +Content of the intermediate certificate file mid.crt
        +-----END CERTIFICATE-----
        +

        Private key

        +
        -----BEGIN PRIVATE KEY-----
        +Content of the private key file private.key
        +-----END PRIVATE KEY-----
        +
      • Domain Name

        If the created certificate is used for SNI, you need to specify a domain name. Only one domain name can be specified for each certificate, and the domain name must be the same as that in the certificate.

        +
      • Description
      +
    1. Click OK.
    + +

    Binding a Certificate

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener.
    6. In the Add Listener dialog box, configure the parameters. When Frontend Protocol is set to HTTPS, a server certificate must be bound to the listener.
    7. Click OK.
    + +

    Deleting a Certificate

    Only certificates that are not in use can be deleted.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the navigation pane on the left, choose Certificates.
    5. Locate the certificate and click Delete in the Operation column.
    6. Click Yes.
    + +

    Modifying a Certificate

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the navigation pane on the left, choose Certificates.
    5. Locate the certificate and click Modify in the Operation column.
    6. Modify the parameters as required.
    7. Click OK.
    + + + + +Parent topic: Certificate + + + diff --git a/elb/umn/en-us_elb_05_0004.html b/elb/umn/en-us_elb_05_0004.html new file mode 100644 index 000000000..76eea2f83 --- /dev/null +++ b/elb/umn/en-us_elb_05_0004.html @@ -0,0 +1,12 @@ + + +

    How Many Load Balancers and Listeners Can I Have?

    +

    By default, you can use an account to create a maximum of 50 shared and dedicated load balancers and 100 listeners. If you need more load balancers or listeners, apply to increase the quotas.

    +

    All load balancers in your account share the quota of listeners.

    + + + +Parent topic: ELB Functionality + + + diff --git a/elb/umn/en-us_elb_05_0008.html b/elb/umn/en-us_elb_05_0008.html new file mode 100644 index 000000000..495970ff3 --- /dev/null +++ b/elb/umn/en-us_elb_05_0008.html @@ -0,0 +1,263 @@ + + +

    What Are the Relationships Between Load Balancing Algorithms and Sticky Session Types?

    +

    Sticky sessions ensure that requests from the same client are forwarded to the same backend server. ELB supports three types of sticky sessions. Table 3 lists the relationships between load balancing algorithms and sticky session types of classic load balancers. Table 1 lists the relationships between load balancing algorithms and sticky session types of shared load balancers, and Table 2 lists the relationships between load balancing algorithms and sticky session types of dedicated load balancers.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Sticky sessions supported by shared load balancers

    Load Balancing Algorithm

    +

    Sticky Session Type

    +

    Layer 4 (TCP/UDP)

    +

    Layer 7 (HTTP/HTTPS)

    +

    Weighted round robin

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Supported

    +

    Application cookie

    +

    N/A

    +

    Supported

    +

    Weighted least connections

    +

    Source IP address

    +

    Not supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Source IP hash

    +

    Source IP address

    +

    N/A

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Sticky sessions supported by dedicated load balancers

    Load Balancing Algorithm

    +

    Sticky Session Type

    +

    Layer 4 (TCP/UDP)

    +

    Layer 7 (HTTP/HTTPS)

    +

    Weighted round robin

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Weighted least connections

    +

    Source IP address

    +

    Not supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Source IP hash

    +

    Source IP address

    +

    N/A

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Session stickiness of classic load balancers

    Load Balancing Algorithm

    +

    Sticky Session Type

    +

    Layer 4 (TCP/UDP)

    +

    Layer 7 (HTTP/HTTPS)

    +

    Round robin

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Least connections

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Source IP hash

    +

    Source IP address

    +

    N/A

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +
    + +

    Generally, the weighted round robin algorithm is recommended. Sticky sessions at Layer 4 use source IP addresses to main sessions, and sticky sessions at Layer 7 use load balancer cookies.

    + + + +Parent topic: Listener + + + diff --git a/elb/umn/en-us_elb_05_0011.html b/elb/umn/en-us_elb_05_0011.html new file mode 100644 index 000000000..f5098581b --- /dev/null +++ b/elb/umn/en-us_elb_05_0011.html @@ -0,0 +1,17 @@ + + +

    Is an EIP Exclusively Assigned to a Load Balancer?

    +

    During the lifecycle of a classic load balancer, the EIP is exclusively assigned to it. The EIP is released only when you delete the load balancer.

    +

    For each shared load balancer, the bound EIP is not exclusive. However, the EIP can be unbound from the load balancer and bound to other resources. After you unbind the EIP, the load balancer can no longer receive requests over the Internet.

    +

    For each dedicated load balancer, the bound EIP is not exclusive. However, the EIP can be unbound from the load balancer and bound to other resources. After you unbind the EIP, the load balancer can no longer receive requests over the Internet.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + +

    You can unbind an EIP from a dedicated load balancer only on the ELB console.

    + + + + +Parent topic: ELB Functionality + + + diff --git a/elb/umn/en-us_elb_06_0000.html b/elb/umn/en-us_elb_06_0000.html new file mode 100644 index 000000000..c31a15a8c --- /dev/null +++ b/elb/umn/en-us_elb_06_0000.html @@ -0,0 +1,11 @@ + + +

    Appendix

    + + + + + diff --git a/elb/umn/en-us_elb_06_0001.html b/elb/umn/en-us_elb_06_0001.html new file mode 100644 index 000000000..1a2ec9ad9 --- /dev/null +++ b/elb/umn/en-us_elb_06_0001.html @@ -0,0 +1,124 @@ + + +

    Configuring the TOA Plug-in

    +

    Scenarios

    ELB provides customized strategies for managing service access. Before customizing these strategies, ELB needs to obtain the client's IP address contained in the access request. To obtain the IP addresses, you can install a TOA kernel module on backend servers.

    +

    This section provides detailed operations for you to compile the module in the OS if you use TCP to distribute incoming traffic.

    +

    The operations for Linux OSs with kernel version of 2.6.32 are different from those for Linux OSs with kernel version of 3.0 or later.

    + + + +

    Prerequisites

    + +

    Procedure

    +
    1. Prepare the compilation environment.

      During the installation, download the required module development package from the Internet if it cannot be found in the source.

      + +

      The following are operations for compiling the module in different Linux OSs. Perform appropriate operations.

      +
      • CentOS
        1. Run the following command to install the GCC:

          sudo yum install gcc

          +
        2. Run the following command to install the make tool:

          sudo yum install make

          +
        3. Run the following command to install the module development package (the package header and module library must have the same version as the kernel):

          sudo yum install kernel-devel-`uname -r`

          +

          During the installation, download the required module development package from the following address if it cannot be found in the source:

          +

          https://mirror.netcologne.de/oracle-linux-repos/ol7_latest/getPackage/

          +

          For example, to install 3.10.0-693.11.1.el7.x86_64, run the following command:

          +

          rpm -ivh kernel-devel-3.10.0-693.11.1.el7.x86_64.rpm

          + +
        +
      • Ubuntu and Debian
        1. Run the following command to install the GCC:

          sudo apt-get install gcc

          +
        2. Run the following command to install the make tool:

          sudo apt-get install make

          +
        3. Run the following command to install the module development package (the package header and module library must have the same version as the kernel):

          sudo apt-get install linux-headers-`uname -r`

          +
        +
      • SUSE
        1. Run the following command to install the GCC:

          sudo zypper install gcc

          +
        2. Run the following command to install the make tool:

          sudo zypper install make

          +
        3. Run the following command to install the module development package (the package header and module library must have the same version as the kernel):

          sudo zypper install kenel-default-devel

          +
        +
      • CoreOS

        For CoreOS, the module will be compiled in a container, and it must be started before the module is compiled.

        +

        For detailed operations, see the CoreOS documentation. Obtain the documentation from the following link:

        +

        https://coreos.com/os/docs/latest/kernel-modules.html

        +
      +
    2. Compile the module.
      1. Use the git tool and run the following command to download the module source code:

        git clone https://github.com/Huawei/TCP_option_address.git

        +

        If the git tool is not installed, download the module source code from the following link:

        +

        https://github.com/Huawei/TCP_option_address

        + +
      2. Run the following commands to enter the source code directory and compile the module:

        cd src

        +

        make

        +

        If no warning or error code is prompted, the compilation was successful. Verify that the toa.ko file was generated in the current directory.

        +

        If error message "config_retpoline=y but not supported by the compiler, Compiler update recommended" is displayed, the GCC version is too old. Upgrade the GCC to a later version.

        + +
      +
    3. Load the module.
      1. Run the following command to load the module:

        sudo insmod toa.ko

        +
      2. Run the following command to check the module loading and to view the kernel output information:

        dmesg | grep TOA

        +

        If TOA: toa loaded is displayed in the command output, the module has been loaded.

        +

        After compiling the CoreOS module in the container, copy it to the host system and then load it. The container for compiling the module shares the /lib/modules directory with the host system, so you can copy the module in the container to this directory, allowing the host system to use it.

        + +
      +
    4. Set the script to enable it to automatically load the module.

      To make the module take effect when the system starts, add the command for loading the module to your startup script.

      +

      You can use either of the following methods to automatically load the module:

      +
      • Add the command for loading the module to a customized startup script as required.
      • Perform the following operations to configure a startup script:
        1. Create the toa.modules file in the /etc/sysconfig/modules/ directory. This file contains the module loading script.

          The following is an example of the content in the toa.modules file.

          +

          #!/bin/sh

          +

          /sbin/modinfo -F filename /root/toa/toa.ko > /dev/null 2>&1

          +

          if [ $? -eq 0 ]; then

          +

          /sbin/insmod /root/toa/toa.ko

          +

          fi

          +

          /root/toa/toa.ko is the path of the module file. You need to replace it with their actual path.

          +
        2. Run the following command to add execution permissions for the toa.modules startup script:

          sudo chmod +x /etc/sysconfig/modules/toa.modules

          +

          If the kernel is upgraded, the current module will no longer match. Compile the module again.

          + +
        +
      +
    5. Install the module on multiple nodes.

      To load the module in the same OSs, copy the toa.ko file to VMs where the module is to be loaded and then perform the operations in 3.

      +

      After the module is successfully loaded, applications can obtain the real IP address contained in the request.

      +

      The OS of the node must have the same version as the kernel.

      + +
    6. Verify the module.

      After the module is successfully installed, the source address can be directly obtained. The following provides an example for verification.

      +

      Run the following command to start a simple HTTP service on the backend server where Python is installed:

      +

      python -m SimpleHTTPServer port

      +

      The value of port must be the same as the port configured for the backend server, and the default value is 80.

      +

      Access the IP address of the load balancer from a client. Access logs on the server are as follows:

      +
      192.168.0.90 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 –
      +

      192.168.0.90 indicates the client's source IP address that is obtained by the backend server.

      + +
    + + +
    1. Obtain the kernel source code package Linux-2.6.32-220.23.1.el6.x86_64.rs.src.tar.gz containing the module from the following link:

      http://kb.linuxvirtualserver.org/images/3/34/Linux-2.6.32-220.23.1.el6.x86_64.rs.src.tar.gz

      +
    2. Decompress the kernel source code package.
    3. Modify compilation parameters.
      1. Open the linux-2.6.32-220.23.1.el6.x86_64.rs folder.
      2. Edit the net/toa/toa.h file.

        Change the value of #define TCPOPT_TOA200 to #define TCPOPT_TOA254.

        +
      3. On the shell page, run the following commands:

        sed -i 's/CONFIG_IPV6=m/CONFIG_IPV6=y/g' .config

        +

        echo -e '\n# toa\nCONFIG_TOA=m' >> .config

        +

        After the configuration, the IPv6 module is compiled into the kernel. TOA is compiled into a separate module and can be independently started and stopped.

        +
      4. Edit Makefile.

        You can add a description to the end of EXTRAVERSION =. This description will be displayed in uname -r, for example, -toa.

        +
      +
    4. Run the following command to compile the software package:

      make -j n

      +

      n indicates the number of vCPUs. For example, if there are four vCPUs, n must be set to 4.

      + +
    5. Run the following command to install the module:

      make modules_install

      +

      The following information is displayed.

      +Figure 1 Installing the module
      +
    6. Run the following command to install the kernel:

      make install

      +

      The following information is displayed.

      +Figure 2 Installing the kernel
      +
    7. Open the /boot/grub/grub.conf file and configure the kernel to start up when the system starts.
      1. Change the default startup kernel from the first kernel to the zeroth kernel by changing default=1 to default=0.
      2. Add the nohz=off parameter to the end of the line containing the vmlinuz-2.6.32-toa kernel. If nohz is not disabled, the CPU0 usage may be high and overload the kernel.Figure 3 Configuration file
        +
      3. Save the modification and exit. Restart the OS.

        During the restart, the system will load the vmlinuz-2.6.32-toa kernel.

        +
      +
    8. After the restart, run the following command to load the module:

      modprobe toa

      +

      Add the modprobe toa command to both the startup script and the system scheduled monitoring script.

      +Figure 4 Adding the modprobe toa command
      +

      After the module is loaded, query the kernel information.

      +Figure 5 Querying the kernel
      +
    9. Verify the module.

      After the module is successfully installed, the source address can be directly obtained. The following provides an example for verification.

      +

      Run the following command to start a simple HTTP service on the backend server where Python is installed:

      +

      python -m SimpleHTTPServer port

      +

      The value of port must be the same as the port configured for the backend server, and the default value is 80.

      +

      Access the IP address of the load balancer from a client. Access logs on the server are as follows:

      +
      192.168.0.90 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 –
      +

      192.168.0.90 indicates the client's source IP address that is obtained by the backend server.

      + +
    + + + +Parent topic: Appendix + + + diff --git a/elb/umn/en-us_elb_07_0000.html b/elb/umn/en-us_elb_07_0000.html new file mode 100644 index 000000000..2e4005329 --- /dev/null +++ b/elb/umn/en-us_elb_07_0000.html @@ -0,0 +1,160 @@ + + +

    Change History

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Released On

    +

    Description

    +

    2021-09-02

    +

    Modified the following content:

    +

    Optimized Differences Between Dedicated and Shared Load Balancers.

    +

    2021-07-27

    +

    Modified the following content:

    +

    Added the descriptions about idle timeout for shared load balancers.

    +

    2021-06-10

    +

    Modified the following content:

    +

    Added the descriptions of session stickiness duration.

    +

    2021-05-27

    +

    Modified the following content:

    +

    Changed the name of enhanced load balancers to shared load balancers.

    +

    2021-05-20

    +

    Modified the following content:

    +

    Added the constraints on binding EIPs to dedicated load balancers in the eu-de region in Table 1.

    +

    2021-04-08

    +

    Modified the following content:

    + +

    2021-03-02

    +

    Modified the following content:

    + +

    2020-12-10

    +

    Modified the following content:

    +

    Added descriptions and operations of dedicated load balancers in Creating a Dedicated Load Balancer.

    +

    2020-05-30

    +

    Modified the following content:

    +

    Modified the descriptions and operations in Migrating from Classic Load Balancers to Shared Load Balancers.

    +

    2020-02-26

    +

    Modified the following content:

    +

    Added Security Policy.

    +

    Modified the following content:

    +

    Added the Security Policy parameter in Adding a Listener.

    +

    2019-07-30

    +

    Modified the following content:

    +
    • Added section "Regions and AZs".
    +

    2019-05-16

    +

    Modified the following content:

    + +

    2019-04-10

    +

    Accepted in OTC-4.0/Agile-05.2019.

    +

    2019-04-01

    +

    Modified the following content:

    +

    Updated console screenshots.

    +

    2019-03-04

    +

    Accepted in OTC 4.0/Agile.

    +

    2019-02-22

    +

    Modified the following content:

    +
    • Updated the TOA download path in Configuring the TOA Plug-in.
    • Modified some parameters based on the latest console.
    • Optimized the parameter tables and operations for adding listeners in Listener.
    +

    Added the following content:

    + +

    2019-02-19

    +

    Modified the following content:

    +
    • Modified the procedure for binding an EIP in section "Creating an Enhanced Load Balancer."
    +

    Added the following content:

    +
    • Added parameters Redirected To and Enable Health Check to the table that describes parameters for adding a listener to an enhanced load balancer in section "Creating an Enhanced Load Balancer."
    • Added the procedure for unbinding an EIP in section "Creating an Enhanced Load Balancer."
    +
    • Added the procedure for modifying listeners in Listener.
    • Added the procedure for modifying forwarding policies in Forwarding Policy.
    +

    2019-02-03

    +

    Modified the following content:

    +
    • Modified the operations related to enhanced load balancers and associated resources (including listener, backend server group, backend server, health check, forwarding policy, and certificate) based on the management console.
    • Optimized the sections under Service Overview.
    • Modified the parameter descriptions of enhanced load balancer listeners in sections "Creating an Enhanced Load Balancer", "Listener", and "Certificate".
    • Changed OK to Yes in the procedures for deleting a load balancer, deleting a listener, removing a backend server, and deleting a certificate. Changed OK to Yes in some sections based on the latest console pages.
    • Modified the operations and the parameters for configuring bucket access permissions in Access Logging.
    • Removed Mutual Authentication from "FAQs" and placed it under "Management."
    +Added the following content: + +

    Deleted the following content:

    +
    • Deleted the content related to IP mode listeners in section "Creating an Enhanced Load Balancer."
    • Deleted FAQ "How Can I Create a Listener in IP Mode?"
    • Deleted "Basic Architecture" and "Features" from "Service Overview."
    +

    2018-11-30

    +

    Modified the following content:

    +

    Added the SNI related parameters for enhanced load balancers.

    +

    2018-07-20

    +

    Modified the following content:

    +

    Added the procedure for adding a listener.

    +

    2018-06-11

    +

    Accepted in OTC 3.1.

    +

    2018-05-17

    +

    Modified the following content:

    +

    Deleted parameter Billing Mode.

    +

    2018-05-30

    +

    This issue is the first official release.

    +
    + + + diff --git a/elb/umn/en-us_image_0000001115974588.png b/elb/umn/en-us_image_0000001115974588.png new file mode 100644 index 000000000..648379c43 Binary files /dev/null and b/elb/umn/en-us_image_0000001115974588.png differ diff --git a/elb/umn/en-us_image_0000001115974770.png b/elb/umn/en-us_image_0000001115974770.png new file mode 100644 index 000000000..f3742dd25 Binary files /dev/null and b/elb/umn/en-us_image_0000001115974770.png differ diff --git a/elb/umn/en-us_image_0000001115981688.png b/elb/umn/en-us_image_0000001115981688.png new file mode 100644 index 000000000..5e6bf285c Binary files /dev/null and b/elb/umn/en-us_image_0000001115981688.png differ diff --git a/elb/umn/en-us_image_0000001120894978.png b/elb/umn/en-us_image_0000001120894978.png new file mode 100644 index 000000000..81c14336c Binary files /dev/null and b/elb/umn/en-us_image_0000001120894978.png differ diff --git a/elb/umn/en-us_image_0000001125463277.png b/elb/umn/en-us_image_0000001125463277.png new file mode 100644 index 000000000..2cbe301ef Binary files /dev/null and b/elb/umn/en-us_image_0000001125463277.png differ diff --git a/elb/umn/en-us_image_0000001135576038.png b/elb/umn/en-us_image_0000001135576038.png new file mode 100644 index 000000000..92379c319 Binary files /dev/null and b/elb/umn/en-us_image_0000001135576038.png differ diff --git a/elb/umn/en-us_image_0000001135576398.png b/elb/umn/en-us_image_0000001135576398.png new file mode 100644 index 000000000..0d394c20f Binary files /dev/null and b/elb/umn/en-us_image_0000001135576398.png differ diff --git a/elb/umn/en-us_image_0000001150131972.png b/elb/umn/en-us_image_0000001150131972.png new file mode 100644 index 000000000..5fac9638e Binary files /dev/null and b/elb/umn/en-us_image_0000001150131972.png differ diff --git a/elb/umn/en-us_image_0000001150291788.png b/elb/umn/en-us_image_0000001150291788.png new file mode 100644 index 000000000..608279a2e Binary files /dev/null and b/elb/umn/en-us_image_0000001150291788.png differ diff --git a/elb/umn/en-us_image_0000001160373426.png b/elb/umn/en-us_image_0000001160373426.png new file mode 100644 index 000000000..f30ecf0fb Binary files /dev/null and b/elb/umn/en-us_image_0000001160373426.png differ diff --git a/elb/umn/en-us_image_0000001160533378.png b/elb/umn/en-us_image_0000001160533378.png new file mode 100644 index 000000000..7373f026a Binary files /dev/null and b/elb/umn/en-us_image_0000001160533378.png differ diff --git a/elb/umn/en-us_image_0000001161784976.png b/elb/umn/en-us_image_0000001161784976.png new file mode 100644 index 000000000..e5578b467 Binary files /dev/null and b/elb/umn/en-us_image_0000001161784976.png differ diff --git a/elb/umn/en-us_image_0000001163728097.png b/elb/umn/en-us_image_0000001163728097.png new file mode 100644 index 000000000..1ba69deb5 Binary files /dev/null and b/elb/umn/en-us_image_0000001163728097.png differ diff --git a/elb/umn/en-us_image_0000001167495475.png b/elb/umn/en-us_image_0000001167495475.png new file mode 100644 index 000000000..81c14336c Binary files /dev/null and b/elb/umn/en-us_image_0000001167495475.png differ diff --git a/elb/umn/en-us_image_0000001181376003.png b/elb/umn/en-us_image_0000001181376003.png new file mode 100644 index 000000000..44a99a890 Binary files /dev/null and b/elb/umn/en-us_image_0000001181376003.png differ diff --git a/elb/umn/en-us_image_0000001181535567.png b/elb/umn/en-us_image_0000001181535567.png new file mode 100644 index 000000000..9d37c1940 Binary files /dev/null and b/elb/umn/en-us_image_0000001181535567.png differ diff --git a/elb/umn/en-us_image_0000001195393079.png b/elb/umn/en-us_image_0000001195393079.png new file mode 100644 index 000000000..fa8f3e45b Binary files /dev/null and b/elb/umn/en-us_image_0000001195393079.png differ diff --git a/elb/umn/en-us_image_0000001196171669.png b/elb/umn/en-us_image_0000001196171669.png new file mode 100644 index 000000000..ad729f43d Binary files /dev/null and b/elb/umn/en-us_image_0000001196171669.png differ diff --git a/elb/umn/en-us_image_0000001205813423.png b/elb/umn/en-us_image_0000001205813423.png new file mode 100644 index 000000000..2af028bd3 Binary files /dev/null and b/elb/umn/en-us_image_0000001205813423.png differ diff --git a/elb/umn/en-us_image_0000001205955477.png b/elb/umn/en-us_image_0000001205955477.png new file mode 100644 index 000000000..2af028bd3 Binary files /dev/null and b/elb/umn/en-us_image_0000001205955477.png differ diff --git a/elb/umn/en-us_image_0000001205974859.png b/elb/umn/en-us_image_0000001205974859.png new file mode 100644 index 000000000..72f6b621f Binary files /dev/null and b/elb/umn/en-us_image_0000001205974859.png differ diff --git a/elb/umn/en-us_image_0000001206035439.png b/elb/umn/en-us_image_0000001206035439.png new file mode 100644 index 000000000..1ba69deb5 Binary files /dev/null and b/elb/umn/en-us_image_0000001206035439.png differ diff --git a/elb/umn/en-us_image_0000001206511791.png b/elb/umn/en-us_image_0000001206511791.png new file mode 100644 index 000000000..81c14336c Binary files /dev/null and b/elb/umn/en-us_image_0000001206511791.png differ diff --git a/elb/umn/en-us_image_0114721717.jpg b/elb/umn/en-us_image_0114721717.jpg new file mode 100644 index 000000000..2738de398 Binary files /dev/null and b/elb/umn/en-us_image_0114721717.jpg differ diff --git a/elb/umn/en-us_image_0114944782.jpg b/elb/umn/en-us_image_0114944782.jpg new file mode 100644 index 000000000..f67319898 Binary files /dev/null and b/elb/umn/en-us_image_0114944782.jpg differ diff --git a/elb/umn/en-us_image_0129028346.png b/elb/umn/en-us_image_0129028346.png new file mode 100644 index 000000000..fd0403b9e Binary files /dev/null and b/elb/umn/en-us_image_0129028346.png differ diff --git a/elb/umn/en-us_image_0152727234.png b/elb/umn/en-us_image_0152727234.png new file mode 100644 index 000000000..35e283157 Binary files /dev/null and b/elb/umn/en-us_image_0152727234.png differ diff --git a/elb/umn/en-us_image_0152872722.png b/elb/umn/en-us_image_0152872722.png new file mode 100644 index 000000000..7edd44767 Binary files /dev/null and b/elb/umn/en-us_image_0152872722.png differ diff --git a/elb/umn/en-us_image_0153115564.png b/elb/umn/en-us_image_0153115564.png new file mode 100644 index 000000000..ae6bdb3de Binary files /dev/null and b/elb/umn/en-us_image_0153115564.png differ diff --git a/elb/umn/en-us_image_0153115565.png b/elb/umn/en-us_image_0153115565.png new file mode 100644 index 000000000..671635764 Binary files /dev/null and b/elb/umn/en-us_image_0153115565.png differ diff --git a/elb/umn/en-us_image_0166358924.png b/elb/umn/en-us_image_0166358924.png new file mode 100644 index 000000000..f30233e75 Binary files /dev/null and b/elb/umn/en-us_image_0166358924.png differ diff --git a/elb/umn/en-us_image_0166358926.png b/elb/umn/en-us_image_0166358926.png new file mode 100644 index 000000000..01221d18a Binary files /dev/null and b/elb/umn/en-us_image_0166358926.png differ diff --git a/elb/umn/en-us_image_0166358967.png b/elb/umn/en-us_image_0166358967.png new file mode 100644 index 000000000..ecbbee207 Binary files /dev/null and b/elb/umn/en-us_image_0166358967.png differ diff --git a/elb/umn/en-us_image_0166358972.png b/elb/umn/en-us_image_0166358972.png new file mode 100644 index 000000000..1e8453977 Binary files /dev/null and b/elb/umn/en-us_image_0166358972.png differ diff --git a/elb/umn/en-us_image_0166358975.png b/elb/umn/en-us_image_0166358975.png new file mode 100644 index 000000000..0069e2904 Binary files /dev/null and b/elb/umn/en-us_image_0166358975.png differ diff --git a/elb/umn/en-us_image_0167649598.png b/elb/umn/en-us_image_0167649598.png new file mode 100644 index 000000000..2af028bd3 Binary files /dev/null and b/elb/umn/en-us_image_0167649598.png differ diff --git a/elb/umn/en-us_image_0167652140.png b/elb/umn/en-us_image_0167652140.png new file mode 100644 index 000000000..ecbbee207 Binary files /dev/null and b/elb/umn/en-us_image_0167652140.png differ diff --git a/elb/umn/en-us_image_0167652142.png b/elb/umn/en-us_image_0167652142.png new file mode 100644 index 000000000..1e8453977 Binary files /dev/null and b/elb/umn/en-us_image_0167652142.png differ diff --git a/elb/umn/en-us_image_0167652143.png b/elb/umn/en-us_image_0167652143.png new file mode 100644 index 000000000..0069e2904 Binary files /dev/null and b/elb/umn/en-us_image_0167652143.png differ diff --git a/elb/umn/en-us_image_0167655332.png b/elb/umn/en-us_image_0167655332.png new file mode 100644 index 000000000..f30233e75 Binary files /dev/null and b/elb/umn/en-us_image_0167655332.png differ diff --git a/elb/umn/en-us_image_0167655334.png b/elb/umn/en-us_image_0167655334.png new file mode 100644 index 000000000..01221d18a Binary files /dev/null and b/elb/umn/en-us_image_0167655334.png differ diff --git a/elb/umn/en-us_image_0168438373.jpg b/elb/umn/en-us_image_0168438373.jpg new file mode 100644 index 000000000..b08e26242 Binary files /dev/null and b/elb/umn/en-us_image_0168438373.jpg differ diff --git a/elb/umn/en-us_image_0168438378.jpg b/elb/umn/en-us_image_0168438378.jpg new file mode 100644 index 000000000..7e420ae80 Binary files /dev/null and b/elb/umn/en-us_image_0168438378.jpg differ diff --git a/elb/umn/en-us_image_0168612036.jpg b/elb/umn/en-us_image_0168612036.jpg new file mode 100644 index 000000000..7c4ec3b76 Binary files /dev/null and b/elb/umn/en-us_image_0168612036.jpg differ diff --git a/elb/umn/en-us_image_0169513446.png b/elb/umn/en-us_image_0169513446.png new file mode 100644 index 000000000..1ba69deb5 Binary files /dev/null and b/elb/umn/en-us_image_0169513446.png differ diff --git a/elb/umn/en-us_image_0171245428.jpg b/elb/umn/en-us_image_0171245428.jpg new file mode 100644 index 000000000..3233b971b Binary files /dev/null and b/elb/umn/en-us_image_0171245428.jpg differ diff --git a/elb/umn/en-us_image_0171245430.jpg b/elb/umn/en-us_image_0171245430.jpg new file mode 100644 index 000000000..efabdf386 Binary files /dev/null and b/elb/umn/en-us_image_0171245430.jpg differ diff --git a/elb/umn/en-us_image_0171245432.jpg b/elb/umn/en-us_image_0171245432.jpg new file mode 100644 index 000000000..1bafc0363 Binary files /dev/null and b/elb/umn/en-us_image_0171245432.jpg differ diff --git a/elb/umn/en-us_image_0171245434.jpg b/elb/umn/en-us_image_0171245434.jpg new file mode 100644 index 000000000..27662ad4c Binary files /dev/null and b/elb/umn/en-us_image_0171245434.jpg differ diff --git a/elb/umn/en-us_image_0171245435.jpg b/elb/umn/en-us_image_0171245435.jpg new file mode 100644 index 000000000..b7ece11f2 Binary files /dev/null and b/elb/umn/en-us_image_0171245435.jpg differ diff --git a/elb/umn/en-us_image_0171437555.png b/elb/umn/en-us_image_0171437555.png new file mode 100644 index 000000000..92f45496e Binary files /dev/null and b/elb/umn/en-us_image_0171437555.png differ diff --git a/elb/umn/en-us_image_0171437556.png b/elb/umn/en-us_image_0171437556.png new file mode 100644 index 000000000..9f8d0ccf9 Binary files /dev/null and b/elb/umn/en-us_image_0171437556.png differ diff --git a/elb/umn/en-us_image_0174899056.jpg b/elb/umn/en-us_image_0174899056.jpg new file mode 100644 index 000000000..5f12e410e Binary files /dev/null and b/elb/umn/en-us_image_0174899056.jpg differ diff --git a/elb/umn/en-us_image_0174914269.jpg b/elb/umn/en-us_image_0174914269.jpg new file mode 100644 index 000000000..97bb8c95a Binary files /dev/null and b/elb/umn/en-us_image_0174914269.jpg differ diff --git a/elb/umn/en-us_image_0184026531.png b/elb/umn/en-us_image_0184026531.png new file mode 100644 index 000000000..1303a51c2 Binary files /dev/null and b/elb/umn/en-us_image_0184026531.png differ diff --git a/elb/umn/en-us_image_0198606126.png b/elb/umn/en-us_image_0198606126.png new file mode 100644 index 000000000..9d4444bf6 Binary files /dev/null and b/elb/umn/en-us_image_0198606126.png differ diff --git a/elb/umn/en-us_image_0198606821.png b/elb/umn/en-us_image_0198606821.png new file mode 100644 index 000000000..585f244a8 Binary files /dev/null and b/elb/umn/en-us_image_0198606821.png differ diff --git a/elb/umn/en-us_image_0198606826.png b/elb/umn/en-us_image_0198606826.png new file mode 100644 index 000000000..a4438f17d Binary files /dev/null and b/elb/umn/en-us_image_0198606826.png differ diff --git a/elb/umn/en-us_image_0198606850.png b/elb/umn/en-us_image_0198606850.png new file mode 100644 index 000000000..37bd295be Binary files /dev/null and b/elb/umn/en-us_image_0198606850.png differ diff --git a/elb/umn/en-us_image_0198607819.png b/elb/umn/en-us_image_0198607819.png new file mode 100644 index 000000000..1315c0c12 Binary files /dev/null and b/elb/umn/en-us_image_0198607819.png differ diff --git a/elb/umn/en-us_image_0198607824.png b/elb/umn/en-us_image_0198607824.png new file mode 100644 index 000000000..1315c0c12 Binary files /dev/null and b/elb/umn/en-us_image_0198607824.png differ diff --git a/elb/umn/en-us_image_0198607873.png b/elb/umn/en-us_image_0198607873.png new file mode 100644 index 000000000..3ae76f89f Binary files /dev/null and b/elb/umn/en-us_image_0198607873.png differ diff --git a/elb/umn/en-us_image_0198607881.png b/elb/umn/en-us_image_0198607881.png new file mode 100644 index 000000000..3ae76f89f Binary files /dev/null and b/elb/umn/en-us_image_0198607881.png differ diff --git a/elb/umn/en-us_image_0202102748.png b/elb/umn/en-us_image_0202102748.png new file mode 100644 index 000000000..52797ef08 Binary files /dev/null and b/elb/umn/en-us_image_0202102748.png differ diff --git a/elb/umn/en-us_image_0202311381.png b/elb/umn/en-us_image_0202311381.png new file mode 100644 index 000000000..4ba757ab2 Binary files /dev/null and b/elb/umn/en-us_image_0202311381.png differ diff --git a/elb/umn/en-us_image_0207374995.jpg b/elb/umn/en-us_image_0207374995.jpg new file mode 100644 index 000000000..d3d43b44c Binary files /dev/null and b/elb/umn/en-us_image_0207374995.jpg differ diff --git a/elb/umn/en-us_image_0207375188.jpg b/elb/umn/en-us_image_0207375188.jpg new file mode 100644 index 000000000..d3d43b44c Binary files /dev/null and b/elb/umn/en-us_image_0207375188.jpg differ diff --git a/elb/umn/en-us_image_0238256358.jpg b/elb/umn/en-us_image_0238256358.jpg new file mode 100644 index 000000000..b9febcc73 Binary files /dev/null and b/elb/umn/en-us_image_0238256358.jpg differ diff --git a/elb/umn/en-us_image_0238395032.png b/elb/umn/en-us_image_0238395032.png new file mode 100644 index 000000000..688d92d7a Binary files /dev/null and b/elb/umn/en-us_image_0238395032.png differ diff --git a/elb/umn/en-us_image_0238395033.png b/elb/umn/en-us_image_0238395033.png new file mode 100644 index 000000000..46eaddb19 Binary files /dev/null and b/elb/umn/en-us_image_0238395033.png differ diff --git a/elb/umn/en-us_image_0238408792.png b/elb/umn/en-us_image_0238408792.png new file mode 100644 index 000000000..f1403c1d1 Binary files /dev/null and b/elb/umn/en-us_image_0238408792.png differ diff --git a/elb/umn/en-us_image_0238408794.png b/elb/umn/en-us_image_0238408794.png new file mode 100644 index 000000000..2af028bd3 Binary files /dev/null and b/elb/umn/en-us_image_0238408794.png differ diff --git a/elb/umn/en-us_image_0238446387.png b/elb/umn/en-us_image_0238446387.png new file mode 100644 index 000000000..2af028bd3 Binary files /dev/null and b/elb/umn/en-us_image_0238446387.png differ diff --git a/elb/umn/en-us_image_0238446941.png b/elb/umn/en-us_image_0238446941.png new file mode 100644 index 000000000..2af028bd3 Binary files /dev/null and b/elb/umn/en-us_image_0238446941.png differ diff --git a/elb/umn/en-us_image_0238447292.png b/elb/umn/en-us_image_0238447292.png new file mode 100644 index 000000000..ff1296a7b Binary files /dev/null and b/elb/umn/en-us_image_0238447292.png differ diff --git a/elb/umn/en-us_image_0241225827.png b/elb/umn/en-us_image_0241225827.png new file mode 100644 index 000000000..f1403c1d1 Binary files /dev/null and b/elb/umn/en-us_image_0241225827.png differ diff --git a/elb/umn/en-us_image_0241356603.png b/elb/umn/en-us_image_0241356603.png new file mode 100644 index 000000000..f1403c1d1 Binary files /dev/null and b/elb/umn/en-us_image_0241356603.png differ diff --git a/elb/umn/en-us_image_0267429969.png b/elb/umn/en-us_image_0267429969.png new file mode 100644 index 000000000..47b2135f9 Binary files /dev/null and b/elb/umn/en-us_image_0267429969.png differ diff --git a/elb/umn/en-us_image_0267431325.png b/elb/umn/en-us_image_0267431325.png new file mode 100644 index 000000000..784ee7ac1 Binary files /dev/null and b/elb/umn/en-us_image_0267431325.png differ diff --git a/elb/umn/en-us_image_0267432483.png b/elb/umn/en-us_image_0267432483.png new file mode 100644 index 000000000..04b31bed8 Binary files /dev/null and b/elb/umn/en-us_image_0267432483.png differ diff --git a/elb/umn/en-us_image_0267434399.png b/elb/umn/en-us_image_0267434399.png new file mode 100644 index 000000000..3b45eccb6 Binary files /dev/null and b/elb/umn/en-us_image_0267434399.png differ diff --git a/elb/umn/en-us_image_0267440227.png b/elb/umn/en-us_image_0267440227.png new file mode 100644 index 000000000..73cec8cc8 Binary files /dev/null and b/elb/umn/en-us_image_0267440227.png differ diff --git a/elb/umn/en-us_image_0267442311.png b/elb/umn/en-us_image_0267442311.png new file mode 100644 index 000000000..30edeb1bb Binary files /dev/null and b/elb/umn/en-us_image_0267442311.png differ diff --git a/elb/umn/en-us_image_0267446611.png b/elb/umn/en-us_image_0267446611.png new file mode 100644 index 000000000..cfaeed9bd Binary files /dev/null and b/elb/umn/en-us_image_0267446611.png differ diff --git a/elb/umn/en-us_image_0275513364.png b/elb/umn/en-us_image_0275513364.png new file mode 100644 index 000000000..1909444d2 Binary files /dev/null and b/elb/umn/en-us_image_0275513364.png differ diff --git a/elb/umn/en-us_image_0275816100.jpg b/elb/umn/en-us_image_0275816100.jpg new file mode 100644 index 000000000..983795af1 Binary files /dev/null and b/elb/umn/en-us_image_0275816100.jpg differ diff --git a/elb/umn/en-us_image_0275818423.jpg b/elb/umn/en-us_image_0275818423.jpg new file mode 100644 index 000000000..2d1829014 Binary files /dev/null and b/elb/umn/en-us_image_0275818423.jpg differ diff --git a/elb/umn/en-us_image_0275818458.jpg b/elb/umn/en-us_image_0275818458.jpg new file mode 100644 index 000000000..925f4d21a Binary files /dev/null and b/elb/umn/en-us_image_0275818458.jpg differ diff --git a/elb/umn/en-us_image_0275818808.jpg b/elb/umn/en-us_image_0275818808.jpg new file mode 100644 index 000000000..518ec9829 Binary files /dev/null and b/elb/umn/en-us_image_0275818808.jpg differ diff --git a/elb/umn/en-us_image_0275826373.jpg b/elb/umn/en-us_image_0275826373.jpg new file mode 100644 index 000000000..8fefa0254 Binary files /dev/null and b/elb/umn/en-us_image_0275826373.jpg differ diff --git a/elb/umn/en-us_image_0275826374.jpg b/elb/umn/en-us_image_0275826374.jpg new file mode 100644 index 000000000..4d59421b3 Binary files /dev/null and b/elb/umn/en-us_image_0275826374.jpg differ diff --git a/elb/umn/en-us_image_0276143526.png b/elb/umn/en-us_image_0276143526.png new file mode 100644 index 000000000..65d58fac6 Binary files /dev/null and b/elb/umn/en-us_image_0276143526.png differ diff --git a/elb/umn/en-us_image_0276220702.png b/elb/umn/en-us_image_0276220702.png new file mode 100644 index 000000000..ae2f170e4 Binary files /dev/null and b/elb/umn/en-us_image_0276220702.png differ diff --git a/elb/umn/en-us_image_0276223899.png b/elb/umn/en-us_image_0276223899.png new file mode 100644 index 000000000..4ee7c5db3 Binary files /dev/null and b/elb/umn/en-us_image_0276223899.png differ diff --git a/elb/umn/en-us_image_0276225173.png b/elb/umn/en-us_image_0276225173.png new file mode 100644 index 000000000..dcde01345 Binary files /dev/null and b/elb/umn/en-us_image_0276225173.png differ diff --git a/elb/umn/en-us_image_0277560434.png b/elb/umn/en-us_image_0277560434.png new file mode 100644 index 000000000..d9ed988bf Binary files /dev/null and b/elb/umn/en-us_image_0277560434.png differ diff --git a/elb/umn/en-us_image_0277560435.png b/elb/umn/en-us_image_0277560435.png new file mode 100644 index 000000000..1d4ddc416 Binary files /dev/null and b/elb/umn/en-us_image_0277560435.png differ diff --git a/elb/umn/en-us_image_0277560436.png b/elb/umn/en-us_image_0277560436.png new file mode 100644 index 000000000..1d2ac6f98 Binary files /dev/null and b/elb/umn/en-us_image_0277560436.png differ diff --git a/elb/umn/en-us_image_0277560437.png b/elb/umn/en-us_image_0277560437.png new file mode 100644 index 000000000..989fc4bce Binary files /dev/null and b/elb/umn/en-us_image_0277560437.png differ diff --git a/elb/umn/en-us_image_0280169359.png b/elb/umn/en-us_image_0280169359.png new file mode 100644 index 000000000..72628c732 Binary files /dev/null and b/elb/umn/en-us_image_0280169359.png differ diff --git a/elb/umn/en-us_image_0280246566.png b/elb/umn/en-us_image_0280246566.png new file mode 100644 index 000000000..37e9ec8e8 Binary files /dev/null and b/elb/umn/en-us_image_0280246566.png differ diff --git a/elb/umn/en-us_image_0280246602.png b/elb/umn/en-us_image_0280246602.png new file mode 100644 index 000000000..a8d38ba45 Binary files /dev/null and b/elb/umn/en-us_image_0280246602.png differ diff --git a/elb/umn/en-us_image_0291936910.png b/elb/umn/en-us_image_0291936910.png new file mode 100644 index 000000000..5cec7d622 Binary files /dev/null and b/elb/umn/en-us_image_0291936910.png differ diff --git a/elb/umn/en-us_image_0291937212.png b/elb/umn/en-us_image_0291937212.png new file mode 100644 index 000000000..af4569ab2 Binary files /dev/null and b/elb/umn/en-us_image_0291937212.png differ diff --git a/elb/umn/en-us_image_0291937584.png b/elb/umn/en-us_image_0291937584.png new file mode 100644 index 000000000..ff93e0dce Binary files /dev/null and b/elb/umn/en-us_image_0291937584.png differ diff --git a/elb/umn/en-us_image_0291965517.png b/elb/umn/en-us_image_0291965517.png new file mode 100644 index 000000000..e94a63740 Binary files /dev/null and b/elb/umn/en-us_image_0291965517.png differ diff --git a/elb/umn/en-us_topic_0015479923.html b/elb/umn/en-us_topic_0015479923.html new file mode 100644 index 000000000..7b060ff3f --- /dev/null +++ b/elb/umn/en-us_topic_0015479923.html @@ -0,0 +1,23 @@ + + +

    Listener

    + + + + + diff --git a/elb/umn/en-us_topic_0015479966.html b/elb/umn/en-us_topic_0015479966.html new file mode 100644 index 000000000..78f5e0bbc --- /dev/null +++ b/elb/umn/en-us_topic_0015479966.html @@ -0,0 +1,38 @@ + + +

    What Is ELB?

    +

    Elastic Load Balancing (ELB) automatically distributes incoming traffic across multiple backend servers based on the listening rules you configure. ELB expands the service capabilities of your applications and improves their availability by eliminating single points of failure (SPOFs).

    +

    +

    ELB Components

    ELB consists of the following components:

    + + +Figure 1 ELB components
    +

    Load Balancer Type

    ELB provides the following types of load balancers: classic load balancer, dedicated load balancer, and shared load balancer. Dedicated load balancer and shared load balancer are called elastic load balancers collectively.

    + +

    Currently, dedicated load balancers are supported only in the eu-nl region.

    + +

    + +

    For details, see Differences Between Dedicated and Shared Load Balancers.

    +

    For details, see Differences Between Shared and Classic Load Balancers.

    + +

    Accessing ELB

    You can use either of the following methods to access ELB:

    + + + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/en-us_topic_0015479967.html b/elb/umn/en-us_topic_0015479967.html new file mode 100644 index 000000000..9baa1219d --- /dev/null +++ b/elb/umn/en-us_topic_0015479967.html @@ -0,0 +1,133 @@ + + +

    Creating a Shared Load Balancer

    +

    Prerequisites

    You have prepared everything required for creating a load balancer. For details, see Preparations for Creating a Load Balancer.

    +

    Load balancers receive requests from clients and route the requests to backend servers, which answer to these requests over the private network.

    + +

    Creating a Shared Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. On the Load Balancers page, click Create Elastic Load Balancer. Configure the parameters based on Table 1.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for creating a shared load balancer

      Parameter

      +

      Description

      +

      Example Value

      +

      Region

      +

      Specifies the region. Resources in different regions cannot communicate with each other over internal networks. For lower network latency and faster access to resources, select the nearest region.

      +

      N/A

      +

      Network Type

      +

      Specifies the network type of a load balancer.

      +
      • Public network: The load balancer routes requests from the clients to backend servers over the Internet.
      • Private network: The load balancer routes requests from the clients to backend servers in the same VPC.
      +

      Private network

      +

      VPC

      +

      Specifies the VPC where the load balancer works.

      +

      Select an existing VPC or create one.

      +

      For more information about VPC, see the Virtual Private Cloud User Guide.

      +

      N/A

      +

      Subnet

      +

      Specifies the subnet that the load balancer belongs to.

      +

      N/A

      +

      Private IP Address

      +

      Specifies how you want the IP address to be assigned.

      +
      • Automatically-assigned IP address: The system automatically assigns an IPv4 address to the load balancer.
      • Manually-specified IP address: Manually specify an IPv4 address to the load balancer.
      +

      Automatically-assigned IP address

      +

      EIP

      +

      Specifies the public IP address that will be bound to the load balancer for receiving and forwarding requests over the Internet.

      +

      The following options are available:

      +
      • New EIP: The system will automatically assign an EIP.
      • Use existing: Select an existing EIP.
      +

      New EIP

      +

      Bandwidth

      +

      Specifies the bandwidth when a new EIP is used, in the unit of Mbit/s.

      +

      10 Mbit/s

      +

      Name

      +

      Specifies the load balancer name.

      +

      elb-yss0

      +

      Description

      +

      Provides supplementary information about the load balancer.

      +

      N/A

      +

      Tag

      +

      Identifies load balancers so that they can be easily found. A tag consists of a tag key and a tag value. The tag key marks a tag, and the tag value specifies specific tag content.

      +

      For details about the naming specifications, see Table 2.

      +
      • Key: elb_key1
      • Value: elb-01
      +
      + + + + + + + + + + + + + + + + +
      Table 2 Naming rules of load balancer tags

      Item

      +

      Requirement

      +

      Example Value

      +

      Tag key

      +
      • Cannot be left blank.
      • Must be unique for the same load balancer.
      • Can contain a maximum of 36 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb_key1

      +

      Tag value

      +
      • Can contain a maximum of 43 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb-01

      +
      + +
    5. Click Create Now.
    6. Confirm the configuration and submit your request.
    + + + + +Parent topic: Load Balancer + + + diff --git a/elb/umn/en-us_topic_0018127975.html b/elb/umn/en-us_topic_0018127975.html new file mode 100644 index 000000000..11cfcd682 --- /dev/null +++ b/elb/umn/en-us_topic_0018127975.html @@ -0,0 +1,167 @@ + + +

    How Do I Troubleshoot an Unhealthy Backend Server?

    +

    Symptom

    If a client cannot access a backend server through a load balancer, the backend server is declared unhealthy. You can check the health check result of the backend server on the ELB console.

    + + + +

    Background

    The load balancer uses IP addresses in 100.125.0.0/16 to send heartbeats to backend servers and check their health. To ensure that health checks can be performed normally, IP addresses in 100.125.0.0/16 must be allowed to access the backend servers.

    +

    Security group rules configured for backend servers associated with dedicated load balancers are different from those configured for backend servers associated with shared load balancers.

    + + +

    If a backend server is considered unhealthy, ELB will not route traffic to it until it is declared healthy again.

    +

    If you change the weight of a healthy backend server to 0, the health check result of this server becomes Unhealthy.

    + + + +

    Troubleshooting Procedure

    Possible causes are sequenced based on their occurrence probability.

    +

    Check these causes one by one until the fault persists.

    +

    You may need to change the health check configuration. It takes a while for the modification to take effect. The required time depends on health check interval and timeout duration. View the health check result in the backend server list of the load balancer.

    + +Figure 1 Troubleshooting process
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Troubleshooting process

    Possible Cause

    +

    Solution

    +

    Backend server group

    +

    Checking Whether the Backend Server Group Is Associated with a Listener

    +

    Health check configuration

    +

    Checking the Health Check Configuration

    +

    Security group rules

    +

    Checking Security Group Rules

    +

    Network ACL rules

    +

    Checking Firewall Rules

    +

    Backend server listening configuration

    +

    Checking the Backend Server

    +

    Backend server firewall configuration

    +

    Checking the Firewall on the Backend Server

    +

    Backend server route configuration

    +

    Checking the Backend Server Route

    +

    Backend server load

    +

    Checking the Backend Server Load

    +

    Backend server host.deny file

    +

    Checking the host.deny File

    +
    + + +

    Checking Whether the Backend Server Group Is Associated with a Listener

    Check whether the backend server group that the unhealthy backend server belongs to is associated with a listener.

    + + +

    Checking the Health Check Configuration

    Classic load balancers: In the Listeners area, locate the listener with an unhealthy backend server associated and click View in the Health Check column. The Health Check dialog box is displayed. Check the following parameters:

    + +

    Shared load balancers: Click the name of the load balancer to view its details. Click Backend Server Groups and then click the name of the server group. On the Basic Information page, click Configure on the right of Health Check. Check the following parameters:

    + + + + + +

    Checking Security Group Rules

    + + + + +

    Checking Firewall Rules

    You can associate one or more subnets with a firewall for controlling traffic in and out of the subnets. Similar to security groups, firewalls provide access control functions, but add an additional layer of defense to your VPC. Default firewall rules reject all inbound and outbound traffic. If the subnet of a load balancer or associated backend servers has a firewall associated, the load balancer cannot receive traffic from the Internet or route traffic to backend servers, and backend servers cannot receive traffic from and respond to the load balancer.

    +

    You can configure an inbound firewall rule to permit access from 100.125.0.0/16.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Under Network, click Virtual Private Cloud.
    4. In the navigation pane on the left, choose Access Control > Firewalls.
    5. Locate the firewall, and click the firewall name to switch to the firewall details page.
    6. On the Inbound Rules or Outbound Rules tab page, click Add Rule to add a rule.
      • Action: Select Allow.
      • Protocol: The protocol must be the same as the frontend protocol you select when you add the listener.
      • Source: Set the value to 100.125.0.0/16.
      • Source Port Range: Select the port range.
      • Destination: Enter the default value 0.0.0.0/0. Traffic will be destined for all IP addresses.
      • Destination Port Range: Select the port range.
      • Description: Enter a description for the firewall rule if necessary.
      +
    7. Click OK.
    + +

    Checking the Backend Server

    If the backend server runs a Windows OS, use a browser to access https://Backend server IP address:Health check port. If a 2xx or 3xx code is returned, the backend server is running normally.

    + + + +

    Checking the Firewall on the Backend Server

    The firewall or other security software on the backend server may mask IP addresses in 100.125.0.0/16. Ensure that access from 100.125.0.0/16 is allowed in the security group containing the backend server.

    + +

    Checking the Backend Server Route

    Check whether the default route configured for the primary NIC has been manually modified. If the default route is changed, health check packets may fail to reach the backend server.

    +Run the following command on the backend server to check whether the default route points to the gateway (For Layer 3 communications, the default route must be configured to point to the gateway):
    ip route
    + +

    Alternatively, run the following command:

    +
    route -n
    +

    If the command output does not contain the highlighted route or the IP address to which the route points is not the gateway address of the VPC subnet, change the route to the default one.

    +Figure 12 Example default route pointing to the gateway
    +Figure 13 Example default route not pointing to the gateway
    + +

    Checking the Backend Server Load

    Check the load of the backend server. If the load is high, connections or requests for health checks may time out.

    + +

    Checking the host.deny File

    Verify that IP addresses in 100.125.0.0/16 are not written to the /etc/hosts.deny file on the backend server.

    + + + + +Parent topic: Health Check + + + diff --git a/elb/umn/en-us_topic_0052569729.html b/elb/umn/en-us_topic_0052569729.html new file mode 100644 index 000000000..2ed7c1f1b --- /dev/null +++ b/elb/umn/en-us_topic_0052569729.html @@ -0,0 +1,186 @@ + + +

    Adding or Removing Backend Servers (Shared Load Balancers)

    +

    Scenarios

    A backend server group has at least a healthy backend server. If incoming traffic increases, you need to add more backend servers.

    +

    After a backend server is removed, it cannot receive requests from the load balancer. You can add it back to the backend server group when the traffic goes up again.

    +

    If the load balancer is associated with an AS group, instances in the AS group are automatically added to the backend server group of the load balancer. If instances are removed from the AS group, they will be automatically removed from the backend server group.

    +

    Backend servers can reside in different subnets of the same VPC.

    + + +

    Adding Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. In the Basic Information area, click Add in the upper left corner of the server list. Select the subnet where the backend servers reside, select the backend servers you want to add, and click Next.
      • If a backend server has multiple NICs, you can only select the subnet where the primary NIC resides and use the primary NIC to add the backend server.
      • Backend servers cannot use virtual IP addresses.
      + +
    7. Set the weights and ports of backend server and click Finish.

      In the Backend Port text box, enter the port used by each backend server. If multiple backend servers use the same port, you can batch add the port in the Batch Add Port text box and then click OK.

      + +
    8. Click OK.
    + +

    Removing Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. In the Basic Information area, click Remove in the Operation column to remove a backend server. To remove multiple backend servers, select the backend servers you want to remove and click Remove above the server list.
    7. Click Yes.
    + +

    Adding a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Backend Server Groups, click Add Backend Server Group.
    6. In the Add Backend Server Group dialog box, configure the parameters.

      Configure the parameters based on Table 1 and Table 2.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      The backend protocol can be TCP, UDP, or HTTP.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the number of active connections established with each backend server, each server is assigned a weight based on their processing capability. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously.
      + NOTE:
      • Choose an appropriate algorithm based on your requirements for better traffic distribution.
      • For Weighted round robin or Weighted least connections, no requests will be routed to a server with a weight of 0.
      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client are sent to the same backend server.

      + NOTE:

      You can enable sticky sessions only if you select Weighted round robin for Load Balancing Algorithm.

      + +

      -

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Load balancer cookie

      +

      Cookie Name

      +

      Specifies the cookie name. If you select Application cookie, enter a cookie name.

      +

      cookieName-qsps

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained. You can enable sticky sessions only if you select Weighted round robin or Weighted least connections for Load Balancing Algorithm.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      You can enter a maximum of 255 characters.

      +

      -

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • If the frontend protocol is TCP, HTTP or HTTPS, the health check protocol can be TCP or HTTP. The health check protocol cannot be changed once it is set.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks.

      +

      The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. The field is left blank by default and is available only when the health check protocol is HTTP.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      If you do not specify a health check port, the backend port will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      3

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    7. Click OK.
    + +

    Modifying a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Modify the parameters as needed and click OK.
    + +

    Deleting a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Click Yes.
    + + + + +Parent topic: Backend Server + + + diff --git a/elb/umn/en-us_topic_0052569751.html b/elb/umn/en-us_topic_0052569751.html new file mode 100644 index 000000000..8c73931e4 --- /dev/null +++ b/elb/umn/en-us_topic_0052569751.html @@ -0,0 +1,142 @@ + + +

    Using Shared Load Balancers — Entry Level

    +

    Scenarios

    You have a web application, which often needs to handle heavy traffic and is deployed on two ECSs for load balancing.

    +

    You can create a shared load balancer to distribute traffic evenly across the two ECSs, which eliminates SPOFs and makes your application more available.

    + +

    Prerequisites

    + +

    Creating ECSs

    ECSs are used as backend servers.

    +

    Each ECS needs an EIP for accessing the Internet, so that The EIP bound to the ECS is required only for configuring ECS backend services in this example. You need to determine whether to bind an EIP to the ECS based on the service plan.

    +

    Determine whether you need to bind an EIP to your load balancer by referring to Load Balancing on a Public or Private Network.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. Click Create ECS, configure the parameters, and click Create Now.

      +

      +The following table lists the specifications of the two ECSs. + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 ECS specifications

      Item

      +

      Example Value

      +

      Name

      +

      ECS01 and ECS02

      +

      OS

      +

      CentOS 7.2 64bit

      +

      vCPUs

      +

      2

      +

      Memory

      +

      4 GB

      +

      System disk

      +

      40 GB

      +

      Data disk

      +

      100 GB

      +

      Bandwidth

      +

      5 Mbit/s

      +
      + + +
    5. Submit your request.
    + + +

    Deploying the Application

    Deploy Nginx on the two ECSs and edit two HTML pages for the web application so that a page with message "Welcome to ELB test page one!" is returned when ECS01 is accessed, and the other page with message "Welcome to ELB test page two!" is returned when ECS02 is accessed.

    +
    1. Log in to the ECSs.
    2. Install and start Nginx.
      1. Install Nginx:

        yum -y install nginx

        +
      2. Start Nginx:

        systemctl start nginx.service

        +
      3. Enter http://EIP bound to the ECS in the address box of your browser.If the following page is displayed, Nginx has been installed.Figure 1 Nginx installed successfully
        + +
      +
    3. Modify the HTML page of ECS01.Modify the index.html file in the default root directory of Nginx /usr/share/nginx/html to identify access to ECS01.
      1. Open the index.html file.

        vim /usr/share/nginx/html/index.html

        +
      2. Press i to enter editing mode.
      3. Modify the index.html file to be as follows:
         ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page one!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB01</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                </div>
        +            </div>
        +        </div>
        +    </body>
        +
      4. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    4. Modify the HTML page of ECS02.Modify the index.html file in the default root directory of Nginx /usr/share/nginx/html to identify access to ECS02.
      1. Open the index.html file.

        vim /usr/share/nginx/html/index.html

        +
      2. Press i to enter editing mode.
      3. Modify the index.html file to be as follows:
        ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page two!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB02</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                </div>
        +             </div>
        +        </div>
        +    </body>
        +
      4. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    5. Use your browser to access http://ECS01 EIP and http://ECS02 EIP to verify that Nginx has been deployed.

      If the modified HTML pages are displayed, Nginx has been deployed.

      +
      • HTML page of ECS01Figure 2 Nginx successfully deployed on ECS01
        +
      • HTML page of ECS02Figure 3 Nginx successfully deployed on ECS02
        +
      +
    + +

    Creating a Load Balancer

    1. In the upper left corner of the page, click and select the desired region and project.
    2. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    3. Click Create Elastic Load Balancer and then configure the parameters.
    4. Click Create Now.
    5. Confirm the configuration and submit your request.
    6. View the newly created load balancer in the load balancer list.
    + +

    Adding a Listener

    Add a listener to the created load balancer. When you add the listener, create a backend server group, configure a health check, and add the two ECSs to the created backend server group.

    +Figure 4 Traffic forwarding
    +
    1. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    2. Locate the created load balancer (elb-01) and click its name.
    3. Under Listeners, click Add Listener.
    4. Configure the listener and click Next.
      • Name: Enter a name, for example, listener-HTTP.
      • Frontend Protocol/Port: Select a protocol and enter a port for the load balancer to receive requests. For example, set it to HTTP and 80.
      +
    5. Create a backend server group and configure a health check.
      • Backend server group
        • Name: Enter a name, for example, server_group-ELB.
        • Load Balancing Algorithm: Select an algorithm that the load balancer will use to route requests, for example, Weighted round robin.
        +
      +
      • Health check
        • Protocol: Select a protocol for the load balancer to perform health checks on backend servers. If the load balancer uses TCP, HTTP, or HTTPS to receive requests, the health check protocol can be TCP or HTTP. Here we use HTTP as an example. Note that the protocol cannot be changed after the listener is added.
        • Domain Name: Enter a domain name that will be used for health checks, for example, www.example.com.
        • Port: Enter a port for the load balancer to perform health checks on backend servers, for example, 80.
        +
      +
    6. Click the name of the newly added listener. On the Backend Server Groups tab page on the right, click Add.
    7. Select the servers you want to add, set the backend port, and click Finish.
      • Backend servers: Select ECS01 and ECS02.
      • Backend port: Set it to 80. Backend servers will use this port to communicate with the load balancer.
      +
    + +

    Verifying Load Balancing

    After the load balancer is configured, you can access the domain name to check whether the two ECSs are accessible.

    +
    1. Modify the C:\Windows\System32\drivers\etc\hosts file on your PC to map the domain name to the load balancer EIP.View the load balancer EIP on the basic information page of the load balancer.Figure 5 hosts file on your PC
      + +
    2. On the CLI of your PC, run the following command to check whether the domain name is mapped to the load balancer EIP:

      ping www.example.com

      +

      If data packets are returned, the domain name has been mapped to the load balancer EIP.

      +
    3. Use your browser to access http://www.example.com. If the following page is displayed, the load balancer has routed the request to ECS01.Figure 6 Accessing ECS01
      +
    4. Use your browser to access http://www.example.com. If the following page is displayed, the load balancer has routed the request to ECS02.Figure 7 Accessing ECS02
      +
    + + + + +Parent topic: Getting Started + + + diff --git a/elb/umn/en-us_topic_0092382555.html b/elb/umn/en-us_topic_0092382555.html new file mode 100644 index 000000000..c916e81d3 --- /dev/null +++ b/elb/umn/en-us_topic_0092382555.html @@ -0,0 +1,55 @@ + + +

    Certificate and Private Key Format

    +

    Certificate Format

    You can copy and paste the certificate content to create a certificate or directly upload the certificate.

    +

    A certificate issued by the Root CA is unique, and no additional certificates are required. The configured site is considered trustable by access devices such as a browser.

    +

    The certificate content must meet the following requirements:

    + +

    The following is an example:

    +
    -----BEGIN CERTIFICATE-----
    +MIIDIjCCAougAwIBAgIJALV96mEtVF4EMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV
    +BAYTAnh4MQswCQYDVQQIEwJ4eDELMAkGA1UEBxMCeHgxCzAJBgNVBAoTAnh4MQsw
    +CQYDVQQLEwJ4eDELMAkGA1UEAxMCeHgxGjAYBgkqhkiG9w0BCQEWC3h4eEAxNjMu
    +Y29tMB4XDTE3MTExMzAyMjYxM1oXDTIwMTExMjAyMjYxM1owajELMAkGA1UEBhMC
    +eHgxCzAJBgNVBAgTAnh4MQswCQYDVQQHEwJ4eDELMAkGA1UEChMCeHgxCzAJBgNV
    +BAsTAnh4MQswCQYDVQQDEwJ4eDEaMBgGCSqGSIb3DQEJARYLeHh4QDE2My5jb20w
    +gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMU832iM+d3FILgTWmpZBUoYcIWV
    +cAAYE7FsZ9LNerOyjJpyi256oypdBvGs9JAUBN5WaFk81UQx29wAyNixX+bKa0DB
    +WpUDqr84V1f9vdQc75v9WoujcnlKszzpV6qePPC7igJJpu4QOI362BrWzJCYQbg4
    +Uzo1KYBhLFxl0TovAgMBAAGjgc8wgcwwHQYDVR0OBBYEFMbTvDyvE2KsRy9zPq/J
    +WOjovG+WMIGcBgNVHSMEgZQwgZGAFMbTvDyvE2KsRy9zPq/JWOjovG+WoW6kbDBq
    +MQswCQYDVQQGEwJ4eDELMAkGA1UECBMCeHgxCzAJBgNVBAcTAnh4MQswCQYDVQQK
    +EwJ4eDELMAkGA1UECxMCeHgxCzAJBgNVBAMTAnh4MRowGAYJKoZIhvcNAQkBFgt4
    +eHhAMTYzLmNvbYIJALV96mEtVF4EMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEF
    +BQADgYEAASkC/1iwiALa2RU3YCxqZFEEsZZvQxikrDkDbFeoa6Tk49Fnb1f7FCW6
    +PTtY3HPWl5ygsMsSy0Fi3xp3jmuIwzJhcQ3tcK5gC99HWp6Kw37RL8WoB8GWFU0Q
    +4tHLOjBIxkZROPRhH+zMIrqUexv6fsb3NWKhnlfh1Mj5wQE4Ldo=
    +-----END CERTIFICATE-----
    + +

    Private Key Format

    When creating a server certificate, you also need a private key. You can copy and paste the private key content or directly upload the private key in the required format.

    +

    Private keys must be unencrypted and their content must meet the following requirements:

    + +

    The following is an example:

    +
    -----BEGIN RSA PRIVATE KEY-----
    +MIICXQIBAAKBgQDFPN9ojPndxSC4E1pqWQVKGHCFlXAAGBOxbGfSzXqzsoyacotu
    +eqMqXQbxrPSQFATeVmhZPNVEMdvcAMjYsV/mymtAwVqVA6q/OFdX/b3UHO+b/VqL
    +o3J5SrM86Veqnjzwu4oCSabuEDiN+tga1syQmEG4OFM6NSmAYSxcZdE6LwIDAQAB
    +AoGBAJvLzJCyIsCJcKHWL6onbSUtDtyFwPViD1QrVAtQYabF14g8CGUZG/9fgheu
    +TXPtTDcvu7cZdUArvgYW3I9F9IBb2lmF3a44xfiAKdDhzr4DK/vQhvHPuuTeZA41
    +r2zp8Cu+Bp40pSxmoAOK3B0/peZAka01Ju7c7ZChDWrxleHZAkEA/6dcaWHotfGS
    +eW5YLbSms3f0m0GH38nRl7oxyCW6yMIDkFHURVMBKW1OhrcuGo8u0nTMi5IH9gRg
    +5bH8XcujlQJBAMWBQgzCHyoSeryD3TFieXIFzgDBw6Ve5hyMjUtjvgdVKoxRPvpO
    +kclc39QHP6Dm2wrXXHEej+9RILxBZCVQNbMCQQC42i+Ut0nHvPuXN/UkXzomDHde
    +h1ySsOAO4H+8Y6OSI87l3HUrByCQ7stX1z3L0HofjHqV9Koy9emGTFLZEzSdAkB7
    +Ei6cUKKmztkYe3rr+RcATEmwAw3tEJOHmrW5ErApVZKr2TzLMQZ7WZpIPzQRCYnY
    +2ZZLDuZWFFG3vW+wKKktAkAaQ5GNzbwkRLpXF1FZFuNF7erxypzstbUmU/31b7tS
    +i5LmxTGKL/xRYtZEHjya4Ikkkgt40q1MrUsgIYbFYMf2
    +-----END RSA PRIVATE KEY-----
    + + + + +Parent topic: Certificate + + + diff --git a/elb/umn/en-us_topic_0114694934.html b/elb/umn/en-us_topic_0114694934.html new file mode 100644 index 000000000..9493f88cd --- /dev/null +++ b/elb/umn/en-us_topic_0114694934.html @@ -0,0 +1,161 @@ + + +

    Forwarding Policy

    +

    Scenarios

    You can add forwarding policies to HTTP or HTTPS listeners to forward requests to different backend server groups based on domain names or URLs.

    +

    This is suited for applications that are deployed on multiple backend servers and provide multiple types of services such as videos, images, audios, and texts.

    +

    A forwarding policy consists of a forwarding rule and an action.

    + + +

    Constraints and Limitations

    +

    If you add a forwarding policy that is the same as an existing forwarding policy, there will be a conflict. Even if you delete the existing forwarding policy, the newly-added forwarding policy is still in the Faulty state. Delete both the forwarding policies and add two different forwarding policies.

    + +

    + +

    Adding a Forwarding Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Add on the right of Forwarding Policies.
    7. In the Add Forwarding Policy dialog box, configure the parameters based on Table 1.
    8. Click OK.

      Alternatively, locate the load balancer in the load balancer list and click the name of the listener in the Listener column. In the Listeners area, click Add on the right of Forwarding Policies and then add a forwarding policy.

      +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Forwarding policy parameters

    Item

    +

    Parameter

    +

    Description

    +

    Example Value

    +

    Configure Forwarding Policy

    +

    Name

    +

    Specifies the forwarding policy name.

    +

    forwarding_policy-q582

    +

    Domain Name

    +

    Specifies the domain name used for forwarding requests. The domain name in the request must exactly match that in the forwarding policy. You need to specify either a domain name or URL.

    +

    www.test.com

    +

    URL Matching Rule

    +
    • Exact match

      The request URL is identical to the preset URL.

      +
    • Prefix match

      The requested URL starts with the specified URL string.

      +
    • Regular expression matchThe requested URL matches the specified URL string based on the regular expression. NOTE:
      • Exact match has the highest priority, followed by Prefix match. Regular expression match has the lowest priority.
      • If you use prefix match, the longest string is chosen. For example, if there are two preset URLs: /elb and /elbvip and the accessed URL is /elbvipplus, /elbvip is preferentially matched.
      + + +
    +

    Exact match

    +

    URL

    +

    Specifies the URL used for forwarding requests.

    +

    /login.php

    +

    Description

    +

    Provides supplementary information about the forwarding policy.

    +

    N/A

    +

    Add Backend Server Group

    +

    Backend Server Group

    +

    Specifies whether a new or existing backend server group will be used. Select Create new or Use existing.

    +

    If you select Create new, configure the parameters based on Table 1 and Table 2.

    + NOTE:

    The backend protocol can only be HTTP.

    + +

    Create new

    +
    + + +

    URL Matching Example

    The following table lists how a URL is matched, and Figure 1 shows how a request is forwarded to a backend server group.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 URL matching

    URL Matching Rule

    +

    URL

    +

    URL in the Forwarding Policy

    +

    -

    +

    -

    +

    /elb/index.html

    +

    /elb

    +

    /elb[^\s]*

    +

    /index.html

    +

    Exact match

    +

    /elb/index.html

    +

    +

    -

    +

    -

    +

    -

    +

    Prefix match

    +

    +

    +

    -

    +

    -

    +

    Regular expression match

    +

    +

    -

    +

    +

    -

    +
    + +Figure 1 Request forwarding
    +

    In this figure, the system first searches for an exact match of the requested URL (/elb_gls/glossary.html). If there is no exact match, the system searches for a prefix match. If a match is found, the request is forwarded to backend server group 2 even if a regular expression match is also found, because the prefix match has a higher priority.

    +

    Modifying a Forwarding Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Forwarding Policies.
    7. Locate the forwarding policy and click on the right of its name.
    8. In the Modify Forwarding Policy dialog box, modify the parameters and click OK.
    + +

    Deleting a Forwarding Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Forwarding Policies.
    7. Locate the forwarding policy and click on the right of its name.
    8. Click Yes.
    + + + + +Parent topic: Advanced Features of HTTP/HTTPS Listeners + + + diff --git a/elb/umn/en-us_topic_0118840332.html b/elb/umn/en-us_topic_0118840332.html new file mode 100644 index 000000000..a8fe62c2a --- /dev/null +++ b/elb/umn/en-us_topic_0118840332.html @@ -0,0 +1,58 @@ + + +

    HTTP Redirection to HTTPS

    +

    Scenarios

    HTTPS is an extension of HTTP. HTTPS encrypts data between a web server and a browser.

    +

    If you enable redirection, all HTTP requests to your website are transmitted over HTTPS connections to improve service security.

    +

    HTTP requests are forwarded to the HTTPS listener as HTTPS requests, which are then routed to backend servers over HTTP.

    + + +

    Prerequisites

    + +

    Creating a Redirect

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the HTTP listener, and click its name.
    6. Click Redirects and then Create on the right. + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring redirection

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the redirect name.

      +

      redirect-g8h9

      +

      Redirected To

      +

      Specifies the HTTPS listener to which requests are redirected.

      +

      N/A

      +

      Description

      +

      Provides supplementary information about the redirect.

      +

      N/A

      +
      + +
    7. Click OK.
      • If you create a redirect for an HTTP listener, its settings will not take effect except access control.
      • If you create a redirect for an HTTP listener, the load balancer will return HTTP 301 Move Permanently to the clients.
      + +
    + +

    Modifying a Redirect

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the HTTP listener, and click its name.
    6. Click Redirects, locate the redirect, and click Modify in the Operation column.
    7. In the Modify Redirect dialog box, modify the redirect name or description, or select another listener, and click OK.
    + +

    Deleting a Redirect

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Redirects, locate the redirect, and click Delete in the Operation column.
    7. In the Delete Redirect dialog box, click Yes.
    + + + + +Parent topic: Advanced Features of HTTP/HTTPS Listeners + + + diff --git a/elb/umn/en-us_topic_0162227063.html b/elb/umn/en-us_topic_0162227063.html new file mode 100644 index 000000000..10c96e1f9 --- /dev/null +++ b/elb/umn/en-us_topic_0162227063.html @@ -0,0 +1,91 @@ + + +

    Configuring a Health Check

    +

    Scenarios

    You can configure a health check when you add a listener. If you have no special requirements, retain the default settings.

    + +

    Function Description

    + +

    Configuring a Health Check for a Shared Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. Click More in the Operation column.
    7. Select Configure Health Check from the drop-down list.
    8. In the Configure Health Check dialog box, configure the parameters based on Table 1. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks.

      +

      The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. The field is left blank by default and is available only when the health check protocol is HTTP.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      This parameter is optional. If you do not specify a health check port, a port of the backend server will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      3

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    9. Click Finish.
    + + + + +Parent topic: Health Check + + + diff --git a/elb/umn/en-us_topic_0195131496.html b/elb/umn/en-us_topic_0195131496.html new file mode 100644 index 000000000..55a387142 --- /dev/null +++ b/elb/umn/en-us_topic_0195131496.html @@ -0,0 +1,18 @@ + + +

    Product Concepts

    +

    + + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/en-us_topic_0287737145.html b/elb/umn/en-us_topic_0287737145.html new file mode 100644 index 000000000..fa85457be --- /dev/null +++ b/elb/umn/en-us_topic_0287737145.html @@ -0,0 +1,213 @@ + + +

    Specifications of Dedicated Load Balancers

    +

    Dedicated load balancers are available in different specifications. Each specification contains some key metrics from which you can decide whether the specification meets your needs. When the traffic exceeds the selected specifications, new requests will not be routed, and packet loss will occur.

    + +

    Table 1 and Table 2 list the specifications of dedicated load balancers. (Available specifications may vary depending on the resources in different regions.)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Network load balancing (TCP/UDP)

    Type

    +

    Maximum Connections

    +

    CPS

    +

    Bandwidth (Mbit/s)

    +

    Number of LCUs in an AZ

    +

    Small I

    +

    500,000

    +

    10,000

    +

    50

    +

    10

    +

    Small II

    +

    1,000,000

    +

    20,000

    +

    100

    +

    20

    +

    Medium I

    +

    2,000,000

    +

    40,000

    +

    200

    +

    40

    +

    Medium II

    +

    4,000,000

    +

    80,000

    +

    400

    +

    80

    +

    Large I

    +

    10000000

    +

    200,000

    +

    1,000

    +

    200

    +

    Large II

    +

    20000000

    +

    400,000

    +

    2,000

    +

    400

    +
    + + +.. _en-us_topic_0287737145__table201281815505: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Application load balancing (HTTP/HTTPS)

    Type

    +

    Maximum Connections

    +

    CPS (HTTP)

    +

    CPS (HTTPS)

    +

    QPS

    +

    Bandwidth (Mbit/s)

    +

    Number of LCUs in an AZ

    +

    Small I

    +

    200,000

    +

    2,000

    +

    200

    +

    4,000

    +

    50

    +

    10

    +

    Small II

    +

    400,000

    +

    4,000

    +

    400

    +

    8,000

    +

    100

    +

    20

    +

    Medium I

    +

    800,000

    +

    8,000

    +

    800

    +

    16,000

    +

    200

    +

    40

    +

    Medium II

    +

    2,000,000

    +

    20,000

    +

    2,000

    +

    40,000

    +

    400

    +

    100

    +

    Large I

    +

    4,000,000

    +

    40,000

    +

    4,000

    +

    80,000

    +

    1,000

    +

    200

    +

    Large II

    +

    8,000,000

    +

    80,000

    +

    8,000

    +

    160,000

    +

    2,000

    +

    400

    +
    + +

    If you have added multiple listeners to a load balancer, the sum of QPS values of all listeners cannot exceed the QPS defined in each specification.

    + + + + +Parent topic: Service Overview + + + diff --git a/elb/umn/en_us_elb_03_0006.html b/elb/umn/en_us_elb_03_0006.html new file mode 100644 index 000000000..fc76a2043 --- /dev/null +++ b/elb/umn/en_us_elb_03_0006.html @@ -0,0 +1,101 @@ + + +

    Mutual Authentication

    +

    Scenarios

    In common HTTPS service scenarios, only the server certificate is required for authentication. For some mission-critical services, such as financial transactions, you need to deploy both the server certificate and the client certificate for mutual authentication.

    +

    This section uses self-signed certificates as an example to describe how to configure mutual authentication. Self-signed certificates do not provide all the security properties provided by certificates signed by a CA. It is recommended that you purchase certificates from other CAs.

    + +

    Creating a CA Certificate Using OpenSSL

    1. Log in to a Linux server with OpenSSL installed.
    2. Create the server directory and switch to the directory:

      mkdir ca

      +

      cd ca

      +
    3. Create the certificate configuration file ca_cert.conf. The file content is as follows:
      [ req ]
      +distinguished_name     = req_distinguished_name
      +prompt                 = no
      + 
      +[ req_distinguished_name ]
      + O                      = ELB
      +
    4. Create the CA certificate private key ca.key.

      openssl genrsa -out ca.key 2048

      +Figure 1 Private key of the CA certificate
      +
    5. Create the certificate signing request (CSR) file ca.csr for the CA certificate.

      openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf

      +
    6. Create the self-signed CA certificate ca.crt.

      openssl x509 -req -in ca.csr -out ca.crt -sha1 -days 5000 -signkey ca.key

      +Figure 2 Creating a self-signed CA certificate
      +
    + +

    Issuing a Server Certificate Using the CA Certificate

    The server certificate can be a CA signed certificate or a self-signed one. In the following steps, a self-signed certificate is used as an example to describe how to create a server certificate.

    +
    1. Log in to the server where the CA certificate is generated.
    2. Create a directory at the same level as the directory of the CA certificate and switch to the directory.

      mkdir server

      +

      cd server

      +
    3. Create the certificate configuration file server_cert.conf. The file content is as follows:
      [ req ]
      +distinguished_name     = req_distinguished_name
      +prompt                 = no
      + 
      +[ req_distinguished_name ]
      + O                      = ELB
      + CN                     = www.test.com
      +

      Set the CN field to the domain name or IP address of the Linux server.

      + +
    4. Create the server certificate private key server.key.

      openssl genrsa -out server.key 2048

      +
    5. Create the CSR file server.csr for the server certificate.

      openssl req -out server.csr -key server.key -new -config ./server_cert.conf

      +
    6. Use the CA certificate to issue the server certificate server.crt.

      openssl x509 -req -in server.csr -out server.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key

      +Figure 3 Issuing a server certificate
      +
    + +

    Issuing a Client Certificate Using the CA Certificate

    1. Log in to the server where the CA certificate is generated.
    2. Create a directory at the same level as the directory of the CA certificate and switch to the directory.

      mkdir client

      +

      cd client

      +
    3. Create the certificate configuration file client_cert.conf. The file content is as follows:
      [ req ]
      +distinguished_name     = req_distinguished_name
      +prompt                 = no
      + 
      +[ req_distinguished_name ]
      + O                      = ELB
      + CN                     = www.test.com
      +

      Set the CN field to the domain name or IP address of the Linux server.

      + +
    4. Create the client certificate private key client.key.

      openssl genrsa -out client.key 2048

      +Figure 4 Creating a client certificate private key
      +
    5. Create the CSR file client.csr for the client certificate.

      openssl req -out client.csr -key client.key -new -config ./client_cert.conf

      +Figure 5 Creating a client certificate CSR file
      +
    6. Use the CA certificate to issue the client certificate client.crt.

      openssl x509 -req -in client.csr -out client.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key

      +Figure 6 Issuing a client certificate
      +
    7. Convert the client certificate to a .p12 file that can be identified by the browser.

      openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

      +

      A password is required during command execution. Save this password, which will be required when you import the certificate using the browser.

      + +
    + +

    Configuring the Server Certificate and Private Key

    1. Log in to the management console.
    2. In the navigation pane on the left, choose Certificates.
    3. In the navigation pane on the left, choose Certificates. On the displayed page, click Create Certificate. In the Create Certificate dialog box, select Server certificate, copy the content of server certificate server.crt to the Certificate Content area and the content of private key file server.key to the Private Key area, and click OK.

      Delete the last newline character before you copy the content.

      + +

      The certificate and private key must be PEM-encoded.

      + +
    + +

    Configuring the CA Certificate

    1. Log in to the management console.
    2. In the navigation pane on the left, choose Certificates.
    3. Click Create Certificate. In the Create Certificate dialog box, select CA certificate, copy the content of CA certificate ca.crt created in Issuing a Server Certificate Using the CA Certificate to the Certificate Content area, and click OK.

      Delete the last newline character before you copy the content.

      + +

      The certificate must be PEM-encoded.

      + +

    + +

    Configuring Mutual Authentication

    1. Log in to the management console.
    2. Locate the load balancer and click its name. Under Listeners, click Add Listener. Select HTTPS for Frontend Protocol, enable Mutual Authentication, and select the certificate and CA certificate.Figure 7 Add Listener
      +
      1. Only shared load balancer listeners support mutual authentication.
      + +
    +

    Add backend servers.

    +

    For detailed operations, see Adding Backend Servers.

    + +

    Importing and Testing the Client Certificate

    Method 1: Using a browser

    +
    1. Import the client certificate using a browser (Internet Explorer 11 is used as an example).
      1. Export client.p12 from the Linux server.
      2. Open the browser, choose Settings > Internet Options and click Content.
      3. Click Certificates and then Import to import the client.p12 certificate.Figure 8 Importing the client.p12 certificate
        +
      +
    2. Verify the import.Enter the access address in the address box of your browser. A window is displayed asking you to select the certificate. Select the client certificate and click OK. If the website can be accessed, the certificate is successfully imported.Figure 9 Accessing the website
      + +
    +

    Method 2: Using cURL

    +
    1. Import the client certificate.

      Copy client certificate client.crt and private key client.key to a new directory, for example, /home/client_cert.

      +
    2. Verify the import.On the Shell screen, run the following command:
      curl -k --cert /home/client_cert/client.crt --key /home/client_cert/client.key https://XXX.XXX.XXX.XXX:XXX/ -I
      + +

      Ensure that the certificate address, private key address, IP address and listening port of the load balancer are correct. Replace https://XXX.XXX.XXX.XXX:XXX with the actual IP address and port number. If the expected response code is returned, the certificate is successfully imported.

      +Figure 10 Example of a correct response code
      +
    + + + + +Parent topic: Advanced Features of HTTP/HTTPS Listeners + + + diff --git a/elb/umn/public_sys-resources/ExpandCollapse.js b/elb/umn/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..3f1b7db00 --- /dev/null +++ b/elb/umn/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";var href="";function ExpandorCollapseNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseClassName}else{a.className=expandClassName}}function ExpandorCollapseTableNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseTableClassName}else{a.className=expandClassName}}function ExpandorCollapseAllNodes(g,h,c){var a=g.getAttribute("title");var b=g.parentNode;if(a=="collapse"){g.setAttribute("title","expand");g.className="dropdownAllButtonexpand";g.innerHTML=h}else{g.setAttribute("title","collapse");g.className="dropdownAllButtoncollapse";g.innerHTML=c}var f=b.getElementsByTagName("*");for(var d=0;d-1){ExpandForHref(href.substring(href.lastIndexOf("#")+1))}}catch(a){}}; \ No newline at end of file diff --git a/elb/umn/public_sys-resources/caution_3.0-en-us.png b/elb/umn/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 000000000..60f607621 Binary files /dev/null and b/elb/umn/public_sys-resources/caution_3.0-en-us.png differ diff --git a/elb/umn/public_sys-resources/commonltr.css b/elb/umn/public_sys-resources/commonltr.css new file mode 100644 index 000000000..c5480b0ab --- /dev/null +++ b/elb/umn/public_sys-resources/commonltr.css @@ -0,0 +1 @@ +body{font-size:10pt;font-family:Arial;margin:1.5em;border-top:2pt;padding-top:1em;padding-bottom:2em}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:.6em;margin-bottom:.6em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.figcap{font-size:10pt}img{margin-top:.3em}.figdesc{font-style:normal}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.fignone{font-size:10pt;margin-top:8pt;margin-bottom:8pt}.familylinks{margin-top:1.5em;margin-bottom:1em}.ullinks{list-style-type:none}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-top:.6em;margin-bottom:.6em}.reltasks{margin-top:.6em;margin-bottom:.6em}.relref{margin-top:.6em;margin-bottom:.6em}.relinfo{margin-top:.6em;margin-bottom:.6em}.breadcrumb{font-size:smaller;margin-bottom:.6em}.prereq{margin-left:20px}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.topictitle1{margin-top:0;margin-bottom:1em;font-size:14pt;color:#007af4}.topictitle2{margin-top:1pc;margin-bottom:.45em;font-size:1.17em;color:#007af4}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-size:1.17em;font-weight:bold;color:#007af4}.topictitle4{margin-top:.83em;font-size:1.17em;font-weight:bold}.topictitle5{font-size:1.17em;font-weight:bold}.topictitle6{font-size:1.17em;font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:1em;color:black;font-size:10.5pt;font-weight:bold;color:#007af4;overflow:auto}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}.sectiontitle2contents:link{color:#007af4}.sectiontitle2contents:visited{color:#800080}.note{margin-top:1em;margin-bottom:1em;background-color:#ffc}.notetitle{font-weight:bold}.notelisttitle{font-weight:bold}.tip{margin-top:1em;margin-bottom:1em;background-color:#ffc}.tiptitle{font-weight:bold}.fastpath{margin-top:1em;margin-bottom:1em;background-color:#ffc}.fastpathtitle{font-weight:bold}.important{margin-top:1em;margin-bottom:1em;background-color:#ffc}.importanttitle{font-weight:bold}.remember{margin-top:1em;margin-bottom:1em;background-color:#ffc}.remembertitle{font-weight:bold}.restriction{margin-top:1em;margin-bottom:1em;background-color:#ffc}.restrictiontitle{font-weight:bold}.attention{margin-top:1em;margin-bottom:1em;background-color:#ffc}.attentiontitle{font-weight:bold}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;background-color:#ffc}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;background-color:#ffc}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;background-color:#ffc}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;background-color:#ffc}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}ol{margin-top:1em;margin-bottom:1em;margin-left:2.4em;padding-left:0}ul{margin-top:1em;margin-bottom:1em;margin-left:2.0em;padding-left:0}ol ul{list-style:disc}ul ul{list-style:square}ol ul ul{list-style:square}ol ul{list-style-type:disc}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}.firstcol{font-weight:bold}th{background-color:#cfcfcf}table{margin-top:8pt;margin-bottom:12pt;width:100%}table caption{margin-top:8pt;text-align:left}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:.3em;margin-bottom:.3em}.substepexpand{margin-top:.3em;margin-bottom:.3em}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}.hrcopyright{color:#3f4e5d;margin-top:18pt}.hwcopyright{text-align:center}.comment{margin:2px 2px 2px 2px;font-family:Arial;font-size:10pt;background-color:#bfb;color:#000}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowncontext{display:none}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdowncollapsetable{border:0}.dropdowncollapsetable .dropdowncontext{display:none}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}pre{font-size:10pt;font-weight:normal;margin-left:9;margin-top:2;margin-bottom:2}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0} \ No newline at end of file diff --git a/elb/umn/public_sys-resources/commonltr_print.css b/elb/umn/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/elb/umn/public_sys-resources/commonltr_print.css @@ -0,0 +1 @@ +body{font-size:12.0pt;margin:1.5em;margin-left:1.6cm}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:1em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.covertable{border:0;width:100% cellpadding:8pt;cellspacing:8pt}.cover_productname{font-size:15.0pt;font-family:"Arial"}.cover_manualtitle{font-size:24.0pt;font-weight:bold;font-family:"Arial"}.cover_manualsubtitle{font-size:18.0pt;font-weight:bold;font-family:"Arial"}.cover_heading{font-size:12.0pt;font-weight:bold;font-family:"Arial"}.cover_text{font-size:9.0pt;font-family:"Arial"}.tocheading,.heading1,.topictitle1{margin-top:40.0pt;margin-right:0;margin-bottom:20.0pt;margin-left:-1cm;text-align:left;border:0;border-bottom:solid windowtext .5pt;font-size:22.0pt;font-family:"Arial";font-weight:bold}.topictitlenumber1{font-size:72.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle2{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Arial";font-weight:bold}.topictitle3{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:16.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle4{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:14.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle5{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.blocklabel,.topictitle6{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.sectiontitle{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:-1cm;text-indent:0;font-size:13.0pt;font-family:"Arial";font-weight:bold}.tocentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Book Antiqua";font-weight:bold}.tocentry2{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry3{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry4{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry5{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tofentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.totentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.indexheading{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.indexentry1{margin-top:4pt;margin-right:0;margin-bottom:0;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Times New Roman"}.indexentry2{margin-top:0;margin-right:0;margin-bottom:0;margin-left:24.0pt;line-height:12.0pt;font-size:12.0pt}.indexentry3{margin-top:0;margin-right:0;margin-bottom:0;margin-left:48pt;line-height:12.0pt;font-size:12.0pt}.figurenumber{font-weight:bold}.tablenumber{font-weight:bold}.familylinks{margin-top:1.5em;margin-bottom:1em}.figcap{font-size:11.0pt}.tablecap{font-size:11.0pt}.figdesc{font-style:normal}.fignone{margin-top:8.0pt}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.ullinks{margin-left:0;list-style-type:none}.ulchildlink{margin-top:1em;margin-bottom:1em}.olchildlink{margin-top:1em;margin-bottom:1em;margin-left:1em}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-left:1cm;margin-top:1em;margin-bottom:1em}.reltasks{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relref{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relinfo{margin-top:1em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-left:0}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}table .note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.notetitle{font-weight:bold;font-size:11.0pt}.notelisttitle{font-weight:bold}table .tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.tiptitle{font-weight:bold;font-size:11.0pt}table .fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.fastpathtitle{font-weight:bold;font-size:11.0pt}table .important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.importanttitle{font-weight:bold;font-size:11.0pt}table .remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.remembertitle{font-weight:bold;font-size:11.0pt}table .restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.restrictiontitle{font-weight:bold;font-size:11.0pt}table .attention{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.attention{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}.attentiontitle{font-weight:bold}table .danger{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .notice{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .warning{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .caution{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}table caption{margin-top:8pt;text-align:left;font-weight:bold}.tablenoborder{margin-top:8pt}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}.firstcol{font-weight:bold}th{background-color:#cfcfcf}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:1em;margin-bottom:1em}.substepexpand{margin-top:1em;margin-bottom:1em}table{margin-top:8pt;margin-bottom:10.0pt;width:100%}thead{font-size:10.0pt;font-family:"Book Antiqua";font-weight:bold}tbody{font-size:11.0pt}ol{margin-top:1em;margin-bottom:1em;margin-left:1.7em;-webkit-padding-start:0}ul{margin-top:1em;margin-bottom:1em;margin-left:1.2em;-webkit-padding-start:0}ol ul{list-style:disc}ul ul{list-style:square}ol ol{list-style-type:lower-alpha}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre{font-size:10.0pt;border-width:2px;padding:2px;margin-top:5px;margin-bottom:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.prefacesectiontitle1{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Book Antiqua";font-weight:bold;overflow:auto}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0}.hrcopyright{color:#3f4e5d;margin-top:18pt;margin-left:-1cm}.hwcopyright{text-align:center;font-family:Arial;margin-left:-1cm} \ No newline at end of file diff --git a/elb/umn/public_sys-resources/commonrtl.css b/elb/umn/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..947a9a033 --- /dev/null +++ b/elb/umn/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +.msgph{font-family:Courier New}.unresolved{background-color:#87ceeb}.noTemplate{background-color:#ff0}.base{background-color:#fff}/*! Add space for top level topics */.nested0,.p{margin-top:1em}/*! div with class=p is used for paragraphs that contain blocks, to keep the XHTML valid *//*! Default of italics to set apart figure captions */.figcap,.italic,.var{font-style:italic}.figdesc{font-style:normal}/*! Use @frame to create frames on figures */.figborder{padding-left:3px;padding-right:3px;margin-top:1em;border:2px solid Silver}.figsides{margin-top:1em;padding-left:3px;padding-right:3px;border-left:2px solid Silver;border-right:2px solid Silver}.figtop{border-top:2px solid Silver;margin-top:1em}.figbottom{border-bottom:2px solid Silver}.figtopbot{border-top:2px solid Silver;border-bottom:2px solid Silver;margin-top:1em}/*! Most link groups are created with
    . Ensure they have space before and after. */.ullinks,ul.simple{list-style-type:none}.attention,.danger,.ddexpand,.dlexpand,.example,.fastpath,.important,.liexpand,.linklist,.note,.notice,.olchildlink,.relconcepts,.relinfo,.relref,.reltasks,.remember,.restriction,.section,.sliexpand,.stepexpand,.substepexpand,.tip,.ulchildlink,.warning{margin-top:1em;margin-bottom:1em}.linklistwithchild,.sublinklist{margin-top:1em;margin-right:1.5em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-right:20px}/*! Set heading sizes, getting smaller for deeper nesting */.topictitle1{font-size:1.34em;margin-top:0;margin-bottom:.1em}.topictitle2,.topictitle3,.topictitle4,.topictitle5,.topictitle6,.sectiontitle{font-size:1.17em}.topictitle2{margin-top:1pc;margin-bottom:.45em}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-weight:700}.topictitle4{margin-top:.83em;font-weight:700}.topictitle5{font-weight:700}.topictitle6{font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:0;color:#000;font-weight:700}/*! All note formats have the same default presentation */.attentiontitle,.bold,.cautiontitle,.dangertitle,.dlterm,.fastpathtitle,.firstcol,.importanttitle,.notelisttitle,.notetitle,.noticetitle,.parmname,.remembertitle,.restrictiontitle,.tiptitle,.uicontrol,.warningtitle{font-weight:700}.caution{font-weight:700;margin-bottom:1em}/*! Simple lists do not get a bullet *//*! Used on the first column of a table, when rowheader="firstcol" is used *//*! Various basic phrase styles */.boldItalic{font-weight:700;font-style:italic}.shortcut,.underlined{text-decoration:underline}/*! 2008-10-27 keyword采用跟随上下文的样式 +*//*! Default of bold for definition list terms *//*! Use CSS to expand lists with @compact="no" */.dltermexpand{font-weight:700;margin-top:1em}[compact="yes"]>li{margin-top:0}[compact="no"]>li{margin-top:.53em}/*! Align images based on @align on topic/image */div.imageleft,.text-align-left{text-align:left}div.imagecenter,.text-align-center{text-align:center}div.imageright,.text-align-right{text-align:right}div.imagejustify,.text-align-justify{text-align:justify}.cellrowborder{border-right:0;border-top:0;border-left:1px solid;border-bottom:1px solid}.row-nocellborder{border-left:hidden;border-right:0;border-top:0;border-bottom:1px solid}.cell-norowborder{border-top:0;border-bottom:hidden;border-right:0;border-left:1px solid}.nocellnorowborder{border:0;border-left:hidden;border-bottom:hidden}pre.codeblock,pre.screen{padding:5px;border:outset;background-color:#ccc;margin-top:2px;margin-bottom:2px;white-space:pre} \ No newline at end of file diff --git a/elb/umn/public_sys-resources/danger_3.0-en-us.png b/elb/umn/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 000000000..47a9c7235 Binary files /dev/null and b/elb/umn/public_sys-resources/danger_3.0-en-us.png differ diff --git a/elb/umn/public_sys-resources/delta.gif b/elb/umn/public_sys-resources/delta.gif new file mode 100644 index 000000000..0d1b1f674 Binary files /dev/null and b/elb/umn/public_sys-resources/delta.gif differ diff --git a/elb/umn/public_sys-resources/deltaend.gif b/elb/umn/public_sys-resources/deltaend.gif new file mode 100644 index 000000000..cc7da0fc8 Binary files /dev/null and b/elb/umn/public_sys-resources/deltaend.gif differ diff --git a/elb/umn/public_sys-resources/icon-arrowdn.gif b/elb/umn/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 000000000..84eec9be2 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-arrowdn.gif differ diff --git a/elb/umn/public_sys-resources/icon-arrowrt.gif b/elb/umn/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 000000000..39583d168 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-arrowrt.gif differ diff --git a/elb/umn/public_sys-resources/icon-caution.gif b/elb/umn/public_sys-resources/icon-caution.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-caution.gif differ diff --git a/elb/umn/public_sys-resources/icon-danger.gif b/elb/umn/public_sys-resources/icon-danger.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-danger.gif differ diff --git a/elb/umn/public_sys-resources/icon-huawei.gif b/elb/umn/public_sys-resources/icon-huawei.gif new file mode 100644 index 000000000..a31d60f89 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-huawei.gif differ diff --git a/elb/umn/public_sys-resources/icon-note.gif b/elb/umn/public_sys-resources/icon-note.gif new file mode 100644 index 000000000..31be2b039 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-note.gif differ diff --git a/elb/umn/public_sys-resources/icon-notice.gif b/elb/umn/public_sys-resources/icon-notice.gif new file mode 100644 index 000000000..409070650 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-notice.gif differ diff --git a/elb/umn/public_sys-resources/icon-tip.gif b/elb/umn/public_sys-resources/icon-tip.gif new file mode 100644 index 000000000..c47bae05c Binary files /dev/null and b/elb/umn/public_sys-resources/icon-tip.gif differ diff --git a/elb/umn/public_sys-resources/icon-warning.gif b/elb/umn/public_sys-resources/icon-warning.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/elb/umn/public_sys-resources/icon-warning.gif differ diff --git a/elb/umn/public_sys-resources/note_3.0-en-us.png b/elb/umn/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 000000000..57a0e1f53 Binary files /dev/null and b/elb/umn/public_sys-resources/note_3.0-en-us.png differ diff --git a/elb/umn/public_sys-resources/notice_3.0-en-us.png b/elb/umn/public_sys-resources/notice_3.0-en-us.png new file mode 100644 index 000000000..fa4b64990 Binary files /dev/null and b/elb/umn/public_sys-resources/notice_3.0-en-us.png differ diff --git a/elb/umn/public_sys-resources/popup.js b/elb/umn/public_sys-resources/popup.js new file mode 100644 index 000000000..5305962bc --- /dev/null +++ b/elb/umn/public_sys-resources/popup.js @@ -0,0 +1 @@ +var i=0;var dhtmlgoodies_tooltipFlag=false;var dhtmlgoodies_tooltip="";var dhtmlgoodies_tooltipShadow="";var dhtmlgoodies_shadowSize=3;var dhtmlgoodies_tooltipMaxWidth=500;var dhtmlgoodies_tooltipMinWidth=100;var dhtmlgoodies_iframe=false;var timeId;var clickFlag=false;var tooltip_is_msie=(navigator.userAgent.indexOf("MSIE")>=0&&navigator.userAgent.indexOf("opera")==-1&&document.all)?true:false;var xPos;var yPos;window.document.onmousemove=function(a){a=a||window.event;if(a.pageX){xPos=a.pageX;yPos=a.pageY}else{if(document.body!=null){xPos=a.clientX+document.body.scrollLeft-document.body.clientLeft;yPos=a.clientY+document.body.scrollTop-document.body.clientTop}}};function showTooltip(tooltipTxt){if(document.body==null){return}if(i==0){return}clickFlag=true;var text=eval("jsonData."+tooltipTxt);var bodyWidth=Math.max(document.body.clientWidth,document.documentElement.clientWidth)-20;if(!dhtmlgoodies_tooltipFlag){dhtmlgoodies_tooltip=document.createElement("DIV");dhtmlgoodies_tooltip.id="dhtmlgoodies_tooltip";dhtmlgoodies_tooltipShadow=document.createElement("DIV");dhtmlgoodies_tooltipShadow.id="dhtmlgoodies_tooltipShadow";document.body.appendChild(dhtmlgoodies_tooltip);document.body.appendChild(dhtmlgoodies_tooltipShadow);if(tooltip_is_msie){dhtmlgoodies_iframe=document.createElement("IFRAME");dhtmlgoodies_iframe.frameborder="5";dhtmlgoodies_iframe.style.backgroundColor="#FFFFFF";dhtmlgoodies_iframe.src="#";dhtmlgoodies_iframe.style.zIndex=100;dhtmlgoodies_iframe.style.position="absolute";document.body.appendChild(dhtmlgoodies_iframe)}}dhtmlgoodies_tooltip.style.display="block";dhtmlgoodies_tooltipShadow.style.display="block";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="block"}var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(navigator.userAgent.toLowerCase().indexOf("safari")>=0){st=0}var leftPos=xPos+10;dhtmlgoodies_tooltip.style.width=null;dhtmlgoodies_tooltip.innerHTML=text;dhtmlgoodies_tooltip.style.left=leftPos+"px";if(tooltip_is_msie){dhtmlgoodies_tooltip.style.top=yPos+20+st+"px"}else{dhtmlgoodies_tooltip.style.top=yPos+20+"px"}dhtmlgoodies_tooltipShadow.style.left=leftPos+dhtmlgoodies_shadowSize+"px";if(tooltip_is_msie){dhtmlgoodies_tooltipShadow.style.top=yPos+20+st+dhtmlgoodies_shadowSize+"px"}else{dhtmlgoodies_tooltipShadow.style.top=yPos+20+dhtmlgoodies_shadowSize+"px"}if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){dhtmlgoodies_tooltip.style.width=dhtmlgoodies_tooltipMaxWidth+"px"}var tooltipWidth=dhtmlgoodies_tooltip.offsetWidth;if(tooltipWidthbodyWidth){dhtmlgoodies_tooltip.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((leftPos+tooltipWidth)-bodyWidth))+"px";dhtmlgoodies_tooltipShadow.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((leftPos+tooltipWidth)-bodyWidth)+dhtmlgoodies_shadowSize)+"px"}if(tooltip_is_msie){dhtmlgoodies_iframe.style.left=dhtmlgoodies_tooltip.style.left;dhtmlgoodies_iframe.style.top=dhtmlgoodies_tooltip.style.top;dhtmlgoodies_iframe.style.width=dhtmlgoodies_tooltip.offsetWidth+"px";dhtmlgoodies_iframe.style.height=dhtmlgoodies_tooltip.offsetHeight+"px"}}function hideTooltip(){i=0;clickFlag=false;if(dhtmlgoodies_tooltip!=null&&dhtmlgoodies_tooltip.style!=null){dhtmlgoodies_tooltip.style.display="none";dhtmlgoodies_tooltipShadow.style.display="none";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="none"}}if(timeId!=null&&timeId!=""){clearTimeout(timeId)}}function showText(a){i=1;timeId=setTimeout(function(){showTooltip(a)},500)}function showText2(a){if(!clickFlag){i=1;showTooltip(a);i=0;if(timeId!=null&&timeId!=""){clearTimeout(timeId)}}}function anchorScroll(b){var d=document.getElementsByName(b);if(d!=null&&d.length>0){var c=d[0];var a=c.getBoundingClientRect().left+(document.body.scrollLeft||(document.documentElement&&document.documentElement.scrollLeft));var e=c.getBoundingClientRect().top+(document.body.scrollTop||(document.documentElement&&document.documentElement.scrollTop));window.scrollTo(a,e-30)}}; \ No newline at end of file diff --git a/elb/umn/public_sys-resources/warning_3.0-en-us.png b/elb/umn/public_sys-resources/warning_3.0-en-us.png new file mode 100644 index 000000000..def5c3565 Binary files /dev/null and b/elb/umn/public_sys-resources/warning_3.0-en-us.png differ diff --git a/elb/umn/temp/access_control.tmp b/elb/umn/temp/access_control.tmp new file mode 100644 index 000000000..1f38419fc --- /dev/null +++ b/elb/umn/temp/access_control.tmp @@ -0,0 +1,47 @@ + + +

    Access Control

    +

    Access control allows you to whitelist certain IP addresses to allow them to access a listener.

    +
    • You can add whitelists only to listeners of shared load balancers. Adding whitelists may interrupt services. Once a whitelist is added, only IP addresses in the whitelist can access the listener.
    • If access control is enabled but no whitelist is added, the listener cannot be accessed.
    • Whitelists do not conflict with inbound security group rules. Whitelists control access to listeners based on IP addresses or CIDR blocks, whereas inbound security group rules control access to backend servers based on the protocol, ports, and IP addresses.
    + +

    Adding a Whitelist

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    1. Locate the load balancer and click its name.
    2. Click Listeners, locate the listener, and click its name. In the Basic Information area, click Configure next to Access Control. +.. _en-us_elb_03_0003__table3263104318541: + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Access Control

      +

      Enabled

      +
      • If access control is enabled and no whitelist is set, no IP address can access the listener.
      • If access control is enabled and a whitelist is set, only IP addresses in the whitelist can access the listener.
      +

      Disabled

      +
      • If access control is disabled, the listener can be accessed from any IP address.
      +

      N/A

      +

      Whitelist

      +

      Lists the IP addresses that can access the listener.

      + NOTE:
      • A maximum of 300 IP addresses or IP address ranges are supported. A comma (,) is used to separate every two entries.
      • The whitelist cannot contain IPv6 addresses.
      + +

      10.168.2.24,10.168.16.0/24

      +
      + +
    3. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/access_logging.tmp b/elb/umn/temp/access_logging.tmp new file mode 100644 index 000000000..bbcef63ba --- /dev/null +++ b/elb/umn/temp/access_logging.tmp @@ -0,0 +1,91 @@ + + +

    Access Logging

    +

    Access logs record HTTP and HTTPS requests made to load balancers, and these logs are stored in an OBS bucket. Only public network classic load balancers support access logging.

    +

    Before configuring access logging, ensure that you have created a load balancer and OBS bucket. For details, see "Creating a Bucket" in the Object Storage Service User Guide.

    +
    1. Grant read and write permissions to the ELB administrator.
      1. Log in to the management console. On the Object Storage Service page, click the name of the destination bucket.
      2. In the navigation pane on the left, choose Permissions.
      3. On the displayed page, click Bucket ACLs.
      4. Click Add and set the parameters.
      + +.. _elb_ug_rzfw_0001__table38812372310: + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Account

      +

      Specifies the account ID or account name of the ELB administrator.

      +

      N/A

      +

      Access to Bucket

      +

      Specifies the permissions to read data from or write data to an OBS bucket.

      +

      Read/Write

      +

      Access to ACL

      +

      Allows the authorized user to read or write the bucket ACL.

      +

      Read/Write

      +
      + +
      1. Click Save.
      +
    2. Associate the bucket with a load balancer.
      1. Locate the load balancer and click More in the Operation column.
      2. Select Configure Access Log.
      3. In the Configure Access Log dialog box, enable access logging.
      4. Select the associated OBS bucket and configure log information.Figure 1 Configure Access Log
        + +.. _elb_ug_rzfw_0001__table389515316230: + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameter description

        Parameter

        +

        Description

        +

        Example Value

        +

        Enable Logging

        +

        Whether to enable access logging

        +

        N/A

        +

        Backup Interval (min)

        +

        Log backup interval in minutes, which is 60 minutes by default

        +

        60

        +

        OBS Bucket

        +

        Destination bucket with read and write permissions

        +

        obs01

        +

        Prefix

        +

        Log storage directory

        +

        If this field is left blank, logs will be saved to the root directory of the destination bucket.

        +

        log01

        +
        + +
      +
    + + + diff --git a/elb/umn/temp/adding_a_listener.tmp b/elb/umn/temp/adding_a_listener.tmp new file mode 100644 index 000000000..5018207b4 --- /dev/null +++ b/elb/umn/temp/adding_a_listener.tmp @@ -0,0 +1,588 @@ + + +

    Adding a Listener

    +

    Scenarios

    After you create a load balancer, add at least one listener to the load balancer. This listener is a process that checks for requests using the protocol and port you configure for connections from clients to the load balancer, and the protocol and port from the load balancer to backend servers.

    +

    The listener also defines the health check configuration, based on which the load balancer continually checks the running statuses of backend servers. If a backend server is detected unhealthy, the load balancer routes traffic to these healthy ones. Traffic forwarding to this server resumes once it recovers.

    +

    When you add an HTTP listener, ensure that the subnet of the load balancer has sufficient IP addresses. If the IP addresses are insufficient, add multiple subnets on the Basic Information page of the load balancer. After you select a subnet, ensure that ACL rules are not configured for this subnet. If rules are configured, request packets may not be allowed.

    + +

    Adding a Listener to a Dedicated Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener. Configure the parameters based on Table 1, Table 2, and Table 3. +.. _elb_ug_jt_0011__table627865019713: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring a listener

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the listener name.

      +

      listener-pnqy

      +

      Frontend Protocol/Port

      +

      Specifies the protocol and port used by the load balancer to receive requests from clients and forward the requests to backend servers.

      +

      The port number ranges from 1 to 65535, and the following protocols are supported:

      +
      • HTTP
      +
      • TCP
      • HTTPS
      • UDP
      +

      TCP/80

      +

      Redirect

      +

      Redirects requests to an HTTPS listener when HTTP is used as the frontend protocol. If you have both HTTPS and HTTP listeners, you can use this function to redirect the requests from the HTTP listener to the HTTPS listener to ensure security.

      +

      If you create a redirect for an HTTP listener, the load balancer will return HTTP 301 Move Permanently to the clients.

      +

      N/A

      +

      Redirected To

      +

      Specifies the HTTPS listener to which requests are redirected.

      +

      N/A

      +

      Server Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol.

      +

      N/A

      +

      Enable SNI

      +

      Specifies whether to enable SNI when HTTPS is used as the frontend protocol.

      +

      SNI is an extension to TLS and is used when a server uses multiple domain names and certificates. This allows the client to submit the domain name information while sending an SSL handshake request. After the load balancer receives the request, the load balancer queries the corresponding certificate based on the domain name and returns it to the client. If no certificate is found, the load balancer will return a default certificate.

      +

      N/A

      +

      SNI Certificate

      +

      Specifies the certificate associated with the domain name when the frontend protocol is HTTPS and SNI is enabled.

      +

      N/A

      +

      Advanced Settings

      +

      Security Policy

      +

      Specifies the security policy you can use if you select HTTPS as the frontend protocol. The following options are available (for details, see Security Policy):

      +
      • TLS-1-0
      • TLS-1-1
      • TLS-1-2
      • TLS-1-2-Strict
      +

      TLS-1-0

      +

      Mutual Authentication

      +

      Specifies whether to enable mutual authentication between the server and client. Both a server certificate and CA certificate are required for mutual authentication. You can enable this option if you have set Frontend Protocol to HTTPS.

      +

      N/A

      +

      CA Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol. This parameter is mandatory if you have set Frontend Protocol to HTTPS and enabled mutual authentication.

      +

      N/A

      +

      Obtain Load Balancer EIP

      +

      Specifies whether to pass the load balancer EIP to backend servers if you select HTTPS or HTTP for Frontend Protocol.

      +

      N/A

      +

      Description

      +

      Provides supplementary information about the listener.

      +

      N/A

      +

      Tag

      +

      Adds tags to the listener. Each tag is a key-value pair, and the tag key is unique.

      +

      11/11

      +
      + + +.. _elb_ug_jt_0011__table02842501376: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters for adding a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Backend Server Group

      +

      Specifies a group of servers with the same features to receive requests from the load balancer. Two options are available:

      +
      • Create new
      • Use existing NOTE:

        To associate an existing backend server group, ensure that it is not in use. Select the backend server group with the correct protocol. For example, if the frontend protocol is TCP, the backend protocol can only be TCP.

        + +
      +

      Create new

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of the request is input into a hash algorithm, and the resulting hash is used to identify a server in the static fragment table.
      + NOTE:

      Choose an appropriate algorithm based on your requirements for better traffic distribution.

      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client during one session are sent to the same backend server.

      + NOTE:

      For HTTP and HTTPS listeners, enabling or disabling sticky sessions may cause few seconds of service interruption.

      + +

      N/A

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hash key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Source IP address

      +

      Cookie Name

      +

      Specifies the cookie name. If you select Application cookie, enter a cookie name.

      +

      cookieName-qsps

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      N/A

      +
      + + +.. _elb_ug_jt_0011__table172911502712: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 3 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks. The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. This field is left blank by default and needs to be configured only if you use HTTP as the health check protocol.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      This parameter is optional. If you do not specify a health check port, a port of the backend server will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Provides some advanced features.

      +

      N/A

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout ranges from 1 to 50.

      +

      10

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    1. Click Finish.
    2. Click OK.
    + +

    Adding a Listener to a Shared Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener. Configure the parameters based on Table 4, Table 5, and Table 6. +.. _elb_ug_jt_0011__table1441020925310: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Parameters for configuring a listener

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the listener name.

      +

      listener-pnqy

      +

      Frontend Protocol/Port

      +

      Specifies the protocol and port used by the load balancer to receive requests from clients and forward the requests to backend servers.

      +

      The port number ranges from 1 to 65535, and the following protocols are supported:

      +
      • HTTP
      +
      • TCP
      • HTTPS
      • UDP
      +

      TCP/80

      +

      Redirect

      +

      Redirects requests to an HTTPS listener when HTTP is used as the frontend protocol. If you have both HTTPS and HTTP listeners, you can use this function to redirect the requests from the HTTP listener to the HTTPS listener to ensure security.

      +

      If you create a redirect for an HTTP listener, the load balancer will return HTTP 301 Move Permanently to the clients.

      +

      N/A

      +

      Redirected To

      +

      Specifies the HTTPS listener to which requests are redirected.

      +

      N/A

      +

      Server Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol.

      +

      N/A

      +

      Enable SNI

      +

      Specifies whether to enable SNI when HTTPS is used as the frontend protocol.

      +

      SNI is an extension to TLS and is used when a server uses multiple domain names and certificates. This allows the client to submit the domain name information while sending an SSL handshake request. After the load balancer receives the request, the load balancer queries the corresponding certificate based on the domain name and returns it to the client. If no certificate is found, the load balancer will return a default certificate.

      +

      N/A

      +

      SNI Certificate

      +

      Specifies the certificate associated with the domain name when the frontend protocol is HTTPS and SNI is enabled.

      +

      Select an existing certificate or create one.

      +

      N/A

      +

      Advanced Settings

      +

      Security Policy

      +

      Specifies the security policy you can use if you select HTTPS as the frontend protocol. The following options are available (for details, see Security Policy):

      +
      • TLS-1-0
      • TLS-1-1
      • TLS-1-2
      • TLS-1-2-Strict
      +

      TLS-1-0

      +

      Idle Timeout

      +

      Specifies the length of time for a connection to keep alive, in seconds. If no request is received within this period, the load balancer closes the connection and establishes a new one with the client when the next request arrives. This parameter is mandatory when you have set Frontend Protocol to TCP, HTTP or HTTPS.

      +

      The idle timeout duration varies depending on the protocol:

      +
      • TCP: 10 to 4000
      • HTTP or HTTPS: 0 to 4000
      +
      • TCP: The default value is 300.
      • HTTP or HTTPS: The default value is 60.
      +

      Mutual Authentication

      +

      Specifies whether to enable mutual authentication between the server and client. Both a server certificate and CA certificate are required for mutual authentication. You can enable this option if you have set Frontend Protocol to HTTPS.

      +

      N/A

      +

      CA Certificate

      +

      Specifies the certificate used by the server to authenticate the client when HTTPS is used as the frontend protocol. This parameter is mandatory if you have set Frontend Protocol to HTTPS and enabled mutual authentication.

      +

      N/A

      +

      Description

      +

      Provides supplementary information about the listener.

      +

      N/A

      +

      Tag

      +

      Adds tags to the listener. Each tag is a key-value pair, and the tag key is unique.

      +

      11/11

      +
      + + +.. _elb_ug_jt_0011__table6414109125314: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 5 Parameters for adding a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Backend Server Group

      +

      Specifies a group of servers with the same features to receive requests from the load balancer. Two options are available:

      +
      • Create new
      • Use existing NOTE:

        To associate an existing backend server group, ensure that it is not in use. Select the backend server group with the correct protocol. For example, if the frontend protocol is TCP, the backend protocol can only be TCP.

        + +
      +

      Create new

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of the request is input into a hash algorithm, and the resulting hash is used to identify a server in the static fragment table.
      + NOTE:

      Choose an appropriate algorithm based on your requirements for better traffic distribution.

      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client during one session are sent to the same backend server.

      + NOTE:

      For HTTP and HTTPS listeners, enabling or disabling sticky sessions may cause few seconds of service interruption.

      + +

      N/A

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hash key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Source IP address

      +

      Cookie Name

      +

      Specifies the cookie name. If you select Application cookie, enter a cookie name.

      +

      cookieName-qsps

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      N/A

      +
      + + +.. _elb_ug_jt_0011__table124201898534: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 6 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks. The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. This field is left blank by default and needs to be configured only if you use HTTP as the health check protocol.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      This parameter is optional. If you do not specify a health check port, a port of the backend server will be used for health checks by default.

      + +

      80

      +

      Advanced Settings

      +

      Provides some advanced features.

      +

      N/A

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      10

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    1. Click Finish.
    2. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/adding_an_alarm_rule.tmp b/elb/umn/temp/adding_an_alarm_rule.tmp new file mode 100644 index 000000000..617f2da30 --- /dev/null +++ b/elb/umn/temp/adding_an_alarm_rule.tmp @@ -0,0 +1,15 @@ + + +

    Adding an Alarm Rule

    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Eye.
    3. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
    4. On the Alarm Rules page, click Create Alarm Rule.The following describes how to create an alarm rule for a load balancer.
      1. Select Elastic Load Balancing for Resource Type.
      2. For Dimension, select Elastic Load Balancers. In the following operations, a load balancer is used as an example.
      3. Set other parameters as required and then click Create.

        Once the alarm rule is set and you have enabled the notification function, the system automatically sends you a notification when an alarm is generated.

        +

        For more information about alarm rules of load balancers and listeners, see the Cloud Eye User Guide.

        + +
      + +
    + + + + + + diff --git a/elb/umn/temp/adding_or_removing_backend_servers_(dedicated_load_balancers).tmp b/elb/umn/temp/adding_or_removing_backend_servers_(dedicated_load_balancers).tmp new file mode 100644 index 000000000..c90fc416b --- /dev/null +++ b/elb/umn/temp/adding_or_removing_backend_servers_(dedicated_load_balancers).tmp @@ -0,0 +1,194 @@ + + +

    Adding or Removing Backend Servers (Dedicated Load Balancers)

    +

    Scenarios

    When you use ELB, ensure that at least a healthy backend server is in the backend server group associated with your load balancer. If incoming traffic increases, you need to add more backend servers.

    +

    After a backend server is removed, it cannot receive requests from the load balancer. You can add it back to the backend server group when the traffic goes up again.

    +

    If the load balancer is associated with an AS group, instances in the AS group are automatically added to the backend server group associated with the load balancer. If instances are removed from the AS group, they will be automatically removed from the backend server group.

    + + +

    Adding Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. On the Backend Server Groups tab page, click Add Backend Server under Backend Servers.
    6. Perform the following operations based on the type of the backend servers:
      • Backend servers in the same VPC as the load balancer: In the Add Backend Server dialog box, select the subnet where the backend servers reside, select the backend servers to be added, and click Next. Set the server weights and backend ports, and click Finish.
      • Cross-VPC backend servers: In the Add Cross-VPC Backend Server dialog box, specify the IP addresses, ports, and weights, and click OK.
      +
    + +

    Removing Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. In the Basic Information area, locate the target backend server and click Remove in the Operation column. To remove multiple backend servers, select the backend servers you want to remove and click Remove above the server list.
    7. Click Yes.
    + +

    Adding a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Backend Server Groups, click Add Backend Server Group.
    6. In the Add Backend Server Group dialog box, configure the parameters.

      Configure the parameters based on Table 1 and Table 2.

      + +.. _elb_ug_hd_0003__table299811529239: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for adding a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      The backend protocol can be TCP, UDP, HTTP, or HTTPS.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the number of active connections established with each backend server, each server is assigned a weight based on their processing capability. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously.
      + NOTE:
      • Choose an appropriate algorithm based on your requirements for better traffic distribution.
      • For Weighted round robin or Weighted least connections, no requests will be routed to a server with a weight of 0.
      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client are sent to the same backend server.

      + NOTE:

      You can enable sticky sessions only if you select Weighted round robin for Load Balancing Algorithm.

      + +

      -

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Load balancer cookie

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained. You can enable sticky sessions only if you select Weighted round robin or Weighted least connections for Load Balancing Algorithm.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Slow Start

      +

      Specifies whether to enable slow start, which is disabled by default.

      +

      After you enable slow start, the load balancer linearly increases the proportion of requests to send to backend servers in this mode. When the slow start duration elapses, the load balancer sends full share of requests to backend servers and exits the slow start mode. For details, see Configuring Slow Start (Dedicated Load Balancers).

      +

      -

      +

      Slow Start Duration

      +

      Specifies how long the slow start will last.

      +

      The duration ranges from 30 to 1200, in seconds, and the default value is 30.

      +

      30

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      You can enter a maximum of 255 characters.

      +

      -

      +
      + + +.. _elb_ug_hd_0003__table1022053182319: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +

      Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.

      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks.

      +

      The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. The field is left blank by default and is available only when the health check protocol is HTTP.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      If you do not specify a health check port, the backend port will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      3

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    7. Click OK.
    + +

    Modifying a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Modify the parameters as needed and click OK.
    + +

    Deleting a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Click Yes.
    + + + + + + + diff --git a/elb/umn/temp/adding_or_removing_backend_servers_(shared_load_balancers).tmp b/elb/umn/temp/adding_or_removing_backend_servers_(shared_load_balancers).tmp new file mode 100644 index 000000000..2f0544760 --- /dev/null +++ b/elb/umn/temp/adding_or_removing_backend_servers_(shared_load_balancers).tmp @@ -0,0 +1,189 @@ + + +

    Adding or Removing Backend Servers (Shared Load Balancers)

    +

    Scenarios

    A backend server group has at least a healthy backend server. If incoming traffic increases, you need to add more backend servers.

    +

    After a backend server is removed, it cannot receive requests from the load balancer. You can add it back to the backend server group when the traffic goes up again.

    +

    If the load balancer is associated with an AS group, instances in the AS group are automatically added to the backend server group of the load balancer. If instances are removed from the AS group, they will be automatically removed from the backend server group.

    +

    Backend servers can reside in different subnets of the same VPC.

    + + +

    Adding Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. In the Basic Information area, click Add in the upper left corner of the server list. Select the subnet where the backend servers reside, select the backend servers you want to add, and click Next.
      • If a backend server has multiple NICs, you can only select the subnet where the primary NIC resides and use the primary NIC to add the backend server.
      • Backend servers cannot use virtual IP addresses.
      + +
    7. Set the weights and ports of backend server and click Finish.

      In the Backend Port text box, enter the port used by each backend server. If multiple backend servers use the same port, you can batch add the port in the Batch Add Port text box and then click OK.

      + +
    8. Click OK.
    + +

    Removing Backend Servers

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. In the Basic Information area, click Remove in the Operation column to remove a backend server. To remove multiple backend servers, select the backend servers you want to remove and click Remove above the server list.
    7. Click Yes.
    + +

    Adding a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Backend Server Groups, click Add Backend Server Group.
    6. In the Add Backend Server Group dialog box, configure the parameters.

      Configure the parameters based on Table 1 and Table 2.

      + +.. _en-us_topic_0052569729__table299811529239: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring a backend server group

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the name of the backend server group.

      +

      server_group-sq4v

      +

      Backend Protocol

      +

      Specifies the protocol used by backend servers to receive requests.

      +

      The backend protocol can be TCP, UDP, or HTTP.

      +

      HTTP

      +

      Load Balancing Algorithm

      +

      Specifies the algorithm used by the load balancer to distribute traffic. The following options are available:

      +
      • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests.
      • Weighted least connections: In addition to the number of active connections established with each backend server, each server is assigned a weight based on their processing capability. Requests are routed to the server with the lowest connections-to-weight ratio.
      • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously.
      + NOTE:
      • Choose an appropriate algorithm based on your requirements for better traffic distribution.
      • For Weighted round robin or Weighted least connections, no requests will be routed to a server with a weight of 0.
      + +

      Weighted round robin

      +

      Sticky Session

      +

      Specifies whether to enable sticky sessions. If you enable sticky sessions, all requests from a client are sent to the same backend server.

      + NOTE:

      You can enable sticky sessions only if you select Weighted round robin for Load Balancing Algorithm.

      + +

      -

      +

      Sticky Session Type

      +

      After you enable the sticky session feature, select a sticky session type:

      +
      • Source IP address: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The system allocates the client to a particular server based on the generated key. This enables requests from different clients to be routed and ensures that a client is directed to the same server that it was using previously.
      • Load balancer cookie: The load balancer generates a cookie after receiving a request from the client. All subsequent requests with the same cookie are then routed to the same backend server.
      • Application cookie: The application deployed on the backend server generates a cookie after receiving the first request from the client. All requests with the same cookie generated by backend application are then routed to the same backend server.
      + NOTE:

      Choose an appropriate sticky session type to better distribute requests and improve load balancing.

      +
      • Sticky sessions at Layer 4 (for TCP or UDP listeners): only Source IP address
      • Sticky sessions at Layer 7 (for HTTP or HTTPS listeners): Load balancer cookie and Application cookie
      + +

      Load balancer cookie

      +

      Cookie Name

      +

      Specifies the cookie name. If you select Application cookie, enter a cookie name.

      +

      cookieName-qsps

      +

      Stickiness Duration (min)

      +

      Specifies the minutes that sticky sessions are maintained. You can enable sticky sessions only if you select Weighted round robin or Weighted least connections for Load Balancing Algorithm.

      +
      • Stickiness duration at Layer 4: 1 to 60
      • Stickiness duration at Layer 7: 1 to 1440
      +

      20

      +

      Description

      +

      Provides supplementary information about the backend server group.

      +

      You can enter a maximum of 255 characters.

      +

      -

      +
      + + +.. _en-us_topic_0052569729__table1022053182319: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • If the frontend protocol is TCP, HTTP or HTTPS, the health check protocol can be TCP or HTTP. The health check protocol cannot be changed once it is set.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks.

      +

      The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. The field is left blank by default and is available only when the health check protocol is HTTP.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      If you do not specify a health check port, the backend port will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      3

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    7. Click OK.
    + +

    Modifying a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Modify the parameters as needed and click OK.
    + +

    Deleting a Backend Server Group

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click on the right of its name.
    6. Click Yes.
    + + + + + + + diff --git a/elb/umn/temp/advanced_features_of_http_https_listeners.tmp b/elb/umn/temp/advanced_features_of_http_https_listeners.tmp new file mode 100644 index 000000000..f5c2c7bd0 --- /dev/null +++ b/elb/umn/temp/advanced_features_of_http_https_listeners.tmp @@ -0,0 +1,19 @@ + + +

    Advanced Features of HTTP/HTTPS Listeners

    + + + + + diff --git a/elb/umn/temp/appendix.tmp b/elb/umn/temp/appendix.tmp new file mode 100644 index 000000000..c31a15a8c --- /dev/null +++ b/elb/umn/temp/appendix.tmp @@ -0,0 +1,11 @@ + + +

    Appendix

    + + + + + diff --git a/elb/umn/temp/application_scenarios.tmp b/elb/umn/temp/application_scenarios.tmp new file mode 100644 index 000000000..f0c33c6f0 --- /dev/null +++ b/elb/umn/temp/application_scenarios.tmp @@ -0,0 +1,24 @@ + + +

    Application Scenarios

    +

    Heavy-Traffic Applications

    For an application with heavy traffic, such as a large portal or mobile app store, ELB evenly distributes incoming traffic to multiple backend servers, balancing the load while ensuring steady performance.

    +

    Sticky sessions ensure that requests from one client are always forwarded to the same backend server for fast processing.

    +Figure 1 Session stickiness
    + +

    Applications with Predictable Peaks and Troughs in Traffic

    For an application that has predictable peaks and troughs in traffic volumes, ELB works with AS to add or remove backend servers to keep up with changing demands. An example is flash sales, during which application traffic spikes in a short period. ELB can work with AS to run only the required number of backend servers to handle the load of your application.

    +Figure 2 Flexible scalability
    + +

    Zero SPOFs

    ELB routinely performs health checks on backend servers to monitor their healthy state. If any backend server is detected unhealthy, ELB will not route requests to this server until it recovers.

    +

    This makes ELB a good choice for running services that require high reliability, such as websites and toll collection systems.

    +Figure 3 Eliminating SPOFs
    + +

    Cross-AZ Load Balancing

    ELB can distribute traffic across AZs. When an AZ becomes faulty, ELB distributes traffic across backend servers in other AZs.

    +

    ELB is ideal for banking, policing, and large application systems that require high availability.

    +Figure 4 Traffic distribution to servers in one or more AZs
    + + + + + + + diff --git a/elb/umn/temp/auditing.tmp b/elb/umn/temp/auditing.tmp new file mode 100644 index 000000000..ff317bbea --- /dev/null +++ b/elb/umn/temp/auditing.tmp @@ -0,0 +1,13 @@ + + +

    Auditing

    + + + + + diff --git a/elb/umn/temp/backend_server.tmp b/elb/umn/temp/backend_server.tmp new file mode 100644 index 000000000..7bd5ea9fb --- /dev/null +++ b/elb/umn/temp/backend_server.tmp @@ -0,0 +1,21 @@ + + +

    Backend Server

    + + + + + diff --git a/elb/umn/temp/basic_concepts.tmp b/elb/umn/temp/basic_concepts.tmp new file mode 100644 index 000000000..a0c6c4821 --- /dev/null +++ b/elb/umn/temp/basic_concepts.tmp @@ -0,0 +1,81 @@ + + +

    Basic Concepts

    + +.. _elb_pro_0001__table17643195014453: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Some concepts about ELB

    Term

    +

    Definition

    +

    Load balancer

    +

    A load balancer distributes incoming traffic across backend servers.

    +

    Listener

    +

    A listener listens on requests from clients and routes the requests to backend servers based on the settings that you configure when you add the listener.

    +

    Backend server

    +

    A backend server is a cloud server added to a backend server group associated with a load balancer. When you add a listener to a load balancer, you can create or select a backend server group to receive requests from the load balancer by using the port and protocol you specify for the backend server group and the load balancing algorithm you select.

    +

    Backend server group

    +

    A backend server group is a collection of cloud servers that have same features. When you add a listener, you select a load balancing algorithm and create or select a backend server group. Incoming traffic is routed to the corresponding backend server group based on the listener's configuration.

    +

    Health check

    +

    ELB periodically sends requests to backend servers to check whether they can process requests. If a backend server is detected as unhealthy, the load balancer stops routing requests to it. After the backend server recovers, the load balancer will resume routing requests to it.

    +

    Redirect

    +

    HTTPS is an extension of HTTP. HTTPS encrypts data between a web server and a browser.

    +

    Sticky session

    +

    Sticky sessions ensure that requests from a client always get routed to the same backend server before a session elapses.

    +

    WebSocket

    +

    WebSocket is a new HTML5 protocol that provides full-duplex communication between the browser and the server. WebSocket saves server resources and bandwidth, and enables real-time communication. Both WebSocket and HTTP depend on TCP to transmit data. A handshake connection is required between the browser and server, so that they can communicate with each other only after the connection is established. However, as a bidirectional communication protocol, WebSocket is different from HTTP. After the handshake succeeds, both the server and browser (or client agent) can actively send data to or receive data from each other.

    +

    SNI

    +

    SNI is an extension to TLS and enables a server to present multiple certificates on the same IP address and TCP port number. This allows multiple secure (HTTPS) websites (or any other service over TLS) to be served by the same IP address without requiring all websites to use the same certificate. SNI allows the client to submit the domain name information while sending an SSL handshake request. Once the load balancer receives the request, it queries the right certificate based on the domain name and returns the corresponding certificate to the client. If no certificate is found, the load balancer will return a default certificate.

    +

    Persistent connection

    +

    A persistent connection allows multiple data packets to be sent continuously over a TCP connection. If no data packet is sent during the connection, the client and server send link detection packets to each other to maintain the connection.

    +

    Short connection

    +

    A short connection is a connection established when data is exchanged between the client and server and immediately closed after the data is sent.

    +

    Concurrent connection

    +

    Concurrent connections are total number of TCP connections initiated by clients and routed to backend servers by a load balancer per second.

    +
    + + + + + + + diff --git a/elb/umn/temp/binding_an_ip_address_to_or_unbinding_an_ip_address_from_a_load_balancer.tmp b/elb/umn/temp/binding_an_ip_address_to_or_unbinding_an_ip_address_from_a_load_balancer.tmp new file mode 100644 index 000000000..b9a6f2f9e --- /dev/null +++ b/elb/umn/temp/binding_an_ip_address_to_or_unbinding_an_ip_address_from_a_load_balancer.tmp @@ -0,0 +1,18 @@ + + +

    Binding an IP Address to or Unbinding an IP Address from a Load Balancer

    +

    Scenarios

    You can bind an IP address to a load balancer or unbind an IP address from a load balancer based on service requirements. If you bind an EIP to a load balancer, it can route requests over the Internet. If the EIP is not needed any longer, you can unbind it from the load balancer.

    +

    You can only bind EIPs to or unbind EIPs from shared load balancers.

    + +

    Binding an EIP

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click More > Bind EIP in the Operation column.
    5. In the Bind EIP dialog box, select the EIP to be bound and click OK.
    +

    Alternatively, go to the basic information page of the load balancer and click Bind next to EIP.

    + +

    Unbinding an EIP

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click More > Unbind EIP in the Operation column.
    5. Click Yes.
    +

    Alternatively, go to the basic information page of the load balancer and click Unbind next to EIP.

    + + + + + + + diff --git a/elb/umn/temp/can_backend_servers_access_the_internet_after_they_are_associated_with_a_load_balancer.tmp b/elb/umn/temp/can_backend_servers_access_the_internet_after_they_are_associated_with_a_load_balancer.tmp new file mode 100644 index 000000000..a0d91f0c7 --- /dev/null +++ b/elb/umn/temp/can_backend_servers_access_the_internet_after_they_are_associated_with_a_load_balancer.tmp @@ -0,0 +1,11 @@ + + +

    Can Backend Servers Access the Internet After They Are Associated with a Load Balancer?

    +

    Yes. Backend servers can access the Internet whether or not they are associated with a load balancer.

    +

    + + + + + + diff --git a/elb/umn/temp/can_backend_servers_run_different_oss.tmp b/elb/umn/temp/can_backend_servers_run_different_oss.tmp new file mode 100644 index 000000000..5c12e4572 --- /dev/null +++ b/elb/umn/temp/can_backend_servers_run_different_oss.tmp @@ -0,0 +1,11 @@ + + +

    Can Backend Servers Run Different OSs?

    +

    Yes.

    +

    ELB does not restrict OSs of backend servers as long as applications on these servers are the same and the data is consistent. However, it is recommended that you install the same OS on backend servers to simplify management.

    + + + + + + diff --git a/elb/umn/temp/can_elb_be_used_separately.tmp b/elb/umn/temp/can_elb_be_used_separately.tmp new file mode 100644 index 000000000..0daf4a859 --- /dev/null +++ b/elb/umn/temp/can_elb_be_used_separately.tmp @@ -0,0 +1,11 @@ + + +

    Can ELB Be Used Separately?

    +

    ELB cannot be used alone.

    +

    ELB is a service that distributes incoming traffic across servers and must be used with the ECS or BMS service.

    + + + + + + diff --git a/elb/umn/temp/can_i_adjust_the_number_of_backend_servers_when_a_load_balancer_is_running.tmp b/elb/umn/temp/can_i_adjust_the_number_of_backend_servers_when_a_load_balancer_is_running.tmp new file mode 100644 index 000000000..3cf36f31f --- /dev/null +++ b/elb/umn/temp/can_i_adjust_the_number_of_backend_servers_when_a_load_balancer_is_running.tmp @@ -0,0 +1,10 @@ + + +

    Can I Adjust the Number of Backend Servers When a Load Balancer is Running?

    +

    You can adjust the number of backend servers associated with a load balancer at any time. You can also change the type of backend servers according to your business needs. To ensure service stability, ensure that health checks are normal and that at least one healthy backend server is associated with the load balancer.

    + + + + + + diff --git a/elb/umn/temp/certificate.tmp b/elb/umn/temp/certificate.tmp new file mode 100644 index 000000000..b89da207a --- /dev/null +++ b/elb/umn/temp/certificate.tmp @@ -0,0 +1,15 @@ + + +

    Certificate

    + + + + + diff --git a/elb/umn/temp/certificate_and_private_key_format.tmp b/elb/umn/temp/certificate_and_private_key_format.tmp new file mode 100644 index 000000000..323316c89 --- /dev/null +++ b/elb/umn/temp/certificate_and_private_key_format.tmp @@ -0,0 +1,54 @@ + + +

    Certificate and Private Key Format

    +

    Certificate Format

    You can copy and paste the certificate content to create a certificate or directly upload the certificate.

    +

    A certificate issued by the Root CA is unique, and no additional certificates are required. The configured site is considered trustable by access devices such as a browser.

    +

    The certificate content must meet the following requirements:

    +
    • The content starts with -----BEGIN CERTIFICATE----- and ends with -----END CERTIFICATE-----.
    • Each row contains 64 characters except the last row.
    • There are no empty rows.
    +

    The following is an example:

    +
    -----BEGIN CERTIFICATE-----
    +MIIDIjCCAougAwIBAgIJALV96mEtVF4EMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV
    +BAYTAnh4MQswCQYDVQQIEwJ4eDELMAkGA1UEBxMCeHgxCzAJBgNVBAoTAnh4MQsw
    +CQYDVQQLEwJ4eDELMAkGA1UEAxMCeHgxGjAYBgkqhkiG9w0BCQEWC3h4eEAxNjMu
    +Y29tMB4XDTE3MTExMzAyMjYxM1oXDTIwMTExMjAyMjYxM1owajELMAkGA1UEBhMC
    +eHgxCzAJBgNVBAgTAnh4MQswCQYDVQQHEwJ4eDELMAkGA1UEChMCeHgxCzAJBgNV
    +BAsTAnh4MQswCQYDVQQDEwJ4eDEaMBgGCSqGSIb3DQEJARYLeHh4QDE2My5jb20w
    +gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMU832iM+d3FILgTWmpZBUoYcIWV
    +cAAYE7FsZ9LNerOyjJpyi256oypdBvGs9JAUBN5WaFk81UQx29wAyNixX+bKa0DB
    +WpUDqr84V1f9vdQc75v9WoujcnlKszzpV6qePPC7igJJpu4QOI362BrWzJCYQbg4
    +Uzo1KYBhLFxl0TovAgMBAAGjgc8wgcwwHQYDVR0OBBYEFMbTvDyvE2KsRy9zPq/J
    +WOjovG+WMIGcBgNVHSMEgZQwgZGAFMbTvDyvE2KsRy9zPq/JWOjovG+WoW6kbDBq
    +MQswCQYDVQQGEwJ4eDELMAkGA1UECBMCeHgxCzAJBgNVBAcTAnh4MQswCQYDVQQK
    +EwJ4eDELMAkGA1UECxMCeHgxCzAJBgNVBAMTAnh4MRowGAYJKoZIhvcNAQkBFgt4
    +eHhAMTYzLmNvbYIJALV96mEtVF4EMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEF
    +BQADgYEAASkC/1iwiALa2RU3YCxqZFEEsZZvQxikrDkDbFeoa6Tk49Fnb1f7FCW6
    +PTtY3HPWl5ygsMsSy0Fi3xp3jmuIwzJhcQ3tcK5gC99HWp6Kw37RL8WoB8GWFU0Q
    +4tHLOjBIxkZROPRhH+zMIrqUexv6fsb3NWKhnlfh1Mj5wQE4Ldo=
    +-----END CERTIFICATE-----
    + +

    Private Key Format

    When creating a server certificate, you also need a private key. You can copy and paste the private key content or directly upload the private key in the required format.

    +

    Private keys must be unencrypted and their content must meet the following requirements:

    +
    • The content must start with -----BEGIN RSA PRIVATE KEY----- and end with -----END RSA PRIVATE KEY-----.
    • There are no empty rows. Each row must contain 64 characters except the last row.
    +

    The following is an example:

    +
    -----BEGIN RSA PRIVATE KEY-----
    +MIICXQIBAAKBgQDFPN9ojPndxSC4E1pqWQVKGHCFlXAAGBOxbGfSzXqzsoyacotu
    +eqMqXQbxrPSQFATeVmhZPNVEMdvcAMjYsV/mymtAwVqVA6q/OFdX/b3UHO+b/VqL
    +o3J5SrM86Veqnjzwu4oCSabuEDiN+tga1syQmEG4OFM6NSmAYSxcZdE6LwIDAQAB
    +AoGBAJvLzJCyIsCJcKHWL6onbSUtDtyFwPViD1QrVAtQYabF14g8CGUZG/9fgheu
    +TXPtTDcvu7cZdUArvgYW3I9F9IBb2lmF3a44xfiAKdDhzr4DK/vQhvHPuuTeZA41
    +r2zp8Cu+Bp40pSxmoAOK3B0/peZAka01Ju7c7ZChDWrxleHZAkEA/6dcaWHotfGS
    +eW5YLbSms3f0m0GH38nRl7oxyCW6yMIDkFHURVMBKW1OhrcuGo8u0nTMi5IH9gRg
    +5bH8XcujlQJBAMWBQgzCHyoSeryD3TFieXIFzgDBw6Ve5hyMjUtjvgdVKoxRPvpO
    +kclc39QHP6Dm2wrXXHEej+9RILxBZCVQNbMCQQC42i+Ut0nHvPuXN/UkXzomDHde
    +h1ySsOAO4H+8Y6OSI87l3HUrByCQ7stX1z3L0HofjHqV9Koy9emGTFLZEzSdAkB7
    +Ei6cUKKmztkYe3rr+RcATEmwAw3tEJOHmrW5ErApVZKr2TzLMQZ7WZpIPzQRCYnY
    +2ZZLDuZWFFG3vW+wKKktAkAaQ5GNzbwkRLpXF1FZFuNF7erxypzstbUmU/31b7tS
    +i5LmxTGKL/xRYtZEHjya4Ikkkgt40q1MrUsgIYbFYMf2
    +-----END RSA PRIVATE KEY-----
    + + + + + + + diff --git a/elb/umn/temp/change_history.tmp b/elb/umn/temp/change_history.tmp new file mode 100644 index 000000000..3770cb576 --- /dev/null +++ b/elb/umn/temp/change_history.tmp @@ -0,0 +1,162 @@ + + +

    Change History

    + +.. _en-us_elb_07_0000__table315225518207: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Released On

    +

    Description

    +

    2021-09-02

    +

    Modified the following content:

    +

    Optimized Differences Between Dedicated and Shared Load Balancers.

    +

    2021-07-27

    +

    Modified the following content:

    +

    Added the descriptions about idle timeout for shared load balancers.

    +

    2021-06-10

    +

    Modified the following content:

    +

    Added the descriptions of session stickiness duration.

    +

    2021-05-27

    +

    Modified the following content:

    +

    Changed the name of enhanced load balancers to shared load balancers.

    +

    2021-05-20

    +

    Modified the following content:

    +

    Added the constraints on binding EIPs to dedicated load balancers in the eu-de region in Table 1.

    +

    2021-04-08

    +

    Modified the following content:

    + +

    2021-03-02

    +

    Modified the following content:

    + +

    2020-12-10

    +

    Modified the following content:

    +

    Added descriptions and operations of dedicated load balancers in Creating a Dedicated Load Balancer.

    +

    2020-05-30

    +

    Modified the following content:

    +

    Modified the descriptions and operations in Migrating from Classic Load Balancers to Shared Load Balancers.

    +

    2020-02-26

    +

    Modified the following content:

    +

    Added Security Policy.

    +

    Modified the following content:

    +

    Added the Security Policy parameter in Adding a Listener.

    +

    2019-07-30

    +

    Modified the following content:

    +
    • Added section "Regions and AZs".
    +

    2019-05-16

    +

    Modified the following content:

    + +

    2019-04-10

    +

    Accepted in OTC-4.0/Agile-05.2019.

    +

    2019-04-01

    +

    Modified the following content:

    +

    Updated console screenshots.

    +

    2019-03-04

    +

    Accepted in OTC 4.0/Agile.

    +

    2019-02-22

    +

    Modified the following content:

    +
    • Updated the TOA download path in Configuring the TOA Plug-in.
    • Modified some parameters based on the latest console.
    • Optimized the parameter tables and operations for adding listeners in Listener.
    +

    Added the following content:

    + +

    2019-02-19

    +

    Modified the following content:

    +
    • Modified the procedure for binding an EIP in section "Creating an Enhanced Load Balancer."
    +

    Added the following content:

    +
    • Added parameters Redirected To and Enable Health Check to the table that describes parameters for adding a listener to an enhanced load balancer in section "Creating an Enhanced Load Balancer."
    • Added the procedure for unbinding an EIP in section "Creating an Enhanced Load Balancer."
    +
    • Added the procedure for modifying listeners in Listener.
    • Added the procedure for modifying forwarding policies in Forwarding Policy.
    +

    2019-02-03

    +

    Modified the following content:

    +
    • Modified the operations related to enhanced load balancers and associated resources (including listener, backend server group, backend server, health check, forwarding policy, and certificate) based on the management console.
    • Optimized the sections under Service Overview.
    • Modified the parameter descriptions of enhanced load balancer listeners in sections "Creating an Enhanced Load Balancer", "Listener", and "Certificate".
    • Changed OK to Yes in the procedures for deleting a load balancer, deleting a listener, removing a backend server, and deleting a certificate. Changed OK to Yes in some sections based on the latest console pages.
    • Modified the operations and the parameters for configuring bucket access permissions in Access Logging.
    • Removed Mutual Authentication from "FAQs" and placed it under "Management."
    +Added the following content: + +

    Deleted the following content:

    +
    • Deleted the content related to IP mode listeners in section "Creating an Enhanced Load Balancer."
    • Deleted FAQ "How Can I Create a Listener in IP Mode?"
    • Deleted "Basic Architecture" and "Features" from "Service Overview."
    +

    2018-11-30

    +

    Modified the following content:

    +

    Added the SNI related parameters for enhanced load balancers.

    +

    2018-07-20

    +

    Modified the following content:

    +

    Added the procedure for adding a listener.

    +

    2018-06-11

    +

    Accepted in OTC 3.1.

    +

    2018-05-17

    +

    Modified the following content:

    +

    Deleted parameter Billing Mode.

    +

    2018-05-30

    +

    This issue is the first official release.

    +
    + + + diff --git a/elb/umn/temp/configuring_a_health_check.tmp b/elb/umn/temp/configuring_a_health_check.tmp new file mode 100644 index 000000000..0882021c0 --- /dev/null +++ b/elb/umn/temp/configuring_a_health_check.tmp @@ -0,0 +1,92 @@ + + +

    Configuring a Health Check

    +

    Scenarios

    You can configure a health check when you add a listener. If you have no special requirements, retain the default settings.

    + +

    Function Description

    • The health check protocol can be different from the backend protocol.
    • To reduce the CPU usage of backend servers, you can use TCP for health checks. If you want to use HTTP for health checks, use static files to obtain the health statuses.
    • You can increase the health check interval to reduce the health check frequency.
    • After you enable health checks, the load balancer immediately checks the health of backend servers and will start routing requests over new connections. If a backend server becomes unhealthy, the load balancer will stop routing traffic to it. However, request routing over established connections is not affected. To ensure service availability, you can enable health checks during off-peak hours.
    + +

    Configuring a Health Check for a Shared Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group, and click its name.
    6. Click More in the Operation column.
    7. Select Configure Health Check from the drop-down list.
    8. In the Configure Health Check dialog box, configure the parameters based on Table 1. +.. _en-us_topic_0162227063__table95680412371: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring a health check

      Parameter

      +

      Description

      +

      Example Value

      +

      Enable Health Check

      +

      Specifies whether to enable health checks.

      +

      N/A

      +

      Protocol

      +
      • Specifies the protocol used by the load balancer to perform health checks on backend servers. You can select either TCP or HTTP. A selected protocol cannot be changed.
      • If the frontend protocol is UDP, the health check protocol is UDP by default.
      +

      HTTP

      +

      Domain Name

      +

      Specifies the domain name that will be used for health checks.

      +

      The domain name can contain digits, letters, hyphens (-), and periods (.), and must start with a digit or letter. The field is left blank by default and is available only when the health check protocol is HTTP.

      +

      www.elb.com

      +

      Port

      +

      Specifies the port used by the load balancer to perform health checks on backend servers. The port number ranges from 1 to 65535.

      + NOTE:

      This parameter is optional. If you do not specify a health check port, a port of the backend server will be used for health checks by default. If you specify a port, it will be used for health checks.

      + +

      80

      +

      Advanced Settings

      +

      Interval (s)

      +

      Specifies the maximum time between health checks, in seconds.

      +

      The interval ranges from 1 to 50.

      +

      5

      +

      Timeout (s)

      +

      Specifies the maximum time required for waiting for a response from the health check, in seconds. The timeout duration ranges from 1 to 50.

      +

      3

      +

      Check Path

      +

      Specifies the destination path for health checks. Configure this parameter only if you have set Protocol to HTTP. The path can contain 1 to 80 characters and must start with a slash (/).

      +

      /index.html

      +

      Maximum Retries

      +

      Specifies the maximum number of health check retries. The value ranges from 1 to 10.

      +

      3

      +
      + +
    9. Click Finish.
    + + + + + + + diff --git a/elb/umn/temp/configuring_security_group_rules_for_backend_servers_(dedicated_load_balancers).tmp b/elb/umn/temp/configuring_security_group_rules_for_backend_servers_(dedicated_load_balancers).tmp new file mode 100644 index 000000000..be6fe38c3 --- /dev/null +++ b/elb/umn/temp/configuring_security_group_rules_for_backend_servers_(dedicated_load_balancers).tmp @@ -0,0 +1,25 @@ + + +

    Configuring Security Group Rules for Backend Servers (Dedicated Load Balancers)

    +

    Scenarios

    When you add a backend server to a backend server group, ensure that the rules of the security group that containing the backend server allows access from the CIDR block of the VPC where the backend server resides, and that the destination port is that used by the backend server. You also need to configure the protocol and port used for health checks. If you use UDP for health checks, configure inbound rules to allow ICMP traffic. Otherwise, health checks cannot be performed on the added backend server.

    +

    If you have no VPCs when creating a server, the system will automatically create a VPC with default security rules. Default security group rules allow only communications among the servers in the VPC. You also need to configure inbound rules to enable the load balancer to communicate with these servers over the frontend port and health check port.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. In the ECS list, locate the ECS and click its name.

      The ECS details page is displayed.

      +
    5. Click Security Groups, locate the security group, and view security group rules.
    6. Click the security group rule ID or Modify Security Group Rule. The security group details page is displayed.
    7. Under Inbound Rules, click Add Rule.

      TCP, HTTP, or HTTPS listeners

      +
      • If the health check port is not the one used by each backend server, add an inbound rule to allow TCP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow TCP traffic over the ports used by backend servers.
      • To ensure normal health checks, ensure that security group rules allow traffic from the CIDR block of the subnet where the load balancer resides and traffic from the health check port and from the ports used by backend servers.
      +

      UDP listeners

      +
      • If the health check port is not the one used by each backend server, add an inbound rule to allow UDP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow UDP traffic over the ports used by backend servers.
      • To ensure normal health checks, ensure that security group rules allow traffic from the CIDR block of the subnet where the load balancer resides and traffic from the health check port and from the ports used by backend servers.
      • You need also to add an inbound rule to allow ICMP traffic.
      +
    8. Click OK.
    + +

    Firewall Rule

    You can associate one or more subnets with a firewall for controlling traffic in and out of the subnets. Similar to security groups, firewalls provide access control functions, but add an additional layer of defense to your VPC. Default firewall rules reject all inbound and outbound traffic. If the subnet of a load balancer or associated backend servers has a firewall associated, the load balancer cannot receive traffic from the Internet or route traffic to backend servers, and backend servers cannot receive traffic from and respond to the load balancer.

    +

    Configure an inbound firewall rule to allow access from the VPC CIDR block to backend servers.

    +

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Virtual Private Cloud.
    4. In the navigation pane on the left, choose Access Control > Firewalls.
    5. Locate the firewall, and click the firewall name to switch to the firewall details page.
    6. On the Inbound Rules or Outbound Rules tab page, click Add Rule to add a rule.
      • Action: Select Allow.
      • Protocol: The protocol must be the same as the frontend protocol you select when you add the listener.
      • Source: Set the value to the VPC CIDR block.
      • Source Port Range: Select the port range.
      • Destination: Enter the default value 0.0.0.0/0. Traffic will be destined for all IP addresses.
      • Destination Port Range: Select the port range.
      • Description: Enter a description for the firewall rule if necessary.
      +
    7. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/configuring_security_group_rules_for_backend_servers_(shared_load_balancers).tmp b/elb/umn/temp/configuring_security_group_rules_for_backend_servers_(shared_load_balancers).tmp new file mode 100644 index 000000000..77f1c6d7e --- /dev/null +++ b/elb/umn/temp/configuring_security_group_rules_for_backend_servers_(shared_load_balancers).tmp @@ -0,0 +1,26 @@ + + +

    Configuring Security Group Rules for Backend Servers (Shared Load Balancers)

    +

    Scenarios

    Before you add servers to a backend server group, ensure that their security groups have inbound rules that allow traffic from 100.125.0.0/16, and specify the health check protocol and port. Otherwise, health checks will be affected, and backend servers cannot receive requests from the load balancer. If UDP is used for health checks, inbound security group rules must also allow the ICMP traffic.

    +

    If you have no VPCs when creating a server, the system will automatically create a VPC with default security rules. Default security group rules allow only communications among the servers in the VPC. You also need to configure inbound rules to enable the load balancer to communicate with these servers over the frontend port and health check port.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. In the ECS list, locate the ECS and click its name.

      The ECS details page is displayed.

      +
    5. Click Security Groups, locate the security group, and view security group rules.
    6. Click the security group rule ID or Modify Security Group Rule.

      The security group details page is displayed.

      +
    7. Under Inbound Rules, click Add Rule.

      TCP, HTTP, or HTTPS listeners

      +
      • If the health check port is not the one used by each backend server, add inbound rules to allow TCP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow TCP traffic over the ports used by backend servers.
      • The inbound rules must also allow access from 100.125.0.0/16. Otherwise, health checks will fail.
      +

      UDP listeners

      +
      • If the health check port is not the one used by each backend server, add inbound rules to allow UDP traffic over the health check port and the ports used by backend servers.
      • If you do not specify a health check port, add inbound rules to allow UDP traffic over the ports used by backend servers.
      • The inbound rules must also allow access from 100.125.0.0/16. Otherwise, health checks will fail.
      • You need also to add an inbound rule to allow ICMP traffic.
      +
    8. Click OK.
    + +

    Firewall Rule

    You can associate one or more subnets with a firewall for controlling traffic in and out of the subnets. Similar to security groups, firewalls provide access control functions, but add an additional layer of defense to your VPC. Default firewall rules reject all inbound and outbound traffic. If the subnet of a load balancer or associated backend servers has a firewall associated, the load balancer cannot receive traffic from the Internet or route traffic to backend servers, and backend servers cannot receive traffic from and respond to the load balancer.

    +

    You can configure an inbound firewall rule to permit access from 100.125.0.0/16.

    +

    ELB translates public IP addresses that access backend servers into IP addresses in 100.125.0.0/16. You cannot configure firewall rules to prevent public IP addresses from accessing backend servers to allow traffic from 100.125.0.0/16 to all backend servers.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Under Network, click Virtual Private Cloud.
    4. In the navigation pane on the left, choose Access Control > Firewalls.
    5. Locate the firewall, and click the firewall name to switch to the firewall details page.
    6. On the Inbound Rules or Outbound Rules tab page, click Add Rule to add a rule.
      • Action: Select Allow.
      • Protocol: The protocol must be the same as the frontend protocol you select when you add the listener.
      • Source: Set the value to 100.125.0.0/16.
      • Source Port Range: Select the port range.
      • Destination: Enter the default value 0.0.0.0/0. Traffic will be destined for all IP addresses.
      • Destination Port Range: Select the port range.
      • Description: Enter a description for the firewall rule if necessary.
      +
    7. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/configuring_the_toa_plug-in.tmp b/elb/umn/temp/configuring_the_toa_plug-in.tmp new file mode 100644 index 000000000..eefa7ae51 --- /dev/null +++ b/elb/umn/temp/configuring_the_toa_plug-in.tmp @@ -0,0 +1,123 @@ + + +

    Configuring the TOA Plug-in

    +

    Scenarios

    ELB provides customized strategies for managing service access. Before customizing these strategies, ELB needs to obtain the client's IP address contained in the access request. To obtain the IP addresses, you can install a TOA kernel module on backend servers.

    +

    This section provides detailed operations for you to compile the module in the OS if you use TCP to distribute incoming traffic.

    +

    The operations for Linux OSs with kernel version of 2.6.32 are different from those for Linux OSs with kernel version of 3.0 or later.

    + +
    • TOA does not support listeners using the UDP protocol.
    • The module can work properly in the following OSs and the methods for installing other kernel versions are similar:
      • CentOS 6.8 (kernel version 2.6.32)
      • SUSE 11 SP3 (kernel version 3.0.76)
      • CentOS 7/7.2 (kernel version 3.10.0)
      • Ubuntu 16.04.3 (kernel version 4.4.0)
      • Ubuntu 18.04 (Kernel version 4.15.0)
      • OpenSUSE 42.2 (kernel version 4.4.36)
      • CoreOS 10.10.5 (kernel version 4.9.16)
      • Debian 8.2.0 (Kernel version 3.16.0)
      +
    + +

    Prerequisites

    • The development environment for compiling the module must be the same as that of the current kernel.
    • VMs can access OS repositories.
    • Users other than root must have sudo permissions.
    + +

    Procedure

    • In the following operations, the Linux kernel version is 3.0 or later.
    +
    1. Prepare the compilation environment.

      During the installation, download the required module development package from the Internet if it cannot be found in the source.

      + +

      The following are operations for compiling the module in different Linux OSs. Perform appropriate operations.

      +
      • CentOS
        1. Run the following command to install the GCC:

          sudo yum install gcc

          +
        2. Run the following command to install the make tool:

          sudo yum install make

          +
        3. Run the following command to install the module development package (the package header and module library must have the same version as the kernel):

          sudo yum install kernel-devel-`uname -r`

          +

          During the installation, download the required module development package from the following address if it cannot be found in the source:

          +

          https://mirror.netcologne.de/oracle-linux-repos/ol7_latest/getPackage/

          +

          For example, to install 3.10.0-693.11.1.el7.x86_64, run the following command:

          +

          rpm -ivh kernel-devel-3.10.0-693.11.1.el7.x86_64.rpm

          + +
        +
      • Ubuntu and Debian
        1. Run the following command to install the GCC:

          sudo apt-get install gcc

          +
        2. Run the following command to install the make tool:

          sudo apt-get install make

          +
        3. Run the following command to install the module development package (the package header and module library must have the same version as the kernel):

          sudo apt-get install linux-headers-`uname -r`

          +
        +
      • SUSE
        1. Run the following command to install the GCC:

          sudo zypper install gcc

          +
        2. Run the following command to install the make tool:

          sudo zypper install make

          +
        3. Run the following command to install the module development package (the package header and module library must have the same version as the kernel):

          sudo zypper install kenel-default-devel

          +
        +
      • CoreOS

        For CoreOS, the module will be compiled in a container, and it must be started before the module is compiled.

        +

        For detailed operations, see the CoreOS documentation. Obtain the documentation from the following link:

        +

        https://coreos.com/os/docs/latest/kernel-modules.html

        +
      +
    2. Compile the module.
      1. Use the git tool and run the following command to download the module source code:

        git clone https://github.com/Huawei/TCP_option_address.git

        +

        If the git tool is not installed, download the module source code from the following link:

        +

        https://github.com/Huawei/TCP_option_address

        + +
      2. Run the following commands to enter the source code directory and compile the module:

        cd src

        +

        make

        +

        If no warning or error code is prompted, the compilation was successful. Verify that the toa.ko file was generated in the current directory.

        +

        If error message "config_retpoline=y but not supported by the compiler, Compiler update recommended" is displayed, the GCC version is too old. Upgrade the GCC to a later version.

        + +
      +
    3. Load the module.
      1. Run the following command to load the module:

        sudo insmod toa.ko

        +
      2. Run the following command to check the module loading and to view the kernel output information:

        dmesg | grep TOA

        +

        If TOA: toa loaded is displayed in the command output, the module has been loaded.

        +

        After compiling the CoreOS module in the container, copy it to the host system and then load it. The container for compiling the module shares the /lib/modules directory with the host system, so you can copy the module in the container to this directory, allowing the host system to use it.

        + +
      +
    4. Set the script to enable it to automatically load the module.

      To make the module take effect when the system starts, add the command for loading the module to your startup script.

      +

      You can use either of the following methods to automatically load the module:

      +
      • Add the command for loading the module to a customized startup script as required.
      • Perform the following operations to configure a startup script:
        1. Create the toa.modules file in the /etc/sysconfig/modules/ directory. This file contains the module loading script.

          The following is an example of the content in the toa.modules file.

          +

          #!/bin/sh

          +

          /sbin/modinfo -F filename /root/toa/toa.ko > /dev/null 2>&1

          +

          if [ $? -eq 0 ]; then

          +

          /sbin/insmod /root/toa/toa.ko

          +

          fi

          +

          /root/toa/toa.ko is the path of the module file. You need to replace it with their actual path.

          +
        2. Run the following command to add execution permissions for the toa.modules startup script:

          sudo chmod +x /etc/sysconfig/modules/toa.modules

          +

          If the kernel is upgraded, the current module will no longer match. Compile the module again.

          + +
        +
      +
    5. Install the module on multiple nodes.

      To load the module in the same OSs, copy the toa.ko file to VMs where the module is to be loaded and then perform the operations in 3.

      +

      After the module is successfully loaded, applications can obtain the real IP address contained in the request.

      +

      The OS of the node must have the same version as the kernel.

      + +
    6. Verify the module.

      After the module is successfully installed, the source address can be directly obtained. The following provides an example for verification.

      +

      Run the following command to start a simple HTTP service on the backend server where Python is installed:

      +

      python -m SimpleHTTPServer port

      +

      The value of port must be the same as the port configured for the backend server, and the default value is 80.

      +

      Access the IP address of the load balancer from a client. Access logs on the server are as follows:

      +
      192.168.0.90 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 –
      +

      192.168.0.90 indicates the client's source IP address that is obtained by the backend server.

      + +
    + +
    • In the following operations, the Linux kernel version is 2.6.32.

      The TOA plug-in supports the OSs (CentOS 6.8 image) with a kernel of 2.6.32-xx. Perform the following steps to configure the module:

      + +
    +
    1. Obtain the kernel source code package Linux-2.6.32-220.23.1.el6.x86_64.rs.src.tar.gz containing the module from the following link:

      http://kb.linuxvirtualserver.org/images/3/34/Linux-2.6.32-220.23.1.el6.x86_64.rs.src.tar.gz

      +
    2. Decompress the kernel source code package.
    3. Modify compilation parameters.
      1. Open the linux-2.6.32-220.23.1.el6.x86_64.rs folder.
      2. Edit the net/toa/toa.h file.

        Change the value of #define TCPOPT_TOA200 to #define TCPOPT_TOA254.

        +
      3. On the shell page, run the following commands:

        sed -i 's/CONFIG_IPV6=m/CONFIG_IPV6=y/g' .config

        +

        echo -e '\n# toa\nCONFIG_TOA=m' >> .config

        +

        After the configuration, the IPv6 module is compiled into the kernel. TOA is compiled into a separate module and can be independently started and stopped.

        +
      4. Edit Makefile.

        You can add a description to the end of EXTRAVERSION =. This description will be displayed in uname -r, for example, -toa.

        +
      +
    4. Run the following command to compile the software package:

      make -j n

      +

      n indicates the number of vCPUs. For example, if there are four vCPUs, n must be set to 4.

      + +
    5. Run the following command to install the module:

      make modules_install

      +

      The following information is displayed.

      +Figure 1 Installing the module
      +
    6. Run the following command to install the kernel:

      make install

      +

      The following information is displayed.

      +Figure 2 Installing the kernel
      +
    7. Open the /boot/grub/grub.conf file and configure the kernel to start up when the system starts.
      1. Change the default startup kernel from the first kernel to the zeroth kernel by changing default=1 to default=0.
      2. Add the nohz=off parameter to the end of the line containing the vmlinuz-2.6.32-toa kernel. If nohz is not disabled, the CPU0 usage may be high and overload the kernel.Figure 3 Configuration file
        +
      3. Save the modification and exit. Restart the OS.

        During the restart, the system will load the vmlinuz-2.6.32-toa kernel.

        +
      +
    8. After the restart, run the following command to load the module:

      modprobe toa

      +

      Add the modprobe toa command to both the startup script and the system scheduled monitoring script.

      +Figure 4 Adding the modprobe toa command
      +

      After the module is loaded, query the kernel information.

      +Figure 5 Querying the kernel
      +
    9. Verify the module.

      After the module is successfully installed, the source address can be directly obtained. The following provides an example for verification.

      +

      Run the following command to start a simple HTTP service on the backend server where Python is installed:

      +

      python -m SimpleHTTPServer port

      +

      The value of port must be the same as the port configured for the backend server, and the default value is 80.

      +

      Access the IP address of the load balancer from a client. Access logs on the server are as follows:

      +
      192.168.0.90 - - [06/Aug/2020 14:24:21] "GET / HTTP/1.1" 200 –
      +

      192.168.0.90 indicates the client's source IP address that is obtained by the backend server.

      + +
    + + + + + + diff --git a/elb/umn/temp/configuring_weights_for_backend_servers.tmp b/elb/umn/temp/configuring_weights_for_backend_servers.tmp new file mode 100644 index 000000000..bc73765d4 --- /dev/null +++ b/elb/umn/temp/configuring_weights_for_backend_servers.tmp @@ -0,0 +1,13 @@ + + +

    Configuring Weights for Backend Servers

    +Each backend server can be given a numeral value from 0 to 100 to indicate the proportion of requests to receive. Requests will not be routed to the backend server whose weight is 0, even if the backend server is considered healthy. You can set a weight for each backend server when you select one of the following algorithms:
    • Weighted round robin: If none of the servers have a weight of 0, the load balancer routes requests to these servers using the round robin algorithm based on their weights. If two backend servers have the same weights, they receive the same number of requests.
    • Weighted least connections: If none of the servers have a weight of 0, the load balancer calculates the load of each backend server using the formula: Overhead = Number of current connections/Server weight. The load balancer routes requests to the backend server with the lowest overhead in each request distribution.
    • Source IP hash: Requests will not be routed to backend servers if their weights are set to 0. Server weights will not take effect if they are not 0, and requests from the same IP address will be routed to the same backend server.
    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups, locate the backend server group and then the server, and click the number in the Weight column to set the server weight.
    6. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/converting_certificate_formats.tmp b/elb/umn/temp/converting_certificate_formats.tmp new file mode 100644 index 000000000..d4a236c34 --- /dev/null +++ b/elb/umn/temp/converting_certificate_formats.tmp @@ -0,0 +1,27 @@ + + +

    Converting Certificate Formats

    +

    Scenarios

    ELB supports certificates only in PEM format. If you have a certificate in any other format, you must convert it to a PEM-encoded certificate. There are some common methods for converting a certificate from any other format to PEM.

    + +

    From DER to PEM

    The DER format is usually used on a Java platform.

    +

    Run the following command to convert the certificate format:

    +
    openssl x509 -inform der -in certificate.cer -out certificate.pem
    +

    Run the following command to convert the private key format:

    +
    openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem
    + +

    From P7B to PEM

    The P7B format is usually used by Windows Server and Tomcat.

    +

    Run the following command to convert the certificate format:

    +
    openssl pkcs7 -print_certs -in incertificate.p7b -out outcertificate.cer
    + +

    From PFX to PEM

    The PFX format is usually used by Windows Server.

    +

    Run the following command to convert the certificate format:

    +
    openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
    +

    Run the following command to convert the private key format:

    +
    openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
    + + + + + + + diff --git a/elb/umn/temp/creating_a_dedicated_load_balancer.tmp b/elb/umn/temp/creating_a_dedicated_load_balancer.tmp new file mode 100644 index 000000000..8a4a89adb --- /dev/null +++ b/elb/umn/temp/creating_a_dedicated_load_balancer.tmp @@ -0,0 +1,169 @@ + + +

    Creating a Dedicated Load Balancer

    +

    Scenarios

    You have prepared everything required for creating a dedicated load balancer. For details, see Preparations for Creating a Load Balancer.

    +

    Dedicated load balancers can be created only in the eu-nl region. By default, load balancers created in this region are dedicated load balancers.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Click Create Load Balancer and configure the parameters based on Table 1. +.. _elb_lb_000006__en-us_topic_0172674943_table08421211125410: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Example Value

      +

      Type

      +

      Specifies the type of the load balancer.

      +

      Dedicated

      +

      Region

      +

      Specifies the region. Resources in different regions cannot communicate with each other over internal networks. For lower network latency and faster access to resources, select the nearest region.

      +

      eu-nl

      +

      AZ

      +

      Specifies the AZs of the load balancer. You can deploy the load balancer in multiple AZs to ensure service continuity and improve application reliability. When an AZ becomes faulty or unavailable, requests are quickly routed to backend servers in other AZs.

      +

      If backend servers reside in two AZs, for example, AZ 1 and AZ 2, but you plan to create the load balancer only in AZ 1, Xen ECSs cannot be used as clients.

      + NOTE:

      If you change the AZs of an existing load balancer, the load balancer may fail to route requests for several seconds. It is recommended that you plan the AZs in advance, or change the AZs during off-peak hours when necessary.

      + +

      N/A

      +

      Network Type

      +

      Specifies the type of the network where the load balancer works. You can select one or more network types.

      +
      • Public IPv4 network: The load balancer routes requests from the clients to backend servers over the Internet.
      • Private IPv4 network: The load balancer routes requests from the clients to backend servers in a VPC.
      + NOTE:

      If you do not select any of the options, the load balancer cannot communicate with the clients after it is created. When you are using ELB or testing network connectivity, ensure that the load balancer has a public or private IP address bound.

      + +

      Private IPv4 network

      +

      VPC

      +

      Specifies the VPC where the load balancer works. You need to configure this parameter regardless of the selected network type.

      +

      Select an existing VPC or create one.

      +

      For more information about VPC, see the Virtual Private Cloud User Guide.

      +

      vpc-4536

      +

      Subnet

      +

      Specifies the subnet where the load balancer will reside.

      +

      You need to configure this parameter regardless of the selected network type.

      +

      subnet-4536

      +

      Public IPv4 network configuration

      +

      EIP

      +

      If you select Public IPv4 network for Network Type, you need to bind an EIP to the load balancer. Two options are available:

      +
      • New EIP: The system will assign a new EIP to the load balancer.
      • Use existing: Select an existing EIP for the load balancer. NOTE:
        • By default, load balancers created in the eu-nl region are dedicated load balancers. You can unbind an EIP from a dedicated load balancer only on the ELB console if you no longer need the EIP.
        • If you bind a new EIP to the load balancer and specify a shared bandwidth, this EIP will be added to the shared bandwidth.
        • If you set EIP to New EIP when you create a dedicated load balancer in the eu-de region, the system will automatically assign and bind a dedicated EIP to the load balancer for exclusive use. This type of EIPs can be assigned only when you create dedicated load balancers and can only be bound to dedicated load balancers. If you set EIP to Use existing, you can select one from the dedicated EIPs that were assigned when you created dedicated load balancers and have been unbound from the dedicated load balancers.
        • To unbind an EIP from a load balancer, locate the load balancer and choose More > Unbind EIP in the Operation column.
        + +
      +

      N/A

      +

      EIP Type

      +

      Specifies the link type (BGP) when a new EIP is used.

      +

      Dynamic BGP

      +

      Private IPv4 network configuration

      +

      IPv4 Address

      +

      Specifies how you want the IPv4 address to be assigned.

      +
      • Automatically-assigned IP address: The system automatically assigns an IPv4 address to the load balancer.
      • Manually-specified IP address: Manually specify an IPv4 address to the load balancer.
      +

      Automatically-assigned IP address

      +

      Specification

      +
      • Select either Application load balancing (HTTP/HTTPS) or Network load balancing (TCP/UDP) or both, and then select the desired specification. You can select only one specification for Application load balancing (HTTP/HTTPS) and Network load balancing (TCP/UDP), respectively.
      • For application load balancing, the number of IP addresses varies depending on the specification. You can view the number of IP addresses required by the load balancer in the infotip after the selected subnet.
      • The performance of load balancers varies depending on the selected specifications. You can evaluate the actual traffic and select appropriate specifications based on the key metrics.
      • Dedicated load balancers have the following six specifications:
        • Small I
        • Small II
        • Medium I
        • Medium II
        • Large I
        • Large II
        +
      +

      Medium II

      +

      Name

      +

      Specifies the load balancer name.

      +

      elb93wd

      +

      Description

      +

      Provides supplementary information about the load balancer.

      +

      N/A

      +

      Tag

      +

      Identifies load balancers so that they can be easily found. A tag consists of a tag key and a tag value. The tag key marks a tag, and the tag value specifies the tag content. For details about the naming specifications, see Table 2.

      +
      • Key: elb_key1
      • Value: elb-01
      +
      + + +.. _elb_lb_000006__en-us_topic_0172674943_table1184315114541: + + + + + + + + + + + + + + + +
      Table 2 Tag naming rules

      Item

      +

      Requirement

      +

      Example Value

      +

      Tag key

      +
      • Cannot be left blank.
      • Must be unique for the same load balancer.
      • Can contain a maximum of 36 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb_key1

      +

      Tag value

      +
      • Can contain a maximum of 43 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb-01

      +
      + +
    5. Click Create Now.
    6. Confirm the configuration and submit your request.
    + + + + + + + diff --git a/elb/umn/temp/creating_a_shared_load_balancer.tmp b/elb/umn/temp/creating_a_shared_load_balancer.tmp new file mode 100644 index 000000000..98ee04c33 --- /dev/null +++ b/elb/umn/temp/creating_a_shared_load_balancer.tmp @@ -0,0 +1,136 @@ + + +

    Creating a Shared Load Balancer

    +

    Prerequisites

    You have prepared everything required for creating a load balancer. For details, see Preparations for Creating a Load Balancer.

    +

    Load balancers receive requests from clients and route the requests to backend servers, which answer to these requests over the private network.

    + +

    Creating a Shared Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. On the Load Balancers page, click Create Elastic Load Balancer. Configure the parameters based on Table 1.

      + +.. _en-us_topic_0015479967__table1312515231668: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for creating a shared load balancer

      Parameter

      +

      Description

      +

      Example Value

      +

      Region

      +

      Specifies the region. Resources in different regions cannot communicate with each other over internal networks. For lower network latency and faster access to resources, select the nearest region.

      +

      N/A

      +

      Network Type

      +

      Specifies the network type of a load balancer.

      +
      • Public network: The load balancer routes requests from the clients to backend servers over the Internet.
      • Private network: The load balancer routes requests from the clients to backend servers in the same VPC.
      +

      Private network

      +

      VPC

      +

      Specifies the VPC where the load balancer works.

      +

      Select an existing VPC or create one.

      +

      For more information about VPC, see the Virtual Private Cloud User Guide.

      +

      N/A

      +

      Subnet

      +

      Specifies the subnet that the load balancer belongs to.

      +

      N/A

      +

      Private IP Address

      +

      Specifies how you want the IP address to be assigned.

      +
      • Automatically-assigned IP address: The system automatically assigns an IPv4 address to the load balancer.
      • Manually-specified IP address: Manually specify an IPv4 address to the load balancer.
      +

      Automatically-assigned IP address

      +

      EIP

      +

      Specifies the public IP address that will be bound to the load balancer for receiving and forwarding requests over the Internet.

      +

      The following options are available:

      +
      • New EIP: The system will automatically assign an EIP.
      • Use existing: Select an existing EIP.
      +

      New EIP

      +

      Bandwidth

      +

      Specifies the bandwidth when a new EIP is used, in the unit of Mbit/s.

      +

      10 Mbit/s

      +

      Name

      +

      Specifies the load balancer name.

      +

      elb-yss0

      +

      Description

      +

      Provides supplementary information about the load balancer.

      +

      N/A

      +

      Tag

      +

      Identifies load balancers so that they can be easily found. A tag consists of a tag key and a tag value. The tag key marks a tag, and the tag value specifies specific tag content.

      +

      For details about the naming specifications, see Table 2.

      +
      • Key: elb_key1
      • Value: elb-01
      +
      + + +.. _en-us_topic_0015479967__table212772311610: + + + + + + + + + + + + + + + +
      Table 2 Naming rules of load balancer tags

      Item

      +

      Requirement

      +

      Example Value

      +

      Tag key

      +
      • Cannot be left blank.
      • Must be unique for the same load balancer.
      • Can contain a maximum of 36 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb_key1

      +

      Tag value

      +
      • Can contain a maximum of 43 characters.
      • Cannot contain asterisks (*), angle brackets (< and >), backslashes (\), equal signs (=), commas (,), vertical bars (|), or slashes (/).
      • Can contain only the following character types:
        • Uppercase letters
        • Lowercase letters
        • Digits
        • Special characters, including hyphens (-) and underscores (_)
        +
      +

      elb-01

      +
      + +
    5. Click Create Now.
    6. Confirm the configuration and submit your request.
    + + + + + + + diff --git a/elb/umn/temp/creating_and_managing_a_certificate.tmp b/elb/umn/temp/creating_and_managing_a_certificate.tmp new file mode 100644 index 000000000..c14a06ef5 --- /dev/null +++ b/elb/umn/temp/creating_and_managing_a_certificate.tmp @@ -0,0 +1,49 @@ + + +

    Creating and Managing a Certificate

    +

    Scenarios

    To enable authentication for securing data transmission over HTTPS, ELB allows you to deploy certificates on load balancers.

    +
    • A certificate can be bound to only one type of load balancer. Ensure that you have selected the correct type.
    + + +

    Creating a Certificate

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the navigation pane on the left, choose Certificates.
    5. Click Create Certificate. In the Create Certificate dialog box, configure the following parameters:
      • Certificate Name
      • Certificate Type
        • Server certificate: used for SSL handshake negotiations if an HTTPS listener is used. Both the certificate content and private key are required.
        • CA certificate: issued by a certificate authority (CA) and used to verify the certificate issuer. If HTTPS mutual authentication is required, HTTPS connections can be established only when the client provides a certificate issued by a specific CA.
        +
      • Domain Name: If the certificate is used for SNI, a domain name must be specified.
      • Certificate Content: The content must be in PEM format.

        Click Upload and select the certificate to be uploaded. Ensure that your browser is of the latest version.

        +

        The format of the certificate body is as follows:

        +
        -----BEGIN CERTIFICATE-----
        +Base64–encoded certificate
        +-----END CERTIFICATE-----
        +
      • Private Key

        Click Upload and select the private key to be uploaded. Ensure that your browser is of the latest version.

        +Private Key: This must be an unencrypted private key. The format is as follows:
        -----BEGIN PRIVATE KEY-----
        +[key]
        +-----END PRIVATE KEY-----
        +

        If there is a certificate chain, you need to configure the certificates in the following sequence: sub-certificate (server certificate), intermediate certificate, and root certificate. If the root certificate has been preset on the server and is not contained in the issued certificates, first configure the sub-certificate (server certificate) and then the intermediate certificate.

        + + +

        For example, if a CA issued a private key private.key and two certificates: a sub-certificate (server certificate) server.cer and an intermediate certificate mid.crt, paste the content of server.cer in the Certificate Content text box, press Enter, then paste the content of mid.crt in the Certificate Content text box, and paste the content of private.key in the Private Key text box to make the entire certificate chain take effect. The format of the certificate body in a certificate chain is as follows:

        +

        Certificate body

        +
        -----BEGIN CERTIFICATE-----
        +Content of the server certificate file server.cer
        +-----END CERTIFICATE-----
        +-----BEGIN CERTIFICATE-----
        +Content of the intermediate certificate file mid.crt
        +-----END CERTIFICATE-----
        +

        Private key

        +
        -----BEGIN PRIVATE KEY-----
        +Content of the private key file private.key
        +-----END PRIVATE KEY-----
        +
      • Domain Name

        If the created certificate is used for SNI, you need to specify a domain name. Only one domain name can be specified for each certificate, and the domain name must be the same as that in the certificate.

        +
      • Description
      +
    1. Click OK.
    + +

    Binding a Certificate

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener.
    6. In the Add Listener dialog box, configure the parameters. When Frontend Protocol is set to HTTPS, a server certificate must be bound to the listener.
    7. Click OK.
    + +

    Deleting a Certificate

    Only certificates that are not in use can be deleted.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the navigation pane on the left, choose Certificates.
    5. Locate the certificate and click Delete in the Operation column.
    6. Click Yes.
    + +

    Modifying a Certificate

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the navigation pane on the left, choose Certificates.
    5. Locate the certificate and click Modify in the Operation column.
    6. Modify the parameters as required.
    7. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/deleting_a_load_balancer.tmp b/elb/umn/temp/deleting_a_load_balancer.tmp new file mode 100644 index 000000000..5fb5f9317 --- /dev/null +++ b/elb/umn/temp/deleting_a_load_balancer.tmp @@ -0,0 +1,18 @@ + + +

    Deleting a Load Balancer

    +

    Scenarios

    You can delete a load balancer if you do not need it any longer.

    +

    A deleted load balancer cannot be recovered.

    + +

    After a public network load balancer is deleted, its EIP will not be released and can be used by other resources.

    + +

    Prerequisites

    You have removed backend servers from the associated backend server groups, deleted the associated backend server groups, and deleted the listeners added to the load balancer.

    + +

    Deleting a Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click Delete in the Operation column.
    5. Click Yes.
    + + + + + + + diff --git a/elb/umn/temp/differences_between_classic_and_shared_load_balancers.tmp b/elb/umn/temp/differences_between_classic_and_shared_load_balancers.tmp new file mode 100644 index 000000000..90248b241 --- /dev/null +++ b/elb/umn/temp/differences_between_classic_and_shared_load_balancers.tmp @@ -0,0 +1,192 @@ + + +

    Differences Between Classic and Shared Load Balancers

    +

    Each type of load balancer has their advantages.

    +
    • Classic load balancers are suitable for web services with low traffic and simple traffic patterns.

      Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

      + +
    • Shared load balancers are suitable for choices for web services with heavy traffic. (Shared load balancers were previously named enhanced load balancers.)
    +

    Table 1 compares the features supported by the two types of load balancers. √ indicates that an item is supported, and — indicates that an item is not supported.

    + +.. _en-us_elb_01_0007__table4688103612223: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Features supported by each type of load balancers

    Feature

    +

    Description

    +

    Classic

    +

    Shared

    +

    Load balancing over public and private networks

    +
    • Each load balancer on a public network has a public IP address bound to it and routes requests from clients to backend servers over the Internet.
    • Load balancers on a private network work within a VPC and route requests from clients to backend servers in the same VPC.
    +

    +

    +

    Layer 4 and Layer 7 load balancing

    +
    • Layer 4 load balancing: After receiving TCP or UDP requests from the clients, the load balancer directly routes the requests to backend servers. Load balancing at Layer 4 features high routing efficiency.
    • Layer 7 load balancing: After receiving an HTTP or HTTPS request, the load balancer identifies the fields in the HTTP/HTTPS packet header and routes the request based on these fields. Though the routing efficiency is lower than that at Layer 4, load balancing at Layer 7 provides some advanced features such as encrypted transmission and cookie-based sticky sessions.
    +

    √ (UDP is not supported for load balancers on a private network.)

    +

    +

    Load balancing algorithm

    +

    Round robin, least connections, and source IP hash

    +

    +

    +

    Sticky session

    +

    If you enable sticky sessions, requests from the same client will be routed to the same backend server during the session.

    +

    +

    +

    WebSocket protocol

    +

    WebSocket is a new HTML5 protocol that provides full-duplex communication between the browser and the server. WebSocket saves server resources and bandwidth, and enables real-time communication.

    +

    +

    +

    Domain name- or URL-based forwarding

    +

    ELB allows you to add forwarding policies to forward requests to different backend server groups based on the domain names or URLs specified in the forwarding policies.

    +

    +

    √ (Currently, you can add forwarding policies only to HTTP or HTTPS listeners.)

    +

    Adding ECSs as backend servers

    +

    You can add ECSs to backend server groups to handle requests from load balancers.

    +

    +

    +

    Whitelist-based access control

    +

    You can whitelist the IP addresses that can access a listener.

    +

    +

    +

    Standard OpenStack APIs

    +

    OpenStack APIs are supported and are compatible with self-developed APIs.

    +

    +

    +

    Adding BMSs as backend servers

    +

    BMSs can also be used as backend servers to handle requests distributed by load balancers.

    +

    +

    +

    SNI for certificates

    +

    Server Name Indication (SNI) is an extension to Transport Layer Security (TLS) and is used in cases that a server uses multiple domain names and certificates. After SNI is enabled, certificates corresponding to the domain names are required.

    +

    +

    +

    SSL protocol

    +

    Load balancers use SSL to receive requests from clients.

    +

    +

    +

    OBS storage for access logs

    +

    Access logs of load balancers can be dumped to OBS buckets for storage.

    +

    +

    +

    Server weight

    +

    You can configure different weights for backend servers when you select the round robin or least connections as the load balancing algorithm.

    +

    +

    +

    Modifying certificate content

    +

    You can modify the content of a certificate.

    +

    +

    +

    Mutual authentication

    +

    The identities of both communication parties are authenticated to ensure security. You need to deploy both the server certificate and client certificate. Only HTTPS listeners support this feature.

    +

    +

    +

    HTTP redirection

    +

    HTTP traffic is redirected to HTTPS. When the client sends an HTTP request, the backend server returns an HTTPS response.

    +

    +

    +

    Performance monitoring on a per listener basis

    +

    Cloud Eye allows you to monitor your resources, including load balancers.

    +

    +

    +
    + + + + + + + diff --git a/elb/umn/temp/differences_between_dedicated_and_shared_load_balancers.tmp b/elb/umn/temp/differences_between_dedicated_and_shared_load_balancers.tmp new file mode 100644 index 000000000..3a2bcb6ec --- /dev/null +++ b/elb/umn/temp/differences_between_dedicated_and_shared_load_balancers.tmp @@ -0,0 +1,287 @@ + + +

    Differences Between Dedicated and Shared Load Balancers

    +

    Each type of load balancer has their advantages.

    +
    • Dedicated load balancers have exclusive use of underlying resources, so that the performance of a dedicated load balancer is not affected by other load balancers. In addition, there are a wide range of specifications available for selection.
    • Shared load balancers share underlying resources so that the performance of a load balancer is affected by other load balancers. Shared load balancers were previously named enhanced load balancers.

      Currently, dedicated load balancers are supported only in the eu-nl region.

      + +
    +

    Advantages of Dedicated Load Balancers

    • Robust performance

      Each dedicated load balancer has exclusive use of isolated underlying resources and can provide guaranteed performance. A single dedicated load balancer deployed in one AZ can establish up to 20 million concurrent connections, and a load balancer deployed across two AZs can establish up to 40 million concurrent connections, meeting your requirements for handling a massive number of requests.

      +
    • High availability

      Dedicated load balancers provide a comprehensive health check mechanism to ensure that incoming traffic is routed to only healthy backend servers, improving the availability of your applications.

      +

      Dedicated load balancers on both public and private networks can route traffic across AZs and support automatic DR and service isolation between users.

      +
    • Ultra security

      Dedicated load balancers also allow you to select security policies that fit your security requirements.

      +
    • Multiple protocols

      Dedicated load balancers support the following protocols, including TCP, UDP, HTTP, and HTTPS, so that they can route requests from different types of applications.

      +
    • Hybrid load balancing

      Dedicated load balancers can route requests to both servers on the cloud and on premises, allowing you to leverage the public cloud to handle burst traffic.

      +
    + +

    Feature Comparisons

    Dedicated load balancers provide more powerful forwarding performance, while shared load balancers are less expensive. You can select the appropriate load balancer based on your application needs. The following tables compare the features supported by the two types of load balancers. (√ indicates that an item is supported, and ╳ indicates that an item is not supported.)

    + +.. _elb_pro_0004__en-us_topic_0000001192971589_table142931939192617: + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Supported protocols

    Protocol

    +

    Description

    +

    Dedicated Load Balancers

    +

    Shared Load Balancers

    +

    TCP/UDP (Layer 4)

    +

    After receiving TCP or UDP requests from the clients, the load balancer directly routes the requests to backend servers. Load balancing at Layer 4 features high routing efficiency.

    +

    +

    +

    HTTP/HTTPS (Layer 7)

    +

    After receiving a request, the listener needs to identify the request and forward data based on the fields in the HTTP/HTTPS packet header. Though the routing efficiency is lower than that at Layer 4, load balancing at Layer 7 provides some advanced features such as encrypted transmission and cookie-based sticky sessions.

    +

    +

    +

    WebSocket

    +

    WebSocket is a new HTML5 protocol that provides full-duplex communication between the browser and the server. WebSocket saves server resources and bandwidth, and enables real-time communication.

    +

    +

    +
    + + +.. _elb_pro_0004__en-us_topic_0000001192971589_table9759549192919: + + + + + + + + + + + + + + + + + + +
    Table 2 Supported Backend types

    Backend Type

    +

    Description

    +

    Dedicated Load Balancers

    +

    Shared Load Balancers

    +

    ECS

    +

    You can use load balancers to distribute incoming traffic across ECSs.

    +

    +

    +

    BMS

    +

    You can use load balancers to distribute incoming traffic across BMSs.

    +

    +

    +
    + + +.. _elb_pro_0004__en-us_topic_0000001192971589_table593918591292: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Advanced features

    Feature

    +

    Description

    +

    Dedicated Load Balancers

    +

    Shared Load Balancers

    +

    Multiple specifications

    +

    Load balancers allow you to select appropriate specifications based on your requirements. For details, see Specifications of Dedicated Load Balancers.

    +

    +

    x

    +

    HTTPS support

    +

    Load balancers can receive HTTPS requests from clients and route them to backend servers.

    +

    +

    x

    +

    Mutual authentication

    +

    In this case, you need to deploy both the server certificate and client certificate.

    +

    Mutual authentication is supported only by HTTPS listeners.

    +

    +

    +

    SNI

    +

    Server Name Indication (SNI) is an extension to TLS and is used when a server uses multiple domain names and certificates. After SNI is enabled, certificates corresponding to the domain names are required.

    +

    +

    +

    Security policies

    +

    When you add HTTPS listeners, you can select desired security policies to improve service security. A security policy is a combination of TLS protocols and cipher suites.

    +

    +

    +
    + + +.. _elb_pro_0004__en-us_topic_0000001192971589_table95315574216: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 Other features

    Feature

    +

    Description

    +

    Dedicated Load Balancers

    +

    Shared Load Balancers

    +

    Cross-AZ deployment

    +

    You can create a load balancer in multiple AZs. Each AZ selects an optimal path to process requests. In addition, the AZs back up each other, improving service processing efficiency and reliability.

    +

    +

    x

    +

    Load balancing algorithms

    +

    Load balancers support weighted round robin, weighted least connections, and source IP hash.

    +

    +

    +

    Load balancing over public and private networks

    +
    • Each load balancer on a public network has a public IP address bound to it and routes requests from clients to backend servers over the Internet.
    • Load balancers on a private network work within a VPC and route requests from clients to backend servers in the same VPC.
    +

    +

    +

    Modifying the bandwidth

    +

    You can modify the bandwidth used by the EIP bound to the load balancer as required.

    +

    +

    +

    Binding/Unbinding an IP address

    +

    You can bind an IP address to a load balancer or unbind the IP address from a load balancer based on service requirements.

    +

    +

    +

    Sticky session

    +

    If you enable sticky sessions, requests from the same client will be routed to the same backend server during the session.

    +

    +

    +

    Access control

    +

    You can add IP addresses to a whitelist or blacklist to control access to a listener.

    +
    • A whitelist allows specified IP addresses to access the listener.
    • A blacklist denies access from specified IP addresses.
    +

    +

    +

    Health check

    +

    Load balancers periodically send requests to backend servers to check whether they can process requests.

    +

    +

    +

    Certificate management

    +

    You can create two types of certificates: server certificate and CA certificate. If you need an HTTPS listener, you need to bind a server certificate to it. To enable mutual authentication, you also need to bind a CA certificate to the listener. You can also replace a certificate that is already used by a load balancer.

    +

    +

    +

    Tagging

    +

    If you have a large number of cloud resources, you can assign different tags to the resources to quickly identify them and use these tags to easily manage your resources.

    +

    +

    +

    Support the display of monitoring metrics.

    +

    You can use Cloud Eye to monitor load balancers and associated resources and view metrics on the management console.

    +

    +

    +

    Log auditing

    +

    You can use Cloud Trace Service (CTS) to record operations on load balancers and associated resources for query, auditing, and backtracking.

    +

    +

    +
    + + + + + + + + diff --git a/elb/umn/temp/disabling_a_health_check.tmp b/elb/umn/temp/disabling_a_health_check.tmp new file mode 100644 index 000000000..c836b0159 --- /dev/null +++ b/elb/umn/temp/disabling_a_health_check.tmp @@ -0,0 +1,14 @@ + + +

    Disabling a Health Check

    +

    Scenarios

    If you do not require health check, you can disable it when you add listeners. If you have already added listeners with health check enabled, you can also disable it when you modify the listeners.

    +

    After health check is disabled, the load balancer will consider all backend servers healthy and will still route requests to a backend server even if this server becomes faulty or is working abnormally. As a result, applications on this server are inaccessible. If this happens, ensure that the ports used by the backend servers are normal. You are advised not to disable health checks unless necessary.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    1. Click Backend Server Groups, locate the backend server group, and click its name.
    2. Click More in the Operation column.
    3. Select Configure Health Check from the drop-down list.
    1. In the Configure Health Check dialog box, disable the health check.
    1. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/elb_functionality.tmp b/elb/umn/temp/elb_functionality.tmp new file mode 100644 index 000000000..fc2002dac --- /dev/null +++ b/elb/umn/temp/elb_functionality.tmp @@ -0,0 +1,22 @@ + + +

    ELB Functionality

    + + + + + + + + diff --git a/elb/umn/temp/elb_use.tmp b/elb/umn/temp/elb_use.tmp new file mode 100644 index 000000000..716453949 --- /dev/null +++ b/elb/umn/temp/elb_use.tmp @@ -0,0 +1,17 @@ + + +

    ELB Use

    +

    + + + + + + + + diff --git a/elb/umn/temp/enabling_or_disabling_a_load_balancer.tmp b/elb/umn/temp/enabling_or_disabling_a_load_balancer.tmp new file mode 100644 index 000000000..767f4c7b3 --- /dev/null +++ b/elb/umn/temp/enabling_or_disabling_a_load_balancer.tmp @@ -0,0 +1,16 @@ + + +

    Enabling or Disabling a Load Balancer

    +

    Scenarios

    You can enable or disable a load balancer at any time. A disabled load balancer cannot distribute traffic.

    +

    You can enable or disable only classic load balancers.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer, and click More > Enable or More > Disable.
    5. Click Yes.
    + + + + + + + diff --git a/elb/umn/temp/exporting_the_load_balancer_list.tmp b/elb/umn/temp/exporting_the_load_balancer_list.tmp new file mode 100644 index 000000000..f8beead68 --- /dev/null +++ b/elb/umn/temp/exporting_the_load_balancer_list.tmp @@ -0,0 +1,13 @@ + + +

    Exporting the Load Balancer List

    +

    Scenarios

    You can export the load balancer list for backup.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the upper right corner of the load balancer list, click .
    + + + + + + + diff --git a/elb/umn/temp/faqs.tmp b/elb/umn/temp/faqs.tmp new file mode 100644 index 000000000..1e6d0246f --- /dev/null +++ b/elb/umn/temp/faqs.tmp @@ -0,0 +1,27 @@ + + +

    FAQs

    + + + + + diff --git a/elb/umn/temp/forwarding_policy.tmp b/elb/umn/temp/forwarding_policy.tmp new file mode 100644 index 000000000..cf2d58dc2 --- /dev/null +++ b/elb/umn/temp/forwarding_policy.tmp @@ -0,0 +1,164 @@ + + +

    Forwarding Policy

    +

    Scenarios

    You can add forwarding policies to HTTP or HTTPS listeners to forward requests to different backend server groups based on domain names or URLs.

    +

    This is suited for applications that are deployed on multiple backend servers and provide multiple types of services such as videos, images, audios, and texts.

    +

    A forwarding policy consists of a forwarding rule and an action.

    +
    • There are two types of forwarding rules: domain name and URL.
    • The only supported action is to forward requests to another backend server group.
    + +

    Constraints and Limitations

    • Forwarding policies can be added only to HTTP and HTTPS listeners.
    • When you add a forwarding policy, note the following:
      • Each URL path must exist on the backend servers. Otherwise, the backend servers return 404 to the load balancer.
      • A URL path cannot be configured for two forwarding policies.
      • In regular expression match, the characters are matched sequentially, and matching ends when any rule is successfully matched. Matching rules cannot overlap with each other.
      +
    • After you add a forwarding policy, the load balancer forwards requests based on the specified domain name or URL:
      • If the domain name or URL in a request matches that specified in the forwarding policy, the request is forwarded to the backend server group you select when you add the forwarding policy.
      • If the domain name or URL in a request does not match that specified in the forwarding policy, the request is forwarded to the default backend server group of the listener.
      +
    +

    If you add a forwarding policy that is the same as an existing forwarding policy, there will be a conflict. Even if you delete the existing forwarding policy, the newly-added forwarding policy is still in the Faulty state. Delete both the forwarding policies and add two different forwarding policies.

    + +

    + +

    Adding a Forwarding Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Add on the right of Forwarding Policies.
    7. In the Add Forwarding Policy dialog box, configure the parameters based on Table 1.
    8. Click OK.

      Alternatively, locate the load balancer in the load balancer list and click the name of the listener in the Listener column. In the Listeners area, click Add on the right of Forwarding Policies and then add a forwarding policy.

      +
    + +.. _en-us_topic_0114694934__table10859681016: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Forwarding policy parameters

    Item

    +

    Parameter

    +

    Description

    +

    Example Value

    +

    Configure Forwarding Policy

    +

    Name

    +

    Specifies the forwarding policy name.

    +

    forwarding_policy-q582

    +

    Domain Name

    +

    Specifies the domain name used for forwarding requests. The domain name in the request must exactly match that in the forwarding policy. You need to specify either a domain name or URL.

    +

    www.test.com

    +

    URL Matching Rule

    +
    • Exact match

      The request URL is identical to the preset URL.

      +
    • Prefix match

      The requested URL starts with the specified URL string.

      +
    • Regular expression matchThe requested URL matches the specified URL string based on the regular expression. NOTE:
      • Exact match has the highest priority, followed by Prefix match. Regular expression match has the lowest priority.
      • If you use prefix match, the longest string is chosen. For example, if there are two preset URLs: /elb and /elbvip and the accessed URL is /elbvipplus, /elbvip is preferentially matched.
      + + +
    +

    Exact match

    +

    URL

    +

    Specifies the URL used for forwarding requests.

    +

    /login.php

    +

    Description

    +

    Provides supplementary information about the forwarding policy.

    +

    N/A

    +

    Add Backend Server Group

    +

    Backend Server Group

    +

    Specifies whether a new or existing backend server group will be used. Select Create new or Use existing.

    +

    If you select Create new, configure the parameters based on Table 1 and Table 2.

    + NOTE:

    The backend protocol can only be HTTP.

    + +

    Create new

    +
    + + +

    URL Matching Example

    The following table lists how a URL is matched, and Figure 1 shows how a request is forwarded to a backend server group.

    + + +.. _en-us_topic_0114694934__table5831113119590: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 URL matching

    URL Matching Rule

    +

    URL

    +

    URL in the Forwarding Policy

    +

    -

    +

    -

    +

    /elb/index.html

    +

    /elb

    +

    /elb[^\s]*

    +

    /index.html

    +

    Exact match

    +

    /elb/index.html

    +

    +

    -

    +

    -

    +

    -

    +

    Prefix match

    +

    +

    +

    -

    +

    -

    +

    Regular expression match

    +

    +

    -

    +

    +

    -

    +
    + +Figure 1 Request forwarding
    +

    In this figure, the system first searches for an exact match of the requested URL (/elb_gls/glossary.html). If there is no exact match, the system searches for a prefix match. If a match is found, the request is forwarded to backend server group 2 even if a regular expression match is also found, because the prefix match has a higher priority.

    +

    Modifying a Forwarding Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Forwarding Policies.
    7. Locate the forwarding policy and click on the right of its name.
    8. In the Modify Forwarding Policy dialog box, modify the parameters and click OK.
    + +

    Deleting a Forwarding Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Forwarding Policies.
    7. Locate the forwarding policy and click on the right of its name.
    8. Click Yes.
    + + + + + + + diff --git a/elb/umn/temp/getting_started.tmp b/elb/umn/temp/getting_started.tmp new file mode 100644 index 000000000..d408ba3ec --- /dev/null +++ b/elb/umn/temp/getting_started.tmp @@ -0,0 +1,15 @@ + + +

    Getting Started

    + + + + + diff --git a/elb/umn/temp/health_check.tmp b/elb/umn/temp/health_check.tmp new file mode 100644 index 000000000..d609a4046 --- /dev/null +++ b/elb/umn/temp/health_check.tmp @@ -0,0 +1,13 @@ + + +

    Health Check

    + + + + + diff --git a/elb/umn/temp/how_can_i_obtain_the_ip_address_of_a_client.tmp b/elb/umn/temp/how_can_i_obtain_the_ip_address_of_a_client.tmp new file mode 100644 index 000000000..13e9d9a75 --- /dev/null +++ b/elb/umn/temp/how_can_i_obtain_the_ip_address_of_a_client.tmp @@ -0,0 +1,80 @@ + + +

    How Can I Obtain the IP Address of a Client?

    +

    When you use ELB to route requests to backend servers, IP addresses of the clients will be translated by the ELB system. This FAQ provides the operations for obtaining the IP addresses of the clients.

    +

    Constraints and Limitations

    • If Network Address Translation (NAT) or Web Application Firewall (WAF) is used, you cannot obtain the IP addresses of the clients.
    • If the client is a container, you can obtain only the IP address of the node where the container is located, but cannot obtain the IP address of the container.
    • If the Obtain Client IP Address option is enabled for TCP or UDP listeners, a cloud server cannot be used as a backend server and a client at the same time. In this case, you can configure the TOA plug-in to obtain the source IP addresses.
    • By default, the Obtain Client IP Address option is enabled for TCP and UDP listeners of dedicated load balancers. You do not need to manually enable it.
    + +

    Layer 7 Load Balancing

    Configure the application server and obtain the IP address of a client from the HTTP header.

    + +

    The real IP address is placed in the X-Forwarded-For header field by the load balancer in the following format:

    +
    X-Forwarded-For: IP address of the client,Proxy server 1-IP address,Proxy server 2-IP address,...
    +

    If you use this method, the first IP address obtained is the IP address of the client.

    +

    Apache Server

    +
    1. Install Apache 2.4.

      For example, if CentOS 7.5 is used as the OS, run the following command to install the software:

      +
      yum install httpd
      +
    2. Add the following content to the end of Apache configuration file /etc/httpd/conf/httpd.conf:
      LoadModule remoteip_module modules/mod_remoteip.so
      +RemoteIPHeader X-Forwarded-For
      +RemoteIPInternalProxy 100.125.0.0/16
      +Figure 1 Content to be added
      +

      Add the IP address range of the proxy server after RemoteIPInternalProxy.

      +
      • Shared load balancers: 100.125.0.0/16 and the IP address range used by the AAD service. 100.125.0.0/16 is used by load balancers to communicate with backend servers, and there are no security risks. Use commas (,) to separate multiple entries.
      • Dedicated load balancers: the CIDR block of the subnet where the load balancer resides
      + +
    3. Change the log output format in the Apache configuration file to the following (%a indicates the source IP address):
      LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
      +
    4. Restart Apache.
      systemctl restart httpd
      +
    5. Obtain the actual IP address of the client from the httpd access logs.
    +

    Nginx Server

    +

    For example, if CentOS 7.5 is used as the OS, run the following command to install the software:

    +
    1. Run the following commands to install http_realip_module:
      yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
      +wget http://nginx.org/download/nginx-1.17.0.tar.gz
      +tar zxvf nginx-1.17.0.tar.gz
      +cd nginx-1.17.0
      +./configure --prefix=/path/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
      +make
      +make install
      +
    2. Run the following command to open the nginx.conf file:
      vi /path/server/nginx/conf/nginx.conf
      +
    3. Add the following content under http or server:
      ;100.125.0.0/16set_real_ip_from 
      +real_ip_header X-Forwarded-For;
      +Figure 2 Content to be added
      +

      Add the IP address range of the proxy server after set_real_ip_from.

      +
      • Shared load balancers: 100.125.0.0/16 and the IP address range used by the AAD service. (100.125.0.0/16 is used by load balancers to communicate with backend servers, and there are no security risks. Use commas to separate multiple entries.
      +
      • Dedicated load balancers: the CIDR block of the subnet where the load balancer resides
      + +
    4. Start Nginx.
      /path/server/nginx/sbin/nginx
      +
    5. Obtain the actual IP address of the client from the Nginx access logs.
      cat /path/server/nginx/logs/access.log
      +
    +

    Tomcat Servers

    +

    In the following operations, the Tomcat installation path is /usr/tomcat/tomcat8/.

    +
    1. Log in to a server on which Tomcat is installed.
    2. Check whether Tomcat is running properly.
      ps -ef|grep tomcat
      +netstat -anpt|grep java
      +Figure 3 Tomcat running properly
      +
    3. Add the following configuration items to the server.xml file:
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
      +prefix="localhost_access_log." suffix=".txt"
      +pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false" />
      +Figure 4 Example configuration
      +
    4. Restart the Tomcat service.
      cd /usr/tomcat/tomcat8/bin && sh startup.sh
      +

      In this command, /usr/tomcat/tomcat8/ is the Tomcat installation path. Change it based on site requirements.

      +Figure 5 Restarting the Tomcat service
      +
    5. View the latest logs.

      As highlighted in the following figure, IP addresses that are not in the IP address range starting with 100.125 are the source IP addresses.

      +
      cat localhost_access_log..2020-09-10.txt
      +

      In this command, localhost_access_log..2020-09-10.txt indicates the log path of the current day. Change it based on site requirements.

      +Figure 6 Querying the source IP address
      +
    +

    Windows Server with IIS Deployed

    +

    The following uses Windows Server 2012 with IIS7 as an example to describe how to obtain the source IP address.

    +
    1. Download and install IIS.
    2. Download the F5XForwardedFor.dll plug-in and copy the plug-ins in the x86 and x64 directories to a directory for which IIS has the access permission, for example, C:\F5XForwardedFor2008.
    3. Open the Server Manager and choose Modules > Configure Native Modules.Figure 7 Selecting modules
      +Figure 8 Configure Native Modules
      +
    4. Click Register to register the x86 and x64 plug-ins.Figure 9 Registering plug-ins
      +
    5. In the Modules dialog box, verify that the registered plug-ins are displayed in the list.Figure 10 Confirming the registration
      +
    6. Select ISAPI Filters on the Server Manager homepage and authorize two plug-ins to run ISAPI and CGI extensions.Figure 11 Adding authorization
      +
    7. Select ISAPI and CGI Restriction to set the execution permission for the two plug-ins.Figure 12 Allowing the plug-ins to execute
      +
    8. Click Restart on the homepage to restart IIS. The configuration will take effect after the restart.Figure 13 Restarting IIS
      +
    +

    Layer 4 Load Balancing

    TCP listeners require the TOA plug-in to obtain real IP addresses. For details, see Configuring the TOA Plug-in.

    + + + + + + + + diff --git a/elb/umn/temp/how_can_i_use_websocket.tmp b/elb/umn/temp/how_can_i_use_websocket.tmp new file mode 100644 index 000000000..7d5dcef8c --- /dev/null +++ b/elb/umn/temp/how_can_i_use_websocket.tmp @@ -0,0 +1,10 @@ + + +

    How Can I Use WebSocket?

    +

    For HTTP listeners, unencrypted WebSocket (ws://) is supported by default. For HTTPS listeners, encrypted WebSocket (wss://) is supported by default.

    + + + + + + diff --git a/elb/umn/temp/how_do_i_check_if_sticky_sessions_fail_to_take_effect.tmp b/elb/umn/temp/how_do_i_check_if_sticky_sessions_fail_to_take_effect.tmp new file mode 100644 index 000000000..4bdb84364 --- /dev/null +++ b/elb/umn/temp/how_do_i_check_if_sticky_sessions_fail_to_take_effect.tmp @@ -0,0 +1,10 @@ + + +

    How Do I Check If Sticky Sessions Fail to Take Effect?

    +
    1. Check whether sticky sessions are enabled for the backend server group. If sticky sessions are enabled, go to the next step.
    2. Check the health check result of the backend server. If the health check result is Unhealthy, traffic is routed to other backend servers and sticky sessions become invalid.
    3. If you select the source IP hash algorithm, check whether the IP address of the request changes before the load balancer receives the request.
    4. If an HTTP or HTTPS listener is configured with sticky sessions enabled, check whether the request carries a cookie. If yes, check whether the cookie value changes (because load balancing at Layer 7 uses cookies to maintain sessions).
    + + + + + + diff --git a/elb/umn/temp/how_do_i_check_if_traffic_is_evenly_distributed.tmp b/elb/umn/temp/how_do_i_check_if_traffic_is_evenly_distributed.tmp new file mode 100644 index 000000000..e109658da --- /dev/null +++ b/elb/umn/temp/how_do_i_check_if_traffic_is_evenly_distributed.tmp @@ -0,0 +1,12 @@ + + +

    How Do I Check If Traffic Is Evenly Distributed?

    +
    1. Check whether sticky sessions are enabled. If sticky sessions are enabled and there are few clients, traffic may be unevenly distributed.
    2. Check the health of backend servers, especially those whose health changes over time. If the health check result is Unhealthy or switches between Healthy and Unhealthy, traffic is unbalanced.
    3. Check whether the Source IP hash algorithm is used. If the algorithm is used, requests sent from the same IP address are routed to the same backend server, resulting in unbalanced traffic.
    4. Check whether applications on the backend server use keepalive to maintain TCP persistent connections. If keepalive is used, traffic may be unbalanced because the number of requests on persistent connections is different.
    5. Check whether different weights are assigned to backend servers. The traffic varies according to the weights.
    +

    Generally, in addition to the load balancing algorithm, factors that affect load balancing include connection type, session stickiness, and server weights.

    + + + + + + + diff --git a/elb/umn/temp/how_do_i_check_the_network_conditions_of_a_backend_server.tmp b/elb/umn/temp/how_do_i_check_the_network_conditions_of_a_backend_server.tmp new file mode 100644 index 000000000..7413b694e --- /dev/null +++ b/elb/umn/temp/how_do_i_check_the_network_conditions_of_a_backend_server.tmp @@ -0,0 +1,14 @@ + + +

    How Do I Check the Network Conditions of a Backend Server?

    +
    1. Verify that an IP address has been assigned to the server's primary NIC.
      1. Log in to the server. (An ECS is used as an example here.)
      2. Run the ifconfig or ip address command to view the IP address.

        For Windows ECSs, run ipconfig on the CLI to view their IP addresses.

        + +
      +
    2. Ping the gateway of the subnet where the ECS resides to check basic network communication.
      1. On the VPC details page, locate the subnet and view the gateway address in the Gateway column. Generally, the gateway address ends with .1.
      2. Ping the gateway from the ECS. If the gateway cannot be pinged, check the networks at Layer 2 and Layer 3.
      +
    + + + + + + diff --git a/elb/umn/temp/how_do_i_check_the_network_configuration_of_a_backend_server.tmp b/elb/umn/temp/how_do_i_check_the_network_configuration_of_a_backend_server.tmp new file mode 100644 index 000000000..0a161d1dc --- /dev/null +++ b/elb/umn/temp/how_do_i_check_the_network_configuration_of_a_backend_server.tmp @@ -0,0 +1,12 @@ + + +

    How Do I Check the Network Configuration of a Backend Server?

    +
    1. Check whether the security group of the server is correctly configured.
      1. On the server details page, view the security group.
      2. Check whether the security group allows access from IP addresses in 100.125.0.0/16. If access is not allowed, add inbound rules for 100.125.0.0/16.
      +
    2. Ensure that the network ACLs of the subnet where the server resides does not intercept the traffic.

      In the left navigation pane on the VPC console, choose Access Control> Network ACLs and check whether the subnet allows traffic.

      +
    + + + + + + diff --git a/elb/umn/temp/how_do_i_check_the_status_of_a_backend_server.tmp b/elb/umn/temp/how_do_i_check_the_status_of_a_backend_server.tmp new file mode 100644 index 000000000..d7f184553 --- /dev/null +++ b/elb/umn/temp/how_do_i_check_the_status_of_a_backend_server.tmp @@ -0,0 +1,17 @@ + + +

    How Do I Check the Status of a Backend Server?

    +
    1. Verify that the applications on the backend server are enabled.
      1. Log in to the backend server. (An ECS is used as an example here.)
      2. Run the following command to check the port status:

        netstat -ntpl

        + For Windows ECSs, run the netstat -ano command on the CLI to view the port status or server software status.Figure 1 Port status
        + + +
      +
    2. Check the network communication of the ECS.

      For example, if the ECS uses port 80, run the curl command to check whether the communication is normal.

      +

      +
    + + + + + + diff --git a/elb/umn/temp/how_do_i_check_traffic_inconsistency.tmp b/elb/umn/temp/how_do_i_check_traffic_inconsistency.tmp new file mode 100644 index 000000000..e59082bbe --- /dev/null +++ b/elb/umn/temp/how_do_i_check_traffic_inconsistency.tmp @@ -0,0 +1,10 @@ + + +

    How Do I Check Traffic Inconsistency?

    +

    Check for failed requests on the clients, especially when 4xx status codes are returned. A possible cause is that the requests are rejected by ELB and are not routed to backend servers because ELB considers these requests abnormal.

    + + + + + + diff --git a/elb/umn/temp/how_do_i_troubleshoot_an_unhealthy_backend_server.tmp b/elb/umn/temp/how_do_i_troubleshoot_an_unhealthy_backend_server.tmp new file mode 100644 index 000000000..a6241529c --- /dev/null +++ b/elb/umn/temp/how_do_i_troubleshoot_an_unhealthy_backend_server.tmp @@ -0,0 +1,168 @@ + + +

    How Do I Troubleshoot an Unhealthy Backend Server?

    +

    Symptom

    If a client cannot access a backend server through a load balancer, the backend server is declared unhealthy. You can check the health check result of the backend server on the ELB console.

    +
    • Dedicated load balancers

      On the Load Balancers page, click the name of the load balancer to view its details. Click Backend Server Groups and locate the server group. In the Basic Information area, view the health check result of the backend server.

      +
    +
    • Shared load balancers

      On the Load Balancers page, click the name of the load balancer to view its details. Click Backend Server Groups and locate the server group. In the Basic Information area, view the health check result of the backend server.

      +
    + +

    Background

    The load balancer uses IP addresses in 100.125.0.0/16 to send heartbeats to backend servers and check their health. To ensure that health checks can be performed normally, IP addresses in 100.125.0.0/16 must be allowed to access the backend servers.

    +

    Security group rules configured for backend servers associated with dedicated load balancers are different from those configured for backend servers associated with shared load balancers.

    +
    • Classic and shared load balancers: Ensure that security group rules allow access from IP addresses in 100.125.0.0/16.
    • Dedicated load balancers: Ensure that security group rules allow access from IP addresses in the CIDR block of the VPC where the backend server resides.

      For details about how to configure security groups for backend servers associated with dedicated load balancers, see Configuring Security Group Rules for Backend Servers (Dedicated Load Balancers).

      +
    + +

    If a backend server is considered unhealthy, ELB will not route traffic to it until it is declared healthy again.

    +

    If you change the weight of a healthy backend server to 0, the health check result of this server becomes Unhealthy.

    +
    • When a backend server is detected as unhealthy, the load balancer will stop routing requests to this server.
    • If health checks are disabled, the load balancer will consider the backend server healthy by default and still route requests to it.
    • ELB uses IP addresses in 100.125.0.0/16 to perform health checks and route requests to backend servers.
    • If the Obtain Client IP Address option is enabled for TCP and UDP listeners of both dedicated and shared load balancers, client IP addresses instead of the IP addresses in 100.125.0.0/16 are used to communicate with the backend server.
    • Traffic is not routed to a backend server with a weight of 0, and the health check result for the backend server is not relevant.
    + + +

    Troubleshooting Procedure

    Possible causes are sequenced based on their occurrence probability.

    +

    Check these causes one by one until the fault persists.

    +

    You may need to change the health check configuration. It takes a while for the modification to take effect. The required time depends on health check interval and timeout duration. View the health check result in the backend server list of the load balancer.

    + +Figure 1 Troubleshooting process
    + +.. _en-us_topic_0018127975__table11639162722113: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Troubleshooting process

    Possible Cause

    +

    Solution

    +

    Backend server group

    +

    Checking Whether the Backend Server Group Is Associated with a Listener

    +

    Health check configuration

    +

    Checking the Health Check Configuration

    +

    Security group rules

    +

    Checking Security Group Rules

    +

    Network ACL rules

    +

    Checking Firewall Rules

    +

    Backend server listening configuration

    +

    Checking the Backend Server

    +

    Backend server firewall configuration

    +

    Checking the Firewall on the Backend Server

    +

    Backend server route configuration

    +

    Checking the Backend Server Route

    +

    Backend server load

    +

    Checking the Backend Server Load

    +

    Backend server host.deny file

    +

    Checking the host.deny File

    +
    + + +

    Checking Whether the Backend Server Group Is Associated with a Listener

    Check whether the backend server group that the unhealthy backend server belongs to is associated with a listener.

    +
    • If the backend server group is not associated with a listener, check whether a listener has been added to the load balancer.
      • If a listener has been added. Associate the backend server group with the listener.
      • If no listeners exist. Add a listener. Select Use existing and then select the backend server group when you add the listener.
      +
    • If the backend server group has been associated with a listener, proceed with the following operations.
    + +

    Checking the Health Check Configuration

    Classic load balancers: In the Listeners area, locate the listener with an unhealthy backend server associated and click View in the Health Check column. The Health Check dialog box is displayed. Check the following parameters:

    +
    • Health check protocol and port

      The health check port must be the one used on the backend server, and it cannot be customized.

      +

      Check whether the health check port is the one that the load balancer is listening to. If the two ports are inconsistent, the health check will become abnormal.

      +
    • Check Path. If HTTP is used for health checks, you must check this parameter. A simple static HTML file is recommended.

      Enter an absolute path.

      +

      Examples:

      +

      If the URL is http://www.example.com/chat/try/, the health check path is /chat/try/.

      +

      If the URL is http://192.168.63.187:9096/chat/index.html, the health check path is /chat/index.html.

      + +

      +
    +

    Shared load balancers: Click the name of the load balancer to view its details. Click Backend Server Groups and then click the name of the server group. On the Basic Information page, click Configure on the right of Health Check. Check the following parameters:

    +
    • Protocol
    • Port The port must be the one used on the backend server, and it cannot be customized. Check whether the health check port is the one that the load balancer is listening to. If the two ports are inconsistent, the health check will become abnormal.
    • Check Path If HTTP is used for health checks, you must check this parameter. A simple static HTML file is recommended.
    + +
    • If the health check protocol is HTTP, the port and the path are used for health checks.
    • If the health check protocol is TCP, only the port is used for health checks.
    • If health check protocol is HTTP and the health check port is normal, change the path or change the health check protocol to TCP.
    • Enter an absolute path.

      Examples:

      +

      If the URL is http://www.example.com/chat/try/, the health check path is /chat/try/.

      +

      If the URL is http://192.168.63.187:9096/chat/index.html, the health check path is /chat/index.html.

      +
    + + +

    Checking Security Group Rules

    • Dedicated Load balancers

      The inbound rules of the security group that the backend server belongs to must allow traffic to the VPC where the load balancer resides.

      +
    • SharedELB
      • TCP, HTTP, or HTTPS listeners: Verify that the inbound rule of the security group containing the backend server allows access from 100.125.0.0/16 and allows the traffic from the health check port.
        • If the health check port is the same as the backend port, the inbound rule must allow traffic from the backend port, for example, 80.
        • If the health check port is different from the backend port, the inbound rule must allow traffic from both the health check port and backend port, for example, 443 and 80.

          You can check the protocol and port in the basic information area of the backend server group.

          + +
        +Figure 2 Example inbound rule
        +
      • UDP listeners: Verify that the inbound rule of the security group allows traffic from the health check protocol, health check port, and 100.125.0.0/16. In addition, the ICMP traffic must be allowed in the inbound direction.Figure 3 Example inbound rule that allows ICMP traffic
        +
      +
    • Classic load balancers on a private network: Verify that the TCP traffic is allowed over the health check port in the VPC.Figure 4 Example inbound rule that allows TCP traffic within the VPC
      +
    +
    • TCP, HTTP, or HTTPS listeners: Verify that the inbound rule of the security group containing the backend server allows access from 100.125.0.0/16 and allows the traffic from the health check port.
      • If the health check port is the same as the backend port, the inbound rule must allow traffic from the backend port, for example, 80.
      • If the health check port is different from the backend port, the inbound rule must allow traffic from both the health check port and backend port, for example, 443 and 80.

        You can check the protocol and port in the basic information area of the backend server group.

        + +
      +Figure 5 Example inbound rule
      +
    • UDP listeners: Verify that the inbound rule of the security group allows traffic from the health check protocol, health check port, and 100.125.0.0/16. In addition, the ICMP traffic must be allowed in the inbound direction.Figure 6 Example inbound rule that allows ICMP traffic
      +
    • Classic load balancers on a private network: Verify that the TCP traffic is allowed over the health check port in the VPC.Figure 7 Example inbound rule that allows TCP traffic within the VPC
      +
    +
    • Access to the backend server from IP addresses in 100.125.0.0/16 must be allowed. Load balancers communicate with backend servers using these IP addresses. After traffic is routed to backend servers, source IP addresses are converted to IP addresses starting with 100.125. In addition, the IP address of the health check node is allocated from 100.125.0.0/16.
    • If you are not sure about the security group rules, change the protocol and port range to All just for testing purposes.
    • For UDP listeners, see How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Health Checks?
    + + +

    Checking Firewall Rules

    You can associate one or more subnets with a firewall for controlling traffic in and out of the subnets. Similar to security groups, firewalls provide access control functions, but add an additional layer of defense to your VPC. Default firewall rules reject all inbound and outbound traffic. If the subnet of a load balancer or associated backend servers has a firewall associated, the load balancer cannot receive traffic from the Internet or route traffic to backend servers, and backend servers cannot receive traffic from and respond to the load balancer.

    +

    You can configure an inbound firewall rule to permit access from 100.125.0.0/16.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Under Network, click Virtual Private Cloud.
    4. In the navigation pane on the left, choose Access Control > Firewalls.
    5. Locate the firewall, and click the firewall name to switch to the firewall details page.
    6. On the Inbound Rules or Outbound Rules tab page, click Add Rule to add a rule.
      • Action: Select Allow.
      • Protocol: The protocol must be the same as the frontend protocol you select when you add the listener.
      • Source: Set the value to 100.125.0.0/16.
      • Source Port Range: Select the port range.
      • Destination: Enter the default value 0.0.0.0/0. Traffic will be destined for all IP addresses.
      • Destination Port Range: Select the port range.
      • Description: Enter a description for the firewall rule if necessary.
      +
    7. Click OK.
    + +

    Checking the Backend Server

    If the backend server runs a Windows OS, use a browser to access https://Backend server IP address:Health check port. If a 2xx or 3xx code is returned, the backend server is running normally.

    + +
    • Run the following command on the backend server to check whether the health check port is listened on:
      netstat -anlp | grep port
      +

      If the health check port and LISTEN are displayed, the backend port is in the listening state. As shown in Figure 8, TCP port 880 is listened on.

      +If you do not specify a health check port, backend ports are used by default.Figure 8 Backend server port listened on
      + +Figure 9 Backend server port not listened on
      +
    • For HTTP health checks, run the following command on the backend server to check the status code:
      curl Private IP address of the backend server:Health check port/Health check path -iv
      +

      To perform an HTTP health check, the load balancer initiates a GET request to the backend server. If the following response status codes are displayed, the backend server is considered healthy:

      +

      TCP listeners: 200

      +

      Public network classic load balancers: 2xx or 3xx

      +

      Dedicated load balancers: 200 for TCP/UDP/HTTP/HTTPS health checks

      +

      Shared load balancers: 200, 202, or 401 for HTTP health checks, and 200 for TCP health checks

      +Figure 10 Unhealthy backend server
      +Figure 11 Healthy backend server
      +
    • If HTTP is used for health checks and the backend server is detected unhealthy, perform the following steps to configure a TCP health check:

      On the Listeners tab page, modify the listener, select the backend server group for which TCP health check has been configured, or add a backend server group and select TCP as the health check protocol. After you complete the configuration, wait for a while and check the health check result.

      +
    + +

    Checking the Firewall on the Backend Server

    The firewall or other security software on the backend server may mask IP addresses in 100.125.0.0/16. Ensure that access from 100.125.0.0/16 is allowed in the security group containing the backend server.

    + +

    Checking the Backend Server Route

    Check whether the default route configured for the primary NIC has been manually modified. If the default route is changed, health check packets may fail to reach the backend server.

    +Run the following command on the backend server to check whether the default route points to the gateway (For Layer 3 communications, the default route must be configured to point to the gateway):
    ip route
    + +

    Alternatively, run the following command:

    +
    route -n
    +

    If the command output does not contain the highlighted route or the IP address to which the route points is not the gateway address of the VPC subnet, change the route to the default one.

    +Figure 12 Example default route pointing to the gateway
    +Figure 13 Example default route not pointing to the gateway
    + +

    Checking the Backend Server Load

    Check the load of the backend server. If the load is high, connections or requests for health checks may time out.

    + +

    Checking the host.deny File

    Verify that IP addresses in 100.125.0.0/16 are not written to the /etc/hosts.deny file on the backend server.

    + + + + + + + diff --git a/elb/umn/temp/how_does_elb_distribute_traffic.tmp b/elb/umn/temp/how_does_elb_distribute_traffic.tmp new file mode 100644 index 000000000..ea9f81d0f --- /dev/null +++ b/elb/umn/temp/how_does_elb_distribute_traffic.tmp @@ -0,0 +1,12 @@ + + +

    How Does ELB Distribute Traffic?

    +

    ELB uses FullNAT to forward the incoming traffic. For load balancing at Layer 4, LVS forwards the incoming traffic to backend servers directly. For load balancing at Layer 7, LVS forwards the incoming traffic to Nginx, which then forwards the traffic to backend servers.

    +Figure 1 Load balancing at Layer 4
    +Figure 2 Load balancing at Layer 7
    + + + + + + diff --git a/elb/umn/temp/how_does_elb_perform_udp_health_checks_what_are_the_precautions_for_udp_health_checks.tmp b/elb/umn/temp/how_does_elb_perform_udp_health_checks_what_are_the_precautions_for_udp_health_checks.tmp new file mode 100644 index 000000000..a87b0b320 --- /dev/null +++ b/elb/umn/temp/how_does_elb_perform_udp_health_checks_what_are_the_precautions_for_udp_health_checks.tmp @@ -0,0 +1,42 @@ + + +

    How Does ELB Perform UDP Health Checks? What Are the Precautions for UDP Health Checks?

    +

    How UDP Health Checks Work

    UDP is a connectionless protocol, and a UDP health check is implemented as follows:

    + +
    1. The health check node sends an ICMP request message to the backend server based on the health check configuration.
      • If the health check node receives an ICMP reply message from the backend server, it considers the backend server healthy and continues the health check.
      • If the health check node does not receive an ICMP reply message from the backend server, it considers the backend server unhealthy.
      +
    2. After receiving the ICMP reply message, the health check node sends a UDP probe packet to the backend server.
      • If the health check node receives an ICMP Port Unreachable message from the backend server within the timeout duration, the backend server is considered unhealthy.
      • If the health check node does not receive an ICMP Port Unreachable message from the backend server within the timeout duration, the backend server is considered healthy.
      +
    +

    When you use UDP for health checks, retain default parameter settings.

    +

    Troubleshooting Procedure

    If the backend server is unhealthy, use either of the following methods to locate the fault:

    + +
    1. Check whether the timeout duration is too short.

      A possible cause is that the ICMP Echo Reply or ICMP Port Unreachable message returned by the backend server does not reach the health check node within the timeout duration. As a result, the health check result is inaccurate.

      +

      It is recommended that you change the timeout duration to a larger value.

      +

      UDP health checks are different from other health checks. If the health check timeout duration is too short, the health check result of the backend server changes between Healthy and Unhealthy frequently.

      +
    2. Check whether the backend server restricts the rate at which ICMP messages are generated.
    +

    For Linux servers, run the following commands to query the rate limit and rate mask:

    +
    sysctl -q net.ipv4.icmp_ratelimit
    +

    The default rate limit is 1000.

    +
    sysctl -q net.ipv4.icmp_ratemask
    +

    The default rate mask is 6168.

    +

    If the returned value of the first command is the default value or 0, run the following command to remove the rate limit of Port Unreachable messages:

    +
    sysctl -w net.ipv4.icmp_ratemask=6160
    +

    For more information, see the Linux Programmer's Manual. On the Linux CLI, run the following command to display the manual:

    +
    man 7 icmp
    +

    Alternatively, visit http://man7.org/linux/man-pages/man7/icmp.7.html.

    +

    Once the rate limit is lifted, the number of ICMP Port Unreachable messages on the backend server will not be limited.

    + +

    Precautions

    Note the following when you configure UDP health checks:

    + +
    • UDP health checks use ping packets to detect the health of the backend server. To ensure smooth transmission of these packets, ensure that ICMP is enabled on the backend server by performing the following:

      Log in to the server and run the following command as user root:

      +

      cat /proc/sys/net/ipv4/icmp_echo_ignore_all

      +
      • If the returned value is 1, ICMP is disabled.
      • If the returned value is 0, ICMP is enabled.
      +
    • The health check result may be different from the actual health of the backend server.

      If the backend server runs a Linux OS, the rate of ICMP packets is limited due to protection from ICMP floods of Linux when there is a large number of concurrent requests. In this case, if a service exception occurs, the load balancer will not receive error message port XX unreachable and will still determine that the health check is successful. As a result, there is an inconsistency between the health check result and the actual server health.

      +
    • UDP listeners cannot be added to a private network classic load balancer.

      Classic load balancers can no longer be created on the management console.

      + +
    + + + + + + diff --git a/elb/umn/temp/how_elb_works.tmp b/elb/umn/temp/how_elb_works.tmp new file mode 100644 index 000000000..31451f7ea --- /dev/null +++ b/elb/umn/temp/how_elb_works.tmp @@ -0,0 +1,24 @@ + + +

    How ELB Works

    +

    To balance the load of your applications, create a load balancer to receive requests from clients and route the requests to backend servers in one or more AZs. Add at least a listener to the load balancer and associate at least a backend server with it. The load balancing algorithm you select when you add the listener determines how requests are distributed.

    +

    Load Balancing Algorithms

    Shared load balancers and dedicated load balancers support the following load balancing algorithms:

    +
    • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests. This algorithm is often used for short connections, such as HTTP connections.

      The following figure shows an example of how requests are distributed using the weighted round robin algorithm. Two backend servers are in the same AZ and have the same weight, and each server receives the same proportion of requests.

      +Figure 1 Traffic distribution using the weighted round robin algorithm
      +
    • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio. In addition to the number of connections, each server is assigned a weight based on its capacity. Requests are routed to the server with the lowest connections-to-weight ratio. This algorithm is often used for persistent connections, such as connections to a database.

      The following figure shows an example of how requests are distributed using the weighted least connections algorithm. Two backend servers are in the same AZ and have the same weight, 100 connections have been established with backend server 01, and 50 connections have been connected with backend server 02. New requests are preferentially routed to backend server 02.

      +Figure 2 Traffic distribution using the weighted least connections algorithm
      +
    • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously. This algorithm works well for TCP connections of load balancers that do not use cookies.

      The following figure shows an example of how requests are distributed using the source IP hash algorithm. Two backend servers are in the same AZ and have the same weight. If backend server 01 has processed a request from IP address A, the load balancer will route new requests from IP address A to backend server 01.

      +Figure 3 Traffic distribution using the source IP hash algorithm
      +
    + +Classic load balancers support the following load balancing algorithms:
    • Round robin: Requests are distributed sequentially, evenly across all servers. This algorithm is often used for short connections, such as HTTP connections.
    • Least connections: Requests are preferentially routed to backend servers with the minimum number of active connections. This algorithm is often used for persistent connections, such as connections to a database.
    • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously. This algorithm works well for TCP connections of load balancers that do not use cookies.
    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + + + + + + + + + diff --git a/elb/umn/temp/how_many_load_balancers_and_listeners_can_i_have.tmp b/elb/umn/temp/how_many_load_balancers_and_listeners_can_i_have.tmp new file mode 100644 index 000000000..b5a1e4ecc --- /dev/null +++ b/elb/umn/temp/how_many_load_balancers_and_listeners_can_i_have.tmp @@ -0,0 +1,11 @@ + + +

    How Many Load Balancers and Listeners Can I Have?

    +

    By default, you can use an account to create a maximum of 50 shared and dedicated load balancers and 100 listeners. If you need more load balancers or listeners, apply to increase the quotas.

    +

    All load balancers in your account share the quota of listeners.

    + + + + + + diff --git a/elb/umn/temp/http_https_listener.tmp b/elb/umn/temp/http_https_listener.tmp new file mode 100644 index 000000000..4ea539173 --- /dev/null +++ b/elb/umn/temp/http_https_listener.tmp @@ -0,0 +1,15 @@ + + +

    HTTP/HTTPS Listener

    +

    + + + + + + + + diff --git a/elb/umn/temp/http_redirection_to_https.tmp b/elb/umn/temp/http_redirection_to_https.tmp new file mode 100644 index 000000000..060ef96fc --- /dev/null +++ b/elb/umn/temp/http_redirection_to_https.tmp @@ -0,0 +1,59 @@ + + +

    HTTP Redirection to HTTPS

    +

    Scenarios

    HTTPS is an extension of HTTP. HTTPS encrypts data between a web server and a browser.

    +

    If you enable redirection, all HTTP requests to your website are transmitted over HTTPS connections to improve service security.

    +

    HTTP requests are forwarded to the HTTPS listener as HTTPS requests, which are then routed to backend servers over HTTP.

    + + +

    Prerequisites

    • An HTTPS listener has been added.
    • An HTTP listener has been added.
    + +

    Creating a Redirect

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the HTTP listener, and click its name.
    6. Click Redirects and then Create on the right. +.. _en-us_topic_0118840332__table5765638104311: + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for configuring redirection

      Parameter

      +

      Description

      +

      Example Value

      +

      Name

      +

      Specifies the redirect name.

      +

      redirect-g8h9

      +

      Redirected To

      +

      Specifies the HTTPS listener to which requests are redirected.

      +

      N/A

      +

      Description

      +

      Provides supplementary information about the redirect.

      +

      N/A

      +
      + +
    7. Click OK.
      • If you create a redirect for an HTTP listener, its settings will not take effect except access control.
      • If you create a redirect for an HTTP listener, the load balancer will return HTTP 301 Move Permanently to the clients.
      + +
    + +

    Modifying a Redirect

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the HTTP listener, and click its name.
    6. Click Redirects, locate the redirect, and click Modify in the Operation column.
    7. In the Modify Redirect dialog box, modify the redirect name or description, or select another listener, and click OK.
    + +

    Deleting a Redirect

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Click Redirects, locate the redirect, and click Delete in the Operation column.
    7. In the Delete Redirect dialog box, click Yes.
    + + + + + + + diff --git a/elb/umn/temp/integration_with_other_services.tmp b/elb/umn/temp/integration_with_other_services.tmp new file mode 100644 index 000000000..04fd1aa73 --- /dev/null +++ b/elb/umn/temp/integration_with_other_services.tmp @@ -0,0 +1,17 @@ + + +

    Integration with Other Services

    +
    • Virtual Private Cloud (VPC)

      Provides IP addresses and bandwidth for load balancers.

      +
    • Auto Scaling (AS)

      Works with ELB to automatically scale the number of backend servers for faster traffic distribution.

      +
    • Identity and Access Management (IAM)

      Provides authentication for ELB.

      +
    • Elastic Cloud Server (ECS)

      Provides cloud servers to run your applications in the cloud. Configure load balancers to route traffic to the servers or containers.

      +
    • Log Tank Service (LTS)

      Stores access logs of HTTP or HTTPS requests to your load balancer for query and analysis later if you have enabled access logging.

      +
    • Cloud Trace Service (CTS)

      Records the operations performed on ELB resources.

      +
    • Cloud Eye

      Monitors the status of load balancers and listeners, without any additional plug-in.

      +
    + + + + + + diff --git a/elb/umn/temp/is_an_eip_exclusively_assigned_to_a_load_balancer.tmp b/elb/umn/temp/is_an_eip_exclusively_assigned_to_a_load_balancer.tmp new file mode 100644 index 000000000..2df45c58e --- /dev/null +++ b/elb/umn/temp/is_an_eip_exclusively_assigned_to_a_load_balancer.tmp @@ -0,0 +1,16 @@ + + +

    Is an EIP Exclusively Assigned to a Load Balancer?

    +

    During the lifecycle of a classic load balancer, the EIP is exclusively assigned to it. The EIP is released only when you delete the load balancer.

    +

    For each shared load balancer, the bound EIP is not exclusive. However, the EIP can be unbound from the load balancer and bound to other resources. After you unbind the EIP, the load balancer can no longer receive requests over the Internet.

    +

    For each dedicated load balancer, the bound EIP is not exclusive. However, the EIP can be unbound from the load balancer and bound to other resources. After you unbind the EIP, the load balancer can no longer receive requests over the Internet.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + +

    You can unbind an EIP from a dedicated load balancer only on the ELB console.

    + + + + + + + diff --git a/elb/umn/temp/key_operations_recorded_by_cts.tmp b/elb/umn/temp/key_operations_recorded_by_cts.tmp new file mode 100644 index 000000000..2ec577f5f --- /dev/null +++ b/elb/umn/temp/key_operations_recorded_by_cts.tmp @@ -0,0 +1,207 @@ + + +

    Key Operations Recorded by CTS

    +

    You can use CTS to record operations on ELB for query, auditing, and backtracking.

    +

    Table 1 lists the operations recorded by CTS.

    + +.. _elb_ug_sj_0001__table1419082716297: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ELB operations recorded by CTS

    Action

    +

    Resource Type

    +

    Trace

    +

    Configuring access logs

    +

    accesslog

    +

    create access log

    +

    Deleting access logs

    +

    accesslog

    +

    delete access log

    +

    Creating a certificate

    +

    certificate

    +

    create certificate

    +

    Modifying a certificate

    +

    certificate

    +

    update certificate

    +

    Deleting a certificate

    +

    certificate

    +

    delete certificate

    +

    Creating a health check

    +

    healthmonitor

    +

    create healthmonitor

    +

    Modifying a health check

    +

    healthmonitor

    +

    update healthmonitor

    +

    Deleting a health check

    +

    healthmonitor

    +

    delete healthmonitor

    +

    Adding a forwarding policy

    +

    l7policy

    +

    create forwarding policy

    +

    Modifying a forwarding policy

    +

    l7policy

    +

    update forwarding policy

    +

    Deleting a forwarding policy

    +

    l7policy

    +

    delete forwarding policy

    +

    Adding a forwarding rule

    +

    l7rule

    +

    create forwarding rule

    +

    Modifying a forwarding rule

    +

    l7rule

    +

    update forwarding rule

    +

    Deleting a forwarding rule

    +

    l7rule

    +

    delete forwarding rule

    +

    Adding a listener

    +

    listener

    +

    create listener

    +

    Modifying a listener

    +

    listener

    +

    update listener

    +

    Deleting a listener

    +

    listener

    +

    delete listener

    +

    Creating a load balancer

    +

    loadbalancer

    +

    create loadbalancer

    +

    Modifying a load balancer

    +

    loadbalancer

    +

    update loadbalancer

    +

    Deleting a load balancer

    +

    loadbalancer

    +

    delete loadbalancer

    +

    Adding a backend server

    +

    member

    +

    add backend ecs

    +

    Modifying a backend server

    +

    member

    +

    update backend ecs

    +

    Removing a backend server

    +

    member

    +

    remove backend ecs

    +

    Creating a backend server group

    +

    pool

    +

    create backend member group

    +

    Modifying a backend server group

    +

    pool

    +

    update backend member group

    +

    Deleting a backend server group

    +

    pool

    +

    delete backend member group

    +
    + + + + + + + diff --git a/elb/umn/temp/listener.tmp b/elb/umn/temp/listener.tmp new file mode 100644 index 000000000..7b060ff3f --- /dev/null +++ b/elb/umn/temp/listener.tmp @@ -0,0 +1,23 @@ + + +

    Listener

    + + + + + diff --git a/elb/umn/temp/load_balancer.tmp b/elb/umn/temp/load_balancer.tmp new file mode 100644 index 000000000..90d504327 --- /dev/null +++ b/elb/umn/temp/load_balancer.tmp @@ -0,0 +1,14 @@ + + +

    Load Balancer

    + + + + + + + + diff --git a/elb/umn/temp/load_balancer_migration.tmp b/elb/umn/temp/load_balancer_migration.tmp new file mode 100644 index 000000000..d9459921d --- /dev/null +++ b/elb/umn/temp/load_balancer_migration.tmp @@ -0,0 +1,12 @@ + + +

    Load Balancer Migration

    +

    + + + + + diff --git a/elb/umn/temp/load_balancing_algorithms.tmp b/elb/umn/temp/load_balancing_algorithms.tmp new file mode 100644 index 000000000..01a1cf24d --- /dev/null +++ b/elb/umn/temp/load_balancing_algorithms.tmp @@ -0,0 +1,28 @@ + + +

    Load Balancing Algorithms

    +

    Load balancers receive requests from clients and forward them to backend servers in one or more AZs. Each load balancer has at least a listener and a backend server. The load balancing algorithm you select when you add the listener determines how requests are distributed.

    +

    Load Balancing Algorithms

    Shared load balancers and dedicated load balancers support the following load balancing algorithms:

    +
    • Weighted round robin: Requests are routed to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests. This algorithm is often used for short connections, such as HTTP connections.

      The following figure shows an example of how requests are distributed using the weighted round robin algorithm. Two backend servers are in the same AZ and have the same weight, and each server receives the same proportion of requests.

      +Figure 1 Traffic distribution using the weighted round robin algorithm
      +
    • Weighted least connections: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are routed to the server with the lowest connections-to-weight ratio. In addition to the number of connections, each server is assigned a weight based on its capacity. Requests are routed to the server with the lowest connections-to-weight ratio. This algorithm is often used for persistent connections, such as connections to a database.

      The following figure shows an example of how requests are distributed using the weighted least connections algorithm. Two backend servers are in the same AZ and have the same weight, 100 connections have been established with backend server 01, and 50 connections have been connected with backend server 02. New requests are preferentially routed to backend server 02.

      +Figure 2 Traffic distribution using the weighted least connections algorithm
      +
    • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously. This algorithm works well for TCP connections of load balancers that do not use cookies.

      The following figure shows an example of how requests are distributed using the source IP hash algorithm. Two backend servers are in the same AZ and have the same weight. If backend server 01 has processed a request from IP address A, the load balancer will route new requests from IP address A to backend server 01.

      +Figure 3 Traffic distribution using the source IP hash algorithm
      +
    + +Classic load balancers support the following load balancing algorithms:
    • Round robin: Requests are distributed sequentially, evenly across all servers. This algorithm is often used for short connections, such as HTTP connections.
    • Least connections: Requests are preferentially routed to backend servers with the minimum number of active connections. This algorithm is often used for persistent connections, such as connections to a database.
    • Source IP hash: The source IP address of each request is calculated using the consistent hashing algorithm to obtain a unique hashing key, and all backend servers are numbered. The generated key is used to allocate the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server that it was using previously. This algorithm works well for TCP connections of load balancers that do not use cookies.
    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + + + +

    Changing the Load Balancing Algorithm

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Backend Server Groups and click on the right of the backend server group name.
    6. Select a load balancing algorithm.

      The modification will take effect immediately. The load balancer will establish new connections with the clients, and request routing over established connections will not be affected.

      + +
    7. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/load_balancing_on_a_public_or_private_network.tmp b/elb/umn/temp/load_balancing_on_a_public_or_private_network.tmp new file mode 100644 index 000000000..f5a39f74c --- /dev/null +++ b/elb/umn/temp/load_balancing_on_a_public_or_private_network.tmp @@ -0,0 +1,76 @@ + + +

    Load Balancing on a Public or Private Network

    +

    A load balancer can work on either a public or private network.

    +

    Load Balancing on a Public Network

    You can bind an EIP to a load balancer so that it can receive requests from clients on the Internet and route the requests to backend servers.

    +Figure 1 Load balancing on a public network
    + +

    Load Balancing on a Private Network

    A load balancer has only a private IP address to receive requests from clients in a VPC and route the requests to backend servers in the same VPC. This type of load balancer can only be accessed in a VPC.

    +Figure 2 Load balancing on a private network
    + +

    Network Types and Load Balancer Types

    +.. _en-us_elb_01_0004__table18627142116143: + + + + + + + + + + + + + + + + + +
    Table 1 Dedicated load balancers and their network types

    Load Balancer Type

    +

    Network Type

    +

    Network Type

    +

    Dedicated load balancers

    +

    Public IPv4 network

    +

    Each load balancer has an IPv4 EIP bound to enable it to route requests over the Internet.

    +

    Private IPv4 network

    +

    Each load balancer has only a private IPv4 address and can route requests in a VPC.

    +

    IPv6 network

    +

    Each load balancer has an IPv6 address bound.

    +
    • If the IPv6 address is added to a shared bandwidth, the load balancer can route requests over the Internet.
    • If the IPv6 address is not added to a shared bandwidth, the load balancer can route requests only in a VPC.
    +
    + + +.. _en-us_elb_01_0004__table17299338192413: + + + + + + + + + + + + + + +
    Table 2 Shared load balancers and their network types

    Load Balancer Type

    +

    Network Type

    +

    Description

    +

    Shared load balancers

    +

    Public network

    +

    Load balancers can route requests on both public and private networks.

    +
    • Each load balancer has an EIP bound to enable it to route requests over the Internet.
    • The load balancer also has a private IP address and can route requests in a VPC.
    +

    Private network

    +

    Each load balancer has only a private IP address and can route requests in a VPC.

    +
    + + + + + + + + diff --git a/elb/umn/temp/migrating_from_classic_load_balancers_to_shared_load_balancers.tmp b/elb/umn/temp/migrating_from_classic_load_balancers_to_shared_load_balancers.tmp new file mode 100644 index 000000000..a2e060964 --- /dev/null +++ b/elb/umn/temp/migrating_from_classic_load_balancers_to_shared_load_balancers.tmp @@ -0,0 +1,96 @@ + + +

    Migrating from Classic Load Balancers to Shared Load Balancers

    +

    Scenarios

    Classic load balancers are no longer provided. It is recommended that you use load balancers instead because they provide comprehensive Layer 7 load balancing and better forwarding performance.

    + +

    Prerequisites

    You have the Tenant Administrator permission.

    + +

    Impacts on Traffic Routing

    Traffic routing over persistent connections will be interrupted during migration and rollback. For the impact on traffic routing over short connections, see the following table.

    + +.. _elb-03-qy-0001__table189291540135319: + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Impact on traffic routing over short connections

    Scenario

    +

    During Migration

    +

    Before Finishing Migration

    +

    Rollback

    +

    Migrating a private network load balancer

    +

    Not interrupted

    +

    On a client that is on the same subnet as the load balancer, run the arping -b Private IP address of the classic load balancer command to refresh ARP entries to ensure service continuity.

    +

    If ARP entries are not refreshed, traffic from this client will be interrupted. The interruption duration is the ARP aging period, which ranges from 30s to 300s, depending on parameter settings of the client.

    + NOTE:

    The private IP address of the classic load balancer is bound to the shared load balancer.

    + +

    If ARP entries are not refreshed, traffic from the client is interrupted. The interruption duration is the ARP aging period, which ranges from 30s to 300s, depending on parameter settings of the client.

    +

    To refresh ARP entries and shorten the interruption duration to a few seconds, run the arping -b Private IP address of the classic load balancer command on the client.

    +

    Migrating a public network load balancer with the EIP changed

    +

    Not interrupted

    +

    Before you click Finish Migration, ensure that the domain name has been mapped to the new EIP of the newly created shared load balancer.

    +

    If the new EIP has not been configured, traffic is still routed by the classic load balancer. After you click Finish Migration, traffic routing will be interrupted.

    +

    Before you click Roll Back, map the domain name to the EIP of the classic load balancer.

    +

    If the EIP is not configured, traffic is still routed by the shared load balancer. After you click Finish Migration, traffic routing will be interrupted.

    +

    Migrating a public network load balancer without changing the EIP

    +

    After the shared load balancer is created, traffic will be interrupted for about 5s, during which the EIP is released from the classic public network load balancer and bound to the shared load balancer.

    +

    Not interrupted

    +

    Not interrupted

    +
    + + +

    Migration Process

    The following are migration processes for three scenarios:

    + +
    • Migrating a private network load balancerFigure 1 Migration process
      +
    • Migrating a public network load balancer with the EIP changedFigure 2 Migration process
      +
    • Migrating a public network load balancer without changing the EIPFigure 3 Migration process
      +
    +

    Migrating a Classic Load Balancer

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the classic load balancer list, locate the load balancer you want to migrate and choose More > Migrate.
    5. Check whether the load balancer to be migrated is a private network load balancer.
      • If it is a private network load balancer, go to 6.
      • If it is not a private network load balancer, go to 7.
      +
    6. Run command arping -b Private IP address of the classic load balancer on the client that is on the same subnet as the load balancer to update the ARP entries. Then, go to 11.

      The private IP address of the classic load balancer is bound to the shared load balancer.

      + +
    7. Determine whether you want to change the EIP.
      • If you want to change the EIP, go to 8.
      • If you do not want to change the EIP, go to 10.
      +
    8. Modify the DNS configuration to map the domain name to the EIP bound to the shared load balancer.
    9. Switch to the Cloud Eye console, view monitoring data of the classic load balancer and then go to 11.

      If both the number of concurrent connections and the number of new connections are 0, traffic is diverted to the shared load balancer.

      +
    10. Send requests to the shared load balancer to test whether it can route requests to associated backend servers.
    11. Locate the classic load balancer that has been migrated and choose More > Finish Migration.

      The classic load balancer will be automatically deleted.

      +
    12. Switch to the load balancer list and view the newly created shared load balancer.
    + +

    Rolling Back to a Classic Load Balancer

    If you decide to roll back, the newly created shared load balancer will be deleted, and the original classic load balancer will be restored.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the classic load balancer list, locate the load balancer you want to roll back and choose More > Roll Back.

      Alternatively, select the load balancer you want to roll back and click Roll Back above the load balancer list.

      +
    + +

    Batch Migration or Rollback

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. In the classic load balancer list, select the load balancers and click Migrate or Roll Back.
    5. Perform subsequent operations as needed.
      • If you choose Migrate, go to 6.
      • If you choose Roll Back, no further operations are required.
      +
    6. Check whether the load balancers to be migrated are private network load balancers.
      • If they are private network load balancers, go to 7.
      • If they are not private network load balancers, go to 8.
      +
    7. After the migration, run command arping -b Private IP address of each classic load balancer on the client that is on the same subnet as the load balancer to update the ARP entries. Then, go to 12.

      The private IP address of the classic load balancer will be bound to the shared load balancer.

      + +
    8. Determine whether you want to change the EIP.
      • If you want to change the EIP, go to 9.
      • If you do not want to change the EIP, go to 11.
      +
    9. Modify the DNS configuration to map the domain name to the EIP bound to each shared load balancer.
    10. Switch to the Cloud Eye console, view monitoring data of each classic load balancer and then go to 12.

      If both the number of concurrent connections and the number of new connections are 0, traffic is diverted to the shared load balancers.

      +
    11. Send requests to shared load balancers to test whether they can route requests to associated backend servers.
    12. Select all classic load balancers that have been migrated and click Finish Migration.

      These classic load balancers will be automatically deleted.

      +
    13. Switch to the load balancer list, view the newly created shared load balancers.
    + +

    Causes of Migration Failure

    The following are possible causes why a classic load balancer cannot be migrated:

    + +
    • The quota of the shared load balancer, listener, backend server group, or certificate is insufficient.
    • The classic load balancer is not in the Running state.
    • The classic load balancer listener is not in the Running state.
    • The shared load balancer does not support the SSL protocol.
    +
    • During the migration, the listeners and backend servers of the classic load balancer are also migrated. Your applications and data will not be affected. To ensure successful migration, ensure that backend servers can be accessed from 100.125.0.0/16.
    • After the migration, the original classic load balancer will be deleted and cannot be restored, and its private IP address and EIP will be used by the newly created shared load balancer. If the classic load balancer does not have an EIP, you can bind one to the newly created shared load balancer.
    • During batch migration of public network load balancers, ensure that the number of EIPs and the number of load balancers are the same. After the migration, the system automatically binds one EIP to each shared load balancer in sequence.
    • Integration with the AS service becomes invalid after the migration. Configure AS if you want to scale the number of backend servers associated with each shared load balancer.
    • Access logs stored in the OBS bucket are lost because shared load balancers do not support access logging.
    + + + + + + + diff --git a/elb/umn/temp/modifying_an_alarm_rule.tmp b/elb/umn/temp/modifying_an_alarm_rule.tmp new file mode 100644 index 000000000..b2c4cdd18 --- /dev/null +++ b/elb/umn/temp/modifying_an_alarm_rule.tmp @@ -0,0 +1,15 @@ + + +

    Modifying an Alarm Rule

    +
    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Eye.
    3. In the navigation pane on the left, choose Alarm Management > Alarm Rules.
    4. On the Alarm Rules page, locate the alarm rule. In the Operation column, click More > Modify.
      1. Click the name of the alarm rule.
      2. In the upper right corner of the displayed page, click Modify.
      3. On the Modify Alarm Rule page, set parameters as prompted.
      4. Set other parameters as required and then click Modify.

        Once the alarm rule is set and you have enabled the notification function, the system automatically sends you a notification when an alarm is generated.

        +

        For more information about alarm rules of load balancers and listeners, see the Cloud Eye User Guide.

        + +
      + +
    + + + + + + diff --git a/elb/umn/temp/modifying_load_balancer_settings.tmp b/elb/umn/temp/modifying_load_balancer_settings.tmp new file mode 100644 index 000000000..91bc313d3 --- /dev/null +++ b/elb/umn/temp/modifying_load_balancer_settings.tmp @@ -0,0 +1,17 @@ + + +

    Modifying Load Balancer Settings

    +

    Scenarios

    You can modify the bandwidth used by the EIP bound to the load balancer as required.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. On the Load Balancers page:

      Dedicated load balancers: Click Elastic Load Balancers, locate the load balancer whose bandwidth you want to modify and click Modify IPv4 Bandwidth or More > Modify IPv6 Bandwidth in the Operation column (if the load balancer has an IPv6 address that has been added to a shared bandwidth).

      +

      Shared load balancers: Click Elastic Load Balancers, locate the load balancer whose bandwidth you want to modify and click Modify Bandwidth or Modify IPv4 Bandwidth in the Operation column (in regions where either dedicated load balancers or both shared and dedicated load balancers are available).

      +

      Classic load balancers: Locate the load balancer whose bandwidth you want to modify and click Modify Bandwidth in the Operation column.

      +
    5. In the New Configuration area, change the bandwidth and click Next.

      Select the bandwidth defined by the system or enter a value from 1 Mbit/s to 2,000 Mbit/s.

      +
    6. Confirm the modified bandwidth and click Submit.
    + + + + + + + diff --git a/elb/umn/temp/modifying_or_deleting_a_listener.tmp b/elb/umn/temp/modifying_or_deleting_a_listener.tmp new file mode 100644 index 000000000..b8bc9facf --- /dev/null +++ b/elb/umn/temp/modifying_or_deleting_a_listener.tmp @@ -0,0 +1,22 @@ + + +

    Modifying or Deleting a Listener

    +

    Scenarios

    You can modify a listener as needed or delete a listener if you no longer need it.

    +

    Deleted listeners cannot be recovered.

    +

    Frontend Protocol/Port and Backend Protocol cannot be modified after you have configured them. If you want to modify the protocol or port of the listener, add another listener to the load balancer.

    + + +

    Modifying a Listener

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners.

      Shared load balancers: Locate the target listener and click on the right of its name. In the Modify Listener dialog box, modify the parameters as needed.

      +
    6. Click OK.
    + +

    Deleting a Listener

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
      • If the listener has backend servers associated, disassociate the backend servers before deleting the listener.
      • If HTTP requests are redirected to an HTTPS listener, delete the redirect before deleting the HTTPS listener.
      • If the listener has a forwarding policy, delete the forwarding policy before deleting the listener.
      • After a listener is deleted, the associated backend server group is also deleted.
      + +
    5. Click Listeners.
      • For a shared load balancer listener, locate the listener and click on the right of its name. In the Modify Listener dialog box, modify the parameters as needed.
      • For a classic load balancer listener, locate the listener and click Delete in the Operation column.
      +
    6. Click Yes.
    + + + + + + + diff --git a/elb/umn/temp/monitoring.tmp b/elb/umn/temp/monitoring.tmp new file mode 100644 index 000000000..095934b6a --- /dev/null +++ b/elb/umn/temp/monitoring.tmp @@ -0,0 +1,15 @@ + + +

    Monitoring

    + + + + + diff --git a/elb/umn/temp/monitoring_metrics.tmp b/elb/umn/temp/monitoring_metrics.tmp new file mode 100644 index 000000000..1987564da --- /dev/null +++ b/elb/umn/temp/monitoring_metrics.tmp @@ -0,0 +1,336 @@ + + +

    Monitoring Metrics

    +

    Overview

    This section describes the namespace, the metrics that can be monitored by Cloud Eye, and dimensions of these metrics. You can use APIs provided by Cloud Eye to query the metrics of a monitored object and generated alarms.

    + +

    Namespace

    SYS.ELB

    + +

    Metrics

    +.. _elb_ug_jk_0001__en-us_topic_0109418599_en-us_topic_0021772779_en-us_topic_0021733202_table42148186162545: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Metric ID

    +

    Name

    +

    Description

    +

    Value

    +

    Monitored Object

    +

    Monitoring Period

    +

    (Raw Data)

    +

    m1_cps

    +

    Concurrent Connections

    +

    Load balancing at Layer 4: total number of TCP and UDP connections from the monitored object to backend servers

    +

    Load balancing at Layer 7: total number of TCP connections from the clients to the monitored object

    +

    Unit: N/A

    +

    ≥ 0

    +

    Shared load balancer or its listener, classic load balancer, dedicated load balancer or its listener

    +

    1 minute

    +

    m2_act_conn

    +

    Active Connections

    +

    Number of TCP and UDP connections in the ESTABLISHED state between the monitored object and backend servers

    +

    You can run the following command to view the connections (both Windows and Linux servers):

    +
    netstat -an
    +

    Unit: N/A

    +

    ≥ 0

    +

    m3_inact_conn

    +

    Inactive Connections

    +

    Number of TCP connections between the monitored object and backend servers except those in the ESTABLISHED state

    +

    You can run the following command to view the connections (both Windows and Linux servers):

    +
    netstat -an
    +

    Unit: N/A

    +

    ≥ 0

    +

    m4_ncps

    +

    New Connections

    +

    Number of TCP and UDP connections established between clients and the monitored object per second

    +

    Unit: N/A

    +

    ≥ 0/second

    +

    m5_in_pps

    +

    Incoming Packets

    +

    Number of packets received by the monitored object per second

    +

    Unit: Packet/s

    +

    ≥ 0/second

    +

    m6_out_pps

    +

    Outgoing Packets

    +

    Number of packets sent from the monitored object per second

    +

    Unit: Packet/s

    +

    ≥ 0/second

    +

    m7_in_Bps

    +

    Inbound Rate

    +

    Traffic used for accessing the monitored object from the Internet

    +

    Unit: byte/s

    +

    ≥ 0 bytes/s

    +

    m8_out_Bps

    +

    Outbound Rate

    +

    Traffic used by the monitored object to access the Internet

    +

    Unit: byte/s

    +

    ≥ 0 bytes/s

    +

    m9_abnormal_servers

    +

    Unhealthy Servers

    +

    Number of unhealthy backend servers associated with the monitored object

    +

    Unit: N/A

    +

    ≥ 0

    +

    Shared load balancer, classic load balancer, or dedicated load balancer

    +

    1 minute

    +

    ma_normal_servers

    +

    Healthy Servers

    +

    Number of healthy backend servers associated with the monitored object

    +

    Unit: N/A

    +

    ≥ 0

    +

    Layer 7 (HTTP/HTTPS) metrics: These metrics are available only when the frontend protocol is HTTP or HTTPS.

    +

    mb_l7_qps

    +

    Layer-7 Query Rate

    +

    Number of requests the monitored object receives per second

    +

    Unit: Query/s

    +

    ≥ 0/second

    +

    Shared load balancer or its listener, dedicated load balancer or its listener

    +

    1 minute

    +

    mc_l7_http_2xx

    +

    2xx Status Codes

    +

    Number of 2xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    md_l7_http_3xx

    +

    3xx Status Codes

    +

    Number of 3xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    me_l7_http_4xx

    +

    4xx Status Codes

    +

    Number of 4xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    mf_l7_http_5xx

    +

    5xx Status Codes

    +

    Number of 5xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m10_l7_http_other_status

    +

    Other Status Codes

    +

    Number of status codes returned by the monitored object except 2xx, 3xx, 4xx, and 5xx status codes

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m11_l7_http_404

    +

    404 Not Found

    +

    Number of 404 Not Found status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m12_l7_http_499

    +

    499 Client Closed Request

    +

    Number of 499 Client Closed Request status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m13_l7_http_502

    +

    502 Bad Gateway

    +

    Number of 502 Bad Gateway status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m14_l7_rt

    +

    Average Layer-7 Response Time

    +

    Average response time of the monitored object

    +

    The response time starts when the monitored object receives requests from the clients and ends when it returns all responses to the clients.

    +

    Unit: ms

    +

    ≥ 0 ms

    +

    m15_l7_upstream_4xx

    +

    4xx Status Codes_Backend

    +

    Number of 4xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    Shared load balancer or its listener, dedicated load balancer or its listener

    +

    1 minute

    +

    m16_l7_upstream_5xx

    +

    5xx Status Codes_Backend

    +

    Number of 5xx status codes returned by the monitored object

    +

    Unit: Count/s

    +

    ≥ 0/second

    +

    m17_l7_upstream_rt

    +

    Average Server Response Time

    +

    Average response time of backend servers

    +

    The response time starts when the monitored object routes the requests to the backend server and ends when the monitored object receives a response from the backend server.

    +

    Unit: ms

    +

    ≥ 0 ms

    +
    + +

    a: If a service is being monitored from multiple dimensions, include all dimensions when you use APIs to query the metrics.

    +
    • Example of querying a single metric from both dimensions: dim.0=lbaas_instance_id,223e9eed-2b02-4ed2-a126-7e806a6fee1f&dim.1=lbaas_listener_id,3baa7335-8886-4867-8481-7cbba967a917
    • Example of querying metrics in batches from both dimensions:
      "dimensions": [
      +{
      +"name": "lbaas_instance_id",
      +"value": "223e9eed-2b02-4ed2-a126-7e806a6fee1f"
      +}
      +{
      +"name": "lbaas_listener_id",
      +"value": "3baa7335-8886-4867-8481-7cbba967a917"
      +}
      +],
      +
    + +

    Dimensions

    +.. _elb_ug_jk_0001__en-us_topic_0109418599_en-us_topic_0021772779_en-us_topic_0021733202_table24384314162910: + + + + + + + + + + + + + + + + + + +

    Key

    +

    Value

    +

    lb_instance_id

    +

    Specifies the ID of the classic load balancer.

    +

    lbaas_instance_id

    +

    Specifies the ID of the shared load balancer.

    +

    lbaas_listener_id

    +

    Specifies the ID of the shared load balancer listener.

    +

    lbaas_pool_id

    +

    Specifies the backend server group ID.

    +
    + + + + + + + + diff --git a/elb/umn/temp/mutual_authentication.tmp b/elb/umn/temp/mutual_authentication.tmp new file mode 100644 index 000000000..05c738f7d --- /dev/null +++ b/elb/umn/temp/mutual_authentication.tmp @@ -0,0 +1,100 @@ + + +

    Mutual Authentication

    +

    Scenarios

    In common HTTPS service scenarios, only the server certificate is required for authentication. For some mission-critical services, such as financial transactions, you need to deploy both the server certificate and the client certificate for mutual authentication.

    +

    This section uses self-signed certificates as an example to describe how to configure mutual authentication. Self-signed certificates do not provide all the security properties provided by certificates signed by a CA. It is recommended that you purchase certificates from other CAs.

    + +

    Creating a CA Certificate Using OpenSSL

    1. Log in to a Linux server with OpenSSL installed.
    2. Create the server directory and switch to the directory:

      mkdir ca

      +

      cd ca

      +
    3. Create the certificate configuration file ca_cert.conf. The file content is as follows:
      [ req ]
      +distinguished_name     = req_distinguished_name
      +prompt                 = no
      + 
      +[ req_distinguished_name ]
      + O                      = ELB
      +
    4. Create the CA certificate private key ca.key.

      openssl genrsa -out ca.key 2048

      +Figure 1 Private key of the CA certificate
      +
    5. Create the certificate signing request (CSR) file ca.csr for the CA certificate.

      openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf

      +
    6. Create the self-signed CA certificate ca.crt.

      openssl x509 -req -in ca.csr -out ca.crt -sha1 -days 5000 -signkey ca.key

      +Figure 2 Creating a self-signed CA certificate
      +
    + +

    Issuing a Server Certificate Using the CA Certificate

    The server certificate can be a CA signed certificate or a self-signed one. In the following steps, a self-signed certificate is used as an example to describe how to create a server certificate.

    +
    1. Log in to the server where the CA certificate is generated.
    2. Create a directory at the same level as the directory of the CA certificate and switch to the directory.

      mkdir server

      +

      cd server

      +
    3. Create the certificate configuration file server_cert.conf. The file content is as follows:
      [ req ]
      +distinguished_name     = req_distinguished_name
      +prompt                 = no
      + 
      +[ req_distinguished_name ]
      + O                      = ELB
      + CN                     = www.test.com
      +

      Set the CN field to the domain name or IP address of the Linux server.

      + +
    4. Create the server certificate private key server.key.

      openssl genrsa -out server.key 2048

      +
    5. Create the CSR file server.csr for the server certificate.

      openssl req -out server.csr -key server.key -new -config ./server_cert.conf

      +
    6. Use the CA certificate to issue the server certificate server.crt.

      openssl x509 -req -in server.csr -out server.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key

      +Figure 3 Issuing a server certificate
      +
    + +

    Issuing a Client Certificate Using the CA Certificate

    1. Log in to the server where the CA certificate is generated.
    2. Create a directory at the same level as the directory of the CA certificate and switch to the directory.

      mkdir client

      +

      cd client

      +
    3. Create the certificate configuration file client_cert.conf. The file content is as follows:
      [ req ]
      +distinguished_name     = req_distinguished_name
      +prompt                 = no
      + 
      +[ req_distinguished_name ]
      + O                      = ELB
      + CN                     = www.test.com
      +

      Set the CN field to the domain name or IP address of the Linux server.

      + +
    4. Create the client certificate private key client.key.

      openssl genrsa -out client.key 2048

      +Figure 4 Creating a client certificate private key
      +
    5. Create the CSR file client.csr for the client certificate.

      openssl req -out client.csr -key client.key -new -config ./client_cert.conf

      +Figure 5 Creating a client certificate CSR file
      +
    6. Use the CA certificate to issue the client certificate client.crt.

      openssl x509 -req -in client.csr -out client.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key

      +Figure 6 Issuing a client certificate
      +
    7. Convert the client certificate to a .p12 file that can be identified by the browser.

      openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

      +

      A password is required during command execution. Save this password, which will be required when you import the certificate using the browser.

      + +
    + +

    Configuring the Server Certificate and Private Key

    1. Log in to the management console.
    2. In the navigation pane on the left, choose Certificates.
    3. In the navigation pane on the left, choose Certificates. On the displayed page, click Create Certificate. In the Create Certificate dialog box, select Server certificate, copy the content of server certificate server.crt to the Certificate Content area and the content of private key file server.key to the Private Key area, and click OK.

      Delete the last newline character before you copy the content.

      + +

      The certificate and private key must be PEM-encoded.

      + +
    + +

    Configuring the CA Certificate

    1. Log in to the management console.
    2. In the navigation pane on the left, choose Certificates.
    3. Click Create Certificate. In the Create Certificate dialog box, select CA certificate, copy the content of CA certificate ca.crt created in Issuing a Server Certificate Using the CA Certificate to the Certificate Content area, and click OK.

      Delete the last newline character before you copy the content.

      + +

      The certificate must be PEM-encoded.

      + +

    + +

    Configuring Mutual Authentication

    1. Log in to the management console.
    2. Locate the load balancer and click its name. Under Listeners, click Add Listener. Select HTTPS for Frontend Protocol, enable Mutual Authentication, and select the certificate and CA certificate.Figure 7 Add Listener
      +
      1. Only shared load balancer listeners support mutual authentication.
      + +
    +

    Add backend servers.

    +

    For detailed operations, see Adding Backend Servers.

    + +

    Importing and Testing the Client Certificate

    Method 1: Using a browser

    +
    1. Import the client certificate using a browser (Internet Explorer 11 is used as an example).
      1. Export client.p12 from the Linux server.
      2. Open the browser, choose Settings > Internet Options and click Content.
      3. Click Certificates and then Import to import the client.p12 certificate.Figure 8 Importing the client.p12 certificate
        +
      +
    2. Verify the import.Enter the access address in the address box of your browser. A window is displayed asking you to select the certificate. Select the client certificate and click OK. If the website can be accessed, the certificate is successfully imported.Figure 9 Accessing the website
      + +
    +

    Method 2: Using cURL

    +
    1. Import the client certificate.

      Copy client certificate client.crt and private key client.key to a new directory, for example, /home/client_cert.

      +
    2. Verify the import.On the Shell screen, run the following command:
      curl -k --cert /home/client_cert/client.crt --key /home/client_cert/client.key https://XXX.XXX.XXX.XXX:XXX/ -I
      + +

      Ensure that the certificate address, private key address, IP address and listening port of the load balancer are correct. Replace https://XXX.XXX.XXX.XXX:XXX with the actual IP address and port number. If the expected response code is returned, the certificate is successfully imported.

      +Figure 10 Example of a correct response code
      +
    + + + + + + + diff --git a/elb/umn/temp/network_traffic_paths.tmp b/elb/umn/temp/network_traffic_paths.tmp new file mode 100644 index 000000000..c82c5957a --- /dev/null +++ b/elb/umn/temp/network_traffic_paths.tmp @@ -0,0 +1,22 @@ + + +

    Network Traffic Paths

    +

    Load balancers communicate with backend servers over a private network.

    +
    • If backend servers process only requests routed from load balancers, there is no need to assign EIPs or create NAT gateways.
    • If backend servers need to provide Internet-accessible services or access the Internet, you must assign EIPs or create NAT gateways.
    +

    Inbound Network Traffic Paths

    The listeners' configurations determine how load balancers distribute incoming traffic.Figure 1 Inbound network traffic
    + +When a listener uses TCP or UDP to receive incoming traffic:
    • Incoming traffic is routed only through the LVS cluster.
    • The LVS cluster directly routes incoming traffic to backend servers using the load balancing algorithm you select when you add the listener.
    + +When a listener uses HTTP or HTTPS to receive incoming traffic:
    • Incoming traffic is routed first to the LVS cluster, then to the Nginx cluster, and finally across backend servers.
    • For HTTPS traffic, the Nginx cluster validates certificates and decrypts data packets before distributing the traffic across backend servers using HTTP.
    + + +

    Outbound Network Traffic Paths

    The outbound traffic is routed back the same way the traffic came in.Figure 2 Outbound network traffic
    +
    • Because the load balancer receives and responds to requests over the Internet, traffic transmission depends on the bandwidth, which is not limited by ELB. The load balancer communicates with backend servers over a private network.
    • If you have a NAT gateway, it receives and responds to incoming traffic. The NAT gateway has an EIP bound, through which backend servers can access the Internet and provide services accessible from the Internet. Although there is a restriction on the connections that can be processed by a NAT gateway, traffic transmission depends on the bandwidth
    • If each backend server has an EIP bound, they receive and respond to incoming traffic directly. Traffic transmission depends on the bandwidth.
    + + + + + + + + diff --git a/elb/umn/temp/obtaining_source_ip_addresses.tmp b/elb/umn/temp/obtaining_source_ip_addresses.tmp new file mode 100644 index 000000000..47892e5e9 --- /dev/null +++ b/elb/umn/temp/obtaining_source_ip_addresses.tmp @@ -0,0 +1,18 @@ + + + +

    Obtaining Source IP Addresses

    + +

    + + + + + + + + + diff --git a/elb/umn/temp/overview.tmp b/elb/umn/temp/overview.tmp new file mode 100644 index 000000000..2860a3de7 --- /dev/null +++ b/elb/umn/temp/overview.tmp @@ -0,0 +1,15 @@ + + +

    Overview

    +

    Two examples are given to show how you can quickly create a shared load balancer to distribute incoming traffic across backend servers.

    +
    • Entry level: A large number of requests need to be routed to backend servers. Health checks are required to monitor the health of backend servers to ensure that incoming traffic is routed only to healthy backend servers to eliminate SPOFs and improve service availability.Figure 1 Entry level
      +

      As the incoming traffic increases, you can add more servers to balance the load across backend servers.

      +
    • Advanced level: Two or more applications use the domain name to provide services, and requests are routed to applications based on their URLs. Forwarding policies are required to forward requests from different URLs to the corresponding backend server groups.Figure 2 Advanced level
      +

      As the incoming traffic increases, you can add more backend servers to the two backend server groups. You can also configure health checks to monitor the health of backend servers to ensure that incoming traffic is routed only to healthy backend servers.

      +
    + + + + + + diff --git a/elb/umn/temp/popular_questions.tmp b/elb/umn/temp/popular_questions.tmp new file mode 100644 index 000000000..3ecfa4f96 --- /dev/null +++ b/elb/umn/temp/popular_questions.tmp @@ -0,0 +1,10 @@ + + +

    Popular Questions

    + + + + + + + diff --git a/elb/umn/temp/preparations_for_creating_a_load_balancer.tmp b/elb/umn/temp/preparations_for_creating_a_load_balancer.tmp new file mode 100644 index 000000000..5fa3ae5c5 --- /dev/null +++ b/elb/umn/temp/preparations_for_creating_a_load_balancer.tmp @@ -0,0 +1,24 @@ + + +

    Preparations for Creating a Load Balancer

    +

    Before creating a load balancer, you must plan its region, network, protocol, and backend servers.

    +

    Region

    When you select a region, pay attention to the following:
    • The region must be close to your users' location to reduce network latency and improve the download speed.
    • The region must be the same as that of backend servers. Currently, ELB cannot be deployed across regions.
    + + +

    Specifications

    Dedicated load balancers provide a broad range of specifications to meet different requirements. Specifications for network load balancing are suitable for TCP or UDP requests, while specifications for application load balancing are broadly used to handle HTTP or HTTPS requests. Select appropriate specifications based on your traffic volume and service requirements. The following are some principles for you to select the specifications:
    • For TCP or UDP load balancing, pay attention to the number of concurrent persistent connections, and consider Maximum Connections as a key metric. Estimate the maximum number of concurrent connections that a load balancer can handle in the actual service scenario and select the corresponding specification.
    • For HTTP or HTTPS load balancers, focus more on queries per second (QPS), which determines the service throughput of an application system. Estimate the QPS that a load balancer can handle in the actual service scenario and select the corresponding specification.
    • Use the monitoring data from Cloud Eye to analyze the peak traffic, trend and regularity of the traffic to select the specifications more accurately.
    + + +

    Protocol

    ELB provides load balancing at both Layer 4 and Layer 7.

    +
    • If you choose TCP or UDP, the load balancer routes requests directly to backend servers. In this process, the destination IP address in the packets is changed to the IP address of the backend server, and the source IP address to the private IP address of the load balancer. A connection is established after a three-way handshake between the client and the backend server, and the load balancer only forwards the data.Figure 1 Layer-4 load balancing
      +
    • Load balancing at Layer 7 is also called "content exchange". After the load balancer receives a request, it works as a proxy of backend servers to establish a connection (three-way handshake) with the client and then determines to which backend server the request is to be routed based on the fields in the HTTP/HTTPS request header and the load balancing algorithm you selected when you add the listener.Figure 2 Layer-7 load balancing
      +
    + +

    Backend Servers

    Before you use ELB, you need to create cloud servers, deploy required applications on them, and add the cloud servers to one or more backend server groups. When you create ECSs or BMSs, note the following:

    +
    • Cloud servers must be in the same region as the load balancer.
    • Cloud servers that run the same OS are recommended so that you can manage them more easily.
    + + + + + + + diff --git a/elb/umn/temp/product_advantages.tmp b/elb/umn/temp/product_advantages.tmp new file mode 100644 index 000000000..95624a4dd --- /dev/null +++ b/elb/umn/temp/product_advantages.tmp @@ -0,0 +1,25 @@ + + +

    Product Advantages

    +

    Dedicated Load Balancers

    • Robust performance

      Each dedicated load balancer has exclusive use of isolated underlying resources and can provide guaranteed performance. A single dedicated load balancer deployed in one AZ can establish up to 20 million concurrent connections, and a load balancer deployed across two AZs can establish up to 40 million concurrent connections, meeting your requirements for handling a massive number of requests.

      +
    • High availability

      Underlying resources are deployed in clusters to ensure that load balancers can route traffic uninterruptedly. If your servers in one AZ are unhealthy, dedicated load balancers automatically route traffic to healthy servers in other AZs. Dedicated load balancers provide a comprehensive health check mechanism to ensure that incoming traffic is routed to only healthy backend servers, improving the availability of your applications.

      +
    • Ultra security

      Dedicated load balancers also allow you to select security policies that fit your security requirements.

      +
    • Multiple protocols

      Dedicated load balancers support the following protocols, including TCP, UDP, HTTP, and HTTPS, so that they can route requests from different types of applications.

      +
    • Hybrid load balancing

      Dedicated load balancers can route requests to both servers on the cloud and on premises, allowing you to leverage the public cloud to handle burst traffic.

      +
    • Ease-of-use

      Dedicated load balancers provide a diverse set of algorithms that allow you to configure different traffic routing policies to meet your requirements while keeping deployments simple.

      +
    • High reliability

      Load balancers can be deployed across AZs and can distribute traffic more evenly.

      +
    + +

    Shared Load Balancers

    • Robust performance

      A shared load balancer can establish up to 100 million concurrent connections and up to 1 million new connections per second, and can handle up to 1 million requests per second, meeting your requirements for handling huge numbers of concurrent requests.

      +
    • High availability

      Underlying resources are deployed in clusters to ensure that load balancers can route traffic uninterruptedly. If your servers in one AZ are unhealthy, shared load balancers automatically route traffic to healthy servers in other AZs. Shared load balancers provide a comprehensive health check mechanism to ensure that incoming traffic is routed to only healthy backend servers, improving the availability of your applications.

      +
    • Multiple protocols

      Shared load balancers support the following protocols, including TCP, UDP, HTTP, and HTTPS.

      +
    • Ease-of-use

      Shared load balancers provide a diverse set of algorithms that allow you to configure different traffic routing policies to meet your requirements while keeping deployments simple.

      +
    • High reliability

      Shared load balancers can be deployed across AZs and can distribute traffic more evenly.

      +
    + + + + + + + diff --git a/elb/umn/temp/product_concepts.tmp b/elb/umn/temp/product_concepts.tmp new file mode 100644 index 000000000..5fd4bc855 --- /dev/null +++ b/elb/umn/temp/product_concepts.tmp @@ -0,0 +1,17 @@ + + +

    Product Concepts

    +

    + + + + + + + + diff --git a/elb/umn/temp/protocols_and_ports.tmp b/elb/umn/temp/protocols_and_ports.tmp new file mode 100644 index 000000000..9afaf52ee --- /dev/null +++ b/elb/umn/temp/protocols_and_ports.tmp @@ -0,0 +1,76 @@ + + +

    Protocols and Ports

    +

    Frontend Protocols and Ports

    Frontend protocols and ports are used by load balancers to receive requests from clients. Load balancers use TCP, UDP, or SSL at Layer 4, and HTTP or HTTPS at Layer 7. Select a protocol and a port that best suit your requirements.

    + +.. _elb_ug_jt_0002__table16662138185223: + + + + + + + + + + + + + + + + + +
    Table 1 Frontend protocols and ports

    Protocol

    +

    Port

    +

    TCP

    +

    There are some restrictions when you select the protocols and port numbers.

    +
    • For each load balancer, UDP can use the same ports as other protocols, but these other protocols must have unique ports. For example, if you have a UDP listener that uses port 88, you can add a TCP, HTTP, or HTTPS listener that also uses port 88. However, if you already have an HTTP listener that uses port 443, you cannot add an HTTPS or TCP listener that uses the same port.
    • The port numbers of the same protocol must be unique. For example, if you have a TCP listener that uses port 80, you cannot add another TCP listener that uses the same port.
    +

    The port number ranges from 1 to 65535.

    +

    The following are some commonly-used protocols and port numbers:

    +

    TCP/80

    +

    HTTPS/443

    +

    UDP

    +

    HTTP

    +

    HTTPS

    +

    SSL (only classic load balancers)

    +
    + + +

    Backend Protocols and Ports

    Backend protocols and ports are used by backend servers to receive requests from load balancers. If Windows servers have Internet Information Services (IIS) installed, the default backend protocol and port are HTTP and 80.

    + +.. _elb_ug_jt_0002__table193210457467: + + + + + + + + + + + + + + + +
    Table 2 Backend protocols and ports

    Protocol

    +

    Port

    +

    TCP

    +

    Backend servers can use the same ports. The port number ranges from 1 to 65535.

    +

    The following are some commonly-used protocols and port numbers:

    +

    TCP/80

    +

    HTTP/443

    +

    UDP

    +

    HTTP

    +

    HTTPS

    +
    + + + + + + + + diff --git a/elb/umn/temp/quotas.tmp b/elb/umn/temp/quotas.tmp new file mode 100644 index 000000000..ced5bc159 --- /dev/null +++ b/elb/umn/temp/quotas.tmp @@ -0,0 +1,19 @@ + + +

    Quotas

    +

    What Is Quota?

    Quotas are enforced for service resources on the platform to prevent unforeseen spikes in resource usage. Quotas can limit the number or amount of resources available to users, such as the maximum number of ECSs or EVS disks that can be created.

    +

    If the existing resource quota cannot meet your service requirements, you can apply for a higher quota.

    + +

    How Do I View My Quotas?

    1. Log in to the management console.
    2. Click in the upper left corner and select the desired region and project.
    3. In the upper right corner of the page, click .

      The Service Quota page is displayed.

      +
    4. View the used and total quota of each type of resources on the displayed page.

      If a quota cannot meet service requirements, apply for a higher quota.

      +
    + +

    How Do I Apply for a Higher Quota?

    The system does not support online quota adjustment. If you need to adjust a quota, call the hotline or send an email to the customer service mailbox. Customer service personnel will timely process your request for quota adjustment and inform you of the real-time progress by making a call or sending an email.

    +

    Before dialing the hotline number or sending an email, make sure that the following information has been obtained:

    +
    • Domain name, project name, and project ID, which can be obtained by performing the following operations:

      Log in to the management console using the cloud account, click the username in the upper right corner, select My Credentials from the drop-down list, and obtain the domain name, project name, and project ID on the My Credentials page.

      +
    • Quota information, which includes:
      • Service name
      • Quota type
      • Required quota
      +
    +

    Learn how to obtain the service hotline and email address.

    + + + diff --git a/elb/umn/temp/region_and_az.tmp b/elb/umn/temp/region_and_az.tmp new file mode 100644 index 000000000..269b060a6 --- /dev/null +++ b/elb/umn/temp/region_and_az.tmp @@ -0,0 +1,21 @@ + + +

    Region and AZ

    +

    Concept

    A region and availability zone (AZ) identify the location of a data center. You can create resources in a specific region and AZ.

    +
    • A region is a physical data center, which is completely isolated to improve fault tolerance and stability. The region that is selected during resource creation cannot be changed after the resource is created.
    • An AZ is a physical location where resources use independent power supplies and networks. A region contains one or more AZs that are physically isolated but interconnected through internal networks. Because AZs are isolated from each other, any fault that occurs in one AZ will not affect others.
    +

    Figure 1 shows the relationship between regions and AZs.

    +Figure 1 Regions and AZs
    + +

    Selecting a Region

    Select a region closest to your target users for lower network latency and quick access.

    + +

    Selecting an AZ

    When deploying resources, consider your applications' requirements on disaster recovery (DR) and network latency.

    +
    • For high DR capability, deploy resources in different AZs within the same region.
    • For lower network latency, deploy resources in the same AZ.
    + +

    Regions and Endpoints

    Before you use an API to call resources, specify its region and endpoint. For more details, see Regions and Endpoints.

    + + + + + + + diff --git a/elb/umn/temp/security_policy.tmp b/elb/umn/temp/security_policy.tmp new file mode 100644 index 000000000..a33087740 --- /dev/null +++ b/elb/umn/temp/security_policy.tmp @@ -0,0 +1,380 @@ + + +

    Security Policy

    +

    Scenarios

    When you add HTTPS listeners, you can select desired security policies to improve service security. A security policy is a combination of TLS protocols and cipher suites.

    + +

    Adding a Security Policy

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Under Listeners, click Add Listener.
    6. In the Add Listener dialog, expand Advanced Settings, and select a security policy. Table 1 lists the parameters to be configured. +.. _elb_ug_jt_0022__table1247813103533: + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Security policy parameters

      Parameter

      +

      Description

      +

      TLS Version

      +

      Cipher Suite

      +

      TLS-1-0

      +

      TLS 1.0, TLS 1.1, and TLS 1.2 and supported cipher suites (high compatibility and moderate security)

      +

      TLS 1.2

      +

      TLS 1.1

      +

      TLS 1.0

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA

      +

      TLS-1-1

      +

      TLS 1.1 and TLS 1.2 and supported cipher suites (moderate compatibility and moderate security)

      +

      TLS 1.2

      +

      TLS 1.1

      +

      TLS-1-2

      +

      TLS 1.2 and supported cipher suites (moderate compatibility and high security)

      +

      TLS 1.2

      +

      TLS-1-2-Strict

      +

      Strict TLS 1.2 and supported cipher suites (low compatibility and ultra-high security)

      +

      TLS 1.2

      +

      ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384

      +
      + +
    7. Click OK.
    + +

    Differences Between Security Policies

    +.. _elb_ug_jt_0022__table8551776916: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Differences among the four types of security policies

    Security Policy

    +

    TLS-1-0

    +

    TLS-1-1

    +

    TLS-1-2

    +

    TLS-1-2-Strict

    +

    TLS-1-2-FS

    +

    TLS versions

    +

    Protocol-TLS 1.3

    +

    -

    +

    -

    +

    -

    +

    -

    +

    +

    Protocol-TLS 1.2

    +

    +

    +

    +

    +

    +

    Protocol-TLS 1.1

    +

    +

    +

    -

    +

    -

    +

    -

    +

    Protocol-TLS 1.0

    +

    +

    -

    +

    -

    +

    -

    +

    -

    +

    Cipher suites

    +

    EDHE-RSA-AES128-GCM-SHA256

    +

    +

    +

    +

    +

    -

    +

    ECDHE-RSA-AES256-GCM-SHA384

    +

    +

    +

    +

    +

    +

    ECDHE-RSA-AES128-SHA256

    +

    +

    +

    +

    +

    +

    ECDHE-RSA-AES256-SHA384

    +

    +

    +

    +

    +

    +

    AES128-GCM-SHA256

    +

    +

    +

    +

    +

    -

    +

    AES256-GCM-SHA384

    +

    +

    +

    +

    +

    -

    +

    AES128-SHA256

    +

    +

    +

    +

    +

    -

    +

    AES256-SHA256

    +

    +

    +

    +

    +

    -

    +

    ECDHE-RSA-AES128-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    ECDHE-RSA-AES256-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    AES128-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    AES256-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    ECDHE-ECDSA-AES128-GCM-SHA256

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES128-SHA256

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES128-SHA

    +

    +

    +

    +

    -

    +

    -

    +

    ECDHE-ECDSA-AES256-GCM-SHA384

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES256-SHA384

    +

    +

    +

    +

    +

    +

    ECDHE-ECDSA-AES256-SHA

    +

    +

    +

    +

    -

    +

    -

    +
    + + +

    Modifying a Security Policy

    When you modify a security policy, ensure that the security group containing backend servers allows access from 100.125.0.0/16 and allows ICMP packets for UDP health checks. Otherwise, backend servers will be considered unhealthy, and routing will be affected.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Locate the listener and click on the right of its name.
    6. On the Modify Listener page, expand Advanced Settings and modify the security policy.
    7. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/service_overview.tmp b/elb/umn/temp/service_overview.tmp new file mode 100644 index 000000000..ada8e3c45 --- /dev/null +++ b/elb/umn/temp/service_overview.tmp @@ -0,0 +1,31 @@ + + +

    Service Overview

    + + + + + diff --git a/elb/umn/temp/service_performance_and_load.tmp b/elb/umn/temp/service_performance_and_load.tmp new file mode 100644 index 000000000..5ccc91dba --- /dev/null +++ b/elb/umn/temp/service_performance_and_load.tmp @@ -0,0 +1,19 @@ + + +

    Service Performance and Load

    +

    + + + + + + + + diff --git a/elb/umn/temp/setting_an_alarm_rule.tmp b/elb/umn/temp/setting_an_alarm_rule.tmp new file mode 100644 index 000000000..1b77cea9e --- /dev/null +++ b/elb/umn/temp/setting_an_alarm_rule.tmp @@ -0,0 +1,16 @@ + + +

    Setting an Alarm Rule

    + + + + + + + + diff --git a/elb/umn/temp/sni_certificate_(for_https_listeners).tmp b/elb/umn/temp/sni_certificate_(for_https_listeners).tmp new file mode 100644 index 000000000..3c7bdcd09 --- /dev/null +++ b/elb/umn/temp/sni_certificate_(for_https_listeners).tmp @@ -0,0 +1,21 @@ + + +

    SNI Certificate (for HTTPS Listeners)

    +

    Scenarios

    If you have an application that can be accessed through multiple domain names and each domain name uses a different certificate, you can enable SNI when you add an HTTPS listener.

    +

    SNI is an extension to TLS and enables a server to present multiple certificates on the same IP address and TCP port number. This allows multiple secure (HTTPS) websites (or any other service over TLS) to be served by the same IP address without requiring all websites to use the same certificate. SNI allows the client to submit the domain name information while sending an SSL handshake request. Once the load balancer receives the request, it queries the right certificate based on the domain name and returns the corresponding certificate to the client. If no certificate is found, the load balancer will return a default certificate.

    +

    A maximum of 30 SNI certificates can be configured for each listener.

    + +

    Prerequisites

    You have created a certificate by performing the operations in Creating and Managing a Certificate.

    +
    • Only one domain name can be specified for each certificate. Wildcard-domain certificates are supported.

      + +
    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    1. Locate the load balancer and click its name.
    2. Click Listeners.
      • For a shared load balancer, locate the listener and click Configure on the right of SNI.
      • For a classic load balancer, click Listeners, locate the listener, and click Modify in the Operation column. In the Modify Listener dialog box, modify the parameters as needed.
      +
    3. Enable SNI and select the SNI certificate to be used.
    4. Click OK.
    + + + + + + + diff --git a/elb/umn/temp/specifications_of_dedicated_load_balancers.tmp b/elb/umn/temp/specifications_of_dedicated_load_balancers.tmp new file mode 100644 index 000000000..ed6000199 --- /dev/null +++ b/elb/umn/temp/specifications_of_dedicated_load_balancers.tmp @@ -0,0 +1,216 @@ + + +

    Specifications of Dedicated Load Balancers

    +

    Dedicated load balancers are available in different specifications. Each specification contains some key metrics from which you can decide whether the specification meets your needs. When the traffic exceeds the selected specifications, new requests will not be routed, and packet loss will occur.

    +
    • Maximum connections

      The metric measures the maximum number of concurrent connections that a load balancer can handle. If the number of connections reaches that defined in the specification, new requests will be discarded to ensure the performance of existing connections.

      +
    • Connections per second (CPS)

      CPS refers to the number of new connections that a load balancer establishes with clients per second. If the number reaches that defined in the specification, new requests will be discarded to ensure the performance of established connections.

      +

      When HTTPS listeners are establishing connections with clients, SSL handshakes occupy more system resources. The number of new HTTPS connections per second is only 10% of the number of new HTTP connections per second. For example, if the specification of a load balancer is small I, and the number of new HTTP connections is 10,000, the number of new HTTPS connections per second is 1,000.

      +
    • Queries per second (QPS)

      QPS measures the number of HTTP or HTTPS requests sent to a backend server per second. If the QPS reaches that defined in the specification, new requests will be discarded to ensure the performance of established connections.

      +
    +

    Table 1 and Table 2 list the specifications of dedicated load balancers. (Available specifications may vary depending on the resources in different regions.)

    + +.. _en-us_topic_0287737145__table14428152722818: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Network load balancing (TCP/UDP)

    Type

    +

    Maximum Connections

    +

    CPS

    +

    Bandwidth (Mbit/s)

    +

    Number of LCUs in an AZ

    +

    Small I

    +

    500,000

    +

    10,000

    +

    50

    +

    10

    +

    Small II

    +

    1,000,000

    +

    20,000

    +

    100

    +

    20

    +

    Medium I

    +

    2,000,000

    +

    40,000

    +

    200

    +

    40

    +

    Medium II

    +

    4,000,000

    +

    80,000

    +

    400

    +

    80

    +

    Large I

    +

    10000000

    +

    200,000

    +

    1,000

    +

    200

    +

    Large II

    +

    20000000

    +

    400,000

    +

    2,000

    +

    400

    +
    + + +.. _en-us_topic_0287737145__table201281815505: + +.. _en-us_topic_0287737145__table201281815505: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Application load balancing (HTTP/HTTPS)

    Type

    +

    Maximum Connections

    +

    CPS (HTTP)

    +

    CPS (HTTPS)

    +

    QPS

    +

    Bandwidth (Mbit/s)

    +

    Number of LCUs in an AZ

    +

    Small I

    +

    200,000

    +

    2,000

    +

    200

    +

    4,000

    +

    50

    +

    10

    +

    Small II

    +

    400,000

    +

    4,000

    +

    400

    +

    8,000

    +

    100

    +

    20

    +

    Medium I

    +

    800,000

    +

    8,000

    +

    800

    +

    16,000

    +

    200

    +

    40

    +

    Medium II

    +

    2,000,000

    +

    20,000

    +

    2,000

    +

    40,000

    +

    400

    +

    100

    +

    Large I

    +

    4,000,000

    +

    40,000

    +

    4,000

    +

    80,000

    +

    1,000

    +

    200

    +

    Large II

    +

    8,000,000

    +

    80,000

    +

    8,000

    +

    160,000

    +

    2,000

    +

    400

    +
    + +

    If you have added multiple listeners to a load balancer, the sum of QPS values of all listeners cannot exceed the QPS defined in each specification.

    + + + + + + + diff --git a/elb/umn/temp/sticky_session.tmp b/elb/umn/temp/sticky_session.tmp new file mode 100644 index 000000000..701e63f1c --- /dev/null +++ b/elb/umn/temp/sticky_session.tmp @@ -0,0 +1,20 @@ + + + +

    Sticky Session

    + +

    + + + + + + + + + diff --git a/elb/umn/temp/tag.tmp b/elb/umn/temp/tag.tmp new file mode 100644 index 000000000..28d05ea0e --- /dev/null +++ b/elb/umn/temp/tag.tmp @@ -0,0 +1,29 @@ + + +

    Tag

    +

    Scenarios

    If you have a large number of cloud resources, you can assign different tags to the resources to quickly identify them and use these tags to easily manage your resources.

    + +

    Adding a Tag to a Load Balancer

    You can add a tag to a load balancer in either of the following scenarios:

    +
    • Add a tag when you create a load balancer.

      For detailed operations, see Creating a Shared Load Balancer.

      +
    • Add a tag to an existing load balancer.
      1. Log in to the management console.
      2. In the upper left corner of the page, click and select the desired region and project.
      3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
      4. Locate the load balancer and click its name.
      5. Under Tags, click Add Tag.
      6. In the Add Tag dialog box, enter a tag key and value and click OK.
        • A maximum of 20 tags can be added to a load balancer.
        • Each tag is a key-value pair, and the tag key is unique.
        + +
      +
    + +

    Adding a Tag to a Listener

    You can add tags when you add listeners.

    +

    To add a tag to an existing listener, perform the following steps:

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Listeners, locate the listener, and click its name.
    6. Under Tags, click Add Tag.
    7. In the Add Tag dialog box, enter a tag key and value and click OK.
      • A maximum of 20 tags can be added to a listener.
      • Each tag is a key-value pair, and the tag key is unique.
      + +
    +

    + +

    Modifying a Tag

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Tags, select the tag to be edited, and click Edit in the Operation column. In the Edit Tag dialog box, change the tag value.

      The tag key cannot be changed.

      + +
    6. Click OK.
    +

    The operations for modifying a listener tag are not detailed here. Refer to the operations of modifying a load balancer tag.

    + +

    Deleting a Tag

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    4. Locate the load balancer and click its name.
    5. Click Tags, select the tag to be deleted, and click Delete in the Operation column.
    6. In the Delete Tag dialog box, click Yes.
    +

    The operations for deleting a listener tag are not detailed here. Refer to the operations of deleting a load balancer tag.

    + + + diff --git a/elb/umn/temp/using_shared_load_balancers_—_advanced_level.tmp b/elb/umn/temp/using_shared_load_balancers_—_advanced_level.tmp new file mode 100644 index 000000000..e656afc88 --- /dev/null +++ b/elb/umn/temp/using_shared_load_balancers_—_advanced_level.tmp @@ -0,0 +1,156 @@ + + +

    Using Shared Load Balancers — Advanced Level

    +

    Scenarios

    You have two web applications deployed on two ECSs separately, and the web applications provide one domain name but different URLs for users to access.

    +

    To forward requests based on URLs, you need to create a load balancer, add an HTTP or HTTPS listener, and add forwarding policies to specify the URLs.

    +

    An HTTP listener is used as an example to describe how to route requests from two URLs (/ELB01 and /ELB02) of the same domain name (www.example.com) to different backend servers.

    + +

    Prerequisites

    • You have added security group rules to allow traffic from the ports used by the two ECSs. (Alternatively, you can enable all ports first and then disable the ports that are no longer used.)
    • The security group containing the two ECSs allows traffic from 100.125.0.0/16. (ELB uses these IP addresses to perform health checks and route requests to backend servers.)
    + +

    Creating ECSs

    ECSs are used as backend servers.

    +

    Each ECS needs an EIP to allow you to deploy the backend service on each ECS. In actual use, you can unbind the EIP from each ECS if the ECSs do not need to access the Internet or provide Internet-accessible services after the deployment is complete. Determine whether you need an EIP for your load balancer by referring to Load Balancing on a Public or Private Network.

    + +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. Click Create ECS, configure the parameters, and click Create Now.

      +

      +The following table lists the specifications of the two ECSs. +.. _en-us_elb_02_0001__table169305003620: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 ECS specifications

      Item

      +

      Example Value

      +

      Name

      +

      ECS01 and ECS02

      +

      OS

      +

      CentOS 7.2 64bit

      +

      vCPUs

      +

      2

      +

      Memory

      +

      4 GB

      +

      System disk

      +

      40 GB

      +

      Data disk

      +

      100 GB

      +

      Bandwidth

      +

      5 Mbit/s

      +
      + + +
    5. Submit your request.
    +

    Deploying the Application

    Deploy Nginx on the two ECSs and edit two HTML pages for the web applications so that a page with message "Welcome to ELB test page one!" is returned when ECS01 is accessed, and the other page with message "Welcome to ELB test page two!" is returned when ECS02 is accessed.

    +
    1. Log in to the ECSs.
    2. Install and start Nginx.
      1. Install Nginx:

        yum -y install nginx

        +
      2. Start Nginx:

        systemctl start nginx.service

        +
      3. Enter http://EIP bound to the ECS in the address box of your browser.If the following page is displayed, Nginx has been installed.Figure 1 Nginx installed successfully
        + +
      +
    3. Modify the HTML page of ECS01.Move the index.html file from the default root directory of Nginx /usr/share/nginx/html to the ELB01 directory and modify the file to identify access to ECS01.
      1. Create the ELB01 directory and copy the index.html file to this directory:

        mkdir /usr/share/nginx/html/ELB01

        +

        cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB01/

        +
      2. Open the index.html file.

        vim /usr/share/nginx/html/ELB01/index.html

        +
      3. Press i to enter editing mode.
      4. Modify the index.html file to be as follows:
         ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page one!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB01</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                </div>
        +            </div>
        +        </div>
        +    </body>
        +
      5. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    4. Modify the HTML page of ECS02.Move the index.html file from the default root directory of Nginx /usr/share/nginx/html to the ELB02 directory and modify the file to identify access to ECS02.
      1. Create the ELB02 directory and copy the index.html file to this directory:

        mkdir /usr/share/nginx/html/ELB02

        +

        cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB02/

        +
      2. Open the index.html file.

        vim /usr/share/nginx/html/ELB02/index.html

        +
      3. Press i to enter editing mode.
      4. Modify the index.html file to be as follows:
        ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page two!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB02</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                </div>
        +             </div>
        +        </div>
        +    </body>
        +
      5. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    5. Use your browser to access http://ECS01 EIP/ELB01/ and http://ECS02 EIP/ELB02/ to verify that Nginx has been deployed.

      If the modified HTML pages are displayed, Nginx has been deployed.

      +
      • HTML page of ECS01Figure 2 Nginx successfully deployed on ECS01
        +
      • HTML page of ECS02Figure 3 Nginx successfully deployed on ECS02
        +
      +
    + +

    Creating a Load Balancer

    1. In the upper left corner of the page, click and select the desired region and project.
    2. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    3. Click Create Elastic Load Balancer and then configure the parameters.
    4. Click Create Now.
    5. Confirm the configuration and submit your request.
    6. View the newly created load balancer in the load balancer list.
    + +

    Adding a Listener

    Add a listener to the created load balancer. When you add the listener, create a backend server group, configure a health check, and add the two ECSs to the created backend server group.

    +Configure two forwarding policies to forward HTTP requests to the two ECSs, for example, requests from www.example.com/ELB01/ to ECS01, and those from www.example.com/ELB02/ to ECS02.Figure 4 Traffic forwarding
    + +
    1. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    2. Locate the created load balancer and click its name.
    3. Under Listeners, click Add Listener.
    4. Configure the listener and click Next.
      • Name: Enter a name, for example, listener-HTTP.
      • Frontend Protocol/Port: Select a protocol and enter a port for the load balancer to receive requests. For example, set it to HTTP and 80.
      +
    5. Create a backend server group, configure a health check, and click Finish.
      • Backend server group
        • Name: Enter a name, for example, server_group-ELB.
        • Load Balancing Algorithm: Select an algorithm that the load balancer will use to route requests, for example, Weighted round robin.
        +
      +
      • Health check
        • Protocol: Select a protocol for the load balancer to perform health checks on backend servers. If the load balancer uses TCP, HTTP, or HTTPS to receive requests, the health check protocol can be TCP or HTTP. Here we use HTTP as an example. Note that the protocol cannot be changed after the listener is added.
        • Domain Name: Enter a domain name that will be used for health checks, for example, www.example.com.
        • Port: Enter a port for the load balancer to perform health checks on backend servers, for example, 80.
        +
      +
    + +

    Adding Forwarding Policies

    1. Click the name of the newly added listener and then click Add next to Forwarding Policies.
    2. Configure the forwarding policy and click Next.
      • Name: Enter a name for the forwarding policy, for example, forwarding_policy-ELB01.
      • Domain Name: Enter a domain name that will be used to forward the requests, for example, www.example.com. The domain name in the request must exactly match that specified in the forwarding policy.
      • URL: You can also specify a URL to forward the requests, for example, /ELB01/.
      • URL Matching Rule: Select the rule for matching specified URL string with the requested URL. Three options are available, Exact match, Prefix match, and Regular expression match. Exact match enjoys the highest priority, and Regular expression match the lowest priority. Select Exact match here.
      +
    3. Add the backend server group and configure a health check.
      • Backend server group
        • Name: Enter a name, for example, server_group-ELB01.
        • Load Balancing Algorithm: Select an algorithm that the load balancer will use to route requests, for example, Weighted round robin.
        +
      +
      • Health check
        • Protocol: Select a protocol for the load balancer to perform health checks on backend servers. If the load balancer uses TCP, HTTP, or HTTPS to receive requests, the health check protocol can be TCP or HTTP. Here we use HTTP as an example. Note that the protocol cannot be changed after the listener is added.
        • Domain Name: Enter a domain name that will be used for health checks, for example, www.example.com.
        • Port: Enter a port for the load balancer to perform health checks on backend servers, for example, 80.
        +
      +
    4. Select the newly added forwarding policy. On the Backend Server Groups tab page on the right, click Add.
    5. Select the server you want to add, set the backend port, and click Finish.
      • Backend server: ECS01
      • Backend port: Set it to 80. Backend servers will use this port to communicate with the load balancer.
      +
    6. Repeat 1 to 5 to add another forwarding policy, create a backend server group, and add ECS02 to the backend server group. Configure the parameters.
    + +

    Verifying Load Balancing

    After the load balancer is configured, you can access the domain name or the specified URL to check whether the two ECSs are accessible.

    +
    1. Modify the C:\Windows\System32\drivers\etc\hosts file on your PC to map the domain name to the load balancer EIP.View the load balancer EIP on the basic information page of the load balancer.Figure 5 hosts file on your PC
      + +
    2. On the CLI of your PC, run the following command to check whether the domain name is mapped to the load balancer EIP:

      ping www.example.com

      +

      If data packets are returned, the domain name has been mapped to the load balancer EIP.

      +
    3. Use your browser to access http://www.example.com/ELB01/. If the following page is displayed, the load balancer has routed the request to ECS01.Figure 6 Accessing ECS01
      +

      ELB01/ indicates that the default directory named ECS01 is accessed, while ELB01 indicates the file name. Therefore, the slash (/) following ELB01 must be retained.

      + +
    4. Use your browser to access http://www.example.com/ELB02/. If the following page is displayed, the load balancer has routed the request to ECS02.Figure 7 Accessing ECS02
      +
    + + + + + + + diff --git a/elb/umn/temp/using_shared_load_balancers_—_entry_level.tmp b/elb/umn/temp/using_shared_load_balancers_—_entry_level.tmp new file mode 100644 index 000000000..96653615d --- /dev/null +++ b/elb/umn/temp/using_shared_load_balancers_—_entry_level.tmp @@ -0,0 +1,143 @@ + + +

    Using Shared Load Balancers — Entry Level

    +

    Scenarios

    You have a web application, which often needs to handle heavy traffic and is deployed on two ECSs for load balancing.

    +

    You can create a shared load balancer to distribute traffic evenly across the two ECSs, which eliminates SPOFs and makes your application more available.

    + +

    Prerequisites

    • You have added security group rules to allow traffic from the ports used by the two ECSs. (Alternatively, you can enable all ports first and then disable the ports that are no longer used.)
    • The security group containing the two ECSs allows traffic from 100.125.0.0/16. (ELB uses these IP addresses to perform health checks and route requests to backend servers.)
    + +

    Creating ECSs

    ECSs are used as backend servers.

    +

    Each ECS needs an EIP for accessing the Internet, so that The EIP bound to the ECS is required only for configuring ECS backend services in this example. You need to determine whether to bind an EIP to the ECS based on the service plan.

    +

    Determine whether you need to bind an EIP to your load balancer by referring to Load Balancing on a Public or Private Network.

    +
    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Hover on in the upper left corner to display Service List and choose Computing > Elastic Cloud Server.
    4. Click Create ECS, configure the parameters, and click Create Now.

      +

      +The following table lists the specifications of the two ECSs. +.. _en-us_topic_0052569751__table9439114212376: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 ECS specifications

      Item

      +

      Example Value

      +

      Name

      +

      ECS01 and ECS02

      +

      OS

      +

      CentOS 7.2 64bit

      +

      vCPUs

      +

      2

      +

      Memory

      +

      4 GB

      +

      System disk

      +

      40 GB

      +

      Data disk

      +

      100 GB

      +

      Bandwidth

      +

      5 Mbit/s

      +
      + + +
    5. Submit your request.
    + + +

    Deploying the Application

    Deploy Nginx on the two ECSs and edit two HTML pages for the web application so that a page with message "Welcome to ELB test page one!" is returned when ECS01 is accessed, and the other page with message "Welcome to ELB test page two!" is returned when ECS02 is accessed.

    +
    1. Log in to the ECSs.
    2. Install and start Nginx.
      1. Install Nginx:

        yum -y install nginx

        +
      2. Start Nginx:

        systemctl start nginx.service

        +
      3. Enter http://EIP bound to the ECS in the address box of your browser.If the following page is displayed, Nginx has been installed.Figure 1 Nginx installed successfully
        + +
      +
    3. Modify the HTML page of ECS01.Modify the index.html file in the default root directory of Nginx /usr/share/nginx/html to identify access to ECS01.
      1. Open the index.html file.

        vim /usr/share/nginx/html/index.html

        +
      2. Press i to enter editing mode.
      3. Modify the index.html file to be as follows:
         ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page one!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB01</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                    <p><strong>ELB test (page one)!</strong></p>
        +                </div>
        +            </div>
        +        </div>
        +    </body>
        +
      4. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    4. Modify the HTML page of ECS02.Modify the index.html file in the default root directory of Nginx /usr/share/nginx/html to identify access to ECS02.
      1. Open the index.html file.

        vim /usr/share/nginx/html/index.html

        +
      2. Press i to enter editing mode.
      3. Modify the index.html file to be as follows:
        ...
        +    <body>
        +        <h1>Welcome to <strong>ELB</strong> test page two!</h1>
        +
        +        <div class="content">
        +            <p>This page is used to test the <strong>ELB</strong>!</p>
        +
        +            <div class="alert">
        +                <h2>ELB02</h2>
        +                <div class="content">
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                    <p><strong>ELB test (page two)!</strong></p>
        +                </div>
        +             </div>
        +        </div>
        +    </body>
        +
      4. Press Esc to exit editing mode. Then, enter :wq to save the settings and exit the file.
      + +
    5. Use your browser to access http://ECS01 EIP and http://ECS02 EIP to verify that Nginx has been deployed.

      If the modified HTML pages are displayed, Nginx has been deployed.

      +
      • HTML page of ECS01Figure 2 Nginx successfully deployed on ECS01
        +
      • HTML page of ECS02Figure 3 Nginx successfully deployed on ECS02
        +
      +
    + +

    Creating a Load Balancer

    1. In the upper left corner of the page, click and select the desired region and project.
    2. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    3. Click Create Elastic Load Balancer and then configure the parameters.
    4. Click Create Now.
    5. Confirm the configuration and submit your request.
    6. View the newly created load balancer in the load balancer list.
    + +

    Adding a Listener

    Add a listener to the created load balancer. When you add the listener, create a backend server group, configure a health check, and add the two ECSs to the created backend server group.

    +Figure 4 Traffic forwarding
    +
    1. Hover on in the upper left corner to display Service List and choose Network > Elastic Load Balancing.
    2. Locate the created load balancer (elb-01) and click its name.
    3. Under Listeners, click Add Listener.
    4. Configure the listener and click Next.
      • Name: Enter a name, for example, listener-HTTP.
      • Frontend Protocol/Port: Select a protocol and enter a port for the load balancer to receive requests. For example, set it to HTTP and 80.
      +
    5. Create a backend server group and configure a health check.
      • Backend server group
        • Name: Enter a name, for example, server_group-ELB.
        • Load Balancing Algorithm: Select an algorithm that the load balancer will use to route requests, for example, Weighted round robin.
        +
      +
      • Health check
        • Protocol: Select a protocol for the load balancer to perform health checks on backend servers. If the load balancer uses TCP, HTTP, or HTTPS to receive requests, the health check protocol can be TCP or HTTP. Here we use HTTP as an example. Note that the protocol cannot be changed after the listener is added.
        • Domain Name: Enter a domain name that will be used for health checks, for example, www.example.com.
        • Port: Enter a port for the load balancer to perform health checks on backend servers, for example, 80.
        +
      +
    6. Click the name of the newly added listener. On the Backend Server Groups tab page on the right, click Add.
    7. Select the servers you want to add, set the backend port, and click Finish.
      • Backend servers: Select ECS01 and ECS02.
      • Backend port: Set it to 80. Backend servers will use this port to communicate with the load balancer.
      +
    + +

    Verifying Load Balancing

    After the load balancer is configured, you can access the domain name to check whether the two ECSs are accessible.

    +
    1. Modify the C:\Windows\System32\drivers\etc\hosts file on your PC to map the domain name to the load balancer EIP.View the load balancer EIP on the basic information page of the load balancer.Figure 5 hosts file on your PC
      + +
    2. On the CLI of your PC, run the following command to check whether the domain name is mapped to the load balancer EIP:

      ping www.example.com

      +

      If data packets are returned, the domain name has been mapped to the load balancer EIP.

      +
    3. Use your browser to access http://www.example.com. If the following page is displayed, the load balancer has routed the request to ECS01.Figure 6 Accessing ECS01
      +
    4. Use your browser to access http://www.example.com. If the following page is displayed, the load balancer has routed the request to ECS02.Figure 7 Accessing ECS02
      +
    + + + + + + + diff --git a/elb/umn/temp/viewing_metrics.tmp b/elb/umn/temp/viewing_metrics.tmp new file mode 100644 index 000000000..24e5f3046 --- /dev/null +++ b/elb/umn/temp/viewing_metrics.tmp @@ -0,0 +1,22 @@ + + +

    Viewing Metrics

    +

    Scenarios

    Cloud Eye allows you to monitor your resources, including load balancers.

    +

    The transmission of monitoring data takes a while, so the status of each load balancer displayed on the Cloud Eye dashboard is not its real-time status. For a newly created load balancer or a newly added listener, you need to wait for about 5 minutes to 10 minutes before you can view its metrics.

    + +

    Prerequisites

    • The load balancer is running properly.

      If backend servers are stopped, faulty, or deleted, no monitoring data is displayed.

      +

      Cloud Eye stops monitoring a load balancer and removes it from the monitored object list if its backend servers have been deleted or are in stopped or faulty state for over 24 hours. However, the configured alarm rules will not be automatically deleted.

      + +
    • You have interconnected ELB with Cloud Eye and configured an alarm rule for the load balancer on the Cloud Eye console.

      Without alarm rules configured, there is no monitoring data. For details, see Setting an Alarm Rule.

      +
    • If an IAM user wants to view the ELB monitoring data on the Cloud Eye console, the IAM user must be granted the ELB Administrator permission. Otherwise, the IAM user cannot view all monitoring data.
    + +

    Background

    If you set the weight of a backend server to 0, the load balancer will not route traffic to this server even if it is included in Healthy Servers on the Cloud Eye console.

    + +

    Procedure

    1. Log in to the management console.
    2. Under Management & Deployment, click Cloud Eye.
    3. In the navigation pane on the left, choose Cloud Service Monitoring > Elastic Load Balancing.
    4. Locate the load balancer and click View Metric in the Operation column.
    + + + + + + + diff --git a/elb/umn/temp/viewing_traces.tmp b/elb/umn/temp/viewing_traces.tmp new file mode 100644 index 000000000..9d397e70c --- /dev/null +++ b/elb/umn/temp/viewing_traces.tmp @@ -0,0 +1,22 @@ + + +

    Viewing Traces

    +

    Scenarios

    CTS records the operations performed on ELB and allows you to view the operation records of the last seven days on the CTS console. To query these records, perform the following operations.

    + +

    Procedure

    1. Log in to the management console.
    2. In the upper left corner of the page, click and select the desired region and project.
    3. Under Management & Deployment, click Cloud Trace Service.
    4. In the navigation pane on the left, choose Trace List.
    5. Specify the filters used for querying traces. The following filters are available:Figure 1 Filters
      +
      • Trace Type, Trace Source, Resource Type, and Search By

        Select a filter from the drop-down list.

        +

        If you select Trace name for Search By, you need to select a specific trace name.

        +

        If you select Resource ID for Search By, select or enter a specific resource ID.

        +

        If you select Resource name for Search By, select or enter a specific resource name.

        +
      • Operator: Select a specific operator (at the user level rather than the tenant level).
      • Trace Status: Available options include All trace statuses, Normal, Warning, and Incident. You can only select one of them.
      • Time range: You can query traces generated at any time range of the last seven days.
      +
    6. Click on the left of the required trace to expand its details.Figure 2 Expanding trace details
      +
    7. Click View Trace in the Operation column to view trace details.Figure 3 View Trace
      +

      For details about key fields in the trace, see the Cloud Trace Service User Guide.

      +
    + + + + + + + diff --git a/elb/umn/temp/what_are_the_relationships_between_load_balancing_algorithms_and_sticky_session_types.tmp b/elb/umn/temp/what_are_the_relationships_between_load_balancing_algorithms_and_sticky_session_types.tmp new file mode 100644 index 000000000..34a79799e --- /dev/null +++ b/elb/umn/temp/what_are_the_relationships_between_load_balancing_algorithms_and_sticky_session_types.tmp @@ -0,0 +1,268 @@ + + +

    What Are the Relationships Between Load Balancing Algorithms and Sticky Session Types?

    +

    Sticky sessions ensure that requests from the same client are forwarded to the same backend server. ELB supports three types of sticky sessions. Table 3 lists the relationships between load balancing algorithms and sticky session types of classic load balancers. Table 1 lists the relationships between load balancing algorithms and sticky session types of shared load balancers, and Table 2 lists the relationships between load balancing algorithms and sticky session types of dedicated load balancers.

    +

    Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

    + + +.. _en-us_elb_05_0008__table44808652142126: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Sticky sessions supported by shared load balancers

    Load Balancing Algorithm

    +

    Sticky Session Type

    +

    Layer 4 (TCP/UDP)

    +

    Layer 7 (HTTP/HTTPS)

    +

    Weighted round robin

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Supported

    +

    Application cookie

    +

    N/A

    +

    Supported

    +

    Weighted least connections

    +

    Source IP address

    +

    Not supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Source IP hash

    +

    Source IP address

    +

    N/A

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +
    + + +.. _en-us_elb_05_0008__table169631166584: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Sticky sessions supported by dedicated load balancers

    Load Balancing Algorithm

    +

    Sticky Session Type

    +

    Layer 4 (TCP/UDP)

    +

    Layer 7 (HTTP/HTTPS)

    +

    Weighted round robin

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Weighted least connections

    +

    Source IP address

    +

    Not supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Source IP hash

    +

    Source IP address

    +

    N/A

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +
    + + +.. _en-us_elb_05_0008__table1612018518726: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Session stickiness of classic load balancers

    Load Balancing Algorithm

    +

    Sticky Session Type

    +

    Layer 4 (TCP/UDP)

    +

    Layer 7 (HTTP/HTTPS)

    +

    Round robin

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Least connections

    +

    Source IP address

    +

    Supported

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +

    Source IP hash

    +

    Source IP address

    +

    N/A

    +

    Not supported

    +

    Load balancer cookie

    +

    N/A

    +

    Not supported

    +

    Application cookie

    +

    N/A

    +

    Not supported

    +
    + +

    Generally, the weighted round robin algorithm is recommended. Sticky sessions at Layer 4 use source IP addresses to main sessions, and sticky sessions at Layer 7 use load balancer cookies.

    + + + + + + diff --git a/elb/umn/temp/what_do_i_do_if_a_load_balancer_fails_the_stress_test.tmp b/elb/umn/temp/what_do_i_do_if_a_load_balancer_fails_the_stress_test.tmp new file mode 100644 index 000000000..379d5b909 --- /dev/null +++ b/elb/umn/temp/what_do_i_do_if_a_load_balancer_fails_the_stress_test.tmp @@ -0,0 +1,10 @@ + + +

    What Do I Do If a Load Balancer Fails the Stress Test?

    +
    1. Check the load of backend servers. If their CPU usage reaches 100%, applications may have performance bottlenecks.
    2. Check the incoming traffic. If the incoming traffic exceeds the maximum bandwidth set for the EIP, a large number of packets will be lost and requests will not be responded to, thereby affecting the load balancer's performance.
    3. Check the number of short connections in the time_wait state on the clients. A possible cause is that there are insufficient client ports.
    4. The listening queue backlog of the backend servers is full. As a result, the backend server does not respond to SYN ACK packets, and the client times out. You can increase the upper limit of the backlog by adjusting the net.core.somaxconn parameter.
    + + + + + + diff --git a/elb/umn/temp/what_is_elb.tmp b/elb/umn/temp/what_is_elb.tmp new file mode 100644 index 000000000..5a32082a4 --- /dev/null +++ b/elb/umn/temp/what_is_elb.tmp @@ -0,0 +1,37 @@ + + +

    What Is ELB?

    +

    Elastic Load Balancing (ELB) automatically distributes incoming traffic across multiple backend servers based on the listening rules you configure. ELB expands the service capabilities of your applications and improves their availability by eliminating single points of failure (SPOFs).

    +

    +

    ELB Components

    ELB consists of the following components:

    +
    • Load balancer: distributes incoming traffic across backend servers in one or more availability zones (AZs).
    • Listener: uses the protocol and port you specify to check for requests from clients and route the requests to associated backend servers based on the listening rules you define. You can add one or more listeners to a load balancer.
    • Backend server group: routes requests from the load balancer to one or more backend servers. You need to add at least one backend server to a backend server group.

      You can set a weight for each backend server based on their performance.

      +

      You can also configure health checks for a backend server group to check the health of each backend server. When a backend server is unhealthy, the load balancer stops routing new requests to this server.

      +
    + +Figure 1 ELB components
    +

    Load Balancer Type

    ELB provides the following types of load balancers: classic load balancer, dedicated load balancer, and shared load balancer. Dedicated load balancer and shared load balancer are called elastic load balancers collectively.

    +
    • Dedicated load balancers have exclusive use of underlying resources, so that the performance of a dedicated load balancer is not affected by other load balancers. In addition, there are a wide range of specifications available for selection.
    +

    Currently, dedicated load balancers are supported only in the eu-nl region.

    + +

    +
    • Shared load balancers are suitable for web services with heavy traffic. Requests are forwarded based on domain names or URLs, making request routing more flexible. Shared load balancers were previously named enhanced load balancers.
    • Classic load balancers can handle simple, light-traffic web services.

      Classic load balancers can no longer be created on the management console. Use shared load balancers or dedicated load balancers instead.

      + +
    +

    For details, see Differences Between Dedicated and Shared Load Balancers.

    +

    For details, see Differences Between Shared and Classic Load Balancers.

    + +

    Accessing ELB

    You can use either of the following methods to access ELB:

    +
    • Management console

      Log in to the management console and choose Network > Elastic Load Balancing (ELB).

      +
    +
    • APIs

      You can call APIs to access ELB. For details, see the Elastic Load Balancing API Reference.

      +

      By default, load balancers created in the eu-de region are shared load balancers. APIs for shared load balancers are available only in this region.

      +

      By default, load balancers created in the eu-nl region are dedicated load balancers. APIs for dedicated load balancers are available only in this region.

      + +
    + + + + + + + diff --git a/elb/umn/temp/what_types_of_sticky_sessions_does_elb_support.tmp b/elb/umn/temp/what_types_of_sticky_sessions_does_elb_support.tmp new file mode 100644 index 000000000..c6efcf684 --- /dev/null +++ b/elb/umn/temp/what_types_of_sticky_sessions_does_elb_support.tmp @@ -0,0 +1,14 @@ + + +

    What Types of Sticky Sessions Does ELB Support?

    +

    Dedicated load balancers: Source IP address and Load balancer cookie

    +

    Shared load balancers: Source IP address, Load balancer cookie, and Application cookie

    +

    Classic load balancers: Source IP address and Load balancer cookie

    +

    Classic load balancers can no longer be created on the management console.

    + + + + + + + diff --git a/elb/umn/temp/when_is_a_backend_server_considered_healthy.tmp b/elb/umn/temp/when_is_a_backend_server_considered_healthy.tmp new file mode 100644 index 000000000..fa3bd8c4e --- /dev/null +++ b/elb/umn/temp/when_is_a_backend_server_considered_healthy.tmp @@ -0,0 +1,10 @@ + + +

    When Is a Backend Server Considered Healthy?

    +

    If a backend server is associated with a load balancer for the first time, the backend server is considered healthy after one health check. After this, the server is detected healthy after the maximum retries of health checks.

    + + + + + + diff --git a/elb/umn/temp/why_does_elb_frequently_send_requests_to_backend_servers_during_health_checks.tmp b/elb/umn/temp/why_does_elb_frequently_send_requests_to_backend_servers_during_health_checks.tmp new file mode 100644 index 000000000..bf766f53e --- /dev/null +++ b/elb/umn/temp/why_does_elb_frequently_send_requests_to_backend_servers_during_health_checks.tmp @@ -0,0 +1,10 @@ + + +

    Why Does ELB Frequently Send Requests to Backend Servers During Health Checks?

    +

    ELB is deployed in cluster mode, and all nodes for request forwarding in the cluster send requests to backend servers at the same time. If the health check interval is too short, health checks are performed once every few seconds, and a large number of packets are sent to backend servers. To control the frequency of access to backend servers, change the health check interval by referring to Configuring a Health Check.

    + + + + + + diff --git a/elb/umn/temp/why_is_the_interval_at_which_backend_servers_receive_health_check_packets_different_from_the_configured_health_check_interval.tmp b/elb/umn/temp/why_is_the_interval_at_which_backend_servers_receive_health_check_packets_different_from_the_configured_health_check_interval.tmp new file mode 100644 index 000000000..300e213f2 --- /dev/null +++ b/elb/umn/temp/why_is_the_interval_at_which_backend_servers_receive_health_check_packets_different_from_the_configured_health_check_interval.tmp @@ -0,0 +1,11 @@ + + +

    Why Is the Interval at Which Backend Servers Receive Health Check Packets Different from the Configured Health Check Interval?

    +

    Each LVS node and Nginx node in the ELB system detect backend servers at the health check interval that you have specified for the backend server group.

    +

    During this period, backend servers receive multiple detection packets from LVS and Nginx nodes. This makes it seem that backend servers receive these packets at intervals shorter than the specified health check interval.

    + + + + + + diff --git a/elb/umn/temp/why_is_the_security_warning_still_displayed_after_a_certificate_is_configured.tmp b/elb/umn/temp/why_is_the_security_warning_still_displayed_after_a_certificate_is_configured.tmp new file mode 100644 index 000000000..d5ba3ef4b --- /dev/null +++ b/elb/umn/temp/why_is_the_security_warning_still_displayed_after_a_certificate_is_configured.tmp @@ -0,0 +1,12 @@ + + +

    Why Is the Security Warning Still Displayed After a Certificate Is Configured?

    +

    The following may cause the system to display a message indicating that a certificate is insecure:

    +
    • The domain name used by the certificate is different from the domain name accessed by users. (If this is the case, check the domain name used the certificate to ensure that the domain names are the same or create a self-signed certificate.)
    • SNI is configured, but the specified domain name is different from the one used by the certificate.
    • The domain name level is inconsistent with the certificate level.
    +

    If the problem persists, run the curl Domain name command to locate the fault based on the error information returned by the system.

    + + + + + + diff --git a/elb/umn/usermanual-elb(chm).iml b/elb/umn/usermanual-elb(chm).iml new file mode 100644 index 000000000..8021953ed --- /dev/null +++ b/elb/umn/usermanual-elb(chm).iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/modelarts/umn/ALL_META.TXT.json b/modelarts/umn/ALL_META.TXT.json new file mode 100644 index 000000000..69f691fb6 --- /dev/null +++ b/modelarts/umn/ALL_META.TXT.json @@ -0,0 +1,2032 @@ +[ + { + "uri":"modelarts_01_0000.html", + "product_code":"modelarts", + "code":"1", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Service Overview", + "title":"Service Overview", + "githuburl":"" + }, + { + "uri":"modelarts_01_0001.html", + "product_code":"modelarts", + "code":"2", + "des":"ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and", + "doc_type":"usermanual", + "kw":"What Is ModelArts?,Service Overview,User Guide", + "title":"What Is ModelArts?", + "githuburl":"" + }, + { + "uri":"modelarts_01_0003.html", + "product_code":"modelarts", + "code":"3", + "des":"AI engineers face challenges in the installation and configuration of various AI tools, data preparation, and model training. To address these challenges, the one-stop AI", + "doc_type":"usermanual", + "kw":"Functions,Service Overview,User Guide", + "title":"Functions", + "githuburl":"" + }, + { + "uri":"modelarts_01_0009.html", + "product_code":"modelarts", + "code":"4", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Basic Knowledge", + "title":"Basic Knowledge", + "githuburl":"" + }, + { + "uri":"modelarts_01_0010.html", + "product_code":"modelarts", + "code":"5", + "des":"Artificial intelligence (AI) is a technology capable of simulating human cognition through machines. The core capability of AI is to make a judgment or prediction based o", + "doc_type":"usermanual", + "kw":"Introduction to the AI Development Lifecycle,Basic Knowledge,User Guide", + "title":"Introduction to the AI Development Lifecycle", + "githuburl":"" + }, + { + "uri":"modelarts_01_0011.html", + "product_code":"modelarts", + "code":"6", + "des":"Machine learning is classified into supervised, unsupervised, and reinforcement learning.Supervised learning uses labeled samples to adjust the parameters of classifiers ", + "doc_type":"usermanual", + "kw":"Basic Concepts of AI Development,Basic Knowledge,User Guide", + "title":"Basic Concepts of AI Development", + "githuburl":"" + }, + { + "uri":"modelarts_01_0005.html", + "product_code":"modelarts", + "code":"7", + "des":"ExeML is the process of automating model design, parameter tuning, and model training, model compression, and model deployment with the labeled data. The process is code-", + "doc_type":"usermanual", + "kw":"Common Concepts of ModelArts,Basic Knowledge,User Guide", + "title":"Common Concepts of ModelArts", + "githuburl":"" + }, + { + "uri":"modelarts_01_0012.html", + "product_code":"modelarts", + "code":"8", + "des":"During AI development, massive volumes of data need to be processed, and data preparation and labeling usually take more than half of the development time. ModelArts data", + "doc_type":"usermanual", + "kw":"Data Management,Basic Knowledge,User Guide", + "title":"Data Management", + "githuburl":"" + }, + { + "uri":"modelarts_01_0013.html", + "product_code":"modelarts", + "code":"9", + "des":"It is challenging to set up a development environment, select an AI algorithm framework and algorithm, debug code, install software, and accelerate hardware. To address t", + "doc_type":"usermanual", + "kw":"DevEnviron,Basic Knowledge,User Guide", + "title":"DevEnviron", + "githuburl":"" + }, + { + "uri":"modelarts_01_0014.html", + "product_code":"modelarts", + "code":"10", + "des":"In addition to data and algorithms, developers spend a lot of time configuring model training parameters. Model training parameters determine the model's precision and co", + "doc_type":"usermanual", + "kw":"Model Training,Basic Knowledge,User Guide", + "title":"Model Training", + "githuburl":"" + }, + { + "uri":"modelarts_01_0015.html", + "product_code":"modelarts", + "code":"11", + "des":"Generally, AI model deployment and large-scale implementation are complex.ModelArts resolves this issue by deploying a trained model on different devices in various scena", + "doc_type":"usermanual", + "kw":"Model Deployment,Basic Knowledge,User Guide", + "title":"Model Deployment", + "githuburl":"" + }, + { + "uri":"modelarts_01_0016.html", + "product_code":"modelarts", + "code":"12", + "des":"To implement AI in various industries, AI model development must be simplified. Currently, only a few algorithm engineers and researchers are capable of AI development an", + "doc_type":"usermanual", + "kw":"ExeML,Basic Knowledge,User Guide", + "title":"ExeML", + "githuburl":"" + }, + { + "uri":"modelarts_01_0006.html", + "product_code":"modelarts", + "code":"13", + "des":"ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object S", + "doc_type":"usermanual", + "kw":"Related Services,Service Overview,User Guide", + "title":"Related Services", + "githuburl":"" + }, + { + "uri":"modelarts_01_0017.html", + "product_code":"modelarts", + "code":"14", + "des":"If you need to assign different permissions to different employees in your enterprise to access ModelArts resources, IAM is a good choice for fine-grained permissions man", + "doc_type":"usermanual", + "kw":"Permissions Management,Service Overview,User Guide", + "title":"Permissions Management", + "githuburl":"" + }, + { + "uri":"modelarts_08_0000.html", + "product_code":"modelarts", + "code":"15", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Preparations", + "title":"Preparations", + "githuburl":"" + }, + { + "uri":"modelarts_08_0006.html", + "product_code":"modelarts", + "code":"16", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Configuring Access Authorization (Global Configuration)", + "title":"Configuring Access Authorization (Global Configuration)", + "githuburl":"" + }, + { + "uri":"modelarts_08_0005.html", + "product_code":"modelarts", + "code":"17", + "des":"When you use ExeML, data management, notebook instances, training jobs, models, and services, ModelArts may need to access dependent services such as OBS and Software Rep", + "doc_type":"usermanual", + "kw":"Overview,Configuring Access Authorization (Global Configuration),User Guide", + "title":"Overview", + "githuburl":"" + }, + { + "uri":"modelarts_08_0007.html", + "product_code":"modelarts", + "code":"18", + "des":"An agency is used to delegate ModelArts the operation permissions for dependent services such as OBS and SWR. Before using ModelArts, you need to complete agency authoriz", + "doc_type":"usermanual", + "kw":"Configuring Agency Authorization (Recommended),Configuring Access Authorization (Global Configuratio", + "title":"Configuring Agency Authorization (Recommended)", + "githuburl":"" + }, + { + "uri":"modelarts_08_0002.html", + "product_code":"modelarts", + "code":"19", + "des":"To use an access key pair for authorization, you need to obtain the access key pair first and then add the access key pair on the ModelArts management console. If your ac", + "doc_type":"usermanual", + "kw":"Configuring Access Key Authorization,Configuring Access Authorization (Global Configuration),User Gu", + "title":"Configuring Access Key Authorization", + "githuburl":"" + }, + { + "uri":"modelarts_08_0003.html", + "product_code":"modelarts", + "code":"20", + "des":"ModelArts uses OBS to store data and model backups and snapshots, achieving secure, reliable, and low-cost storage. Therefore, before using ModelArts, create an OBS bucke", + "doc_type":"usermanual", + "kw":"Creating an OBS Bucket,Preparations,User Guide", + "title":"Creating an OBS Bucket", + "githuburl":"" + }, + { + "uri":"modelarts_21_0000.html", + "product_code":"modelarts", + "code":"21", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"ExeML", + "title":"ExeML", + "githuburl":"" + }, + { + "uri":"modelarts_21_0001.html", + "product_code":"modelarts", + "code":"22", + "des":"ModelArts ExeML is a customized code-free model development tool that helps users start AI application development from scratch with high flexibility. ExeML automates mod", + "doc_type":"usermanual", + "kw":"Introduction to ExeML,ExeML,User Guide", + "title":"Introduction to ExeML", + "githuburl":"" + }, + { + "uri":"modelarts_21_0002.html", + "product_code":"modelarts", + "code":"23", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Image Classification", + "title":"Image Classification", + "githuburl":"" + }, + { + "uri":"modelarts_21_0003.html", + "product_code":"modelarts", + "code":"24", + "des":"Before using ModelArts ExeML to build a model, upload data to an OBS bucket.This operation uses the OBS console to upload data. For more information about how to create a", + "doc_type":"usermanual", + "kw":"Preparing Data,Image Classification,User Guide", + "title":"Preparing Data", + "githuburl":"" + }, + { + "uri":"modelarts_21_0004.html", + "product_code":"modelarts", + "code":"25", + "des":"ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an", + "doc_type":"usermanual", + "kw":"Creating a Project,Image Classification,User Guide", + "title":"Creating a Project", + "githuburl":"" + }, + { + "uri":"modelarts_21_0005.html", + "product_code":"modelarts", + "code":"26", + "des":"Model training requires a large number of labeled images. Therefore, before model training, add labels to the images that are not labeled. ModelArts allows you to add lab", + "doc_type":"usermanual", + "kw":"Labeling Data,Image Classification,User Guide", + "title":"Labeling Data", + "githuburl":"" + }, + { + "uri":"modelarts_21_0006.html", + "product_code":"modelarts", + "code":"27", + "des":"After labeling the images, you can train a model. You can perform model training to obtain the required image classification model. Training images must be classified int", + "doc_type":"usermanual", + "kw":"Training a Model,Image Classification,User Guide", + "title":"Training a Model", + "githuburl":"" + }, + { + "uri":"modelarts_21_0007.html", + "product_code":"modelarts", + "code":"28", + "des":"You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version wi", + "doc_type":"usermanual", + "kw":"Deploying a Model as a Service,Image Classification,User Guide", + "title":"Deploying a Model as a Service", + "githuburl":"" + }, + { + "uri":"modelarts_21_0008.html", + "product_code":"modelarts", + "code":"29", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Object Detection", + "title":"Object Detection", + "githuburl":"" + }, + { + "uri":"modelarts_21_0009.html", + "product_code":"modelarts", + "code":"30", + "des":"Before using ModelArts ExeML to build a model, upload data to an OBS bucket.This operation uses the OBS console to upload data. For more information about how to create a", + "doc_type":"usermanual", + "kw":"Preparing Data,Object Detection,User Guide", + "title":"Preparing Data", + "githuburl":"" + }, + { + "uri":"modelarts_21_0010.html", + "product_code":"modelarts", + "code":"31", + "des":"ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an", + "doc_type":"usermanual", + "kw":"Creating a Project,Object Detection,User Guide", + "title":"Creating a Project", + "githuburl":"" + }, + { + "uri":"modelarts_21_0011.html", + "product_code":"modelarts", + "code":"32", + "des":"Before data labeling, consider how to design labels. The labels must correspond to the distinct characteristics of the detected images and are easy to identify (the detec", + "doc_type":"usermanual", + "kw":"Labeling Data,Object Detection,User Guide", + "title":"Labeling Data", + "githuburl":"" + }, + { + "uri":"modelarts_21_0012.html", + "product_code":"modelarts", + "code":"33", + "des":"After labeling the images, perform auto training to obtain an appropriate model version.On the ExeML page, click the name of the project that is successfully created. The", + "doc_type":"usermanual", + "kw":"Training a Model,Object Detection,User Guide", + "title":"Training a Model", + "githuburl":"" + }, + { + "uri":"modelarts_21_0013.html", + "product_code":"modelarts", + "code":"34", + "des":"You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version wi", + "doc_type":"usermanual", + "kw":"Deploying a Model as a Service,Object Detection,User Guide", + "title":"Deploying a Model as a Service", + "githuburl":"" + }, + { + "uri":"modelarts_21_0030.html", + "product_code":"modelarts", + "code":"35", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Tips", + "title":"Tips", + "githuburl":"" + }, + { + "uri":"modelarts_21_0031.html", + "product_code":"modelarts", + "code":"36", + "des":"When creating a project, select a training data path. This section describes how to quickly create an OBS bucket and folder when you select the training data path.On the ", + "doc_type":"usermanual", + "kw":"How Do I Quickly Create an OBS Bucket and a Folder When Creating a Project?,Tips,User Guide", + "title":"How Do I Quickly Create an OBS Bucket and a Folder When Creating a Project?", + "githuburl":"" + }, + { + "uri":"modelarts_21_0032.html", + "product_code":"modelarts", + "code":"37", + "des":"To add data for an existing project, perform the following operations. The operations described in this section apply only to object detection and image classification pr", + "doc_type":"usermanual", + "kw":"How Do I View the Added Data in an ExeML Project?,Tips,User Guide", + "title":"How Do I View the Added Data in an ExeML Project?", + "githuburl":"" + }, + { + "uri":"modelarts_21_0033.html", + "product_code":"modelarts", + "code":"38", + "des":"Each round of training generates a training version in an ExeML project. If a training result is unsatisfactory (for example, if the precision is not good enough), you ca", + "doc_type":"usermanual", + "kw":"How Do I Perform Incremental Training in an ExeML Project?,Tips,User Guide", + "title":"How Do I Perform Incremental Training in an ExeML Project?", + "githuburl":"" + }, + { + "uri":"modelarts_21_0034.html", + "product_code":"modelarts", + "code":"39", + "des":"For an ExeML project, after the model training is complete, the generated model is automatically displayed on the Model Management > Models page. The model name is automa", + "doc_type":"usermanual", + "kw":"Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?,Tips,User Guide", + "title":"Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?", + "githuburl":"" + }, + { + "uri":"modelarts_23_0002.html", + "product_code":"modelarts", + "code":"40", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Data Management", + "title":"Data Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0003.html", + "product_code":"modelarts", + "code":"41", + "des":"In ModelArts, you can import and label data on the Data Management page to prepare for model building. ModelArts uses datasets as the basis for model development or train", + "doc_type":"usermanual", + "kw":"Introduction to Data Management,Data Management,User Guide", + "title":"Introduction to Data Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0004.html", + "product_code":"modelarts", + "code":"42", + "des":"To manage data using ModelArts, create a dataset. Then you can perform operations on the dataset, such as labeling data, importing data, and publishing the dataset.Before", + "doc_type":"usermanual", + "kw":"Creating a Dataset,Data Management,User Guide", + "title":"Creating a Dataset", + "githuburl":"" + }, + { + "uri":"modelarts_23_0010.html", + "product_code":"modelarts", + "code":"43", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Labeling Data", + "title":"Labeling Data", + "githuburl":"" + }, + { + "uri":"modelarts_23_0011.html", + "product_code":"modelarts", + "code":"44", + "des":"Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by", + "doc_type":"usermanual", + "kw":"Image Classification,Labeling Data,User Guide", + "title":"Image Classification", + "githuburl":"" + }, + { + "uri":"modelarts_23_0012.html", + "product_code":"modelarts", + "code":"45", + "des":"Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by", + "doc_type":"usermanual", + "kw":"Object Detection,Labeling Data,User Guide", + "title":"Object Detection", + "githuburl":"" + }, + { + "uri":"modelarts_23_0345.html", + "product_code":"modelarts", + "code":"46", + "des":"Training a model uses a large number of labeled images. Therefore, label images before the model training. You can label images on the ModelArts management console. Alter", + "doc_type":"usermanual", + "kw":"Image Segmentation,Labeling Data,User Guide", + "title":"Image Segmentation", + "githuburl":"" + }, + { + "uri":"modelarts_23_0013.html", + "product_code":"modelarts", + "code":"47", + "des":"Model training requires a large amount of labeled data. Therefore, before the model training, add labels to the files that are not labeled. In addition, you can modify, d", + "doc_type":"usermanual", + "kw":"Text Classification,Labeling Data,User Guide", + "title":"Text Classification", + "githuburl":"" + }, + { + "uri":"modelarts_23_0014.html", + "product_code":"modelarts", + "code":"48", + "des":"Named entity recognition assigns labels to named entities in text, such as time and locations. Before labeling, you need to understand the following:A label name can cont", + "doc_type":"usermanual", + "kw":"Named Entity Recognition,Labeling Data,User Guide", + "title":"Named Entity Recognition", + "githuburl":"" + }, + { + "uri":"modelarts_23_0211.html", + "product_code":"modelarts", + "code":"49", + "des":"Triplet labeling is suitable for scenarios where structured information, such as subjects, predicates, and objects, needs to be labeled in statements. With this function,", + "doc_type":"usermanual", + "kw":"Text Triplet,Labeling Data,User Guide", + "title":"Text Triplet", + "githuburl":"" + }, + { + "uri":"modelarts_23_0015.html", + "product_code":"modelarts", + "code":"50", + "des":"Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files ", + "doc_type":"usermanual", + "kw":"Sound Classification,Labeling Data,User Guide", + "title":"Sound Classification", + "githuburl":"" + }, + { + "uri":"modelarts_23_0016.html", + "product_code":"modelarts", + "code":"51", + "des":"Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files ", + "doc_type":"usermanual", + "kw":"Speech Labeling,Labeling Data,User Guide", + "title":"Speech Labeling", + "githuburl":"" + }, + { + "uri":"modelarts_23_0017.html", + "product_code":"modelarts", + "code":"52", + "des":"Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files.", + "doc_type":"usermanual", + "kw":"Speech Paragraph Labeling,Labeling Data,User Guide", + "title":"Speech Paragraph Labeling", + "githuburl":"" + }, + { + "uri":"modelarts_23_0282.html", + "product_code":"modelarts", + "code":"53", + "des":"Model training requires a large amount of labeled video data. Therefore, before the model training, label the unlabeled video files. ModelArts enables you to label video ", + "doc_type":"usermanual", + "kw":"Video Labeling,Labeling Data,User Guide", + "title":"Video Labeling", + "githuburl":"" + }, + { + "uri":"modelarts_23_0005.html", + "product_code":"modelarts", + "code":"54", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Importing Data", + "title":"Importing Data", + "githuburl":"" + }, + { + "uri":"modelarts_23_0006.html", + "product_code":"modelarts", + "code":"55", + "des":"After a dataset is created, you can directly synchronize data from the dataset. Alternatively, you can import more data by importing the dataset. Data can be imported fro", + "doc_type":"usermanual", + "kw":"Import Operation,Importing Data,User Guide", + "title":"Import Operation", + "githuburl":"" + }, + { + "uri":"modelarts_23_0008.html", + "product_code":"modelarts", + "code":"56", + "des":"When a dataset is imported, the data storage directory and file name must comply with the ModelArts specifications if the data to be used is stored in OBS.Only the follow", + "doc_type":"usermanual", + "kw":"Specifications for Importing Data from an OBS Directory,Importing Data,User Guide", + "title":"Specifications for Importing Data from an OBS Directory", + "githuburl":"" + }, + { + "uri":"modelarts_23_0009.html", + "product_code":"modelarts", + "code":"57", + "des":"The manifest file defines the mapping between labeling objects and content. The Manifest file import mode means that the manifest file is used for dataset import. The man", + "doc_type":"usermanual", + "kw":"Specifications for Importing the Manifest File,Importing Data,User Guide", + "title":"Specifications for Importing the Manifest File", + "githuburl":"" + }, + { + "uri":"modelarts_23_0214.html", + "product_code":"modelarts", + "code":"58", + "des":"A dataset includes labeled and unlabeled data. You can select images or filter data based on the filter criteria and export to a new dataset or the specified OBS director", + "doc_type":"usermanual", + "kw":"Exporting Data,Data Management,User Guide", + "title":"Exporting Data", + "githuburl":"" + }, + { + "uri":"modelarts_23_0020.html", + "product_code":"modelarts", + "code":"59", + "des":"For a created dataset, you can modify its basic information to match service changes.You have created a dataset.Log in to the ModelArts management console. In the left na", + "doc_type":"usermanual", + "kw":"Modifying a Dataset,Data Management,User Guide", + "title":"Modifying a Dataset", + "githuburl":"" + }, + { + "uri":"modelarts_23_0018.html", + "product_code":"modelarts", + "code":"60", + "des":"ModelArts distinguishes data of the same source according to versions labeled at different time, which facilitates the selection of dataset versions during subsequent mod", + "doc_type":"usermanual", + "kw":"Publishing a Dataset,Data Management,User Guide", + "title":"Publishing a Dataset", + "githuburl":"" + }, + { + "uri":"modelarts_23_0021.html", + "product_code":"modelarts", + "code":"61", + "des":"If a dataset is no longer in use, you can delete it to release resources.After a dataset is deleted, if you need to delete the data in the dataset input and output paths ", + "doc_type":"usermanual", + "kw":"Deleting a Dataset,Data Management,User Guide", + "title":"Deleting a Dataset", + "githuburl":"" + }, + { + "uri":"modelarts_23_0019.html", + "product_code":"modelarts", + "code":"62", + "des":"After labeling data, you can publish the dataset to multiple versions for management. For the published versions, you can view the dataset version updates, set the curren", + "doc_type":"usermanual", + "kw":"Managing Dataset Versions,Data Management,User Guide", + "title":"Managing Dataset Versions", + "githuburl":"" + }, + { + "uri":"modelarts_23_0180.html", + "product_code":"modelarts", + "code":"63", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Team Labeling", + "title":"Team Labeling", + "githuburl":"" + }, + { + "uri":"modelarts_23_0181.html", + "product_code":"modelarts", + "code":"64", + "des":"Generally, a small data labeling task can be completed by an individual. However, team work is required to label a large dataset. ModelArts provides the team labeling fun", + "doc_type":"usermanual", + "kw":"Introduction to Team Labeling,Team Labeling,User Guide", + "title":"Introduction to Team Labeling", + "githuburl":"" + }, + { + "uri":"modelarts_23_0182.html", + "product_code":"modelarts", + "code":"65", + "des":"Team labeling is managed in a unit of teams. To enable team labeling for a dataset, a team must be specified. Multiple members can be added to a team.An account can have ", + "doc_type":"usermanual", + "kw":"Team Management,Team Labeling,User Guide", + "title":"Team Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0183.html", + "product_code":"modelarts", + "code":"66", + "des":"There is no member in a new team. You need to add members who will participate in a team labeling task.A maximum of 100 members can be added to a team. If there are more ", + "doc_type":"usermanual", + "kw":"Member Management,Team Labeling,User Guide", + "title":"Member Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0210.html", + "product_code":"modelarts", + "code":"67", + "des":"For datasets with team labeling enabled, you can create team labeling tasks and assign the labeling tasks to different teams so that team members can complete the labelin", + "doc_type":"usermanual", + "kw":"Managing Team Labeling Tasks,Team Labeling,User Guide", + "title":"Managing Team Labeling Tasks", + "githuburl":"" + }, + { + "uri":"modelarts_23_0032.html", + "product_code":"modelarts", + "code":"68", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"DevEnviron (Notebook)", + "title":"DevEnviron (Notebook)", + "githuburl":"" + }, + { + "uri":"modelarts_23_0033.html", + "product_code":"modelarts", + "code":"69", + "des":"ModelArts integrates the open-source Jupyter Notebook and JupyterLab to provide you with online interactive development and debugging environments. You can use the Notebo", + "doc_type":"usermanual", + "kw":"Introduction to Notebook,DevEnviron (Notebook),User Guide", + "title":"Introduction to Notebook", + "githuburl":"" + }, + { + "uri":"modelarts_23_0111.html", + "product_code":"modelarts", + "code":"70", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Managing Notebook Instances", + "title":"Managing Notebook Instances", + "githuburl":"" + }, + { + "uri":"modelarts_23_0034.html", + "product_code":"modelarts", + "code":"71", + "des":"Before developing a model, create a notebook instance, open it, and perform encoding.Only notebook instances in the Running state can be started.A maximum of 10 notebook ", + "doc_type":"usermanual", + "kw":"Creating a Notebook Instance,Managing Notebook Instances,User Guide", + "title":"Creating a Notebook Instance", + "githuburl":"" + }, + { + "uri":"modelarts_23_0325.html", + "product_code":"modelarts", + "code":"72", + "des":"You can open a created notebook instance (that is, an instance in the Running state) and start coding in the development environment.Go to the Jupyter Notebook page.In th", + "doc_type":"usermanual", + "kw":"Opening a Notebook Instance,Managing Notebook Instances,User Guide", + "title":"Opening a Notebook Instance", + "githuburl":"" + }, + { + "uri":"modelarts_23_0041.html", + "product_code":"modelarts", + "code":"73", + "des":"You can stop unwanted notebook instances to prevent unnecessary fees. You can also start a notebook instance that is in the Stopped state to use it again.Log in to the Mo", + "doc_type":"usermanual", + "kw":"Starting or Stopping a Notebook Instance,Managing Notebook Instances,User Guide", + "title":"Starting or Stopping a Notebook Instance", + "githuburl":"" + }, + { + "uri":"modelarts_23_0042.html", + "product_code":"modelarts", + "code":"74", + "des":"You can delete notebook instances that are no longer used to release resources.Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron ", + "doc_type":"usermanual", + "kw":"Deleting a Notebook Instance,Managing Notebook Instances,User Guide", + "title":"Deleting a Notebook Instance", + "githuburl":"" + }, + { + "uri":"modelarts_23_0035.html", + "product_code":"modelarts", + "code":"75", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Using Jupyter Notebook", + "title":"Using Jupyter Notebook", + "githuburl":"" + }, + { + "uri":"modelarts_23_0326.html", + "product_code":"modelarts", + "code":"76", + "des":"Jupyter Notebook is a web-based application for interactive computing. It can be applied to full-process computing: development, documentation, running code, and presenti", + "doc_type":"usermanual", + "kw":"Introduction to Jupyter Notebook,Using Jupyter Notebook,User Guide", + "title":"Introduction to Jupyter Notebook", + "githuburl":"" + }, + { + "uri":"modelarts_23_0120.html", + "product_code":"modelarts", + "code":"77", + "des":"This section describes common operations on Jupyter Notebook.In the notebook instance list, locate the row where the target notebook instance resides and click Open in th", + "doc_type":"usermanual", + "kw":"Common Operations on Jupyter Notebook,Using Jupyter Notebook,User Guide", + "title":"Common Operations on Jupyter Notebook", + "githuburl":"" + }, + { + "uri":"modelarts_23_0327.html", + "product_code":"modelarts", + "code":"78", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Configuring the Jupyter Notebook Environment", + "title":"Configuring the Jupyter Notebook Environment", + "githuburl":"" + }, + { + "uri":"modelarts_23_0117.html", + "product_code":"modelarts", + "code":"79", + "des":"For developers who are used to coding, the terminal function is very convenient and practical. This section describes how to enable the terminal function in a notebook in", + "doc_type":"usermanual", + "kw":"Using the Notebook Terminal Function,Configuring the Jupyter Notebook Environment,User Guide", + "title":"Using the Notebook Terminal Function", + "githuburl":"" + }, + { + "uri":"modelarts_23_0280.html", + "product_code":"modelarts", + "code":"80", + "des":"For a GPU-based notebook instance, you can switch different versions of CUDA on the Terminal page of Jupyter.CPU-based notebook instances do not use CUDA. Therefore, the ", + "doc_type":"usermanual", + "kw":"Switching the CUDA Version on the Terminal Page of a GPU-based Notebook Instance,Configuring the Jup", + "title":"Switching the CUDA Version on the Terminal Page of a GPU-based Notebook Instance", + "githuburl":"" + }, + { + "uri":"modelarts_23_0040.html", + "product_code":"modelarts", + "code":"81", + "des":"Multiple environments have been installed in ModelArts notebook instances, including TensorFlow. You can use pip install to install external libraries from a Jupyter note", + "doc_type":"usermanual", + "kw":"Installing External Libraries and Kernels in Notebook Instances,Configuring the Jupyter Notebook Env", + "title":"Installing External Libraries and Kernels in Notebook Instances", + "githuburl":"" + }, + { + "uri":"modelarts_23_0038.html", + "product_code":"modelarts", + "code":"82", + "des":"If you specify Storage Path during notebook instance creation, your compiled code will be automatically stored in your specified OBS bucket. If code invocation among diff", + "doc_type":"usermanual", + "kw":"Synchronizing Files with OBS,Using Jupyter Notebook,User Guide", + "title":"Synchronizing Files with OBS", + "githuburl":"" + }, + { + "uri":"modelarts_23_0037.html", + "product_code":"modelarts", + "code":"83", + "des":"After code compiling is finished, you can save the entered code as a .py file which can be used for starting training jobs.Create and open a notebook instance or open an ", + "doc_type":"usermanual", + "kw":"Using the Convert to Python File Function,Using Jupyter Notebook,User Guide", + "title":"Using the Convert to Python File Function", + "githuburl":"" + }, + { + "uri":"modelarts_23_0330.html", + "product_code":"modelarts", + "code":"84", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Using JupyterLab", + "title":"Using JupyterLab", + "githuburl":"" + }, + { + "uri":"modelarts_23_0209.html", + "product_code":"modelarts", + "code":"85", + "des":"JupyterLab is an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals,", + "doc_type":"usermanual", + "kw":"Introduction to JupyterLab and Common Operations,Using JupyterLab,User Guide", + "title":"Introduction to JupyterLab and Common Operations", + "githuburl":"" + }, + { + "uri":"modelarts_23_0331.html", + "product_code":"modelarts", + "code":"86", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Uploading and Downloading Data", + "title":"Uploading and Downloading Data", + "githuburl":"" + }, + { + "uri":"modelarts_23_0332.html", + "product_code":"modelarts", + "code":"87", + "des":"On the JupyterLab page, click Upload Files to upload a file. For details, see Uploading a File in Introduction to JupyterLab and Common Operations. If a message is displa", + "doc_type":"usermanual", + "kw":"Uploading Data to JupyterLab,Uploading and Downloading Data,User Guide", + "title":"Uploading Data to JupyterLab", + "githuburl":"" + }, + { + "uri":"modelarts_23_0333.html", + "product_code":"modelarts", + "code":"88", + "des":"Only files within 100 MB in JupyterLab can be downloaded to a local PC. You can perform operations in different scenarios based on the storage location selected when crea", + "doc_type":"usermanual", + "kw":"Downloading a File from JupyterLab,Uploading and Downloading Data,User Guide", + "title":"Downloading a File from JupyterLab", + "githuburl":"" + }, + { + "uri":"modelarts_23_0335.html", + "product_code":"modelarts", + "code":"89", + "des":"In notebook instances, you can use ModelArts SDKs to manage OBS, training jobs, models, and real-time services.For details about how to use ModelArts SDKs, see ModelArts ", + "doc_type":"usermanual", + "kw":"Using ModelArts SDKs,Using JupyterLab,User Guide", + "title":"Using ModelArts SDKs", + "githuburl":"" + }, + { + "uri":"modelarts_23_0043.html", + "product_code":"modelarts", + "code":"90", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Training Management", + "title":"Training Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0044.html", + "product_code":"modelarts", + "code":"91", + "des":"ModelArts provides model training for you to view the training effect, based on which you can adjust your model parameters. You can select resource pools (CPU or GPU) wit", + "doc_type":"usermanual", + "kw":"Introduction to Model Training,Training Management,User Guide", + "title":"Introduction to Model Training", + "githuburl":"" + }, + { + "uri":"modelarts_23_0235.html", + "product_code":"modelarts", + "code":"92", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Creating a Training Job", + "title":"Creating a Training Job", + "githuburl":"" + }, + { + "uri":"modelarts_23_0046.html", + "product_code":"modelarts", + "code":"93", + "des":"ModelArts supports multiple types of training jobs during the entire AI development process. Select a creation mode based on the algorithm source.Frequently-usedIf you ha", + "doc_type":"usermanual", + "kw":"Introduction to Training Jobs,Creating a Training Job,User Guide", + "title":"Introduction to Training Jobs", + "githuburl":"" + }, + { + "uri":"modelarts_23_0238.html", + "product_code":"modelarts", + "code":"94", + "des":"If you use frequently-used frameworks, such as TensorFlow and MXNet, to develop algorithms locally, you can select Frequently-used to create training jobs and build model", + "doc_type":"usermanual", + "kw":"Using Frequently-used Frameworks to Train Models,Creating a Training Job,User Guide", + "title":"Using Frequently-used Frameworks to Train Models", + "githuburl":"" + }, + { + "uri":"modelarts_23_0239.html", + "product_code":"modelarts", + "code":"95", + "des":"If the framework used for algorithm development is not a frequently-used framework, you can build an algorithm into a custom image and use the custom image to create a tr", + "doc_type":"usermanual", + "kw":"Using Custom Images to Train Models,Creating a Training Job,User Guide", + "title":"Using Custom Images to Train Models", + "githuburl":"" + }, + { + "uri":"modelarts_23_0159.html", + "product_code":"modelarts", + "code":"96", + "des":"In the training job list, click Stop in the Operation column for a training job in the Running state to stop a running training job.If you have selected Save Training Par", + "doc_type":"usermanual", + "kw":"Stopping or Deleting a Job,Training Management,User Guide", + "title":"Stopping or Deleting a Job", + "githuburl":"" + }, + { + "uri":"modelarts_23_0047.html", + "product_code":"modelarts", + "code":"97", + "des":"During model building, you may need to frequently tune the data, training parameters, or the model based on the training results to obtain a satisfactory model. ModelArts", + "doc_type":"usermanual", + "kw":"Managing Training Job Versions,Training Management,User Guide", + "title":"Managing Training Job Versions", + "githuburl":"" + }, + { + "uri":"modelarts_23_0048.html", + "product_code":"modelarts", + "code":"98", + "des":"After a training job finishes, you can manage the training job versions and check whether the training result of the job is satisfactory by viewing the job details.In the", + "doc_type":"usermanual", + "kw":"Viewing Job Details,Training Management,User Guide", + "title":"Viewing Job Details", + "githuburl":"" + }, + { + "uri":"modelarts_23_0049.html", + "product_code":"modelarts", + "code":"99", + "des":"You can store the parameter settings in ModelArts during job creation so that you can use the stored settings to create follow-up training jobs, which makes job creation ", + "doc_type":"usermanual", + "kw":"Managing Job Parameters,Training Management,User Guide", + "title":"Managing Job Parameters", + "githuburl":"" + }, + { + "uri":"modelarts_23_0050.html", + "product_code":"modelarts", + "code":"100", + "des":"You can create visualization jobs of TensorBoard and MindInsight types on ModelArts.TensorBoard supports training jobs based on the TensorFlow engine, and MindInsight sup", + "doc_type":"usermanual", + "kw":"Managing Visualization Jobs,Training Management,User Guide", + "title":"Managing Visualization Jobs", + "githuburl":"" + }, + { + "uri":"modelarts_23_0051.html", + "product_code":"modelarts", + "code":"101", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Model Management", + "title":"Model Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0052.html", + "product_code":"modelarts", + "code":"102", + "des":"AI model development and optimization require frequent iterations and debugging. Changes in datasets, training code, or parameters may affect the quality of models. If th", + "doc_type":"usermanual", + "kw":"Introduction to Model Management,Model Management,User Guide", + "title":"Introduction to Model Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0204.html", + "product_code":"modelarts", + "code":"103", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Importing a Model", + "title":"Importing a Model", + "githuburl":"" + }, + { + "uri":"modelarts_23_0054.html", + "product_code":"modelarts", + "code":"104", + "des":"You can create a training job on ModelArts and perform training to obtain a satisfactory model. Then import the model to Model Management for unified management. In addit", + "doc_type":"usermanual", + "kw":"Importing a Meta Model from a Training Job,Importing a Model,User Guide", + "title":"Importing a Meta Model from a Training Job", + "githuburl":"" + }, + { + "uri":"modelarts_23_0205.html", + "product_code":"modelarts", + "code":"105", + "des":"Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this tem", + "doc_type":"usermanual", + "kw":"Importing a Meta Model from a Template,Importing a Model,User Guide", + "title":"Importing a Meta Model from a Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0206.html", + "product_code":"modelarts", + "code":"106", + "des":"For AI engines that are not supported by ModelArts, you can import the model you compile to ModelArts from custom images.For details about the specifications and descript", + "doc_type":"usermanual", + "kw":"Importing a Meta Model from a Container Image,Importing a Model,User Guide", + "title":"Importing a Meta Model from a Container Image", + "githuburl":"" + }, + { + "uri":"modelarts_23_0207.html", + "product_code":"modelarts", + "code":"107", + "des":"In scenarios where frequently-used frameworks are used for model development and training, you can import the model to ModelArts for unified management.The model has been", + "doc_type":"usermanual", + "kw":"Importing a Meta Model from OBS,Importing a Model,User Guide", + "title":"Importing a Meta Model from OBS", + "githuburl":"" + }, + { + "uri":"modelarts_23_0055.html", + "product_code":"modelarts", + "code":"108", + "des":"To facilitate source tracing and repeated model tuning, ModelArts provides the model version management function. You can manage models based on versions.You have importe", + "doc_type":"usermanual", + "kw":"Managing Model Versions,Model Management,User Guide", + "title":"Managing Model Versions", + "githuburl":"" + }, + { + "uri":"modelarts_23_0106.html", + "product_code":"modelarts", + "code":"109", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Model Compression and Conversion", + "title":"Model Compression and Conversion", + "githuburl":"" + }, + { + "uri":"modelarts_23_0107.html", + "product_code":"modelarts", + "code":"110", + "des":"To obtain higher computing power, you can deploy the models created on ModelArts or a local PC on the Ascend chip, Arm, or GPU. In this case, you need to compress or conv", + "doc_type":"usermanual", + "kw":"Compressing and Converting Models,Model Compression and Conversion,User Guide", + "title":"Compressing and Converting Models", + "githuburl":"" + }, + { + "uri":"modelarts_23_0108.html", + "product_code":"modelarts", + "code":"111", + "des":"The requirements for converting the models run on the Ascend chip are as follows:For TensorFlow-based models (in frozen_graph or saved_model format), the input path must ", + "doc_type":"usermanual", + "kw":"Model Input Path Specifications,Model Compression and Conversion,User Guide", + "title":"Model Input Path Specifications", + "githuburl":"" + }, + { + "uri":"modelarts_23_0109.html", + "product_code":"modelarts", + "code":"112", + "des":"The following describes the output path of the model run on the Ascend chip after conversion:For TensorFlow-based models, the output path must comply with the following s", + "doc_type":"usermanual", + "kw":"Model Output Path Description,Model Compression and Conversion,User Guide", + "title":"Model Output Path Description", + "githuburl":"" + }, + { + "uri":"modelarts_23_0110.html", + "product_code":"modelarts", + "code":"113", + "des":"ModelArts provides the following conversion templates based on different AI frameworks:TF-FrozenGraph-To-Ascend-C32Convert the model trained by the TensorFlow framework a", + "doc_type":"usermanual", + "kw":"Conversion Templates,Model Compression and Conversion,User Guide", + "title":"Conversion Templates", + "githuburl":"" + }, + { + "uri":"modelarts_23_0057.html", + "product_code":"modelarts", + "code":"114", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Model Deployment", + "title":"Model Deployment", + "githuburl":"" + }, + { + "uri":"modelarts_23_0058.html", + "product_code":"modelarts", + "code":"115", + "des":"After a training job is complete and a model is generated, you can deploy the model on the Service Deployment page. You can also deploy the model imported from OBS. Model", + "doc_type":"usermanual", + "kw":"Introduction to Model Deployment,Model Deployment,User Guide", + "title":"Introduction to Model Deployment", + "githuburl":"" + }, + { + "uri":"modelarts_23_0059.html", + "product_code":"modelarts", + "code":"116", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Real-Time Services", + "title":"Real-Time Services", + "githuburl":"" + }, + { + "uri":"modelarts_23_0060.html", + "product_code":"modelarts", + "code":"117", + "des":"After a model is prepared, you can deploy the model as a real-time service and predict and call the service.A maximum of 20 real-time services can be deployed by a user.D", + "doc_type":"usermanual", + "kw":"Deploying a Model as a Real-Time Service,Real-Time Services,User Guide", + "title":"Deploying a Model as a Real-Time Service", + "githuburl":"" + }, + { + "uri":"modelarts_23_0061.html", + "product_code":"modelarts", + "code":"118", + "des":"After a model is deployed as a real-time service, you can access the service page to view its details.Log in to the ModelArts management console and choose Service Deploy", + "doc_type":"usermanual", + "kw":"Viewing Service Details,Real-Time Services,User Guide", + "title":"Viewing Service Details", + "githuburl":"" + }, + { + "uri":"modelarts_23_0062.html", + "product_code":"modelarts", + "code":"119", + "des":"After a model is deployed as a real-time service, you can debug code or add files for testing on the Prediction tab page. Based on the input request (JSON text or file) d", + "doc_type":"usermanual", + "kw":"Testing a Service,Real-Time Services,User Guide", + "title":"Testing a Service", + "githuburl":"" + }, + { + "uri":"modelarts_23_0063.html", + "product_code":"modelarts", + "code":"120", + "des":"If a real-time service is in the Running state, the real-time service has been deployed successfully. This service provides a standard RESTful API for users to call. Befo", + "doc_type":"usermanual", + "kw":"Accessing a Real-Time Service (Token-based Authentication),Real-Time Services,User Guide", + "title":"Accessing a Real-Time Service (Token-based Authentication)", + "githuburl":"" + }, + { + "uri":"modelarts_23_0065.html", + "product_code":"modelarts", + "code":"121", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Batch Services", + "title":"Batch Services", + "githuburl":"" + }, + { + "uri":"modelarts_23_0066.html", + "product_code":"modelarts", + "code":"122", + "des":"After a model is prepared, you can deploy it as a batch service. The Service Deployment > Batch Services page lists all batch services. You can enter a service name in th", + "doc_type":"usermanual", + "kw":"Deploying a Model as a Batch Service,Batch Services,User Guide", + "title":"Deploying a Model as a Batch Service", + "githuburl":"" + }, + { + "uri":"modelarts_23_0067.html", + "product_code":"modelarts", + "code":"123", + "des":"When deploying a batch service, you can select the location of the output data directory. You can view the running result of the batch service that is in the Running comp", + "doc_type":"usermanual", + "kw":"Viewing the Batch Service Prediction Result,Batch Services,User Guide", + "title":"Viewing the Batch Service Prediction Result", + "githuburl":"" + }, + { + "uri":"modelarts_23_0071.html", + "product_code":"modelarts", + "code":"124", + "des":"For a deployed service, you can modify its basic information to match service changes. You can modify the basic information about a service in either of the following way", + "doc_type":"usermanual", + "kw":"Modifying a Service,Model Deployment,User Guide", + "title":"Modifying a Service", + "githuburl":"" + }, + { + "uri":"modelarts_23_0072.html", + "product_code":"modelarts", + "code":"125", + "des":"You can start services in the Successful, Abnormal, or Stopped status. Services in the Deploying status cannot be started. You can start a service in either of the follow", + "doc_type":"usermanual", + "kw":"Starting or Stopping a Service,Model Deployment,User Guide", + "title":"Starting or Stopping a Service", + "githuburl":"" + }, + { + "uri":"modelarts_23_0073.html", + "product_code":"modelarts", + "code":"126", + "des":"If a service is no longer in use, you can delete it to release resources.Log in to the ModelArts management console and choose Service Deployment from the left navigation", + "doc_type":"usermanual", + "kw":"Deleting a Service,Model Deployment,User Guide", + "title":"Deleting a Service", + "githuburl":"" + }, + { + "uri":"modelarts_23_0076.html", + "product_code":"modelarts", + "code":"127", + "des":"When using ModelArts to implement AI Development Lifecycle, you can use two different resource pools to train and deploy models.Public Resource Pool: provides public larg", + "doc_type":"usermanual", + "kw":"Resource Pools,User Guide", + "title":"Resource Pools", + "githuburl":"" + }, + { + "uri":"modelarts_23_0083.html", + "product_code":"modelarts", + "code":"128", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Custom Images", + "title":"Custom Images", + "githuburl":"" + }, + { + "uri":"modelarts_23_0084.html", + "product_code":"modelarts", + "code":"129", + "des":"ModelArts provides multiple frequently-used built-in engines. However, when users have special requirements for the deep learning engine and development library, the buil", + "doc_type":"usermanual", + "kw":"Introduction to Custom Images,Custom Images,User Guide", + "title":"Introduction to Custom Images", + "githuburl":"" + }, + { + "uri":"modelarts_23_0085.html", + "product_code":"modelarts", + "code":"130", + "des":"ModelArts allows you to use custom images to create training jobs and import models. Before creating and uploading a custom image, understand the following information:So", + "doc_type":"usermanual", + "kw":"Creating and Uploading a Custom Image,Custom Images,User Guide", + "title":"Creating and Uploading a Custom Image", + "githuburl":"" + }, + { + "uri":"modelarts_23_0216.html", + "product_code":"modelarts", + "code":"131", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"For Training Models", + "title":"For Training Models", + "githuburl":"" + }, + { + "uri":"modelarts_23_0217.html", + "product_code":"modelarts", + "code":"132", + "des":"When creating an image using locally developed models and training scripts, ensure that they meet the specifications defined by ModelArts.Custom images cannot contain mal", + "doc_type":"usermanual", + "kw":"Specifications for Custom Images Used for Training Jobs,For Training Models,User Guide", + "title":"Specifications for Custom Images Used for Training Jobs", + "githuburl":"" + }, + { + "uri":"modelarts_23_0087.html", + "product_code":"modelarts", + "code":"133", + "des":"After creating and uploading a custom image to SWR, you can use the image to create a training job on the ModelArts management console to complete model training.You have", + "doc_type":"usermanual", + "kw":"Creating a Training Job Using a Custom Image (GPU),For Training Models,User Guide", + "title":"Creating a Training Job Using a Custom Image (GPU)", + "githuburl":"" + }, + { + "uri":"modelarts_23_0218.html", + "product_code":"modelarts", + "code":"134", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"For Importing Models", + "title":"For Importing Models", + "githuburl":"" + }, + { + "uri":"modelarts_23_0219.html", + "product_code":"modelarts", + "code":"135", + "des":"When creating an image using locally developed models, ensure that they meet the specifications defined by ModelArts.Custom images cannot contain malicious code.The size ", + "doc_type":"usermanual", + "kw":"Specifications for Custom Images Used for Importing Models,For Importing Models,User Guide", + "title":"Specifications for Custom Images Used for Importing Models", + "githuburl":"" + }, + { + "uri":"modelarts_23_0086.html", + "product_code":"modelarts", + "code":"136", + "des":"After creating and uploading a custom image to SWR, you can use the image to import a model and deploy the model as a service on the ModelArts management console.You have", + "doc_type":"usermanual", + "kw":"Importing a Model Using a Custom Image,For Importing Models,User Guide", + "title":"Importing a Model Using a Custom Image", + "githuburl":"" + }, + { + "uri":"modelarts_23_0090.html", + "product_code":"modelarts", + "code":"137", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Model Package Specifications", + "title":"Model Package Specifications", + "githuburl":"" + }, + { + "uri":"modelarts_23_0091.html", + "product_code":"modelarts", + "code":"138", + "des":"When you import models in Model Management, if the meta model is imported from OBS or a container image, the model package must meet the following specifications:The mode", + "doc_type":"usermanual", + "kw":"Model Package Specifications,Model Package Specifications,User Guide", + "title":"Model Package Specifications", + "githuburl":"" + }, + { + "uri":"modelarts_23_0092.html", + "product_code":"modelarts", + "code":"139", + "des":"A model developer needs to compile a configuration file when publishing a model. The model configuration file describes the model usage, computing framework, precision, i", + "doc_type":"usermanual", + "kw":"Specifications for Compiling the Model Configuration File,Model Package Specifications,User Guide", + "title":"Specifications for Compiling the Model Configuration File", + "githuburl":"" + }, + { + "uri":"modelarts_23_0093.html", + "product_code":"modelarts", + "code":"140", + "des":"This section describes how to compile model inference code in ModelArts. The following also provides an example of inference code for the TensorFlow engine and an example", + "doc_type":"usermanual", + "kw":"Specifications for Compiling Model Inference Code,Model Package Specifications,User Guide", + "title":"Specifications for Compiling Model Inference Code", + "githuburl":"" + }, + { + "uri":"modelarts_23_0097.html", + "product_code":"modelarts", + "code":"141", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Model Templates", + "title":"Model Templates", + "githuburl":"" + }, + { + "uri":"modelarts_23_0098.html", + "product_code":"modelarts", + "code":"142", + "des":"Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this tem", + "doc_type":"usermanual", + "kw":"Introduction to Model Templates,Model Templates,User Guide", + "title":"Introduction to Model Templates", + "githuburl":"" + }, + { + "uri":"modelarts_23_0118.html", + "product_code":"modelarts", + "code":"143", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Template Description", + "title":"Template Description", + "githuburl":"" + }, + { + "uri":"modelarts_23_0162.html", + "product_code":"modelarts", + "code":"144", + "des":"AI engine: TensorFlow 1.8; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or appl", + "doc_type":"usermanual", + "kw":"TensorFlow-py36 General Template,Template Description,User Guide", + "title":"TensorFlow-py36 General Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0164.html", + "product_code":"modelarts", + "code":"145", + "des":"AI engine: MXNet 1.2.1; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or applica", + "doc_type":"usermanual", + "kw":"MXNet-py36 General Template,Template Description,User Guide", + "title":"MXNet-py36 General Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0166.html", + "product_code":"modelarts", + "code":"146", + "des":"AI engine: PyTorch 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or applica", + "doc_type":"usermanual", + "kw":"PyTorch-py36 General Template,Template Description,User Guide", + "title":"PyTorch-py36 General Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0169.html", + "product_code":"modelarts", + "code":"147", + "des":"AI engine: CPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or", + "doc_type":"usermanual", + "kw":"Caffe-CPU-py36 General Template,Template Description,User Guide", + "title":"Caffe-CPU-py36 General Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0170.html", + "product_code":"modelarts", + "code":"148", + "des":"AI engine: GPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or", + "doc_type":"usermanual", + "kw":"Caffe-GPU-py36 General Template,Template Description,User Guide", + "title":"Caffe-GPU-py36 General Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0254.html", + "product_code":"modelarts", + "code":"149", + "des":"AI engine: MindSpore; Environment: Python 3.5; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or applicati", + "doc_type":"usermanual", + "kw":"Arm-Ascend Template,Template Description,User Guide", + "title":"Arm-Ascend Template", + "githuburl":"" + }, + { + "uri":"modelarts_23_0099.html", + "product_code":"modelarts", + "code":"150", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Input and Output Modes", + "title":"Input and Output Modes", + "githuburl":"" + }, + { + "uri":"modelarts_23_0100.html", + "product_code":"modelarts", + "code":"151", + "des":"This is a built-in input and output mode for object detection. The models using this mode are identified as object detection models. The prediction request path is /, the", + "doc_type":"usermanual", + "kw":"Built-in Object Detection Mode,Input and Output Modes,User Guide", + "title":"Built-in Object Detection Mode", + "githuburl":"" + }, + { + "uri":"modelarts_23_0101.html", + "product_code":"modelarts", + "code":"152", + "des":"The built-in image processing input and output mode can be applied to models such as image classification, object detection, and image semantic segmentation. The predicti", + "doc_type":"usermanual", + "kw":"Built-in Image Processing Mode,Input and Output Modes,User Guide", + "title":"Built-in Image Processing Mode", + "githuburl":"" + }, + { + "uri":"modelarts_23_0102.html", + "product_code":"modelarts", + "code":"153", + "des":"This is a built-in input and output mode for predictive analytics. The models using this mode are identified as predictive analytics models. The prediction request path i", + "doc_type":"usermanual", + "kw":"Built-in Predictive Analytics Mode,Input and Output Modes,User Guide", + "title":"Built-in Predictive Analytics Mode", + "githuburl":"" + }, + { + "uri":"modelarts_23_0103.html", + "product_code":"modelarts", + "code":"154", + "des":"The undefined mode does not define the input and output mode. The input and output mode is determined by the model. Select this mode only when the existing input and outp", + "doc_type":"usermanual", + "kw":"Undefined Mode,Input and Output Modes,User Guide", + "title":"Undefined Mode", + "githuburl":"" + }, + { + "uri":"modelarts_23_0172.html", + "product_code":"modelarts", + "code":"155", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Examples of Custom Scripts", + "title":"Examples of Custom Scripts", + "githuburl":"" + }, + { + "uri":"modelarts_23_0173.html", + "product_code":"modelarts", + "code":"156", + "des":"TensorFlow has two types of APIs: Keras and tf. Keras and tf use different code for training and saving models, but the same code for inference.", + "doc_type":"usermanual", + "kw":"TensorFlow,Examples of Custom Scripts,User Guide", + "title":"TensorFlow", + "githuburl":"" + }, + { + "uri":"modelarts_23_0175.html", + "product_code":"modelarts", + "code":"157", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"PyTorch,Examples of Custom Scripts,User Guide", + "title":"PyTorch", + "githuburl":"" + }, + { + "uri":"modelarts_23_0176.html", + "product_code":"modelarts", + "code":"158", + "des":"lenet_train_test.prototxt filelenet_solver.prototxt fileTrain the model.The caffemodel file is generated after model training. Rewrite the lenet_train_test.prototxt file ", + "doc_type":"usermanual", + "kw":"Caffe,Examples of Custom Scripts,User Guide", + "title":"Caffe", + "githuburl":"" + }, + { + "uri":"modelarts_23_0177.html", + "product_code":"modelarts", + "code":"159", + "des":"After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publish", + "doc_type":"usermanual", + "kw":"XGBoost,Examples of Custom Scripts,User Guide", + "title":"XGBoost", + "githuburl":"" + }, + { + "uri":"modelarts_23_0178.html", + "product_code":"modelarts", + "code":"160", + "des":"After the model is saved, it must be uploaded to the OBS directory before being published. The config.json configuration and customize_service.py must be contained during", + "doc_type":"usermanual", + "kw":"PySpark,Examples of Custom Scripts,User Guide", + "title":"PySpark", + "githuburl":"" + }, + { + "uri":"modelarts_23_0179.html", + "product_code":"modelarts", + "code":"161", + "des":"After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publish", + "doc_type":"usermanual", + "kw":"Scikit Learn,Examples of Custom Scripts,User Guide", + "title":"Scikit Learn", + "githuburl":"" + }, + { + "uri":"modelarts_23_0077.html", + "product_code":"modelarts", + "code":"162", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Permissions Management", + "title":"Permissions Management", + "githuburl":"" + }, + { + "uri":"modelarts_23_0078.html", + "product_code":"modelarts", + "code":"163", + "des":"A fine-grained policy is a set of permissions defining which operations on which cloud services can be performed. Each policy can define multiple permissions. After a pol", + "doc_type":"usermanual", + "kw":"Basic Concepts,Permissions Management,User Guide", + "title":"Basic Concepts", + "githuburl":"" + }, + { + "uri":"modelarts_23_0079.html", + "product_code":"modelarts", + "code":"164", + "des":"A fine-grained policy consists of the policy version (the Version field) and statement (the Statement field).Version: Distinguishes between role-based access control (RBA", + "doc_type":"usermanual", + "kw":"Creating a User and Granting Permissions,Permissions Management,User Guide", + "title":"Creating a User and Granting Permissions", + "githuburl":"" + }, + { + "uri":"modelarts_23_0080.html", + "product_code":"modelarts", + "code":"165", + "des":"If default policies cannot meet the requirements on fine-grained access control, you can create custom policies and assign the policies to the user group.You can create c", + "doc_type":"usermanual", + "kw":"Creating a Custom Policy,Permissions Management,User Guide", + "title":"Creating a Custom Policy", + "githuburl":"" + }, + { + "uri":"modelarts_23_0186.html", + "product_code":"modelarts", + "code":"166", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Monitoring", + "title":"Monitoring", + "githuburl":"" + }, + { + "uri":"modelarts_23_0187.html", + "product_code":"modelarts", + "code":"167", + "des":"The cloud service platform provides Cloud Eye to help you better understand the status of your ModelArts real-time services and models. You can use Cloud Eye to automatic", + "doc_type":"usermanual", + "kw":"ModelArts Metrics,Monitoring,User Guide", + "title":"ModelArts Metrics", + "githuburl":"" + }, + { + "uri":"modelarts_23_0188.html", + "product_code":"modelarts", + "code":"168", + "des":"Setting alarm rules allows you to customize the monitored objects and notification policies so that you can know the status of ModelArts real-time services and models in ", + "doc_type":"usermanual", + "kw":"Setting Alarm Rules,Monitoring,User Guide", + "title":"Setting Alarm Rules", + "githuburl":"" + }, + { + "uri":"modelarts_23_0189.html", + "product_code":"modelarts", + "code":"169", + "des":"Cloud Eye on the cloud service platform monitors the status of ModelArts real-time services and model loads. You can obtain the monitoring metrics of each ModelArts real-", + "doc_type":"usermanual", + "kw":"Viewing Monitoring Metrics,Monitoring,User Guide", + "title":"Viewing Monitoring Metrics", + "githuburl":"" + }, + { + "uri":"modelarts_05_0000.html", + "product_code":"modelarts", + "code":"170", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"FAQs", + "title":"FAQs", + "githuburl":"" + }, + { + "uri":"modelarts_05_0014.html", + "product_code":"modelarts", + "code":"171", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"General Issues", + "title":"General Issues", + "githuburl":"" + }, + { + "uri":"modelarts_05_0001.html", + "product_code":"modelarts", + "code":"172", + "des":"ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and", + "doc_type":"usermanual", + "kw":"What Is ModelArts?,General Issues,User Guide", + "title":"What Is ModelArts?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0003.html", + "product_code":"modelarts", + "code":"173", + "des":"ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object S", + "doc_type":"usermanual", + "kw":"What Are the Relationships Between ModelArts and Other Services,General Issues,User Guide", + "title":"What Are the Relationships Between ModelArts and Other Services", + "githuburl":"" + }, + { + "uri":"modelarts_05_0004.html", + "product_code":"modelarts", + "code":"174", + "des":"Log in to the console, enter the My Credentials page, and choose Access Keys > Create Access Key.In the Create Access Key dialog box that is displayed, use the login pass", + "doc_type":"usermanual", + "kw":"How Do I Obtain Access Keys?,General Issues,User Guide", + "title":"How Do I Obtain Access Keys?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0013.html", + "product_code":"modelarts", + "code":"175", + "des":"Before using ModelArts to develop AI models, data needs to be uploaded to an OBS bucket. You can log in to the OBS console to create an OBS bucket, create a folder, and u", + "doc_type":"usermanual", + "kw":"How Do I Upload Data to OBS?,General Issues,User Guide", + "title":"How Do I Upload Data to OBS?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0128.html", + "product_code":"modelarts", + "code":"176", + "des":"Supported AI frameworks and versions of ModelArts vary slightly based on the development environment, training jobs, and model inference (model management and deployment)", + "doc_type":"usermanual", + "kw":"Which AI Frameworks Does ModelArts Support?,General Issues,User Guide", + "title":"Which AI Frameworks Does ModelArts Support?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0015.html", + "product_code":"modelarts", + "code":"177", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"ExeML", + "title":"ExeML", + "githuburl":"" + }, + { + "uri":"modelarts_05_0002.html", + "product_code":"modelarts", + "code":"178", + "des":"ExeML is the process of automating model design, parameter tuning, and model training, compression, and deployment with the labeled data. The process is free of coding an", + "doc_type":"usermanual", + "kw":"What Is ExeML?,ExeML,User Guide", + "title":"What Is ExeML?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0018.html", + "product_code":"modelarts", + "code":"179", + "des":"Image classification is an image processing method that separates different classes of targets according to the features reflected in the images. With quantitative analys", + "doc_type":"usermanual", + "kw":"What Are Image Classification and Object Detection?,ExeML,User Guide", + "title":"What Are Image Classification and Object Detection?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0005.html", + "product_code":"modelarts", + "code":"180", + "des":"The Train button turns to be available when the training images for an image classification project are classified into at least two categories, and each category contain", + "doc_type":"usermanual", + "kw":"What Should I Do When the Train Button Is Unavailable After I Create an Image Classification Project", + "title":"What Should I Do When the Train Button Is Unavailable After I Create an Image Classification Project and Label the Images?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0006.html", + "product_code":"modelarts", + "code":"181", + "des":"Yes. You can add multiple labels to an image.", + "doc_type":"usermanual", + "kw":"Can I Add Multiple Labels to an Image for an Object Detection Project?,ExeML,User Guide", + "title":"Can I Add Multiple Labels to an Image for an Object Detection Project?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0008.html", + "product_code":"modelarts", + "code":"182", + "des":"Models created in ExeML are deployed as real-time services. You can add images or compile code to test the services, as well as call the APIs using the URLs.After model d", + "doc_type":"usermanual", + "kw":"What Type of Service Is Deployed in ExeML?,ExeML,User Guide", + "title":"What Type of Service Is Deployed in ExeML?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0010.html", + "product_code":"modelarts", + "code":"183", + "des":"Images in JPG, JPEG, PNG, or BMP format are supported.", + "doc_type":"usermanual", + "kw":"What Formats of Images Are Supported by Object Detection or Image Classification Projects?,ExeML,Use", + "title":"What Formats of Images Are Supported by Object Detection or Image Classification Projects?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0101.html", + "product_code":"modelarts", + "code":"184", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Data Management", + "title":"Data Management", + "githuburl":"" + }, + { + "uri":"modelarts_05_0103.html", + "product_code":"modelarts", + "code":"185", + "des":"Failed to use the manifest file of the published dataset to import data again.Data has been changed in the OBS directory of the published dataset, for example, images hav", + "doc_type":"usermanual", + "kw":"Why Does Data Fail to Be Imported Using the Manifest File?,Data Management,User Guide", + "title":"Why Does Data Fail to Be Imported Using the Manifest File?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0020.html", + "product_code":"modelarts", + "code":"186", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Development Environment", + "title":"Development Environment", + "githuburl":"" + }, + { + "uri":"modelarts_05_0067.html", + "product_code":"modelarts", + "code":"187", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Notebook", + "title":"Notebook", + "githuburl":"" + }, + { + "uri":"modelarts_05_0071.html", + "product_code":"modelarts", + "code":"188", + "des":"Log in to the ModelArts management console, and choose DevEnviron > Notebooks.In the notebook list, click Open in the Operation column of the target notebook instance to ", + "doc_type":"usermanual", + "kw":"How Do I Enable the Terminal Function in DevEnviron of ModelArts?,Notebook,User Guide", + "title":"How Do I Enable the Terminal Function in DevEnviron of ModelArts?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0045.html", + "product_code":"modelarts", + "code":"189", + "des":"Data may be stored in OBS or EVS, depending on which kind of storage you have configured for your Notebook instances:OBSAfter you click upload, the data is directly uploa", + "doc_type":"usermanual", + "kw":"Where Will the Data Be Uploaded to?,Notebook,User Guide", + "title":"Where Will the Data Be Uploaded to?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0080.html", + "product_code":"modelarts", + "code":"190", + "des":"/cache is a temporary directory and will not be saved. After an instance using OBS storage is stopped, data in the ~work directory will be deleted. After a notebook insta", + "doc_type":"usermanual", + "kw":"Do Files in /cache Still Exist After a Notebook Instance is Stopped or Restarted? How Do I Avoid a R", + "title":"Do Files in /cache Still Exist After a Notebook Instance is Stopped or Restarted? How Do I Avoid a Restart?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0081.html", + "product_code":"modelarts", + "code":"191", + "des":"Log in to the ModelArts management console, and choose DevEnviron > Notebooks.In the Operation column of the target notebook instance in the notebook list, click Open to ", + "doc_type":"usermanual", + "kw":"Where Is Data Stored After the Sync OBS Function Is Used?,Notebook,User Guide", + "title":"Where Is Data Stored After the Sync OBS Function Is Used?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0030.html", + "product_code":"modelarts", + "code":"192", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Training Jobs", + "title":"Training Jobs", + "githuburl":"" + }, + { + "uri":"modelarts_05_0031.html", + "product_code":"modelarts", + "code":"193", + "des":"The code directory for creating a training job has limits on the size and number of files.Delete the files except the code from the code directory or save the files in ot", + "doc_type":"usermanual", + "kw":"What Can I Do If the Message \"Object directory size/quantity exceeds the limit\" Is Displayed When I ", + "title":"What Can I Do If the Message \"Object directory size/quantity exceeds the limit\" Is Displayed When I Create a Training Job?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0032.html", + "product_code":"modelarts", + "code":"194", + "des":"When you use ModelArts, your data is stored in the OBS bucket. The data has a corresponding OBS path, for example, bucket_name/dir/image.jpg. ModelArts training jobs run ", + "doc_type":"usermanual", + "kw":"Error Message \"No such file or directory\" Displayed in Training Job Logs,Training Jobs,User Guide", + "title":"Error Message \"No such file or directory\" Displayed in Training Job Logs", + "githuburl":"" + }, + { + "uri":"modelarts_05_0063.html", + "product_code":"modelarts", + "code":"195", + "des":"When a model references a dependency package, select a frequently-used framework to create training jobs. In addition, place the required file or installation package in ", + "doc_type":"usermanual", + "kw":"How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?,Training Jobs,Use", + "title":"How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0090.html", + "product_code":"modelarts", + "code":"196", + "des":"When creating a training job, you can select CPU, GPU, or Ascend resources based on the size of the training job.ModelArts mounts the disk to the /cache directory. You ca", + "doc_type":"usermanual", + "kw":"What Are Sizes of the /cache Directories for Different Resource Specifications in the Training Envir", + "title":"What Are Sizes of the /cache Directories for Different Resource Specifications in the Training Environment?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0016.html", + "product_code":"modelarts", + "code":"197", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Model Management", + "title":"Model Management", + "githuburl":"" + }, + { + "uri":"modelarts_05_0124.html", + "product_code":"modelarts", + "code":"198", + "des":"ModelArts allows you to upload local models to OBS or import models stored in OBS directly into ModelArts.For details about how to import a model from OBS, see Importing ", + "doc_type":"usermanual", + "kw":"How Do I Import a Model Downloaded from OBS to ModelArts?,Model Management,User Guide", + "title":"How Do I Import a Model Downloaded from OBS to ModelArts?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0017.html", + "product_code":"modelarts", + "code":"199", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Service Deployment", + "title":"Service Deployment", + "githuburl":"" + }, + { + "uri":"modelarts_05_0012.html", + "product_code":"modelarts", + "code":"200", + "des":"Currently, models can only be deployed as real-time services and batch services.", + "doc_type":"usermanual", + "kw":"What Types of Services Can Models Be Deployed as on ModelArts?,Service Deployment,User Guide", + "title":"What Types of Services Can Models Be Deployed as on ModelArts?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0100.html", + "product_code":"modelarts", + "code":"201", + "des":"Before importing a model, you need to place the corresponding inference code and configuration file in the model folder. When encoding with Python, you are advised to use", + "doc_type":"usermanual", + "kw":"What Should I Do If a Conflict Occurs When Deploying a Model As a Real-Time Service?,Service Deploym", + "title":"What Should I Do If a Conflict Occurs When Deploying a Model As a Real-Time Service?", + "githuburl":"" + }, + { + "uri":"modelarts_05_0161.html", + "product_code":"modelarts", + "code":"202", + "des":"When importing a model from OBS or a container image, compile a model configuration file. The model configuration file describes the model usage, computing framework, pre", + "doc_type":"usermanual", + "kw":"How Do I Describe the Dependencies Between Installation Packages and Model Configuration Files When ", + "title":"How Do I Describe the Dependencies Between Installation Packages and Model Configuration Files When a Model Is Imported?", + "githuburl":"" + }, + { + "uri":"modelarts_04_0099.html", + "product_code":"modelarts", + "code":"203", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"usermanual", + "kw":"Change History,User Guide", + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/modelarts/umn/CLASS.TXT.json b/modelarts/umn/CLASS.TXT.json new file mode 100644 index 000000000..2febf649e --- /dev/null +++ b/modelarts/umn/CLASS.TXT.json @@ -0,0 +1,1829 @@ +[ + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Service Overview", + "uri":"modelarts_01_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"1" + }, + { + "desc":"ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and", + "product_code":"modelarts", + "title":"What Is ModelArts?", + "uri":"modelarts_01_0001.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"2" + }, + { + "desc":"AI engineers face challenges in the installation and configuration of various AI tools, data preparation, and model training. To address these challenges, the one-stop AI", + "product_code":"modelarts", + "title":"Functions", + "uri":"modelarts_01_0003.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"3" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Basic Knowledge", + "uri":"modelarts_01_0009.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"4" + }, + { + "desc":"Artificial intelligence (AI) is a technology capable of simulating human cognition through machines. The core capability of AI is to make a judgment or prediction based o", + "product_code":"modelarts", + "title":"Introduction to the AI Development Lifecycle", + "uri":"modelarts_01_0010.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"5" + }, + { + "desc":"Machine learning is classified into supervised, unsupervised, and reinforcement learning.Supervised learning uses labeled samples to adjust the parameters of classifiers ", + "product_code":"modelarts", + "title":"Basic Concepts of AI Development", + "uri":"modelarts_01_0011.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"6" + }, + { + "desc":"ExeML is the process of automating model design, parameter tuning, and model training, model compression, and model deployment with the labeled data. The process is code-", + "product_code":"modelarts", + "title":"Common Concepts of ModelArts", + "uri":"modelarts_01_0005.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"7" + }, + { + "desc":"During AI development, massive volumes of data need to be processed, and data preparation and labeling usually take more than half of the development time. ModelArts data", + "product_code":"modelarts", + "title":"Data Management", + "uri":"modelarts_01_0012.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"8" + }, + { + "desc":"It is challenging to set up a development environment, select an AI algorithm framework and algorithm, debug code, install software, and accelerate hardware. To address t", + "product_code":"modelarts", + "title":"DevEnviron", + "uri":"modelarts_01_0013.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"9" + }, + { + "desc":"In addition to data and algorithms, developers spend a lot of time configuring model training parameters. Model training parameters determine the model's precision and co", + "product_code":"modelarts", + "title":"Model Training", + "uri":"modelarts_01_0014.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"10" + }, + { + "desc":"Generally, AI model deployment and large-scale implementation are complex.ModelArts resolves this issue by deploying a trained model on different devices in various scena", + "product_code":"modelarts", + "title":"Model Deployment", + "uri":"modelarts_01_0015.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"11" + }, + { + "desc":"To implement AI in various industries, AI model development must be simplified. Currently, only a few algorithm engineers and researchers are capable of AI development an", + "product_code":"modelarts", + "title":"ExeML", + "uri":"modelarts_01_0016.html", + "doc_type":"usermanual", + "p_code":"4", + "code":"12" + }, + { + "desc":"ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object S", + "product_code":"modelarts", + "title":"Related Services", + "uri":"modelarts_01_0006.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"13" + }, + { + "desc":"If you need to assign different permissions to different employees in your enterprise to access ModelArts resources, IAM is a good choice for fine-grained permissions man", + "product_code":"modelarts", + "title":"Permissions Management", + "uri":"modelarts_01_0017.html", + "doc_type":"usermanual", + "p_code":"1", + "code":"14" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Preparations", + "uri":"modelarts_08_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"15" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Configuring Access Authorization (Global Configuration)", + "uri":"modelarts_08_0006.html", + "doc_type":"usermanual", + "p_code":"15", + "code":"16" + }, + { + "desc":"When you use ExeML, data management, notebook instances, training jobs, models, and services, ModelArts may need to access dependent services such as OBS and Software Rep", + "product_code":"modelarts", + "title":"Overview", + "uri":"modelarts_08_0005.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"17" + }, + { + "desc":"An agency is used to delegate ModelArts the operation permissions for dependent services such as OBS and SWR. Before using ModelArts, you need to complete agency authoriz", + "product_code":"modelarts", + "title":"Configuring Agency Authorization (Recommended)", + "uri":"modelarts_08_0007.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"18" + }, + { + "desc":"To use an access key pair for authorization, you need to obtain the access key pair first and then add the access key pair on the ModelArts management console. If your ac", + "product_code":"modelarts", + "title":"Configuring Access Key Authorization", + "uri":"modelarts_08_0002.html", + "doc_type":"usermanual", + "p_code":"16", + "code":"19" + }, + { + "desc":"ModelArts uses OBS to store data and model backups and snapshots, achieving secure, reliable, and low-cost storage. Therefore, before using ModelArts, create an OBS bucke", + "product_code":"modelarts", + "title":"Creating an OBS Bucket", + "uri":"modelarts_08_0003.html", + "doc_type":"usermanual", + "p_code":"15", + "code":"20" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"ExeML", + "uri":"modelarts_21_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"21" + }, + { + "desc":"ModelArts ExeML is a customized code-free model development tool that helps users start AI application development from scratch with high flexibility. ExeML automates mod", + "product_code":"modelarts", + "title":"Introduction to ExeML", + "uri":"modelarts_21_0001.html", + "doc_type":"usermanual", + "p_code":"21", + "code":"22" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Image Classification", + "uri":"modelarts_21_0002.html", + "doc_type":"usermanual", + "p_code":"21", + "code":"23" + }, + { + "desc":"Before using ModelArts ExeML to build a model, upload data to an OBS bucket.This operation uses the OBS console to upload data. For more information about how to create a", + "product_code":"modelarts", + "title":"Preparing Data", + "uri":"modelarts_21_0003.html", + "doc_type":"usermanual", + "p_code":"23", + "code":"24" + }, + { + "desc":"ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an", + "product_code":"modelarts", + "title":"Creating a Project", + "uri":"modelarts_21_0004.html", + "doc_type":"usermanual", + "p_code":"23", + "code":"25" + }, + { + "desc":"Model training requires a large number of labeled images. Therefore, before model training, add labels to the images that are not labeled. ModelArts allows you to add lab", + "product_code":"modelarts", + "title":"Labeling Data", + "uri":"modelarts_21_0005.html", + "doc_type":"usermanual", + "p_code":"23", + "code":"26" + }, + { + "desc":"After labeling the images, you can train a model. You can perform model training to obtain the required image classification model. Training images must be classified int", + "product_code":"modelarts", + "title":"Training a Model", + "uri":"modelarts_21_0006.html", + "doc_type":"usermanual", + "p_code":"23", + "code":"27" + }, + { + "desc":"You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version wi", + "product_code":"modelarts", + "title":"Deploying a Model as a Service", + "uri":"modelarts_21_0007.html", + "doc_type":"usermanual", + "p_code":"23", + "code":"28" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Object Detection", + "uri":"modelarts_21_0008.html", + "doc_type":"usermanual", + "p_code":"21", + "code":"29" + }, + { + "desc":"Before using ModelArts ExeML to build a model, upload data to an OBS bucket.This operation uses the OBS console to upload data. For more information about how to create a", + "product_code":"modelarts", + "title":"Preparing Data", + "uri":"modelarts_21_0009.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"30" + }, + { + "desc":"ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an", + "product_code":"modelarts", + "title":"Creating a Project", + "uri":"modelarts_21_0010.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"31" + }, + { + "desc":"Before data labeling, consider how to design labels. The labels must correspond to the distinct characteristics of the detected images and are easy to identify (the detec", + "product_code":"modelarts", + "title":"Labeling Data", + "uri":"modelarts_21_0011.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"32" + }, + { + "desc":"After labeling the images, perform auto training to obtain an appropriate model version.On the ExeML page, click the name of the project that is successfully created. The", + "product_code":"modelarts", + "title":"Training a Model", + "uri":"modelarts_21_0012.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"33" + }, + { + "desc":"You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version wi", + "product_code":"modelarts", + "title":"Deploying a Model as a Service", + "uri":"modelarts_21_0013.html", + "doc_type":"usermanual", + "p_code":"29", + "code":"34" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Tips", + "uri":"modelarts_21_0030.html", + "doc_type":"usermanual", + "p_code":"21", + "code":"35" + }, + { + "desc":"When creating a project, select a training data path. This section describes how to quickly create an OBS bucket and folder when you select the training data path.On the ", + "product_code":"modelarts", + "title":"How Do I Quickly Create an OBS Bucket and a Folder When Creating a Project?", + "uri":"modelarts_21_0031.html", + "doc_type":"usermanual", + "p_code":"35", + "code":"36" + }, + { + "desc":"To add data for an existing project, perform the following operations. The operations described in this section apply only to object detection and image classification pr", + "product_code":"modelarts", + "title":"How Do I View the Added Data in an ExeML Project?", + "uri":"modelarts_21_0032.html", + "doc_type":"usermanual", + "p_code":"35", + "code":"37" + }, + { + "desc":"Each round of training generates a training version in an ExeML project. If a training result is unsatisfactory (for example, if the precision is not good enough), you ca", + "product_code":"modelarts", + "title":"How Do I Perform Incremental Training in an ExeML Project?", + "uri":"modelarts_21_0033.html", + "doc_type":"usermanual", + "p_code":"35", + "code":"38" + }, + { + "desc":"For an ExeML project, after the model training is complete, the generated model is automatically displayed on the Model Management > Models page. The model name is automa", + "product_code":"modelarts", + "title":"Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?", + "uri":"modelarts_21_0034.html", + "doc_type":"usermanual", + "p_code":"35", + "code":"39" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Data Management", + "uri":"modelarts_23_0002.html", + "doc_type":"usermanual", + "p_code":"", + "code":"40" + }, + { + "desc":"In ModelArts, you can import and label data on the Data Management page to prepare for model building. ModelArts uses datasets as the basis for model development or train", + "product_code":"modelarts", + "title":"Introduction to Data Management", + "uri":"modelarts_23_0003.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"41" + }, + { + "desc":"To manage data using ModelArts, create a dataset. Then you can perform operations on the dataset, such as labeling data, importing data, and publishing the dataset.Before", + "product_code":"modelarts", + "title":"Creating a Dataset", + "uri":"modelarts_23_0004.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"42" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Labeling Data", + "uri":"modelarts_23_0010.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"43" + }, + { + "desc":"Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by", + "product_code":"modelarts", + "title":"Image Classification", + "uri":"modelarts_23_0011.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"44" + }, + { + "desc":"Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by", + "product_code":"modelarts", + "title":"Object Detection", + "uri":"modelarts_23_0012.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"45" + }, + { + "desc":"Training a model uses a large number of labeled images. Therefore, label images before the model training. You can label images on the ModelArts management console. Alter", + "product_code":"modelarts", + "title":"Image Segmentation", + "uri":"modelarts_23_0345.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"46" + }, + { + "desc":"Model training requires a large amount of labeled data. Therefore, before the model training, add labels to the files that are not labeled. In addition, you can modify, d", + "product_code":"modelarts", + "title":"Text Classification", + "uri":"modelarts_23_0013.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"47" + }, + { + "desc":"Named entity recognition assigns labels to named entities in text, such as time and locations. Before labeling, you need to understand the following:A label name can cont", + "product_code":"modelarts", + "title":"Named Entity Recognition", + "uri":"modelarts_23_0014.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"48" + }, + { + "desc":"Triplet labeling is suitable for scenarios where structured information, such as subjects, predicates, and objects, needs to be labeled in statements. With this function,", + "product_code":"modelarts", + "title":"Text Triplet", + "uri":"modelarts_23_0211.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"49" + }, + { + "desc":"Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files ", + "product_code":"modelarts", + "title":"Sound Classification", + "uri":"modelarts_23_0015.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"50" + }, + { + "desc":"Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files ", + "product_code":"modelarts", + "title":"Speech Labeling", + "uri":"modelarts_23_0016.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"51" + }, + { + "desc":"Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files.", + "product_code":"modelarts", + "title":"Speech Paragraph Labeling", + "uri":"modelarts_23_0017.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"52" + }, + { + "desc":"Model training requires a large amount of labeled video data. Therefore, before the model training, label the unlabeled video files. ModelArts enables you to label video ", + "product_code":"modelarts", + "title":"Video Labeling", + "uri":"modelarts_23_0282.html", + "doc_type":"usermanual", + "p_code":"43", + "code":"53" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Importing Data", + "uri":"modelarts_23_0005.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"54" + }, + { + "desc":"After a dataset is created, you can directly synchronize data from the dataset. Alternatively, you can import more data by importing the dataset. Data can be imported fro", + "product_code":"modelarts", + "title":"Import Operation", + "uri":"modelarts_23_0006.html", + "doc_type":"usermanual", + "p_code":"54", + "code":"55" + }, + { + "desc":"When a dataset is imported, the data storage directory and file name must comply with the ModelArts specifications if the data to be used is stored in OBS.Only the follow", + "product_code":"modelarts", + "title":"Specifications for Importing Data from an OBS Directory", + "uri":"modelarts_23_0008.html", + "doc_type":"usermanual", + "p_code":"54", + "code":"56" + }, + { + "desc":"The manifest file defines the mapping between labeling objects and content. The Manifest file import mode means that the manifest file is used for dataset import. The man", + "product_code":"modelarts", + "title":"Specifications for Importing the Manifest File", + "uri":"modelarts_23_0009.html", + "doc_type":"usermanual", + "p_code":"54", + "code":"57" + }, + { + "desc":"A dataset includes labeled and unlabeled data. You can select images or filter data based on the filter criteria and export to a new dataset or the specified OBS director", + "product_code":"modelarts", + "title":"Exporting Data", + "uri":"modelarts_23_0214.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"58" + }, + { + "desc":"For a created dataset, you can modify its basic information to match service changes.You have created a dataset.Log in to the ModelArts management console. In the left na", + "product_code":"modelarts", + "title":"Modifying a Dataset", + "uri":"modelarts_23_0020.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"59" + }, + { + "desc":"ModelArts distinguishes data of the same source according to versions labeled at different time, which facilitates the selection of dataset versions during subsequent mod", + "product_code":"modelarts", + "title":"Publishing a Dataset", + "uri":"modelarts_23_0018.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"60" + }, + { + "desc":"If a dataset is no longer in use, you can delete it to release resources.After a dataset is deleted, if you need to delete the data in the dataset input and output paths ", + "product_code":"modelarts", + "title":"Deleting a Dataset", + "uri":"modelarts_23_0021.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"61" + }, + { + "desc":"After labeling data, you can publish the dataset to multiple versions for management. For the published versions, you can view the dataset version updates, set the curren", + "product_code":"modelarts", + "title":"Managing Dataset Versions", + "uri":"modelarts_23_0019.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"62" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Team Labeling", + "uri":"modelarts_23_0180.html", + "doc_type":"usermanual", + "p_code":"40", + "code":"63" + }, + { + "desc":"Generally, a small data labeling task can be completed by an individual. However, team work is required to label a large dataset. ModelArts provides the team labeling fun", + "product_code":"modelarts", + "title":"Introduction to Team Labeling", + "uri":"modelarts_23_0181.html", + "doc_type":"usermanual", + "p_code":"63", + "code":"64" + }, + { + "desc":"Team labeling is managed in a unit of teams. To enable team labeling for a dataset, a team must be specified. Multiple members can be added to a team.An account can have ", + "product_code":"modelarts", + "title":"Team Management", + "uri":"modelarts_23_0182.html", + "doc_type":"usermanual", + "p_code":"63", + "code":"65" + }, + { + "desc":"There is no member in a new team. You need to add members who will participate in a team labeling task.A maximum of 100 members can be added to a team. If there are more ", + "product_code":"modelarts", + "title":"Member Management", + "uri":"modelarts_23_0183.html", + "doc_type":"usermanual", + "p_code":"63", + "code":"66" + }, + { + "desc":"For datasets with team labeling enabled, you can create team labeling tasks and assign the labeling tasks to different teams so that team members can complete the labelin", + "product_code":"modelarts", + "title":"Managing Team Labeling Tasks", + "uri":"modelarts_23_0210.html", + "doc_type":"usermanual", + "p_code":"63", + "code":"67" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"DevEnviron (Notebook)", + "uri":"modelarts_23_0032.html", + "doc_type":"usermanual", + "p_code":"", + "code":"68" + }, + { + "desc":"ModelArts integrates the open-source Jupyter Notebook and JupyterLab to provide you with online interactive development and debugging environments. You can use the Notebo", + "product_code":"modelarts", + "title":"Introduction to Notebook", + "uri":"modelarts_23_0033.html", + "doc_type":"usermanual", + "p_code":"68", + "code":"69" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Managing Notebook Instances", + "uri":"modelarts_23_0111.html", + "doc_type":"usermanual", + "p_code":"68", + "code":"70" + }, + { + "desc":"Before developing a model, create a notebook instance, open it, and perform encoding.Only notebook instances in the Running state can be started.A maximum of 10 notebook ", + "product_code":"modelarts", + "title":"Creating a Notebook Instance", + "uri":"modelarts_23_0034.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"71" + }, + { + "desc":"You can open a created notebook instance (that is, an instance in the Running state) and start coding in the development environment.Go to the Jupyter Notebook page.In th", + "product_code":"modelarts", + "title":"Opening a Notebook Instance", + "uri":"modelarts_23_0325.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"72" + }, + { + "desc":"You can stop unwanted notebook instances to prevent unnecessary fees. You can also start a notebook instance that is in the Stopped state to use it again.Log in to the Mo", + "product_code":"modelarts", + "title":"Starting or Stopping a Notebook Instance", + "uri":"modelarts_23_0041.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"73" + }, + { + "desc":"You can delete notebook instances that are no longer used to release resources.Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron ", + "product_code":"modelarts", + "title":"Deleting a Notebook Instance", + "uri":"modelarts_23_0042.html", + "doc_type":"usermanual", + "p_code":"70", + "code":"74" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Using Jupyter Notebook", + "uri":"modelarts_23_0035.html", + "doc_type":"usermanual", + "p_code":"68", + "code":"75" + }, + { + "desc":"Jupyter Notebook is a web-based application for interactive computing. It can be applied to full-process computing: development, documentation, running code, and presenti", + "product_code":"modelarts", + "title":"Introduction to Jupyter Notebook", + "uri":"modelarts_23_0326.html", + "doc_type":"usermanual", + "p_code":"75", + "code":"76" + }, + { + "desc":"This section describes common operations on Jupyter Notebook.In the notebook instance list, locate the row where the target notebook instance resides and click Open in th", + "product_code":"modelarts", + "title":"Common Operations on Jupyter Notebook", + "uri":"modelarts_23_0120.html", + "doc_type":"usermanual", + "p_code":"75", + "code":"77" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Configuring the Jupyter Notebook Environment", + "uri":"modelarts_23_0327.html", + "doc_type":"usermanual", + "p_code":"75", + "code":"78" + }, + { + "desc":"For developers who are used to coding, the terminal function is very convenient and practical. This section describes how to enable the terminal function in a notebook in", + "product_code":"modelarts", + "title":"Using the Notebook Terminal Function", + "uri":"modelarts_23_0117.html", + "doc_type":"usermanual", + "p_code":"78", + "code":"79" + }, + { + "desc":"For a GPU-based notebook instance, you can switch different versions of CUDA on the Terminal page of Jupyter.CPU-based notebook instances do not use CUDA. Therefore, the ", + "product_code":"modelarts", + "title":"Switching the CUDA Version on the Terminal Page of a GPU-based Notebook Instance", + "uri":"modelarts_23_0280.html", + "doc_type":"usermanual", + "p_code":"78", + "code":"80" + }, + { + "desc":"Multiple environments have been installed in ModelArts notebook instances, including TensorFlow. You can use pip install to install external libraries from a Jupyter note", + "product_code":"modelarts", + "title":"Installing External Libraries and Kernels in Notebook Instances", + "uri":"modelarts_23_0040.html", + "doc_type":"usermanual", + "p_code":"78", + "code":"81" + }, + { + "desc":"If you specify Storage Path during notebook instance creation, your compiled code will be automatically stored in your specified OBS bucket. If code invocation among diff", + "product_code":"modelarts", + "title":"Synchronizing Files with OBS", + "uri":"modelarts_23_0038.html", + "doc_type":"usermanual", + "p_code":"75", + "code":"82" + }, + { + "desc":"After code compiling is finished, you can save the entered code as a .py file which can be used for starting training jobs.Create and open a notebook instance or open an ", + "product_code":"modelarts", + "title":"Using the Convert to Python File Function", + "uri":"modelarts_23_0037.html", + "doc_type":"usermanual", + "p_code":"75", + "code":"83" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Using JupyterLab", + "uri":"modelarts_23_0330.html", + "doc_type":"usermanual", + "p_code":"68", + "code":"84" + }, + { + "desc":"JupyterLab is an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals,", + "product_code":"modelarts", + "title":"Introduction to JupyterLab and Common Operations", + "uri":"modelarts_23_0209.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"85" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Uploading and Downloading Data", + "uri":"modelarts_23_0331.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"86" + }, + { + "desc":"On the JupyterLab page, click Upload Files to upload a file. For details, see Uploading a File in Introduction to JupyterLab and Common Operations. If a message is displa", + "product_code":"modelarts", + "title":"Uploading Data to JupyterLab", + "uri":"modelarts_23_0332.html", + "doc_type":"usermanual", + "p_code":"86", + "code":"87" + }, + { + "desc":"Only files within 100 MB in JupyterLab can be downloaded to a local PC. You can perform operations in different scenarios based on the storage location selected when crea", + "product_code":"modelarts", + "title":"Downloading a File from JupyterLab", + "uri":"modelarts_23_0333.html", + "doc_type":"usermanual", + "p_code":"86", + "code":"88" + }, + { + "desc":"In notebook instances, you can use ModelArts SDKs to manage OBS, training jobs, models, and real-time services.For details about how to use ModelArts SDKs, see ModelArts ", + "product_code":"modelarts", + "title":"Using ModelArts SDKs", + "uri":"modelarts_23_0335.html", + "doc_type":"usermanual", + "p_code":"84", + "code":"89" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Training Management", + "uri":"modelarts_23_0043.html", + "doc_type":"usermanual", + "p_code":"", + "code":"90" + }, + { + "desc":"ModelArts provides model training for you to view the training effect, based on which you can adjust your model parameters. You can select resource pools (CPU or GPU) wit", + "product_code":"modelarts", + "title":"Introduction to Model Training", + "uri":"modelarts_23_0044.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"91" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Creating a Training Job", + "uri":"modelarts_23_0235.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"92" + }, + { + "desc":"ModelArts supports multiple types of training jobs during the entire AI development process. Select a creation mode based on the algorithm source.Frequently-usedIf you ha", + "product_code":"modelarts", + "title":"Introduction to Training Jobs", + "uri":"modelarts_23_0046.html", + "doc_type":"usermanual", + "p_code":"92", + "code":"93" + }, + { + "desc":"If you use frequently-used frameworks, such as TensorFlow and MXNet, to develop algorithms locally, you can select Frequently-used to create training jobs and build model", + "product_code":"modelarts", + "title":"Using Frequently-used Frameworks to Train Models", + "uri":"modelarts_23_0238.html", + "doc_type":"usermanual", + "p_code":"92", + "code":"94" + }, + { + "desc":"If the framework used for algorithm development is not a frequently-used framework, you can build an algorithm into a custom image and use the custom image to create a tr", + "product_code":"modelarts", + "title":"Using Custom Images to Train Models", + "uri":"modelarts_23_0239.html", + "doc_type":"usermanual", + "p_code":"92", + "code":"95" + }, + { + "desc":"In the training job list, click Stop in the Operation column for a training job in the Running state to stop a running training job.If you have selected Save Training Par", + "product_code":"modelarts", + "title":"Stopping or Deleting a Job", + "uri":"modelarts_23_0159.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"96" + }, + { + "desc":"During model building, you may need to frequently tune the data, training parameters, or the model based on the training results to obtain a satisfactory model. ModelArts", + "product_code":"modelarts", + "title":"Managing Training Job Versions", + "uri":"modelarts_23_0047.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"97" + }, + { + "desc":"After a training job finishes, you can manage the training job versions and check whether the training result of the job is satisfactory by viewing the job details.In the", + "product_code":"modelarts", + "title":"Viewing Job Details", + "uri":"modelarts_23_0048.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"98" + }, + { + "desc":"You can store the parameter settings in ModelArts during job creation so that you can use the stored settings to create follow-up training jobs, which makes job creation ", + "product_code":"modelarts", + "title":"Managing Job Parameters", + "uri":"modelarts_23_0049.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"99" + }, + { + "desc":"You can create visualization jobs of TensorBoard and MindInsight types on ModelArts.TensorBoard supports training jobs based on the TensorFlow engine, and MindInsight sup", + "product_code":"modelarts", + "title":"Managing Visualization Jobs", + "uri":"modelarts_23_0050.html", + "doc_type":"usermanual", + "p_code":"90", + "code":"100" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Model Management", + "uri":"modelarts_23_0051.html", + "doc_type":"usermanual", + "p_code":"", + "code":"101" + }, + { + "desc":"AI model development and optimization require frequent iterations and debugging. Changes in datasets, training code, or parameters may affect the quality of models. If th", + "product_code":"modelarts", + "title":"Introduction to Model Management", + "uri":"modelarts_23_0052.html", + "doc_type":"usermanual", + "p_code":"101", + "code":"102" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Importing a Model", + "uri":"modelarts_23_0204.html", + "doc_type":"usermanual", + "p_code":"101", + "code":"103" + }, + { + "desc":"You can create a training job on ModelArts and perform training to obtain a satisfactory model. Then import the model to Model Management for unified management. In addit", + "product_code":"modelarts", + "title":"Importing a Meta Model from a Training Job", + "uri":"modelarts_23_0054.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"104" + }, + { + "desc":"Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this tem", + "product_code":"modelarts", + "title":"Importing a Meta Model from a Template", + "uri":"modelarts_23_0205.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"105" + }, + { + "desc":"For AI engines that are not supported by ModelArts, you can import the model you compile to ModelArts from custom images.For details about the specifications and descript", + "product_code":"modelarts", + "title":"Importing a Meta Model from a Container Image", + "uri":"modelarts_23_0206.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"106" + }, + { + "desc":"In scenarios where frequently-used frameworks are used for model development and training, you can import the model to ModelArts for unified management.The model has been", + "product_code":"modelarts", + "title":"Importing a Meta Model from OBS", + "uri":"modelarts_23_0207.html", + "doc_type":"usermanual", + "p_code":"103", + "code":"107" + }, + { + "desc":"To facilitate source tracing and repeated model tuning, ModelArts provides the model version management function. You can manage models based on versions.You have importe", + "product_code":"modelarts", + "title":"Managing Model Versions", + "uri":"modelarts_23_0055.html", + "doc_type":"usermanual", + "p_code":"101", + "code":"108" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Model Compression and Conversion", + "uri":"modelarts_23_0106.html", + "doc_type":"usermanual", + "p_code":"101", + "code":"109" + }, + { + "desc":"To obtain higher computing power, you can deploy the models created on ModelArts or a local PC on the Ascend chip, Arm, or GPU. In this case, you need to compress or conv", + "product_code":"modelarts", + "title":"Compressing and Converting Models", + "uri":"modelarts_23_0107.html", + "doc_type":"usermanual", + "p_code":"109", + "code":"110" + }, + { + "desc":"The requirements for converting the models run on the Ascend chip are as follows:For TensorFlow-based models (in frozen_graph or saved_model format), the input path must ", + "product_code":"modelarts", + "title":"Model Input Path Specifications", + "uri":"modelarts_23_0108.html", + "doc_type":"usermanual", + "p_code":"109", + "code":"111" + }, + { + "desc":"The following describes the output path of the model run on the Ascend chip after conversion:For TensorFlow-based models, the output path must comply with the following s", + "product_code":"modelarts", + "title":"Model Output Path Description", + "uri":"modelarts_23_0109.html", + "doc_type":"usermanual", + "p_code":"109", + "code":"112" + }, + { + "desc":"ModelArts provides the following conversion templates based on different AI frameworks:TF-FrozenGraph-To-Ascend-C32Convert the model trained by the TensorFlow framework a", + "product_code":"modelarts", + "title":"Conversion Templates", + "uri":"modelarts_23_0110.html", + "doc_type":"usermanual", + "p_code":"109", + "code":"113" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Model Deployment", + "uri":"modelarts_23_0057.html", + "doc_type":"usermanual", + "p_code":"", + "code":"114" + }, + { + "desc":"After a training job is complete and a model is generated, you can deploy the model on the Service Deployment page. You can also deploy the model imported from OBS. Model", + "product_code":"modelarts", + "title":"Introduction to Model Deployment", + "uri":"modelarts_23_0058.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"115" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Real-Time Services", + "uri":"modelarts_23_0059.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"116" + }, + { + "desc":"After a model is prepared, you can deploy the model as a real-time service and predict and call the service.A maximum of 20 real-time services can be deployed by a user.D", + "product_code":"modelarts", + "title":"Deploying a Model as a Real-Time Service", + "uri":"modelarts_23_0060.html", + "doc_type":"usermanual", + "p_code":"116", + "code":"117" + }, + { + "desc":"After a model is deployed as a real-time service, you can access the service page to view its details.Log in to the ModelArts management console and choose Service Deploy", + "product_code":"modelarts", + "title":"Viewing Service Details", + "uri":"modelarts_23_0061.html", + "doc_type":"usermanual", + "p_code":"116", + "code":"118" + }, + { + "desc":"After a model is deployed as a real-time service, you can debug code or add files for testing on the Prediction tab page. Based on the input request (JSON text or file) d", + "product_code":"modelarts", + "title":"Testing a Service", + "uri":"modelarts_23_0062.html", + "doc_type":"usermanual", + "p_code":"116", + "code":"119" + }, + { + "desc":"If a real-time service is in the Running state, the real-time service has been deployed successfully. This service provides a standard RESTful API for users to call. Befo", + "product_code":"modelarts", + "title":"Accessing a Real-Time Service (Token-based Authentication)", + "uri":"modelarts_23_0063.html", + "doc_type":"usermanual", + "p_code":"116", + "code":"120" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Batch Services", + "uri":"modelarts_23_0065.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"121" + }, + { + "desc":"After a model is prepared, you can deploy it as a batch service. The Service Deployment > Batch Services page lists all batch services. You can enter a service name in th", + "product_code":"modelarts", + "title":"Deploying a Model as a Batch Service", + "uri":"modelarts_23_0066.html", + "doc_type":"usermanual", + "p_code":"121", + "code":"122" + }, + { + "desc":"When deploying a batch service, you can select the location of the output data directory. You can view the running result of the batch service that is in the Running comp", + "product_code":"modelarts", + "title":"Viewing the Batch Service Prediction Result", + "uri":"modelarts_23_0067.html", + "doc_type":"usermanual", + "p_code":"121", + "code":"123" + }, + { + "desc":"For a deployed service, you can modify its basic information to match service changes. You can modify the basic information about a service in either of the following way", + "product_code":"modelarts", + "title":"Modifying a Service", + "uri":"modelarts_23_0071.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"124" + }, + { + "desc":"You can start services in the Successful, Abnormal, or Stopped status. Services in the Deploying status cannot be started. You can start a service in either of the follow", + "product_code":"modelarts", + "title":"Starting or Stopping a Service", + "uri":"modelarts_23_0072.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"125" + }, + { + "desc":"If a service is no longer in use, you can delete it to release resources.Log in to the ModelArts management console and choose Service Deployment from the left navigation", + "product_code":"modelarts", + "title":"Deleting a Service", + "uri":"modelarts_23_0073.html", + "doc_type":"usermanual", + "p_code":"114", + "code":"126" + }, + { + "desc":"When using ModelArts to implement AI Development Lifecycle, you can use two different resource pools to train and deploy models.Public Resource Pool: provides public larg", + "product_code":"modelarts", + "title":"Resource Pools", + "uri":"modelarts_23_0076.html", + "doc_type":"usermanual", + "p_code":"", + "code":"127" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Custom Images", + "uri":"modelarts_23_0083.html", + "doc_type":"usermanual", + "p_code":"", + "code":"128" + }, + { + "desc":"ModelArts provides multiple frequently-used built-in engines. However, when users have special requirements for the deep learning engine and development library, the buil", + "product_code":"modelarts", + "title":"Introduction to Custom Images", + "uri":"modelarts_23_0084.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"129" + }, + { + "desc":"ModelArts allows you to use custom images to create training jobs and import models. Before creating and uploading a custom image, understand the following information:So", + "product_code":"modelarts", + "title":"Creating and Uploading a Custom Image", + "uri":"modelarts_23_0085.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"130" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"For Training Models", + "uri":"modelarts_23_0216.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"131" + }, + { + "desc":"When creating an image using locally developed models and training scripts, ensure that they meet the specifications defined by ModelArts.Custom images cannot contain mal", + "product_code":"modelarts", + "title":"Specifications for Custom Images Used for Training Jobs", + "uri":"modelarts_23_0217.html", + "doc_type":"usermanual", + "p_code":"131", + "code":"132" + }, + { + "desc":"After creating and uploading a custom image to SWR, you can use the image to create a training job on the ModelArts management console to complete model training.You have", + "product_code":"modelarts", + "title":"Creating a Training Job Using a Custom Image (GPU)", + "uri":"modelarts_23_0087.html", + "doc_type":"usermanual", + "p_code":"131", + "code":"133" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"For Importing Models", + "uri":"modelarts_23_0218.html", + "doc_type":"usermanual", + "p_code":"128", + "code":"134" + }, + { + "desc":"When creating an image using locally developed models, ensure that they meet the specifications defined by ModelArts.Custom images cannot contain malicious code.The size ", + "product_code":"modelarts", + "title":"Specifications for Custom Images Used for Importing Models", + "uri":"modelarts_23_0219.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"135" + }, + { + "desc":"After creating and uploading a custom image to SWR, you can use the image to import a model and deploy the model as a service on the ModelArts management console.You have", + "product_code":"modelarts", + "title":"Importing a Model Using a Custom Image", + "uri":"modelarts_23_0086.html", + "doc_type":"usermanual", + "p_code":"134", + "code":"136" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Model Package Specifications", + "uri":"modelarts_23_0090.html", + "doc_type":"usermanual", + "p_code":"", + "code":"137" + }, + { + "desc":"When you import models in Model Management, if the meta model is imported from OBS or a container image, the model package must meet the following specifications:The mode", + "product_code":"modelarts", + "title":"Model Package Specifications", + "uri":"modelarts_23_0091.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"138" + }, + { + "desc":"A model developer needs to compile a configuration file when publishing a model. The model configuration file describes the model usage, computing framework, precision, i", + "product_code":"modelarts", + "title":"Specifications for Compiling the Model Configuration File", + "uri":"modelarts_23_0092.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"139" + }, + { + "desc":"This section describes how to compile model inference code in ModelArts. The following also provides an example of inference code for the TensorFlow engine and an example", + "product_code":"modelarts", + "title":"Specifications for Compiling Model Inference Code", + "uri":"modelarts_23_0093.html", + "doc_type":"usermanual", + "p_code":"137", + "code":"140" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Model Templates", + "uri":"modelarts_23_0097.html", + "doc_type":"usermanual", + "p_code":"", + "code":"141" + }, + { + "desc":"Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this tem", + "product_code":"modelarts", + "title":"Introduction to Model Templates", + "uri":"modelarts_23_0098.html", + "doc_type":"usermanual", + "p_code":"141", + "code":"142" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Template Description", + "uri":"modelarts_23_0118.html", + "doc_type":"usermanual", + "p_code":"141", + "code":"143" + }, + { + "desc":"AI engine: TensorFlow 1.8; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or appl", + "product_code":"modelarts", + "title":"TensorFlow-py36 General Template", + "uri":"modelarts_23_0162.html", + "doc_type":"usermanual", + "p_code":"143", + "code":"144" + }, + { + "desc":"AI engine: MXNet 1.2.1; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or applica", + "product_code":"modelarts", + "title":"MXNet-py36 General Template", + "uri":"modelarts_23_0164.html", + "doc_type":"usermanual", + "p_code":"143", + "code":"145" + }, + { + "desc":"AI engine: PyTorch 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or applica", + "product_code":"modelarts", + "title":"PyTorch-py36 General Template", + "uri":"modelarts_23_0166.html", + "doc_type":"usermanual", + "p_code":"143", + "code":"146" + }, + { + "desc":"AI engine: CPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or", + "product_code":"modelarts", + "title":"Caffe-CPU-py36 General Template", + "uri":"modelarts_23_0169.html", + "doc_type":"usermanual", + "p_code":"143", + "code":"147" + }, + { + "desc":"AI engine: GPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or", + "product_code":"modelarts", + "title":"Caffe-GPU-py36 General Template", + "uri":"modelarts_23_0170.html", + "doc_type":"usermanual", + "p_code":"143", + "code":"148" + }, + { + "desc":"AI engine: MindSpore; Environment: Python 3.5; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or applicati", + "product_code":"modelarts", + "title":"Arm-Ascend Template", + "uri":"modelarts_23_0254.html", + "doc_type":"usermanual", + "p_code":"143", + "code":"149" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Input and Output Modes", + "uri":"modelarts_23_0099.html", + "doc_type":"usermanual", + "p_code":"141", + "code":"150" + }, + { + "desc":"This is a built-in input and output mode for object detection. The models using this mode are identified as object detection models. The prediction request path is /, the", + "product_code":"modelarts", + "title":"Built-in Object Detection Mode", + "uri":"modelarts_23_0100.html", + "doc_type":"usermanual", + "p_code":"150", + "code":"151" + }, + { + "desc":"The built-in image processing input and output mode can be applied to models such as image classification, object detection, and image semantic segmentation. The predicti", + "product_code":"modelarts", + "title":"Built-in Image Processing Mode", + "uri":"modelarts_23_0101.html", + "doc_type":"usermanual", + "p_code":"150", + "code":"152" + }, + { + "desc":"This is a built-in input and output mode for predictive analytics. The models using this mode are identified as predictive analytics models. The prediction request path i", + "product_code":"modelarts", + "title":"Built-in Predictive Analytics Mode", + "uri":"modelarts_23_0102.html", + "doc_type":"usermanual", + "p_code":"150", + "code":"153" + }, + { + "desc":"The undefined mode does not define the input and output mode. The input and output mode is determined by the model. Select this mode only when the existing input and outp", + "product_code":"modelarts", + "title":"Undefined Mode", + "uri":"modelarts_23_0103.html", + "doc_type":"usermanual", + "p_code":"150", + "code":"154" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Examples of Custom Scripts", + "uri":"modelarts_23_0172.html", + "doc_type":"usermanual", + "p_code":"", + "code":"155" + }, + { + "desc":"TensorFlow has two types of APIs: Keras and tf. Keras and tf use different code for training and saving models, but the same code for inference.", + "product_code":"modelarts", + "title":"TensorFlow", + "uri":"modelarts_23_0173.html", + "doc_type":"usermanual", + "p_code":"155", + "code":"156" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"PyTorch", + "uri":"modelarts_23_0175.html", + "doc_type":"usermanual", + "p_code":"155", + "code":"157" + }, + { + "desc":"lenet_train_test.prototxt filelenet_solver.prototxt fileTrain the model.The caffemodel file is generated after model training. Rewrite the lenet_train_test.prototxt file ", + "product_code":"modelarts", + "title":"Caffe", + "uri":"modelarts_23_0176.html", + "doc_type":"usermanual", + "p_code":"155", + "code":"158" + }, + { + "desc":"After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publish", + "product_code":"modelarts", + "title":"XGBoost", + "uri":"modelarts_23_0177.html", + "doc_type":"usermanual", + "p_code":"155", + "code":"159" + }, + { + "desc":"After the model is saved, it must be uploaded to the OBS directory before being published. The config.json configuration and customize_service.py must be contained during", + "product_code":"modelarts", + "title":"PySpark", + "uri":"modelarts_23_0178.html", + "doc_type":"usermanual", + "p_code":"155", + "code":"160" + }, + { + "desc":"After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publish", + "product_code":"modelarts", + "title":"Scikit Learn", + "uri":"modelarts_23_0179.html", + "doc_type":"usermanual", + "p_code":"155", + "code":"161" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Permissions Management", + "uri":"modelarts_23_0077.html", + "doc_type":"usermanual", + "p_code":"", + "code":"162" + }, + { + "desc":"A fine-grained policy is a set of permissions defining which operations on which cloud services can be performed. Each policy can define multiple permissions. After a pol", + "product_code":"modelarts", + "title":"Basic Concepts", + "uri":"modelarts_23_0078.html", + "doc_type":"usermanual", + "p_code":"162", + "code":"163" + }, + { + "desc":"A fine-grained policy consists of the policy version (the Version field) and statement (the Statement field).Version: Distinguishes between role-based access control (RBA", + "product_code":"modelarts", + "title":"Creating a User and Granting Permissions", + "uri":"modelarts_23_0079.html", + "doc_type":"usermanual", + "p_code":"162", + "code":"164" + }, + { + "desc":"If default policies cannot meet the requirements on fine-grained access control, you can create custom policies and assign the policies to the user group.You can create c", + "product_code":"modelarts", + "title":"Creating a Custom Policy", + "uri":"modelarts_23_0080.html", + "doc_type":"usermanual", + "p_code":"162", + "code":"165" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Monitoring", + "uri":"modelarts_23_0186.html", + "doc_type":"usermanual", + "p_code":"", + "code":"166" + }, + { + "desc":"The cloud service platform provides Cloud Eye to help you better understand the status of your ModelArts real-time services and models. You can use Cloud Eye to automatic", + "product_code":"modelarts", + "title":"ModelArts Metrics", + "uri":"modelarts_23_0187.html", + "doc_type":"usermanual", + "p_code":"166", + "code":"167" + }, + { + "desc":"Setting alarm rules allows you to customize the monitored objects and notification policies so that you can know the status of ModelArts real-time services and models in ", + "product_code":"modelarts", + "title":"Setting Alarm Rules", + "uri":"modelarts_23_0188.html", + "doc_type":"usermanual", + "p_code":"166", + "code":"168" + }, + { + "desc":"Cloud Eye on the cloud service platform monitors the status of ModelArts real-time services and model loads. You can obtain the monitoring metrics of each ModelArts real-", + "product_code":"modelarts", + "title":"Viewing Monitoring Metrics", + "uri":"modelarts_23_0189.html", + "doc_type":"usermanual", + "p_code":"166", + "code":"169" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"FAQs", + "uri":"modelarts_05_0000.html", + "doc_type":"usermanual", + "p_code":"", + "code":"170" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"General Issues", + "uri":"modelarts_05_0014.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"171" + }, + { + "desc":"ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and", + "product_code":"modelarts", + "title":"What Is ModelArts?", + "uri":"modelarts_05_0001.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"172" + }, + { + "desc":"ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object S", + "product_code":"modelarts", + "title":"What Are the Relationships Between ModelArts and Other Services", + "uri":"modelarts_05_0003.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"173" + }, + { + "desc":"Log in to the console, enter the My Credentials page, and choose Access Keys > Create Access Key.In the Create Access Key dialog box that is displayed, use the login pass", + "product_code":"modelarts", + "title":"How Do I Obtain Access Keys?", + "uri":"modelarts_05_0004.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"174" + }, + { + "desc":"Before using ModelArts to develop AI models, data needs to be uploaded to an OBS bucket. You can log in to the OBS console to create an OBS bucket, create a folder, and u", + "product_code":"modelarts", + "title":"How Do I Upload Data to OBS?", + "uri":"modelarts_05_0013.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"175" + }, + { + "desc":"Supported AI frameworks and versions of ModelArts vary slightly based on the development environment, training jobs, and model inference (model management and deployment)", + "product_code":"modelarts", + "title":"Which AI Frameworks Does ModelArts Support?", + "uri":"modelarts_05_0128.html", + "doc_type":"usermanual", + "p_code":"171", + "code":"176" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"ExeML", + "uri":"modelarts_05_0015.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"177" + }, + { + "desc":"ExeML is the process of automating model design, parameter tuning, and model training, compression, and deployment with the labeled data. The process is free of coding an", + "product_code":"modelarts", + "title":"What Is ExeML?", + "uri":"modelarts_05_0002.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"178" + }, + { + "desc":"Image classification is an image processing method that separates different classes of targets according to the features reflected in the images. With quantitative analys", + "product_code":"modelarts", + "title":"What Are Image Classification and Object Detection?", + "uri":"modelarts_05_0018.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"179" + }, + { + "desc":"The Train button turns to be available when the training images for an image classification project are classified into at least two categories, and each category contain", + "product_code":"modelarts", + "title":"What Should I Do When the Train Button Is Unavailable After I Create an Image Classification Project and Label the Images?", + "uri":"modelarts_05_0005.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"180" + }, + { + "desc":"Yes. You can add multiple labels to an image.", + "product_code":"modelarts", + "title":"Can I Add Multiple Labels to an Image for an Object Detection Project?", + "uri":"modelarts_05_0006.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"181" + }, + { + "desc":"Models created in ExeML are deployed as real-time services. You can add images or compile code to test the services, as well as call the APIs using the URLs.After model d", + "product_code":"modelarts", + "title":"What Type of Service Is Deployed in ExeML?", + "uri":"modelarts_05_0008.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"182" + }, + { + "desc":"Images in JPG, JPEG, PNG, or BMP format are supported.", + "product_code":"modelarts", + "title":"What Formats of Images Are Supported by Object Detection or Image Classification Projects?", + "uri":"modelarts_05_0010.html", + "doc_type":"usermanual", + "p_code":"177", + "code":"183" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Data Management", + "uri":"modelarts_05_0101.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"184" + }, + { + "desc":"Failed to use the manifest file of the published dataset to import data again.Data has been changed in the OBS directory of the published dataset, for example, images hav", + "product_code":"modelarts", + "title":"Why Does Data Fail to Be Imported Using the Manifest File?", + "uri":"modelarts_05_0103.html", + "doc_type":"usermanual", + "p_code":"184", + "code":"185" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Development Environment", + "uri":"modelarts_05_0020.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"186" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Notebook", + "uri":"modelarts_05_0067.html", + "doc_type":"usermanual", + "p_code":"186", + "code":"187" + }, + { + "desc":"Log in to the ModelArts management console, and choose DevEnviron > Notebooks.In the notebook list, click Open in the Operation column of the target notebook instance to ", + "product_code":"modelarts", + "title":"How Do I Enable the Terminal Function in DevEnviron of ModelArts?", + "uri":"modelarts_05_0071.html", + "doc_type":"usermanual", + "p_code":"187", + "code":"188" + }, + { + "desc":"Data may be stored in OBS or EVS, depending on which kind of storage you have configured for your Notebook instances:OBSAfter you click upload, the data is directly uploa", + "product_code":"modelarts", + "title":"Where Will the Data Be Uploaded to?", + "uri":"modelarts_05_0045.html", + "doc_type":"usermanual", + "p_code":"187", + "code":"189" + }, + { + "desc":"/cache is a temporary directory and will not be saved. After an instance using OBS storage is stopped, data in the ~work directory will be deleted. After a notebook insta", + "product_code":"modelarts", + "title":"Do Files in /cache Still Exist After a Notebook Instance is Stopped or Restarted? How Do I Avoid a Restart?", + "uri":"modelarts_05_0080.html", + "doc_type":"usermanual", + "p_code":"187", + "code":"190" + }, + { + "desc":"Log in to the ModelArts management console, and choose DevEnviron > Notebooks.In the Operation column of the target notebook instance in the notebook list, click Open to ", + "product_code":"modelarts", + "title":"Where Is Data Stored After the Sync OBS Function Is Used?", + "uri":"modelarts_05_0081.html", + "doc_type":"usermanual", + "p_code":"187", + "code":"191" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Training Jobs", + "uri":"modelarts_05_0030.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"192" + }, + { + "desc":"The code directory for creating a training job has limits on the size and number of files.Delete the files except the code from the code directory or save the files in ot", + "product_code":"modelarts", + "title":"What Can I Do If the Message \"Object directory size/quantity exceeds the limit\" Is Displayed When I Create a Training Job?", + "uri":"modelarts_05_0031.html", + "doc_type":"usermanual", + "p_code":"192", + "code":"193" + }, + { + "desc":"When you use ModelArts, your data is stored in the OBS bucket. The data has a corresponding OBS path, for example, bucket_name/dir/image.jpg. ModelArts training jobs run ", + "product_code":"modelarts", + "title":"Error Message \"No such file or directory\" Displayed in Training Job Logs", + "uri":"modelarts_05_0032.html", + "doc_type":"usermanual", + "p_code":"192", + "code":"194" + }, + { + "desc":"When a model references a dependency package, select a frequently-used framework to create training jobs. In addition, place the required file or installation package in ", + "product_code":"modelarts", + "title":"How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?", + "uri":"modelarts_05_0063.html", + "doc_type":"usermanual", + "p_code":"192", + "code":"195" + }, + { + "desc":"When creating a training job, you can select CPU, GPU, or Ascend resources based on the size of the training job.ModelArts mounts the disk to the /cache directory. You ca", + "product_code":"modelarts", + "title":"What Are Sizes of the /cache Directories for Different Resource Specifications in the Training Environment?", + "uri":"modelarts_05_0090.html", + "doc_type":"usermanual", + "p_code":"192", + "code":"196" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Model Management", + "uri":"modelarts_05_0016.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"197" + }, + { + "desc":"ModelArts allows you to upload local models to OBS or import models stored in OBS directly into ModelArts.For details about how to import a model from OBS, see Importing ", + "product_code":"modelarts", + "title":"How Do I Import a Model Downloaded from OBS to ModelArts?", + "uri":"modelarts_05_0124.html", + "doc_type":"usermanual", + "p_code":"197", + "code":"198" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Service Deployment", + "uri":"modelarts_05_0017.html", + "doc_type":"usermanual", + "p_code":"170", + "code":"199" + }, + { + "desc":"Currently, models can only be deployed as real-time services and batch services.", + "product_code":"modelarts", + "title":"What Types of Services Can Models Be Deployed as on ModelArts?", + "uri":"modelarts_05_0012.html", + "doc_type":"usermanual", + "p_code":"199", + "code":"200" + }, + { + "desc":"Before importing a model, you need to place the corresponding inference code and configuration file in the model folder. When encoding with Python, you are advised to use", + "product_code":"modelarts", + "title":"What Should I Do If a Conflict Occurs When Deploying a Model As a Real-Time Service?", + "uri":"modelarts_05_0100.html", + "doc_type":"usermanual", + "p_code":"199", + "code":"201" + }, + { + "desc":"When importing a model from OBS or a container image, compile a model configuration file. The model configuration file describes the model usage, computing framework, pre", + "product_code":"modelarts", + "title":"How Do I Describe the Dependencies Between Installation Packages and Model Configuration Files When a Model Is Imported?", + "uri":"modelarts_05_0161.html", + "doc_type":"usermanual", + "p_code":"199", + "code":"202" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"modelarts", + "title":"Change History", + "uri":"modelarts_04_0099.html", + "doc_type":"usermanual", + "p_code":"", + "code":"203" + } +] \ No newline at end of file diff --git a/modelarts/umn/PARAMETERS.txt b/modelarts/umn/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/modelarts/umn/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/modelarts/umn/en-us_image_0000001110760906.png b/modelarts/umn/en-us_image_0000001110760906.png new file mode 100644 index 000000000..a64ad56f2 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760906.png differ diff --git a/modelarts/umn/en-us_image_0000001110760908.png b/modelarts/umn/en-us_image_0000001110760908.png new file mode 100644 index 000000000..4e6b9c719 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760908.png differ diff --git a/modelarts/umn/en-us_image_0000001110760910.png b/modelarts/umn/en-us_image_0000001110760910.png new file mode 100644 index 000000000..821536726 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760910.png differ diff --git a/modelarts/umn/en-us_image_0000001110760912.png b/modelarts/umn/en-us_image_0000001110760912.png new file mode 100644 index 000000000..4eb5325ae Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760912.png differ diff --git a/modelarts/umn/en-us_image_0000001110760934.png b/modelarts/umn/en-us_image_0000001110760934.png new file mode 100644 index 000000000..30a749957 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760934.png differ diff --git a/modelarts/umn/en-us_image_0000001110760936.png b/modelarts/umn/en-us_image_0000001110760936.png new file mode 100644 index 000000000..75490eea0 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760936.png differ diff --git a/modelarts/umn/en-us_image_0000001110760956.png b/modelarts/umn/en-us_image_0000001110760956.png new file mode 100644 index 000000000..f3e351f25 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760956.png differ diff --git a/modelarts/umn/en-us_image_0000001110760968.png b/modelarts/umn/en-us_image_0000001110760968.png new file mode 100644 index 000000000..78e4f09e4 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760968.png differ diff --git a/modelarts/umn/en-us_image_0000001110760970.png b/modelarts/umn/en-us_image_0000001110760970.png new file mode 100644 index 000000000..504bb6376 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110760970.png differ diff --git a/modelarts/umn/en-us_image_0000001110761010.png b/modelarts/umn/en-us_image_0000001110761010.png new file mode 100644 index 000000000..14ca59426 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761010.png differ diff --git a/modelarts/umn/en-us_image_0000001110761012.png b/modelarts/umn/en-us_image_0000001110761012.png new file mode 100644 index 000000000..9e1c9f7a2 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761012.png differ diff --git a/modelarts/umn/en-us_image_0000001110761016.png b/modelarts/umn/en-us_image_0000001110761016.png new file mode 100644 index 000000000..ca13257a2 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761016.png differ diff --git a/modelarts/umn/en-us_image_0000001110761018.png b/modelarts/umn/en-us_image_0000001110761018.png new file mode 100644 index 000000000..f05f690e7 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761018.png differ diff --git a/modelarts/umn/en-us_image_0000001110761020.png b/modelarts/umn/en-us_image_0000001110761020.png new file mode 100644 index 000000000..0b7e0bffa Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761020.png differ diff --git a/modelarts/umn/en-us_image_0000001110761034.png b/modelarts/umn/en-us_image_0000001110761034.png new file mode 100644 index 000000000..301f16d3b Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761034.png differ diff --git a/modelarts/umn/en-us_image_0000001110761038.png b/modelarts/umn/en-us_image_0000001110761038.png new file mode 100644 index 000000000..42b3a9e3b Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761038.png differ diff --git a/modelarts/umn/en-us_image_0000001110761044.png b/modelarts/umn/en-us_image_0000001110761044.png new file mode 100644 index 000000000..ab1271d88 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761044.png differ diff --git a/modelarts/umn/en-us_image_0000001110761054.png b/modelarts/umn/en-us_image_0000001110761054.png new file mode 100644 index 000000000..3b3371e8e Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761054.png differ diff --git a/modelarts/umn/en-us_image_0000001110761058.png b/modelarts/umn/en-us_image_0000001110761058.png new file mode 100644 index 000000000..76d22b061 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761058.png differ diff --git a/modelarts/umn/en-us_image_0000001110761062.png b/modelarts/umn/en-us_image_0000001110761062.png new file mode 100644 index 000000000..ed68c912b Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761062.png differ diff --git a/modelarts/umn/en-us_image_0000001110761072.png b/modelarts/umn/en-us_image_0000001110761072.png new file mode 100644 index 000000000..642d449f6 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761072.png differ diff --git a/modelarts/umn/en-us_image_0000001110761074.png b/modelarts/umn/en-us_image_0000001110761074.png new file mode 100644 index 000000000..56c075f8c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761074.png differ diff --git a/modelarts/umn/en-us_image_0000001110761076.png b/modelarts/umn/en-us_image_0000001110761076.png new file mode 100644 index 000000000..e12b79e49 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761076.png differ diff --git a/modelarts/umn/en-us_image_0000001110761078.png b/modelarts/umn/en-us_image_0000001110761078.png new file mode 100644 index 000000000..38ddf54dd Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761078.png differ diff --git a/modelarts/umn/en-us_image_0000001110761080.png b/modelarts/umn/en-us_image_0000001110761080.png new file mode 100644 index 000000000..56c075f8c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761080.png differ diff --git a/modelarts/umn/en-us_image_0000001110761082.png b/modelarts/umn/en-us_image_0000001110761082.png new file mode 100644 index 000000000..ac7d7566d Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761082.png differ diff --git a/modelarts/umn/en-us_image_0000001110761086.gif b/modelarts/umn/en-us_image_0000001110761086.gif new file mode 100644 index 000000000..333527e79 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761086.gif differ diff --git a/modelarts/umn/en-us_image_0000001110761088.png b/modelarts/umn/en-us_image_0000001110761088.png new file mode 100644 index 000000000..ad140a54c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761088.png differ diff --git a/modelarts/umn/en-us_image_0000001110761092.png b/modelarts/umn/en-us_image_0000001110761092.png new file mode 100644 index 000000000..21bbdd559 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761092.png differ diff --git a/modelarts/umn/en-us_image_0000001110761098.png b/modelarts/umn/en-us_image_0000001110761098.png new file mode 100644 index 000000000..b516f88be Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761098.png differ diff --git a/modelarts/umn/en-us_image_0000001110761112.png b/modelarts/umn/en-us_image_0000001110761112.png new file mode 100644 index 000000000..9394397c2 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761112.png differ diff --git a/modelarts/umn/en-us_image_0000001110761148.png b/modelarts/umn/en-us_image_0000001110761148.png new file mode 100644 index 000000000..4e6b9c719 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761148.png differ diff --git a/modelarts/umn/en-us_image_0000001110761158.png b/modelarts/umn/en-us_image_0000001110761158.png new file mode 100644 index 000000000..748f1ccae Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761158.png differ diff --git a/modelarts/umn/en-us_image_0000001110761582.png b/modelarts/umn/en-us_image_0000001110761582.png new file mode 100644 index 000000000..0886ce46e Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110761582.png differ diff --git a/modelarts/umn/en-us_image_0000001110920802.png b/modelarts/umn/en-us_image_0000001110920802.png new file mode 100644 index 000000000..97fd85e75 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920802.png differ diff --git a/modelarts/umn/en-us_image_0000001110920824.png b/modelarts/umn/en-us_image_0000001110920824.png new file mode 100644 index 000000000..cf66af977 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920824.png differ diff --git a/modelarts/umn/en-us_image_0000001110920858.png b/modelarts/umn/en-us_image_0000001110920858.png new file mode 100644 index 000000000..e5e1698ff Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920858.png differ diff --git a/modelarts/umn/en-us_image_0000001110920874.png b/modelarts/umn/en-us_image_0000001110920874.png new file mode 100644 index 000000000..ea59a9bda Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920874.png differ diff --git a/modelarts/umn/en-us_image_0000001110920880.png b/modelarts/umn/en-us_image_0000001110920880.png new file mode 100644 index 000000000..7ae049cc1 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920880.png differ diff --git a/modelarts/umn/en-us_image_0000001110920910.png b/modelarts/umn/en-us_image_0000001110920910.png new file mode 100644 index 000000000..b2c6a8b25 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920910.png differ diff --git a/modelarts/umn/en-us_image_0000001110920912.png b/modelarts/umn/en-us_image_0000001110920912.png new file mode 100644 index 000000000..e1372b09a Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920912.png differ diff --git a/modelarts/umn/en-us_image_0000001110920914.png b/modelarts/umn/en-us_image_0000001110920914.png new file mode 100644 index 000000000..ab6b8c025 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920914.png differ diff --git a/modelarts/umn/en-us_image_0000001110920916.png b/modelarts/umn/en-us_image_0000001110920916.png new file mode 100644 index 000000000..fdb0e68f6 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920916.png differ diff --git a/modelarts/umn/en-us_image_0000001110920918.png b/modelarts/umn/en-us_image_0000001110920918.png new file mode 100644 index 000000000..ec22a72a0 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920918.png differ diff --git a/modelarts/umn/en-us_image_0000001110920920.png b/modelarts/umn/en-us_image_0000001110920920.png new file mode 100644 index 000000000..ffacffcf2 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920920.png differ diff --git a/modelarts/umn/en-us_image_0000001110920924.png b/modelarts/umn/en-us_image_0000001110920924.png new file mode 100644 index 000000000..f34ea8351 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920924.png differ diff --git a/modelarts/umn/en-us_image_0000001110920930.png b/modelarts/umn/en-us_image_0000001110920930.png new file mode 100644 index 000000000..80e80a631 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920930.png differ diff --git a/modelarts/umn/en-us_image_0000001110920934.png b/modelarts/umn/en-us_image_0000001110920934.png new file mode 100644 index 000000000..99dc5f0ef Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920934.png differ diff --git a/modelarts/umn/en-us_image_0000001110920936.png b/modelarts/umn/en-us_image_0000001110920936.png new file mode 100644 index 000000000..5e7889386 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920936.png differ diff --git a/modelarts/umn/en-us_image_0000001110920938.png b/modelarts/umn/en-us_image_0000001110920938.png new file mode 100644 index 000000000..3bc33953c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920938.png differ diff --git a/modelarts/umn/en-us_image_0000001110920940.png b/modelarts/umn/en-us_image_0000001110920940.png new file mode 100644 index 000000000..6ff6b1a52 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920940.png differ diff --git a/modelarts/umn/en-us_image_0000001110920960.png b/modelarts/umn/en-us_image_0000001110920960.png new file mode 100644 index 000000000..d2a14cfe9 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920960.png differ diff --git a/modelarts/umn/en-us_image_0000001110920962.png b/modelarts/umn/en-us_image_0000001110920962.png new file mode 100644 index 000000000..08cfb8098 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920962.png differ diff --git a/modelarts/umn/en-us_image_0000001110920964.png b/modelarts/umn/en-us_image_0000001110920964.png new file mode 100644 index 000000000..8c468532b Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920964.png differ diff --git a/modelarts/umn/en-us_image_0000001110920974.png b/modelarts/umn/en-us_image_0000001110920974.png new file mode 100644 index 000000000..ac7d7566d Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920974.png differ diff --git a/modelarts/umn/en-us_image_0000001110920976.png b/modelarts/umn/en-us_image_0000001110920976.png new file mode 100644 index 000000000..c1360a802 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920976.png differ diff --git a/modelarts/umn/en-us_image_0000001110920978.png b/modelarts/umn/en-us_image_0000001110920978.png new file mode 100644 index 000000000..c74c1dc52 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920978.png differ diff --git a/modelarts/umn/en-us_image_0000001110920980.png b/modelarts/umn/en-us_image_0000001110920980.png new file mode 100644 index 000000000..0698281e7 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920980.png differ diff --git a/modelarts/umn/en-us_image_0000001110920982.png b/modelarts/umn/en-us_image_0000001110920982.png new file mode 100644 index 000000000..c1360a802 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920982.png differ diff --git a/modelarts/umn/en-us_image_0000001110920984.png b/modelarts/umn/en-us_image_0000001110920984.png new file mode 100644 index 000000000..ad140a54c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920984.png differ diff --git a/modelarts/umn/en-us_image_0000001110920986.png b/modelarts/umn/en-us_image_0000001110920986.png new file mode 100644 index 000000000..6d31edbdf Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920986.png differ diff --git a/modelarts/umn/en-us_image_0000001110920992.png b/modelarts/umn/en-us_image_0000001110920992.png new file mode 100644 index 000000000..cb38ef3f1 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920992.png differ diff --git a/modelarts/umn/en-us_image_0000001110920994.png b/modelarts/umn/en-us_image_0000001110920994.png new file mode 100644 index 000000000..3699a9bec Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920994.png differ diff --git a/modelarts/umn/en-us_image_0000001110920996.png b/modelarts/umn/en-us_image_0000001110920996.png new file mode 100644 index 000000000..38ddf54dd Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920996.png differ diff --git a/modelarts/umn/en-us_image_0000001110920998.png b/modelarts/umn/en-us_image_0000001110920998.png new file mode 100644 index 000000000..b155bec62 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110920998.png differ diff --git a/modelarts/umn/en-us_image_0000001110921000.png b/modelarts/umn/en-us_image_0000001110921000.png new file mode 100644 index 000000000..4f6d3dcac Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110921000.png differ diff --git a/modelarts/umn/en-us_image_0000001110921004.png b/modelarts/umn/en-us_image_0000001110921004.png new file mode 100644 index 000000000..a3a91d40f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110921004.png differ diff --git a/modelarts/umn/en-us_image_0000001110921012.png b/modelarts/umn/en-us_image_0000001110921012.png new file mode 100644 index 000000000..953bf37c5 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110921012.png differ diff --git a/modelarts/umn/en-us_image_0000001110921016.png b/modelarts/umn/en-us_image_0000001110921016.png new file mode 100644 index 000000000..4f04a9c94 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110921016.png differ diff --git a/modelarts/umn/en-us_image_0000001110921482.png b/modelarts/umn/en-us_image_0000001110921482.png new file mode 100644 index 000000000..14dc8ec5c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001110921482.png differ diff --git a/modelarts/umn/en-us_image_0000001156920767.png b/modelarts/umn/en-us_image_0000001156920767.png new file mode 100644 index 000000000..eaba60389 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920767.png differ diff --git a/modelarts/umn/en-us_image_0000001156920769.png b/modelarts/umn/en-us_image_0000001156920769.png new file mode 100644 index 000000000..af3da77e3 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920769.png differ diff --git a/modelarts/umn/en-us_image_0000001156920823.png b/modelarts/umn/en-us_image_0000001156920823.png new file mode 100644 index 000000000..b9e50218f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920823.png differ diff --git a/modelarts/umn/en-us_image_0000001156920845.png b/modelarts/umn/en-us_image_0000001156920845.png new file mode 100644 index 000000000..6791a5bdd Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920845.png differ diff --git a/modelarts/umn/en-us_image_0000001156920871.png b/modelarts/umn/en-us_image_0000001156920871.png new file mode 100644 index 000000000..c6a10e6e0 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920871.png differ diff --git a/modelarts/umn/en-us_image_0000001156920885.png b/modelarts/umn/en-us_image_0000001156920885.png new file mode 100644 index 000000000..69b153fbb Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920885.png differ diff --git a/modelarts/umn/en-us_image_0000001156920887.png b/modelarts/umn/en-us_image_0000001156920887.png new file mode 100644 index 000000000..92c235b3f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920887.png differ diff --git a/modelarts/umn/en-us_image_0000001156920893.png b/modelarts/umn/en-us_image_0000001156920893.png new file mode 100644 index 000000000..e2fa2356f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920893.png differ diff --git a/modelarts/umn/en-us_image_0000001156920897.png b/modelarts/umn/en-us_image_0000001156920897.png new file mode 100644 index 000000000..afa7e64d6 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920897.png differ diff --git a/modelarts/umn/en-us_image_0000001156920899.png b/modelarts/umn/en-us_image_0000001156920899.png new file mode 100644 index 000000000..a3eca2a30 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920899.png differ diff --git a/modelarts/umn/en-us_image_0000001156920901.png b/modelarts/umn/en-us_image_0000001156920901.png new file mode 100644 index 000000000..fe03e6853 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920901.png differ diff --git a/modelarts/umn/en-us_image_0000001156920903.png b/modelarts/umn/en-us_image_0000001156920903.png new file mode 100644 index 000000000..44e8779d6 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920903.png differ diff --git a/modelarts/umn/en-us_image_0000001156920919.png b/modelarts/umn/en-us_image_0000001156920919.png new file mode 100644 index 000000000..5053f3cee Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920919.png differ diff --git a/modelarts/umn/en-us_image_0000001156920929.png b/modelarts/umn/en-us_image_0000001156920929.png new file mode 100644 index 000000000..28a377c2d Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920929.png differ diff --git a/modelarts/umn/en-us_image_0000001156920931.png b/modelarts/umn/en-us_image_0000001156920931.png new file mode 100644 index 000000000..8eea1bd2f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920931.png differ diff --git a/modelarts/umn/en-us_image_0000001156920933.png b/modelarts/umn/en-us_image_0000001156920933.png new file mode 100644 index 000000000..34ec4c8cd Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920933.png differ diff --git a/modelarts/umn/en-us_image_0000001156920935.png b/modelarts/umn/en-us_image_0000001156920935.png new file mode 100644 index 000000000..091cf3038 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920935.png differ diff --git a/modelarts/umn/en-us_image_0000001156920939.png b/modelarts/umn/en-us_image_0000001156920939.png new file mode 100644 index 000000000..e153cf5a1 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920939.png differ diff --git a/modelarts/umn/en-us_image_0000001156920943.png b/modelarts/umn/en-us_image_0000001156920943.png new file mode 100644 index 000000000..f15d82b7c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920943.png differ diff --git a/modelarts/umn/en-us_image_0000001156920951.png b/modelarts/umn/en-us_image_0000001156920951.png new file mode 100644 index 000000000..c74c1dc52 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920951.png differ diff --git a/modelarts/umn/en-us_image_0000001156920955.gif b/modelarts/umn/en-us_image_0000001156920955.gif new file mode 100644 index 000000000..bd9090444 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920955.gif differ diff --git a/modelarts/umn/en-us_image_0000001156920959.png b/modelarts/umn/en-us_image_0000001156920959.png new file mode 100644 index 000000000..75490eea0 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920959.png differ diff --git a/modelarts/umn/en-us_image_0000001156920961.png b/modelarts/umn/en-us_image_0000001156920961.png new file mode 100644 index 000000000..4f6d3dcac Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920961.png differ diff --git a/modelarts/umn/en-us_image_0000001156920965.png b/modelarts/umn/en-us_image_0000001156920965.png new file mode 100644 index 000000000..61b107366 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920965.png differ diff --git a/modelarts/umn/en-us_image_0000001156920967.png b/modelarts/umn/en-us_image_0000001156920967.png new file mode 100644 index 000000000..a3a91d40f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920967.png differ diff --git a/modelarts/umn/en-us_image_0000001156920969.png b/modelarts/umn/en-us_image_0000001156920969.png new file mode 100644 index 000000000..b3c287fa7 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920969.png differ diff --git a/modelarts/umn/en-us_image_0000001156920971.png b/modelarts/umn/en-us_image_0000001156920971.png new file mode 100644 index 000000000..474d16c71 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920971.png differ diff --git a/modelarts/umn/en-us_image_0000001156920973.png b/modelarts/umn/en-us_image_0000001156920973.png new file mode 100644 index 000000000..21bbdd559 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920973.png differ diff --git a/modelarts/umn/en-us_image_0000001156920981.png b/modelarts/umn/en-us_image_0000001156920981.png new file mode 100644 index 000000000..a2c95fc54 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920981.png differ diff --git a/modelarts/umn/en-us_image_0000001156920983.png b/modelarts/umn/en-us_image_0000001156920983.png new file mode 100644 index 000000000..d6b1e464b Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920983.png differ diff --git a/modelarts/umn/en-us_image_0000001156920985.png b/modelarts/umn/en-us_image_0000001156920985.png new file mode 100644 index 000000000..e9711b1db Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920985.png differ diff --git a/modelarts/umn/en-us_image_0000001156920989.png b/modelarts/umn/en-us_image_0000001156920989.png new file mode 100644 index 000000000..953bf37c5 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156920989.png differ diff --git a/modelarts/umn/en-us_image_0000001156921011.png b/modelarts/umn/en-us_image_0000001156921011.png new file mode 100644 index 000000000..cc4155a38 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156921011.png differ diff --git a/modelarts/umn/en-us_image_0000001156921015.png b/modelarts/umn/en-us_image_0000001156921015.png new file mode 100644 index 000000000..206e4845a Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156921015.png differ diff --git a/modelarts/umn/en-us_image_0000001156921017.png b/modelarts/umn/en-us_image_0000001156921017.png new file mode 100644 index 000000000..45e100804 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156921017.png differ diff --git a/modelarts/umn/en-us_image_0000001156921451.png b/modelarts/umn/en-us_image_0000001156921451.png new file mode 100644 index 000000000..d98fad413 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001156921451.png differ diff --git a/modelarts/umn/en-us_image_0000001157080759.png b/modelarts/umn/en-us_image_0000001157080759.png new file mode 100644 index 000000000..a8c64fbfd Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080759.png differ diff --git a/modelarts/umn/en-us_image_0000001157080805.png b/modelarts/umn/en-us_image_0000001157080805.png new file mode 100644 index 000000000..64c1cc07d Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080805.png differ diff --git a/modelarts/umn/en-us_image_0000001157080847.png b/modelarts/umn/en-us_image_0000001157080847.png new file mode 100644 index 000000000..c1625cf1a Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080847.png differ diff --git a/modelarts/umn/en-us_image_0000001157080853.png b/modelarts/umn/en-us_image_0000001157080853.png new file mode 100644 index 000000000..c4910df2c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080853.png differ diff --git a/modelarts/umn/en-us_image_0000001157080859.png b/modelarts/umn/en-us_image_0000001157080859.png new file mode 100644 index 000000000..819ac917c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080859.png differ diff --git a/modelarts/umn/en-us_image_0000001157080869.png b/modelarts/umn/en-us_image_0000001157080869.png new file mode 100644 index 000000000..3e045afaa Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080869.png differ diff --git a/modelarts/umn/en-us_image_0000001157080871.png b/modelarts/umn/en-us_image_0000001157080871.png new file mode 100644 index 000000000..0264b3063 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080871.png differ diff --git a/modelarts/umn/en-us_image_0000001157080873.png b/modelarts/umn/en-us_image_0000001157080873.png new file mode 100644 index 000000000..572be9bf8 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080873.png differ diff --git a/modelarts/umn/en-us_image_0000001157080875.png b/modelarts/umn/en-us_image_0000001157080875.png new file mode 100644 index 000000000..9e2caee96 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080875.png differ diff --git a/modelarts/umn/en-us_image_0000001157080879.png b/modelarts/umn/en-us_image_0000001157080879.png new file mode 100644 index 000000000..80cb4526a Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080879.png differ diff --git a/modelarts/umn/en-us_image_0000001157080885.png b/modelarts/umn/en-us_image_0000001157080885.png new file mode 100644 index 000000000..8ad309089 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080885.png differ diff --git a/modelarts/umn/en-us_image_0000001157080893.png b/modelarts/umn/en-us_image_0000001157080893.png new file mode 100644 index 000000000..a87a76b28 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080893.png differ diff --git a/modelarts/umn/en-us_image_0000001157080895.png b/modelarts/umn/en-us_image_0000001157080895.png new file mode 100644 index 000000000..9243e1a3d Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080895.png differ diff --git a/modelarts/umn/en-us_image_0000001157080897.png b/modelarts/umn/en-us_image_0000001157080897.png new file mode 100644 index 000000000..720ee111b Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080897.png differ diff --git a/modelarts/umn/en-us_image_0000001157080899.png b/modelarts/umn/en-us_image_0000001157080899.png new file mode 100644 index 000000000..f5dec5d8d Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080899.png differ diff --git a/modelarts/umn/en-us_image_0000001157080903.png b/modelarts/umn/en-us_image_0000001157080903.png new file mode 100644 index 000000000..d2a14cfe9 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080903.png differ diff --git a/modelarts/umn/en-us_image_0000001157080905.png b/modelarts/umn/en-us_image_0000001157080905.png new file mode 100644 index 000000000..ec0041dd5 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080905.png differ diff --git a/modelarts/umn/en-us_image_0000001157080907.png b/modelarts/umn/en-us_image_0000001157080907.png new file mode 100644 index 000000000..4449333a6 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080907.png differ diff --git a/modelarts/umn/en-us_image_0000001157080911.png b/modelarts/umn/en-us_image_0000001157080911.png new file mode 100644 index 000000000..8619777da Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080911.png differ diff --git a/modelarts/umn/en-us_image_0000001157080919.png b/modelarts/umn/en-us_image_0000001157080919.png new file mode 100644 index 000000000..24a6676d1 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080919.png differ diff --git a/modelarts/umn/en-us_image_0000001157080923.png b/modelarts/umn/en-us_image_0000001157080923.png new file mode 100644 index 000000000..a6b85c619 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080923.png differ diff --git a/modelarts/umn/en-us_image_0000001157080931.png b/modelarts/umn/en-us_image_0000001157080931.png new file mode 100644 index 000000000..75490eea0 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080931.png differ diff --git a/modelarts/umn/en-us_image_0000001157080933.png b/modelarts/umn/en-us_image_0000001157080933.png new file mode 100644 index 000000000..2f901fdcf Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080933.png differ diff --git a/modelarts/umn/en-us_image_0000001157080935.png b/modelarts/umn/en-us_image_0000001157080935.png new file mode 100644 index 000000000..b1cc374a4 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080935.png differ diff --git a/modelarts/umn/en-us_image_0000001157080965.png b/modelarts/umn/en-us_image_0000001157080965.png new file mode 100644 index 000000000..4ea6a5ec6 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080965.png differ diff --git a/modelarts/umn/en-us_image_0000001157080983.png b/modelarts/umn/en-us_image_0000001157080983.png new file mode 100644 index 000000000..23d28a1b2 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157080983.png differ diff --git a/modelarts/umn/en-us_image_0000001157081001.png b/modelarts/umn/en-us_image_0000001157081001.png new file mode 100644 index 000000000..21bbdd559 Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157081001.png differ diff --git a/modelarts/umn/en-us_image_0000001157081003.png b/modelarts/umn/en-us_image_0000001157081003.png new file mode 100644 index 000000000..c2356963c Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157081003.png differ diff --git a/modelarts/umn/en-us_image_0000001157081267.png b/modelarts/umn/en-us_image_0000001157081267.png new file mode 100644 index 000000000..df875d81f Binary files /dev/null and b/modelarts/umn/en-us_image_0000001157081267.png differ diff --git a/modelarts/umn/en-us_image_0000001214778791.png b/modelarts/umn/en-us_image_0000001214778791.png new file mode 100644 index 000000000..f0b9571fc Binary files /dev/null and b/modelarts/umn/en-us_image_0000001214778791.png differ diff --git a/modelarts/umn/modelarts_01_0000.html b/modelarts/umn/modelarts_01_0000.html new file mode 100644 index 000000000..c26283260 --- /dev/null +++ b/modelarts/umn/modelarts_01_0000.html @@ -0,0 +1,26 @@ + + + +

    Service Overview

    + +
    +

    + +
    + + +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0001.html b/modelarts/umn/modelarts_01_0001.html new file mode 100644 index 000000000..4cca7b20f --- /dev/null +++ b/modelarts/umn/modelarts_01_0001.html @@ -0,0 +1,23 @@ + + +

    What Is ModelArts?

    +

    ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and model deployment, ModelArts helps AI developers quickly build models and efficiently manage the AI development lifecycle.

    +

    ModelArts covers all stages of AI development, including data processing and model training and deployment. The underlying technologies of ModelArts support various heterogeneous computing resources, allowing developers to flexibly select and use resources. In addition, ModelArts supports popular open-source AI development frameworks such as TensorFlow. Developers can also use self-developed algorithm frameworks to match their usage habits.

    +

    ModelArts aims to simplify AI development.

    +

    Product Architecture

    ModelArts supports the entire development process, including data processing, and model training, management, and deployment.

    +

    ModelArts supports various AI application scenarios, such as image classification and object detection.

    +
    +
    Figure 1 ModelArts architecture
    +

    Product Advantages

    • One-stop platform

      The out-of-the-box and full-lifecycle AI development platform provides one-stop training, management, and deployment of models.

      +
    • Easy to use
      • Automatic optimization of hyperparameters
      • Code-free development and simplified operations
      +
    • High performance
      • The self-developed MoXing deep learning framework accelerates algorithm development and training.
      • Optimized GPU utilization accelerates real-time inference.
      +
    • Flexible
      • Popular open-source frameworks available, such as TensorFlow, and MindSpore
      • Popular GPUs
      • Exclusive use of dedicated resources
      • Custom images for custom frameworks and operators
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0003.html b/modelarts/umn/modelarts_01_0003.html new file mode 100644 index 000000000..12f92d690 --- /dev/null +++ b/modelarts/umn/modelarts_01_0003.html @@ -0,0 +1,19 @@ + + +

    Functions

    +

    AI engineers face challenges in the installation and configuration of various AI tools, data preparation, and model training. To address these challenges, the one-stop AI development platform ModelArts is provided. The platform integrates data preparation, algorithm development, model training, and model deployment into the production environment, allowing AI engineers to perform one-stop AI development.

    +
    Figure 1 Function overview
    +

    ModelArts has the following features:

    +
    • Data governance

      Manages data preparation, such as data filtering and labeling, and dataset versions.

      +
    • Rapid and simplified model training

      Enables high-performance distributed training and simplifies coding with the self-developed MoXing deep learning framework.

      +
    • Multi-scenario deployment

      Deploys models in various production environments, and supports real-time and batch inference.

      +
    • Auto learning

      Enables model building without coding and supports image classification, object detection, and predictive analytics.

      +
    + +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0005.html b/modelarts/umn/modelarts_01_0005.html new file mode 100644 index 000000000..e2cee52b9 --- /dev/null +++ b/modelarts/umn/modelarts_01_0005.html @@ -0,0 +1,20 @@ + + +

    Common Concepts of ModelArts

    +

    ExeML

    ExeML is the process of automating model design, parameter tuning, and model training, model compression, and model deployment with the labeled data. The process is code-free and does not require developers to have experience in model development. A model can be built in three steps: labeling data, training a model, and deploying the model.

    +
    +

    Inference

    Inference is the process of deriving a new judgment from a known judgment according to a certain strategy. In AI, machines simulate human intelligence, and complete inference based on neural networks.

    +
    +

    Real-Time Inference

    Real-time inference specifies a web service that provides an inference result for each inference request.

    +
    +

    Batch Inference

    Batch inference specifies a batch job that processes batch data for inference.

    +
    +

    Resource Pool

    ModelArts provides large-scale computing clusters for model development, training, and deployment. There are two types of resource pools: public resource pool and dedicated resource pool. The public resource pool is provided by default. Dedicated resource pools are created separately and used exclusively.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0006.html b/modelarts/umn/modelarts_01_0006.html new file mode 100644 index 000000000..116e7f5e8 --- /dev/null +++ b/modelarts/umn/modelarts_01_0006.html @@ -0,0 +1,18 @@ + + +

    Related Services

    +

    OBS

    ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object Storage Service Console Function Overview.

    +
    +

    CCE

    ModelArts uses Cloud Container Engine (CCE) to deploy models as real-time services. CCE enables high concurrency and provides elastic scaling. For more information about CCE, see Cloud Container Engine User Guide.

    +
    +

    SWR

    To use an AI framework that is not supported by ModelArts, use SoftWare Repository for Container (SWR) to customize an image and import the image to ModelArts for training or inference. For more details, see .

    +
    +

    Cloud Eye

    ModelArts uses Cloud Eye to monitor online services and model loads in real time and send alarms and notifications automatically. For details about Cloud Eye, see Cloud Eye User Guide.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0009.html b/modelarts/umn/modelarts_01_0009.html new file mode 100644 index 000000000..e0c6f55a1 --- /dev/null +++ b/modelarts/umn/modelarts_01_0009.html @@ -0,0 +1,29 @@ + + +

    Basic Knowledge

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_01_0010.html b/modelarts/umn/modelarts_01_0010.html new file mode 100644 index 000000000..f32f6f5f8 --- /dev/null +++ b/modelarts/umn/modelarts_01_0010.html @@ -0,0 +1,26 @@ + + +

    Introduction to the AI Development Lifecycle

    +

    What Is AI

    Artificial intelligence (AI) is a technology capable of simulating human cognition through machines. The core capability of AI is to make a judgment or prediction based on a given input.

    +
    +

    What Is the Purpose of AI Development

    AI development aims to centrally process and extract information from volumes of data to summarize internal patterns of the study objects.

    +

    Massive volumes of collected data are computed, analyzed, summarized, and organized by using appropriate statistics, machine learning, and deep learning methods to maximize data value.

    +
    +

    Basic Process of AI Development

    The basic process of AI development includes the following steps: determining an objective, preparing data, and training, evaluating, and deploying a model.

    +
    Figure 1 AI development process
    +
    1. Determine an objective.

      Before starting AI development, determine what to analyze. What problems do you want to solve? What is the business goal? Sort out the AI development framework and ideas based on the business understanding. For example, image classification and object detection. Different projects have different requirements for data and AI development methods.

      +

    2. Prepare data.

      Data preparation refers to data collection and preprocessing.

      +

      Data preparation is the basis of AI development. When you collect and integrate related data based on the determined objective, the most important thing is to ensure the authenticity and reliability of the obtained data. Typically, you cannot collect all the data at the same time. In the data labeling phase, you may find that some data sources are missing and then you may need to repeatedly adjust and optimize the data.

      +

    3. Train a model.

      Modeling involves analyzing the prepared data to find the causality, internal relationships, and regular patterns, thereby providing references for commercial decision making. After model training, usually one or more machine learning or deep learning models are generated. These models can be applied to new data to obtain predictions and evaluation results.

      +

    4. Evaluate the model.

      A model generated by training needs to be evaluated. Typically, you cannot obtain a satisfactory model after the first evaluation, and may need to repeatedly adjust algorithm parameters and data to further optimize the model.

      +

      Some common metrics, such as the accuracy, recall, and area under the curve (AUC), help you effectively evaluate and obtain a satisfactory model.

      +

    5. Deploy the model.

      Model development and training are based on existing data (which may be test data). After a satisfactory model is obtained, the model needs to be formally applied to actual data or newly generated data for prediction, evaluation, and visualization. The findings can then be reported to decision makers in an intuitive way, helping them develop the right business strategies.

      +

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0011.html b/modelarts/umn/modelarts_01_0011.html new file mode 100644 index 000000000..80d4f1eeb --- /dev/null +++ b/modelarts/umn/modelarts_01_0011.html @@ -0,0 +1,22 @@ + + +

    Basic Concepts of AI Development

    +

    Machine learning is classified into supervised, unsupervised, and reinforcement learning.

    +
    • Supervised learning uses labeled samples to adjust the parameters of classifiers to achieve the required performance. It can be considered as learning with a teacher. Common supervised learning includes regression and classification.
    • Unsupervised learning is used to find hidden structures in unlabeled data. Clustering is a form of unsupervised learning.
    • Reinforcement learning is an area of machine learning concerned with how software agents ought to take actions in an environment so as to maximize some notion of cumulative reward.
    +

    Regression

    Regression reflects the time feature of data attributes and generates a function that maps one data attribute to an actual variable prediction to find the dependency between the variable and attribute. Regression mainly analyzes data and predicts data and data relationship. Regression can be used for customer development, retention, customer churn prevention, production lifecycle analysis, sales trend prediction, and targeted promotion.

    +

    +
    +

    Classification

    Classification involves defining a set of categories based on the common features of objects and identifying which category an object belongs to. Classification can be used for customer classification, customer properties, feature analysis, customer satisfaction analysis, and customer purchase trend prediction.

    +

    +
    +

    Clustering

    Clustering involves grouping a set of objects in such a way that objects in the same group are more similar to each other than to those in other groups. Clustering can be used for customer segmentation, customer characteristic analysis, customer purchase trend prediction, and market segmentation.

    +

    +

    Clustering analyzes data objects and produces class labels. Objects are grouped based on the maximized and minimized similarities to form clusters. In this way, objects in the same cluster are more similar to each other than to those in other clusters.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0012.html b/modelarts/umn/modelarts_01_0012.html new file mode 100644 index 000000000..924a642eb --- /dev/null +++ b/modelarts/umn/modelarts_01_0012.html @@ -0,0 +1,14 @@ + + +

    Data Management

    +

    During AI development, massive volumes of data need to be processed, and data preparation and labeling usually take more than half of the development time. ModelArts data management provides an efficient data management and labeling framework. It supports various data types such as image, text, audio, and video in a range of labeling scenarios such as image classification, object detection, speech paragraph labeling, and text classification. ModelArts data management can be used in AI projects of computer vision, natural language processing, and audio and video analysis. In addition, it provides functions such as data filtering, data analysis, team labeling, and version management for full-process data labeling.

    +

    Team labeling enables multiple members to label a dataset, improving labeling efficiency. ModelArts allows project-based management for labeling by individual developers, small-scale labeling by small teams, and large-scale labeling by professional teams.

    +

    For large-scale team labeling, ModelArts provides team management, personnel management, and data management to implement the entire process, from project creation, allocation, management, labeling, to acceptance. For small-scale labeling by individuals and small teams, ModelArts provides an easy-to-use labeling tool to minimize project management costs.

    +

    In addition, the labeling platform ensures data security. User data is used only within the authorized scope. The labeling object allocation policy ensures user data privacy and implements data anonymization.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0013.html b/modelarts/umn/modelarts_01_0013.html new file mode 100644 index 000000000..2fbfff54e --- /dev/null +++ b/modelarts/umn/modelarts_01_0013.html @@ -0,0 +1,14 @@ + + +

    DevEnviron

    +

    It is challenging to set up a development environment, select an AI algorithm framework and algorithm, debug code, install software, and accelerate hardware. To address these challenges, ModelArts provides DevEnviron to simplify the entire development process.

    +
    • Mainstream AI algorithm frameworks supported

      In the machine learning and deep learning fields, popular open-source training and inference frameworks include TensorFlow, PyTorch, MXNet, and MindSpore. ModelArts supports all popular AI computing frameworks and provides a user-friendly development and debugging environment. It supports traditional machine learning algorithms, such as logistic regression, decision tree, and clustering, as well as multiple types of deep learning algorithms, such as the convolutional neural network (CNN), recurrent neural network (RNN), and long short-term memory (LSTM).

      +
    • Simplified algorithm development for distributed training

      Deep learning generally requires large-scale GPU clusters for distributed acceleration. For existing open-source frameworks, algorithm developers need to write a large amount of code for distributed training on different hardware, and the acceleration code varies depending on the framework. To resolve these issues, a distributed lightweight framework or SDK is required. The framework or SDK is built on deep learning engines such as TensorFlow, PyTorch, MXNet, and MindSpore to improve the distributed performance and usability of these engines. ModelArts MoXing perfectly suits the needs. The easy-to-use MoXing API/SDK enables you to develop deep learning at low costs.

      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0014.html b/modelarts/umn/modelarts_01_0014.html new file mode 100644 index 000000000..3c9ce188c --- /dev/null +++ b/modelarts/umn/modelarts_01_0014.html @@ -0,0 +1,23 @@ + + +

    Model Training

    +

    In addition to data and algorithms, developers spend a lot of time configuring model training parameters. Model training parameters determine the model's precision and convergence time. Parameter selection is heavily dependent on developers' experience. Improper parameter selection will affect the model's precision or significantly increase the time required for model training.

    +

    To simplify AI development and improve development efficiency and training performance, ModelArts offers visualized job management, resource management, and version management and automatically performs hyperparameter optimization based on machine learning and reinforcement learning. It provides automatic hyperparameter tuning policies such as learning rate and batch size, and integrates common models.

    +

    Currently, when most developers build models, the models usually have dozens of layers or even hundreds of layers and MB-level or GB-level parameters to meet precision requirements. As a result, the specifications of computing resources are extremely high, especially the computing power of hardware resources, memory, and ROM. The resource specifications on the device side are strictly limited. For example, the computing power on the device side is 1 TFLOPS, the memory size is about 2 GB, and the ROM space is about 2 GB, so the model size on the device side must be limited to 100 KB and the inference delay must be limited to 100 milliseconds.

    +

    Therefore, compression technologies with lossless or near-lossless model precision, such as pruning, quantization, and knowledge distillation, are used to implement automatic model compression and optimization, and automatic iteration of model compression and retraining to control the loss of model precision. The low-bit quantization technology, which eliminates the need for retraining, converts the model from a high-precision floating point to a fixed-point operation. Multiple compression and optimization technologies are used to meet the lightweight requirements of device and edge hardware resources. The model compression technology reduces the precision by less than 1% in specific scenarios.

    +

    When the training data volume is large, the training of the deep learning model is time-consuming. In computer vision technology, ImageNet-1k (a classification dataset containing 1,000 image classes, referred to as ImageNet) is a commonly used dataset. If you use a P100 GPU to train a ResNet-50 model on the dataset, it will take nearly one week. This hinders rapid development of deep learning applications. Therefore, the acceleration of deep learning training has always been an important concern to the academia and the industry.

    +

    Distributed training acceleration needs to be considered in terms of software and hardware. A single optimization method cannot meet expectations. Therefore, optimization of distributed acceleration is a system project. The distributed training architecture needs to be considered in terms of hardware and chip design. To minimize compute and communication delays, many factors need to be considered, including overall compute specifications, network bandwidth, high-speed cache, power consumption, and heat dissipation of the system, and the relationship between compute and communication throughput.

    +

    The software design needs to combine high-performance hardware features to fully use the high-speed hardware network and implement high-bandwidth distributed communication and efficient local data caching. By using training optimization algorithms, such as hybrid parallel, gradient compression, and convolution acceleration, the software and hardware of the distributed training system can be efficiently coordinated and optimized from end to end, and training acceleration can be implemented in a distributed environment of multiple hosts and cards. ModelArts delivers an industry-leading speedup of over 0.8 for ResNet50 on the ImageNet dataset in the distributed environment with thousands of hosts and cards.

    +

    To measure the acceleration performance of distributed deep learning, the following two key indicators are used:

    +
    • Throughput, that is, the amount of data processed in a unit time
    • Convergence time, that is, the time required to achieve certain precision
    +

    The throughput depends on server hardware (for example, more AI acceleration chips with higher FLOPS processing capabilities and higher communication bandwidth achieve higher throughput), data reading and caching, data preprocessing, model computing (for example, convolution algorithm selection), and communication topology optimization. Except low-bit computing and gradient (or parameter) compression, most technologies improve throughput without affecting model precision. To achieve the shortest convergence time, optimize the throughput and adjust the parameters. If the parameters are not adjusted properly, the throughput cannot be optimized. If the batch size is set to a small value, the parallel performance of model training will be relatively poor. As a result, the throughput cannot be improved even if the number of compute nodes are increased.

    +

    Users are most concerned about convergence time. The MoXing framework implements full-stack optimization and significantly reduces the training convergence time. For data read and preprocessing, MoXing uses multi-level concurrent input pipelines to prevent data I/Os from becoming a bottleneck. In terms of model computing, MoXing provides hybrid precision calculation, which combines semi-precision and single-precision for the upper layer models and reduces the loss caused by precision calculation through adaptive scaling. Dynamic hyperparameter policies (such as momentum and batch size) are used to minimize the number of epochs required for model convergence.

    +

    ModelArts High-Performance Distributed Training Optimization

    • Automatic hybrid precision to fully utilize hardware computing capabilities
    • Dynamic hyperparameter adjustment technologies (dynamic batch size, image size, and momentum)
    • Automatic model gradient merging and splitting
    • Communication operator scheduling optimization based on BP bubble adaptive computing
    • Distributed high-performance communication libraries (NStack and HCCL)
    • Distributed data-model hybrid parallel
    • Training data compression and multi-level caching
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0015.html b/modelarts/umn/modelarts_01_0015.html new file mode 100644 index 000000000..e53b10e34 --- /dev/null +++ b/modelarts/umn/modelarts_01_0015.html @@ -0,0 +1,15 @@ + + +

    Model Deployment

    +

    +

    Generally, AI model deployment and large-scale implementation are complex.

    +

    ModelArts resolves this issue by deploying a trained model on different devices in various scenarios with only a few clicks. This secure and reliable one-stop deployment is available for individual developers, enterprises, and device manufacturers.

    +
    Figure 1 Process of deploying a model
    +
    • The real-time inference service features high concurrency, low latency, and elastic scaling.
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0016.html b/modelarts/umn/modelarts_01_0016.html new file mode 100644 index 000000000..4cd2c9d00 --- /dev/null +++ b/modelarts/umn/modelarts_01_0016.html @@ -0,0 +1,15 @@ + + +

    ExeML

    +

    To implement AI in various industries, AI model development must be simplified. Currently, only a few algorithm engineers and researchers are capable of AI development and optimization. They find it challenging to develop related prototypes into products and projects. Most service developers, however, face difficulties in developing AI algorithms and optimizing parameters. As a result, most enterprises lack comprehensive AI development capabilities.

    +

    ModelArts provides ExeML for service developers who are not experienced in algorithm development to develop algorithms. It automatically generates models based on transfer learning and Neural Architecture Search (NAS), selects parameters for model training, and tunes models for rapid model training and deployment. Based on the labeled data and application scenario provided by developers, ModelArts automatically generates models that meet precision requirements, without the need for coding. The application scenarios include image classification and object detection. Models can be automatically optimized and generated based on the deployment environment and inference speed requirements.

    +
    Figure 1 Process of using ExeML
    +

    ModelArts ExeML also provides the auto learning white-box capabilities. It opens model parameters and implements template-based development. ExeML helps accelerate the development speed. With ExeML, developers can directly optimize the generated model or retrain the model, instead of setting up a new model.

    +

    The key techniques of automatic deep learning are transfer learning (generating high-quality models based on a small amount of data), automatic design of the model architecture in multiple dimensions (neural network search and adaptive model optimization), and fast, accurate automatic tuning of training parameters.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_01_0017.html b/modelarts/umn/modelarts_01_0017.html new file mode 100644 index 000000000..4ca3891b1 --- /dev/null +++ b/modelarts/umn/modelarts_01_0017.html @@ -0,0 +1,20 @@ + + +

    Permissions Management

    +

    If you need to assign different permissions to different employees in your enterprise to access ModelArts resources, IAM is a good choice for fine-grained permissions management.

    +

    Granting Permissions to Users

    Figure 1 Authorization model
    +
    +
    1. Plan user groups and grant required permissions to each user group.
    2. Add a user to a specific user group so that the user can inherit the permissions of the group.
    +

    When personnel changes occur, you only need to change individual user permissions by changing their user group. User groups make permission management more efficient.

    +

    Granting Permissions to Other Accounts

    You (account A) can create an agency on IAM to grant required permissions to the delegated account (account B). The administrator of account B grants the Agent Operator permissions to the user of account B to enable the user to manage resources in your account (account A).

    +
    +

    Granting Permissions to Federated Users

    You can use IAM to create an IdP and create rules for the IdP to convert federated users into IAM users who have specified permissions to access cloud resources.

    +
    Figure 2 Principles of identity conversion for federated users
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_04_0099.html b/modelarts/umn/modelarts_04_0099.html new file mode 100644 index 000000000..66e8fb24c --- /dev/null +++ b/modelarts/umn/modelarts_04_0099.html @@ -0,0 +1,20 @@ + + +

    Change History

    +
    +
    + + + + + + + +

    Released On

    +

    Description

    +

    2021-04-30

    +

    This is the first official release.

    +
    +
    +
    + diff --git a/modelarts/umn/modelarts_05_0000.html b/modelarts/umn/modelarts_05_0000.html new file mode 100644 index 000000000..3f9d8b098 --- /dev/null +++ b/modelarts/umn/modelarts_05_0000.html @@ -0,0 +1,27 @@ + + + +

    FAQs

    + +

    +
    + +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0001.html b/modelarts/umn/modelarts_05_0001.html new file mode 100644 index 000000000..98c7b4d3c --- /dev/null +++ b/modelarts/umn/modelarts_05_0001.html @@ -0,0 +1,13 @@ + + +

    What Is ModelArts?

    +

    ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and model deployment, ModelArts helps you build models quickly and manage the lifecycle of AI development.

    +

    The one-stop ModelArts platform covers all stages of AI development, including data processing and model training and deployment. The underlying layer of ModelArts supports various heterogeneous computing resources. You can flexibly select and use the resources without having to consider the underlying technologies. In addition, ModelArts supports popular open-source AI development frameworks such as TensorFlow. Developers can also use self-developed algorithm frameworks to match their usage habits.

    +

    ModelArts aims to simplify AI development.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0002.html b/modelarts/umn/modelarts_05_0002.html new file mode 100644 index 000000000..950eef0ce --- /dev/null +++ b/modelarts/umn/modelarts_05_0002.html @@ -0,0 +1,12 @@ + + +

    What Is ExeML?

    +

    ExeML is the process of automating model design, parameter tuning, and model training, compression, and deployment with the labeled data. The process is free of coding and does not require developers' experience in model development.

    +

    Users who do not have encoding capability can use the labeling, one-click model training, and model deployment functions of ExeML to build AI models.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0003.html b/modelarts/umn/modelarts_05_0003.html new file mode 100644 index 000000000..58566d838 --- /dev/null +++ b/modelarts/umn/modelarts_05_0003.html @@ -0,0 +1,18 @@ + + +

    What Are the Relationships Between ModelArts and Other Services

    +

    OBS

    ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object Storage Service Console Function Overview.

    +
    +

    CCE

    ModelArts uses Cloud Container Engine (CCE) to deploy models as real-time services. CCE enables high concurrency and provides elastic scaling. For more information about CCE, see Cloud Container Engine User Guide.

    +
    +

    SWR

    To use an AI framework that is not supported by ModelArts, use SoftWare Repository for Container (SWR) to customize an image and import the image to ModelArts for training or inference. For more details, see .

    +
    +

    Cloud Eye

    ModelArts uses Cloud Eye to monitor online services and model loads in real time and send alarms and notifications automatically. For details about Cloud Eye, see Cloud Eye User Guide.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0004.html b/modelarts/umn/modelarts_05_0004.html new file mode 100644 index 000000000..918a72624 --- /dev/null +++ b/modelarts/umn/modelarts_05_0004.html @@ -0,0 +1,12 @@ + + +

    How Do I Obtain Access Keys?

    +

    Obtaining an Access Key

    1. Log in to the console, enter the My Credentials page, and choose Access Keys > Create Access Key.
    2. In the Create Access Key dialog box that is displayed, use the login password for verification.
    3. Click OK, open the credentials.csv file, and save the key file as prompted. The access key file is saved in the default download folder of the browser. Then, the access key (Access Key Id and Secret Access Key) is obtained.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0005.html b/modelarts/umn/modelarts_05_0005.html new file mode 100644 index 000000000..7da016a21 --- /dev/null +++ b/modelarts/umn/modelarts_05_0005.html @@ -0,0 +1,11 @@ + + +

    What Should I Do When the Train Button Is Unavailable After I Create an Image Classification Project and Label the Images?

    +

    The Train button turns to be available when the training images for an image classification project are classified into at least two categories, and each category contains at least five images.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0006.html b/modelarts/umn/modelarts_05_0006.html new file mode 100644 index 000000000..e09abd029 --- /dev/null +++ b/modelarts/umn/modelarts_05_0006.html @@ -0,0 +1,11 @@ + + +

    Can I Add Multiple Labels to an Image for an Object Detection Project?

    +

    Yes. You can add multiple labels to an image.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0008.html b/modelarts/umn/modelarts_05_0008.html new file mode 100644 index 000000000..9213a2564 --- /dev/null +++ b/modelarts/umn/modelarts_05_0008.html @@ -0,0 +1,12 @@ + + +

    What Type of Service Is Deployed in ExeML?

    +

    Models created in ExeML are deployed as real-time services. You can add images or compile code to test the services, as well as call the APIs using the URLs.

    +

    After model development is successful, you can choose Service Deployment > Real-Time Services in the left navigation pane of the ModelArts console to view running services, and stop or delete services.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0010.html b/modelarts/umn/modelarts_05_0010.html new file mode 100644 index 000000000..d7c4df36f --- /dev/null +++ b/modelarts/umn/modelarts_05_0010.html @@ -0,0 +1,11 @@ + + +

    What Formats of Images Are Supported by Object Detection or Image Classification Projects?

    +

    Images in JPG, JPEG, PNG, or BMP format are supported.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0012.html b/modelarts/umn/modelarts_05_0012.html new file mode 100644 index 000000000..d55f400a3 --- /dev/null +++ b/modelarts/umn/modelarts_05_0012.html @@ -0,0 +1,11 @@ + + +

    What Types of Services Can Models Be Deployed as on ModelArts?

    +

    Currently, models can only be deployed as real-time services and batch services.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0013.html b/modelarts/umn/modelarts_05_0013.html new file mode 100644 index 000000000..db8125b9a --- /dev/null +++ b/modelarts/umn/modelarts_05_0013.html @@ -0,0 +1,11 @@ + + +

    How Do I Upload Data to OBS?

    +

    Before using ModelArts to develop AI models, data needs to be uploaded to an OBS bucket. You can log in to the OBS console to create an OBS bucket, create a folder, and upload data. For details about how to upload data, see Object Storage Service Getting Started.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0014.html b/modelarts/umn/modelarts_05_0014.html new file mode 100644 index 000000000..e2985d764 --- /dev/null +++ b/modelarts/umn/modelarts_05_0014.html @@ -0,0 +1,23 @@ + + +

    General Issues

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0015.html b/modelarts/umn/modelarts_05_0015.html new file mode 100644 index 000000000..9c61deae3 --- /dev/null +++ b/modelarts/umn/modelarts_05_0015.html @@ -0,0 +1,25 @@ + + +

    ExeML

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0016.html b/modelarts/umn/modelarts_05_0016.html new file mode 100644 index 000000000..3fadcc427 --- /dev/null +++ b/modelarts/umn/modelarts_05_0016.html @@ -0,0 +1,15 @@ + + +

    Model Management

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0017.html b/modelarts/umn/modelarts_05_0017.html new file mode 100644 index 000000000..d3660d699 --- /dev/null +++ b/modelarts/umn/modelarts_05_0017.html @@ -0,0 +1,19 @@ + + +

    Service Deployment

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0018.html b/modelarts/umn/modelarts_05_0018.html new file mode 100644 index 000000000..c55fc3c42 --- /dev/null +++ b/modelarts/umn/modelarts_05_0018.html @@ -0,0 +1,14 @@ + + +

    What Are Image Classification and Object Detection?

    +

    Image classification is an image processing method that separates different classes of targets according to the features reflected in the images. With quantitative analysis on images, it classifies an image or each pixel or area in an image into different categories to replace human visual interpretation. In general, image classification aims to identify a class, status, or scene in an image. It is applicable to scenarios where an image contains only one object. Figure 1 shows an example of identifying a car in an image.

    +
    Figure 1 Image classification
    +

    Object detection is one of the classical problems in computer vision. It intends to label objects with frames and identify the object classes in an image. Generally, if an image contains multiple objects, object detection can identify the location, quantity, and name of each object in the image. It is suitable for scenarios where an image contains multiple objects. Figure 2 shows an example of identifying a tree and a car in an image.

    +
    Figure 2 Object detection
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0020.html b/modelarts/umn/modelarts_05_0020.html new file mode 100644 index 000000000..f6cd2b82b --- /dev/null +++ b/modelarts/umn/modelarts_05_0020.html @@ -0,0 +1,15 @@ + + +

    Development Environment

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0030.html b/modelarts/umn/modelarts_05_0030.html new file mode 100644 index 000000000..bee2dde3d --- /dev/null +++ b/modelarts/umn/modelarts_05_0030.html @@ -0,0 +1,21 @@ + + +

    Training Jobs

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0031.html b/modelarts/umn/modelarts_05_0031.html new file mode 100644 index 000000000..3e7e27f59 --- /dev/null +++ b/modelarts/umn/modelarts_05_0031.html @@ -0,0 +1,14 @@ + + +

    What Can I Do If the Message "Object directory size/quantity exceeds the limit" Is Displayed When I Create a Training Job?

    +

    Issue Analysis

    The code directory for creating a training job has limits on the size and number of files.

    +
    +

    Solution

    Delete the files except the code from the code directory or save the files in other directories. Ensure that the size of the code directory does not exceed 128 MB and the number of files does not exceed 4,096.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0032.html b/modelarts/umn/modelarts_05_0032.html new file mode 100644 index 000000000..f058994db --- /dev/null +++ b/modelarts/umn/modelarts_05_0032.html @@ -0,0 +1,23 @@ + + +

    Error Message "No such file or directory" Displayed in Training Job Logs

    +

    Issue Analysis

    When you use ModelArts, your data is stored in the OBS bucket. The data has a corresponding OBS path, for example, bucket_name/dir/image.jpg. ModelArts training jobs run in containers, and if they need to access OBS data, they need to know what path to access it from. If ModelArts cannot find the configured path, it is possible that the selected data storage path was configured incorrectly when the training job was created or that the OBS path in the code file is incorrect.

    +
    +

    Solution

    1. Confirm that the OBS path in the log exists.

      Locate the incorrect OBS path in the log, for example, obs-test/ModelArts/examples/. There are two methods to check whether it exists.

      +
      • On OBS Console, check whether the OBS path exists.

        Log in to OBS console using the current account, and check whether the OBS buckets, folders, and files exist in the OBS path displayed in the log. For example, you can confirm that a given bucket is there and then check if that bucket contains the folder you are looking for based on the configured path.

        +
        • If the file path exists, go to 2.
        • If it does not exist, change the path configured for the training job to an OBS bucket path that is actually there.
        +
      • Create a notebook instance, and use an API to check whether the directory exists. In an existing notebook instance or after creating a new notebook instance, run the following command to check whether the directory exists:
        import moxing as mox
        +mox.file.exists('obs://obs-test/ModelArts/examples/')
        +
        • If it exists, go to 2.
        • If it does not exist, change it to an available OBS bucket path in the training job.
        +
      +
    2. After confirming that the path exists, check whether OBS and ModelArts are in the same region and whether the OBS bucket belongs to another account.

      Log in to the ModelArts console and view the region where ModelArts resides. Log in to the OBS console and view the region where the OBS bucket resides. Check whether they reside in the same region and whether the OBS bucket belongs to another account.

      +
      • If they are in the same region and the OBS bucket does not belong to another account, go to 3.
      • If they are not in the same region or the OBS bucket belongs to another account, create a bucket and a folder in OBS that is in the same region as ModelArts using the same account, and upload data to the bucket.
      +
    3. In the script of the training job, check whether the API for reading the OBS path in the code file is correct.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0045.html b/modelarts/umn/modelarts_05_0045.html new file mode 100644 index 000000000..3770789ef --- /dev/null +++ b/modelarts/umn/modelarts_05_0045.html @@ -0,0 +1,14 @@ + + +

    Where Will the Data Be Uploaded to?

    +

    Data may be stored in OBS or EVS, depending on which kind of storage you have configured for your Notebook instances:

    +
    • OBS

      After you click upload, the data is directly uploaded to the target OBS path specified when the notebook instance was created.

      +
    • EVS

      After you click upload, the data is uploaded to the instance container, that is, the ~/work directory on the Terminal page.

      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0063.html b/modelarts/umn/modelarts_05_0063.html new file mode 100644 index 000000000..6e82da725 --- /dev/null +++ b/modelarts/umn/modelarts_05_0063.html @@ -0,0 +1,32 @@ + + +

    How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?

    +

    When a model references a dependency package, select a frequently-used framework to create training jobs. In addition, place the required file or installation package in the code directory. The requirements vary based on the dependency package that you use.

    +
    • Open-source installation package

      It is not allowed to install the package using the GitHub source code.

      +
      +

      Create a file named pip-requirements.txt in the code directory. In this file, specify the name and version of the dependency package in the format of Package name==Version.

      +

      For example, the OBS path specified by Code Directory contains model files and the pip-requirements.txt file. The following shows the code directory structure:

      +
      |---OBS path to the model boot file
      +     |---model.py               #Model boot file
      +     |---pip-requirements.txt   #Customized configuration file, which specifies the name and version of the dependency package
      +

      The following shows the content of the pip-requirements.txt file:

      +
      alembic==0.8.6
      +bleach==1.4.3
      +click==6.6
      +
    • Customized WHL file

      When you use a customized .whl file, the system cannot automatically download and install the file. Place the .whl file in the code directory, create a file named pip-requirements.txt, and specify the name of the .whl file in the created file. The dependency package must be a .whl file.

      +

      For example, the OBS path specified by Code Directory contains model files, .whl file, and pip-requirements.txt file. The following shows the code directory structure:

      +
      |---OBS path to the model boot file
      +     |---model.py               #Model boot file
      +     |---XXX.whl                #Dependency package. If multiple dependencies are required, place all of them here.
      +     |---pip-requirements.txt   #Customized configuration file, which specifies the name of the dependency package
      +

      The following shows the content of the pip-requirements.txt file:

      +
      numpy-1.15.4-cp36-cp36m-manylinux1_x86_64.whl
      +tensorflow-1.8.0-cp36-cp36m-manylinux1_x86_64.whl
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0067.html b/modelarts/umn/modelarts_05_0067.html new file mode 100644 index 000000000..dc0f07b4a --- /dev/null +++ b/modelarts/umn/modelarts_05_0067.html @@ -0,0 +1,21 @@ + + +

    Notebook

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0071.html b/modelarts/umn/modelarts_05_0071.html new file mode 100644 index 000000000..eed65aef6 --- /dev/null +++ b/modelarts/umn/modelarts_05_0071.html @@ -0,0 +1,12 @@ + + +

    How Do I Enable the Terminal Function in DevEnviron of ModelArts?

    +
    1. Log in to the ModelArts management console, and choose DevEnviron > Notebooks.
    2. In the notebook list, click Open in the Operation column of the target notebook instance to go to the Jupyter page.
    3. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
      Figure 1 Going to the Terminal page
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0080.html b/modelarts/umn/modelarts_05_0080.html new file mode 100644 index 000000000..f21e70c00 --- /dev/null +++ b/modelarts/umn/modelarts_05_0080.html @@ -0,0 +1,12 @@ + + +

    Do Files in /cache Still Exist After a Notebook Instance is Stopped or Restarted? How Do I Avoid a Restart?

    +

    /cache is a temporary directory and will not be saved. After an instance using OBS storage is stopped, data in the ~work directory will be deleted. After a notebook instance is restarted, all cached data except the data in the OBS bucket is lost, and your model or code is unavailable.

    +

    To avoid a restart, do not train heavy-load jobs that consume large amounts of CPU, GPU, or memory resources in DevEnviron.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0081.html b/modelarts/umn/modelarts_05_0081.html new file mode 100644 index 000000000..f82b32ae1 --- /dev/null +++ b/modelarts/umn/modelarts_05_0081.html @@ -0,0 +1,12 @@ + + +

    Where Is Data Stored After the Sync OBS Function Is Used?

    +
    1. Log in to the ModelArts management console, and choose DevEnviron > Notebooks.
    2. In the Operation column of the target notebook instance in the notebook list, click Open to go to the Jupyter page.
    3. On the Files tab page of the Jupyter page, select the target file and click Sync OBS in the upper part of the page to synchronize the file. The file is stored in the ~/work directory of the instance.
    4. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
    5. Run the following command to go to the ~/work directory.
      cd work
      +
    6. Run the ls command in the ~/work directory to view the files.
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0090.html b/modelarts/umn/modelarts_05_0090.html new file mode 100644 index 000000000..1d9127cdf --- /dev/null +++ b/modelarts/umn/modelarts_05_0090.html @@ -0,0 +1,74 @@ + + +

    What Are Sizes of the /cache Directories for Different Resource Specifications in the Training Environment?

    +

    When creating a training job, you can select CPU, GPU, or Ascend resources based on the size of the training job.

    +

    ModelArts mounts the disk to the /cache directory. You can use this directory to store temporary files. The /cache directory shares resources with the code directory. The directory has different capacities for different resource specifications.

    +
    • GPU resources +
      + + + + + + + + + + + + + +
      Table 1 Capacities of the cache directories for GPU resources

      GPU Specifications

      +

      cache Directory Capacity

      +

      V100

      +

      800G

      +

      8*V100

      +

      3T

      +

      P100

      +

      800G

      +
      +
      +
    • CPU resources +
      + + + + + + + + + + +
      Table 2 Capacities of the cache directories for CPU resources

      CPU Specifications

      +

      cache Directory Capacity

      +

      2 vCPUs | 8 GiB

      +

      50G

      +

      8 vCPUs | 32 GiB

      +

      50G

      +
      +
      +
    +
    • Ascend resources +
      + + + + + + + +
      Table 3 Capacities of the cache directories for Ascend resources

      Ascend Specifications

      +

      cache Directory Capacity

      +

      Ascend 910

      +

      3T

      +
      +
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0100.html b/modelarts/umn/modelarts_05_0100.html new file mode 100644 index 000000000..d68bbb0d3 --- /dev/null +++ b/modelarts/umn/modelarts_05_0100.html @@ -0,0 +1,12 @@ + + +

    What Should I Do If a Conflict Occurs When Deploying a Model As a Real-Time Service?

    +

    Before importing a model, you need to place the corresponding inference code and configuration file in the model folder. When encoding with Python, you are advised to use a relative import (Python import) to import custom packages.

    +

    If the relative import mode is not used, a conflict will occur once a package with the same name exists in a real-time service. As a result, model deployment or prediction fails.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0101.html b/modelarts/umn/modelarts_05_0101.html new file mode 100644 index 000000000..2d2ed848d --- /dev/null +++ b/modelarts/umn/modelarts_05_0101.html @@ -0,0 +1,19 @@ + + + +

    Data Management

    + +

    +
    + +
    + + + +
    + diff --git a/modelarts/umn/modelarts_05_0103.html b/modelarts/umn/modelarts_05_0103.html new file mode 100644 index 000000000..c995e34f7 --- /dev/null +++ b/modelarts/umn/modelarts_05_0103.html @@ -0,0 +1,16 @@ + + +

    Why Does Data Fail to Be Imported Using the Manifest File?

    +

    Symptom

    Failed to use the manifest file of the published dataset to import data again.

    +
    +

    Possible Cause

    Data has been changed in the OBS directory of the published dataset, for example, images have been deleted. Therefore, the manifest file is inconsistent with data in the OBS directory. As a result, an error occurs when the manifest file is used to import data again.

    +
    +

    Solution

    • Method 1 (recommended): Publish a new version of the dataset again and use the new manifest file to import data.
    • Method 2: Modify the manifest file on your local PC, search for data changes in the OBS directory, and modify the manifest file accordingly. Ensure that the manifest file is consistent with data in the OBS directory, and then import data using the new manifest file.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0124.html b/modelarts/umn/modelarts_05_0124.html new file mode 100644 index 000000000..def27d120 --- /dev/null +++ b/modelarts/umn/modelarts_05_0124.html @@ -0,0 +1,12 @@ + + +

    How Do I Import a Model Downloaded from OBS to ModelArts?

    +

    ModelArts allows you to upload local models to OBS or import models stored in OBS directly into ModelArts.

    +

    For details about how to import a model from OBS, see Importing a Meta Model from OBS.

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0128.html b/modelarts/umn/modelarts_05_0128.html new file mode 100644 index 000000000..9f5211b69 --- /dev/null +++ b/modelarts/umn/modelarts_05_0128.html @@ -0,0 +1,291 @@ + + +

    Which AI Frameworks Does ModelArts Support?

    +

    Supported AI frameworks and versions of ModelArts vary slightly based on the development environment, training jobs, and model inference (model management and deployment). The following describes the AI frameworks supported by each module.

    +

    Development Environment

    Notebook instances in the development environment support different AI engines and versions based on specific work environments (that is, different Python versions). After creating a notebook instance in the corresponding work environment, create a file based on the corresponding version in Table 1. ModelArts notebook instances support multiple engines. That is, a notebook instance can use all supported engines. Different engines can be switched quickly and conveniently.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 AI engines

    Work Environment

    +

    Built-in AI Engine and Version

    +

    Supported Chip

    +

    Multi-Engine 1.0 (Python 3, Recommended)

    +

    MXNet-1.2.1

    +

    GPU

    +

    PySpark-2.3.2

    +

    CPU

    +

    Pytorch-1.0.0

    +

    GPU

    +

    TensorFlow-1.13.1

    +

    GPU

    +

    XGBoost-Sklearn

    +

    CPU

    +

    Multi-Engine 2.0 (Python3)

    +

    Pytorch-1.4.0

    +

    GPU

    +

    TensorFlow-2.1.0

    +

    CPU/GPU

    +

    Ascend-Powered-Engine 1.0 (Python3)

    +

    MindSpore-1.1.1

    +

    Ascend 910

    +

    TensorFlow-1.15.0

    +

    Ascend 910

    +
    +
    +
    +

    Training Jobs

    Supported AI engines and versions when creating training jobs are as follows:

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 AI engines supported by training jobs

    Environment

    +

    Supported Chip

    +

    System Architecture

    +

    System Version

    +

    AI Engine and Version

    +

    Supported CUDA or Ascend Version

    +

    TensorFlow

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    TF-1.13.1-python3.6

    +

    CUDA 10.0

    +

    TF-2.1.0-python3.6

    +

    CUDA 10.1

    +

    Caffe

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Caffe-1.0.0-python2.7

    +

    CUDA 8.0

    +

    Spark_MLlib

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Spark-2.3.2-python3.6

    +

    N/A

    +

    XGBoost-Sklearn

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Scikit_Learn-0.18.1-python3.6

    +

    N/A

    +

    PyTorch

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    PyTorch-1.3.0-python3.6

    +

    CUDA 10.0

    +

    PyTorch-1.4.0-python3.6

    +

    CUDA 10.1

    +

    Ascend-Powered-Engine

    +

    +

    Ascend 910

    +

    +

    AArch64

    +

    EulerOS 2.8

    +

    Mindspore-1.1.1-python3.7-aarch64

    +

    C76

    +

    TF-1.15-python3.7-aarch64

    +

    C76

    +

    MindSpore-GPU

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 18.04

    +

    MindSpore-1.1.0-python3.7

    +

    CUDA 10.1

    +
    +
    +
    +

    Model Inference

    For imported models and model inference is completed on ModelArts, supported engines and their runtime are as follows:

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Supported AI engines and their runtime

    Engine

    +

    Runtime

    +

    Precautions

    +

    TensorFlow

    +

    python3.6

    +

    python2.7

    +

    tf1.13-python2.7-gpu

    +

    tf1.13-python2.7-cpu

    +

    tf1.13-python3.6-gpu

    +

    tf1.13-python3.6-cpu

    +

    tf1.13-python3.7-cpu

    +

    tf1.13-python3.7-gpu

    +

    tf2.1-python3.7

    +

    tf1.15-aarch64-c76-d910

    +
    • TensorFlow 1.8.0 is used in python2.7 and python3.6.
    • python3.6, python2.7, and tf2.1-python3.7 indicate that the model can run on both CPUs and GPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs.
    • The default runtime is python2.7.
    +

    MXNet

    +

    python3.7

    +

    python3.6

    +
    • MXNet 1.2.1 is used in python3.6 and python3.7.
    • python3.6 and python3.7 indicate that the model can run on both CPUs and GPUs.
    • The default runtime is python3.6.
    +

    Caffe

    +

    python3.6

    +

    python3.7

    +

    python3.6-gpu

    +

    python3.7-gpu

    +

    python3.6-cpu

    +

    python3.7-cpu

    +
    • Caffe 1.0.0 is used in python3.6, python3.7, python3.6-gpu, python3.7-gpu, python3.6-cpu, and python3.7-cpu.
    • python 3.6 and python3.7 can only be used to run models on CPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs. Use the runtime of python3.6-gpu, python3.7-gpu, python3.6-cpu, or python3.7-cpu.
    • The default runtime is python3.6.
    +

    Spark_MLlib

    +

    python3.6

    +
    • Spark_MLlib 2.3.2 is used in python3.6.
    • python 3.6 can only be used to run models on CPUs.
    +

    Scikit_Learn

    +

    python3.6

    +
    • Scikit_Learn 0.18.1 is used in python3.6.
    • python 3.6 can only be used to run models on CPUs.
    +

    XGBoost

    +

    python3.6

    +
    • XGBoost 0.80 is used in python3.6.
    • python 3.6 can only be used to run models on CPUs.
    +

    PyTorch

    +

    python3.6

    +

    python3.7

    +

    pytorch1.4-python3.7

    +
    • PyTorch 1.0 is used in python3.6 and python3.7.
    • python3.6, python3.7, and pytorch1.4-python3.7 indicate that the model can run on both CPUs and GPUs.
    • The default runtime is python3.6.
    +

    MindSpore

    +

    ms1.1-python3.7-c76

    +

    MindSpore 1.1.1 is used.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_05_0161.html b/modelarts/umn/modelarts_05_0161.html new file mode 100644 index 000000000..2dce300be --- /dev/null +++ b/modelarts/umn/modelarts_05_0161.html @@ -0,0 +1,57 @@ + + +

    How Do I Describe the Dependencies Between Installation Packages and Model Configuration Files When a Model Is Imported?

    +

    Symptom

    When importing a model from OBS or a container image, compile a model configuration file. The model configuration file describes the model usage, computing framework, precision, inference code dependency package, and model API. The configuration file must be in JSON format. In the configuration file, dependencies indicates the packages that the model inference code depends on. Model developers need to provide the package name, installation mode, and version constraints. For details about the parameters, see . The dependency structure array needs to be set for the dependencies parameter.

    +
    +

    Solution

    When the installation package has dependency relationships, the dependencies parameter in the model configuration file supports multiple dependency structure arrays, which are entered in list format.

    +

    The dependencies in list format must be installed in sequence. For example, install Cython, pytest-runner, and pytest before installing mmcv-full. When entering the installation packages in list format in the configuration file, write Cython, pytest-runner, and pytest in front of the mmcv-full structure array.

    +

    Example:

    +
    "dependencies": [
    +    {
    +    "installer": "pip",
    +    "packages": [
    +        {
    +            "package_name": "Cython"
    +        },
    +        {
    +            "package_name": "pytest-runner"
    +        },
    +        {
    +            "package_name": "pytest"
    +        }]
    +    },
    +
    +    {
    +    "installer": "pip",
    +    "packages": [
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "5.0.0",
    +            "package_name": "Pillow"
    +        },
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "1.4.0",
    +            "package_name": "torch"
    +        },
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "1.19.1",
    +            "package_name": "numpy"
    +        },
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "1.2.0",
    +            "package_name": "mmcv-full"
    +        }]
    +    }
    +]
    +
    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_08_0000.html b/modelarts/umn/modelarts_08_0000.html new file mode 100644 index 000000000..b62d4fcb3 --- /dev/null +++ b/modelarts/umn/modelarts_08_0000.html @@ -0,0 +1,17 @@ + + + +

    Preparations

    + +

    +
    + +
    + +
    + diff --git a/modelarts/umn/modelarts_08_0002.html b/modelarts/umn/modelarts_08_0002.html new file mode 100644 index 000000000..92805b4c5 --- /dev/null +++ b/modelarts/umn/modelarts_08_0002.html @@ -0,0 +1,17 @@ + + +

    Configuring Access Key Authorization

    +

    To use an access key pair for authorization, you need to obtain the access key pair first and then add the access key pair on the ModelArts management console. If your access key pair changes, you need to add a new one.

    +

    Obtaining an Access Key

    1. On the ModelArts management console, hover over the username in the upper right corner and choose My Credentials from the drop-down list.
    2. On the My Credentials page, choose Access Keys > Create Access Key.
    3. In the Create Access Key dialog box that is displayed, enter the verification code received by SMS or email.
    4. Click OK and save the access key file as prompted. The access key file is saved in the default download folder of the browser. Open the credentials.csv file to view the access key (Access Key Id and Secret Access Key).
    +
    +

    Adding an Access Key

    1. Log in to the ModelArts management console. In the navigation pane, choose Settings. The Settings page is displayed.
    2. Click Add Authorization.
    3. In the Add Authorization dialog box that is displayed, set Authorization Method to AK/SK. The username is fixed. Enter the obtained access key pair.
      • AK: Enter the value of the Access Key Id field in the key file.
      • SK: Enter the value of the Secret Access Key field in the key file.
      +
    4. Select I have read and agree to the ModelArts Service Statement and click Agree.

      After the configuration is complete, you can view the access key configurations of an account or IAM user on the Settings page.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_08_0003.html b/modelarts/umn/modelarts_08_0003.html new file mode 100644 index 000000000..88466fa2c --- /dev/null +++ b/modelarts/umn/modelarts_08_0003.html @@ -0,0 +1,15 @@ + + +

    Creating an OBS Bucket

    +

    ModelArts uses OBS to store data and model backups and snapshots, achieving secure, reliable, and low-cost storage. Therefore, before using ModelArts, create an OBS bucket and folders for storing data.

    +

    Procedure

    1. Log in to OBS Console and create an OBS bucket. For details, see "Creating a Bucket". For example, create an OBS bucket named c-flowers.

      The created OBS bucket and ModelArts are in the same region.

      +
      +
    2. Create a folder for storing data. For details, see "Creating a Folder". For example, create a folder named flowers in the created c-flowers OBS bucket.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_08_0005.html b/modelarts/umn/modelarts_08_0005.html new file mode 100644 index 000000000..c7e4d6f02 --- /dev/null +++ b/modelarts/umn/modelarts_08_0005.html @@ -0,0 +1,17 @@ + + +

    Overview

    +

    When you use ExeML, data management, notebook instances, training jobs, models, and services, ModelArts may need to access dependent services such as OBS and Software Repository for Container (SWR). If ModelArts is not authorized to access the services, these functions cannot be used.

    +

    You can configure access authorization in either of the following ways:

    +
    • Using an agency (recommended)

      After agency authorization is configured, the dependent service operation permissions are delegated to ModelArts so that ModelArts can use the dependent services and perform operations on resources on your behalf.

      +
    • Using the access key

      You can use the obtained access key pair (AK/SK) to authorize ModelArts to access dependent services and and perform operations on resources.

      +
    +

    Precautions

    • Agency authorization grants ModelArts permissions on dependent services, such as OBS and SWR. If the OBS permissions are not configured for an IAM user, the user still does not have the permission to operate the services.
    • For users who have used ModelArts before, access key authorization has been configured and does not need to be configured again. However, you are advised to use agency authorization again.
    • For new users, use agency authorization.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_08_0006.html b/modelarts/umn/modelarts_08_0006.html new file mode 100644 index 000000000..633e0a4df --- /dev/null +++ b/modelarts/umn/modelarts_08_0006.html @@ -0,0 +1,20 @@ + + +

    Configuring Access Authorization (Global Configuration)

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_08_0007.html b/modelarts/umn/modelarts_08_0007.html new file mode 100644 index 000000000..1d0a0533c --- /dev/null +++ b/modelarts/umn/modelarts_08_0007.html @@ -0,0 +1,53 @@ + + +

    Configuring Agency Authorization (Recommended)

    +

    An agency is used to delegate ModelArts the operation permissions for dependent services such as OBS and SWR. Before using ModelArts, you need to complete agency authorization.

    +

    If you have used ModelArts before, click Delete Authorization in the global configurations area and then create an agency.

    +
    +

    Before You Start

    • account
      • Only a cloud account can perform agency authorization to authorize the current account or all IAM users under the current account.
      • Multiple IAM users or accounts can use the same agency.
      • A maximum of 50 agencies can be created under an account.
      +
    • IAM user
      • If the agency has been authorized, you can view the authorization information on the Settings page.
      • If an IAM user has not obtained the authorization, ModelArts will display a message indicating that the user has not been authorized when the user accesses the Add Authorization page. In this case, contact the administrator of the IAM user to add authorization. Alternatively, you can use access keys for authorization.
      +
    • When configuring an agency, you can use an automatically created agency. For details, see Automatically Creating an IAM Agency. You can also configure an agency. For example, you can configure an IAM user with the agency valid for only one day.
    +
    +

    Configuring Authorization

    1. Log in to the ModelArts management console. In the left navigation pane, click Settings. The Settings page is displayed.
    2. Click Add Authorization.
    3. In the Add Authorization dialog box that is displayed, set Authorization Method to Agency, and select the username and agency to be authorized. +
      + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Authorization Method

      +

      Select Agency.

      +

      Username

      +

      Select an account from the drop-down list on the right. By default, All IAM users (including logged-in account) is selected, which indicates that authorization will be performed for the logged-in account and all IAM users under the account. All IAM users under the logged-in account are displayed in the drop-down list. You can configure an agency for an IAM user.

      +

      Agency

      +
      • Auto Create (recommended): When you use ModelArts Settings for the first time, no agency is available. In this case, you can click Auto Create to automatically create an agency for the user selected in Username. For details about the automatically created agency, see Automatically Creating an IAM Agency.
      • Select an existing agency: If you have created agencies in IAM, you can select an available agency from the drop-down list to authorize the selected user.
      • Create on IAM: If the automatically created agency cannot meet your requirements, you can click Create on IAM to manually create an agency on the IAM management console. If you choose Create on IAM, configure at least the ModelArts CommonOperation and OBS Operate Access permissions. Otherwise, the basic functions of ModelArts will be unavailable.
      +
      +
      +
    4. After configuring the username and agency, select I have read and agree to the ModelArts Service Statement and click Agree.

      After the configuration is complete, you can view the agency configurations of an account or IAM user on the Settings page.

      +
    +
    +

    Automatically Creating an IAM Agency

    The following provides the details about the agency automatically created by ModelArts.

    +
    • Agency Name: For a cloud account, the agency name is modelarts_agency. For an IAM user, the agency name is ma_agency_<IAM username>.
    • Agency Type: Select Cloud service.
    • Cloud Service: Select ModelArts.
    • Validity Period: Select Unlimited.
    • Permissions: The ModelArts CommonOperations, OBS OperateAccess, and Tenant Administrator (required for using other dependent services) permissions are automatically added for this agency to use all ModelArts functions.
    +
    +

    Deleting Authorizations

    To better manage your authorization, you can delete the authorization of an IAM user or delete the authorizations of all users in batches.

    +
    • Deleting the authorization of a user

      On the Settings page, the authorizations configured for IAM users under the current account are displayed. You can click Delete in the Operation column to delete the authorization of a user. After the deletion takes effect, the user cannot use ModelArts functions.

      +
    • Deleting authorizations in batches

      On the Settings page, click Delete Authorization above the authorization list to delete all authorizations of the current account. After the deletion, the account and all IAM users under the account cannot use ModelArts functions.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0000.html b/modelarts/umn/modelarts_21_0000.html new file mode 100644 index 000000000..b2fe6dc0e --- /dev/null +++ b/modelarts/umn/modelarts_21_0000.html @@ -0,0 +1,21 @@ + + + +

    ExeML

    + +

    +
    + +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0001.html b/modelarts/umn/modelarts_21_0001.html new file mode 100644 index 000000000..4dbf8f4a8 --- /dev/null +++ b/modelarts/umn/modelarts_21_0001.html @@ -0,0 +1,22 @@ + + +

    Introduction to ExeML

    +

    ExeML

    ModelArts ExeML is a customized code-free model development tool that helps users start AI application development from scratch with high flexibility. ExeML automates model design, parameter tuning and training, and model compression and deployment with the labeled data. Developers do not need to develop basic and encoding capabilities, but only to upload data and complete model training and deployment as prompted by ExeML.

    +

    Currently, you can use ExeML to quickly create image classification, and object detection models. It can be widely used in industrial, retail, and security fields.

    +
    • Image classification classifies and identifies objects in images.
    • Object detection identifies the position and class of each object in images.
    +
    +

    ExeML Usage Process

    With ModelArts ExeML, you can develop AI models without coding. You only need to upload data, create a project, label the data, publish training, and deploy the trained model. Up to 100 ExeML projects can be created. For details, see Figure 1.

    +
    Figure 1 Usage process of ExeML
    +
    +

    ExeML Projects

    • Image Classification

      An image classification project aims to classify images. You only need to add images and label the images. After the images are labeled, an image classification model can be quickly generated. It can automatically classify offerings, vehicle types, and defective goods. For example, in the quality check scenario, you can upload a product image, label the image as qualified or unqualified, and train and deploy a model to inspect product quality.

      +
    +
    +
    • Object Detection

      An object detection project aims to identify the class and location of objects in images. You only need to add images and label objects in the images with proper bounding boxes. The labled images will be used as the training set for creating a model. The model can identify multiple objects and count the number of objects in a single image, as well as inspect employees' dress code and perform unattended inspection of article placement.

      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0002.html b/modelarts/umn/modelarts_21_0002.html new file mode 100644 index 000000000..946cfd73a --- /dev/null +++ b/modelarts/umn/modelarts_21_0002.html @@ -0,0 +1,24 @@ + + +

    Image Classification

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_21_0003.html b/modelarts/umn/modelarts_21_0003.html new file mode 100644 index 000000000..370ebb5ee --- /dev/null +++ b/modelarts/umn/modelarts_21_0003.html @@ -0,0 +1,32 @@ + + +

    Preparing Data

    +

    Before using ModelArts ExeML to build a model, upload data to an OBS bucket.

    +

    Uploading Data to OBS

    This operation uses the OBS console to upload data. For more information about how to create a bucket and upload files, see Creating a Bucket and Uploading an Object.

    +

    Perform the following operations to import data to the dataset for model training and building.

    +
    1. Log in to OBS Console and create a bucket.
    2. Upload the local data to the OBS bucket. If you have a large amount of data, use OBS Browser+ to upload data or folders. The uploaded data must meet the dataset requirements of the ExeML project.
    +
    +

    Requirements on Datasets

    • The name of files in a dataset cannot contain Chinese characters, plus signs (+), spaces, or tabs.
    • Ensure that no damaged image exists. The supported image formats include JPG, JPEG, BMP, and PNG.
    • Do not store data of different projects in the same dataset.
    • Prepare sufficient data and balance each class of data. To achieve better results, prepare at least 100 images of each class in a training set for image classification.
    • To ensure the prediction accuracy of models, the training samples must be similar to the actual application scenarios.
    • To ensure the generalization capability of models, datasets should cover all possible scenarios.
    +
    +

    Requirements for Files Uploaded to OBS

    • If you do not need to upload training data in advance, create an empty folder to store files generated in the future, for example, /bucketName/data-cat.
    • If you need to upload images to be labeled in advance, create an empty folder and save the images in the folder. An example of the image directory structure is /bucketName/data-cat/cat.jpg.
    • If you want to upload labeled images to the OBS bucket, upload them according to the following specifications:
      • The dataset for image classification requires storing labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object is 10.jpg, the name of the label file must be 10.txt.
        Example of data files:
        ├─<dataset-import-path>
        +      │      10.jpg
        +      │      10.txt    
        +      │      11.jpg 
        +      │      11.txt
        +      │      12.jpg 
        +      │      12.txt
        +
        +
      • Images in JPG, JPEG, PNG, and BMP formats are supported. When uploading images on the ModelArts management console, ensure that the size of an image does not exceed 5 MB and the total size of images to be uploaded in one attempt does not exceed 8 MB. If the data volume is large, use OBS Browser+ to upload images.
      • A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
      • Image classification label file (.txt) rule:

        Each row contains only one label.

        +
        cat
        +dog
        +...
        +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0004.html b/modelarts/umn/modelarts_21_0004.html new file mode 100644 index 000000000..2c8dff9ad --- /dev/null +++ b/modelarts/umn/modelarts_21_0004.html @@ -0,0 +1,64 @@ + + +

    Creating a Project

    +

    ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an ExeML project.

    +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose ExeML. The ExeML page is displayed.
    2. Click Create Project in the box of your desired project. The page for creating an ExeML project is displayed.
    3. On the displayed page, set the parameters by referring to Table 1. +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Name

      +

      Name of an ExeML project

      +
      • Enter a maximum of 20 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. This parameter is mandatory.
      • The name must start with a letter.
      +

      Description

      +

      Brief description of a project

      +

      Dataset Source

      +

      You can create a dataset or specify an existing dataset.

      +
      • Create: Configure parameters such as Dataset Name, Input Dataset Path, Output Dataset Path, and Label Set.
      • Specify: Select a dataset of the same type from ModelArts Data Management to create an ExeML project. Only datasets of the same type are displayed in the Dataset Name drop-down list.
      +

      Dataset Name

      +

      If you select Create for Dataset Source, enter a dataset name based on required rules in the text box on the right. If you select Specify for Dataset Source, select one from available datasets of the same type under the current account displayed in the drop-down list.

      +

      Input Dataset Path

      +

      Select the OBS path to the input dataset. For details about dataset input specifications, see Preparing Data.

      +
      • Except the files and folders described in Preparing Data > Requirements for Files Uploaded to OBS, no other files or folders can be saved in the training data path. Otherwise, an error will be reported.
      • Do not modify the files in the training data path.
      +

      Output Dataset Path

      +

      Select the OBS path for storing the output dataset.

      +
      NOTE:

      The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. It is a good practice to select an empty directory in Output Dataset Path.

      +
      +

      Label Set

      +
      • Label Name: Enter a label name. The label name can contain only Chinese characters, letters, digits, underscores (_), and hyphens (-), which contains 1 to 32 characters.
      • Add Label: Click Add Label to add one or more labels.
      • Set the label color: You need to set label colors for object detection datasets, but you do not need to set label colors for image classification datasets. Select a color from the color palette on the right of a label, or enter the hexadecimal color code to set the color.

        +
      +
      +
      +
    4. Click Create Project. The system displays a message indicating that the project has been created. Then, the Label Data tab page is displayed. Alternatively, view the created project on the ExeML page and click the project name to go to the Label Data page.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0005.html b/modelarts/umn/modelarts_21_0005.html new file mode 100644 index 000000000..ca21c7289 --- /dev/null +++ b/modelarts/umn/modelarts_21_0005.html @@ -0,0 +1,27 @@ + + +

    Labeling Data

    +

    Model training requires a large number of labeled images. Therefore, before model training, add labels to the images that are not labeled. ModelArts allows you to add labels in batches by one click. You can also modify or delete labels that have been added to images. Prepare at least two classes of images for training. Each class contains at least five images. To achieve better effect, prepare at least 50 images for each class. If the image classes are similar, more images are required.

    +

    Labeling Images

    1. On the Label Data tab page, click the Unlabeled tab. All unlabeled images are displayed. Select the images to be labeled in sequence, or tick Select Current Page to select all images on the page, and then add labels to the images in the right pane.
    2. After selecting an image, input a label in the Label text box, or select an existing label from the drop-down list. Click OK. The selected image is labeled. For example, you can select multiple images containing tulips and add label tulips to them. Then select other unlabeled images and label them as sunflowers and roses. After the labeling is complete, the images are saved on the Labeled tab page.
      1. You can add multiple labels to an image.
      2. A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
      +
    3. After all the images are labeled, view them on the Labeled tab page or view All Labels in the right pane to check the name and quantity of the labels.
    +
    +

    Synchronizing or Adding Images

    On the ExeML page, click the project name. The Label Data tab page is displayed. When creating a project, you can add images from a local PC or synchronize image data from OBS.
    • Add Image: You can quickly add images on a local PC to ModelArts and synchronize the images to the OBS path specified during project creation. Click Add Image. In the dialog box that is displayed, click Add Image and add images. The total size of all images uploaded in one attempt cannot exceed 8 MB. The size of a single image cannot exceed 5 MB.
    • Synchronize Data Source: You can upload images to the OBS directory specified during project creation and click Synchronize Data Source to quickly add the images in the OBS directory to ModelArts.
    • Delete Image: You can delete images one by one, or tick Select Current Page to delete all images on the page.

      The deleted images cannot be recovered. Exercise caution when performing this operation.

      +
      +
    +
    +
    +

    Modifying Labeled Data

    After labeling data, you can modify the labeled data on the Labeled tab page.

    +
    • Modifying based on images

      On the data labeling page, click the Labeled tab, and select one or more images to be modified from the image list. Modify the image information in the label information area on the right.

      +
      • Adding a label: In the Label text box, select an existing label, or enter a new label name and click OK to add the label to the selected image.
      • Modifying a label: In the File Labels area, click the editing icon in the Operation column, enter the correct label name in the text box, and click the check mark icon to complete the modification.
      • Deleting a label: In the Labels of Selected Image area, click in the Operation column to delete the label.
      +
    +
    • Modifying based on labels

      On the dataset labeling page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Modifying a label: Click the editing icon in the Operation column. In the dialog box that is displayed, enter the new label name and click OK. After the modification, the images that have been added with the label use the new label name.
      • Deleting a label: Click the deletion icon in the Operation column. In the displayed dialog box, select Delete label, Delete label and images with only the label (Do not delete source files), or Delete label and images with only the label (Delete source files), and click OK.
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0006.html b/modelarts/umn/modelarts_21_0006.html new file mode 100644 index 000000000..7d637281c --- /dev/null +++ b/modelarts/umn/modelarts_21_0006.html @@ -0,0 +1,102 @@ + + +

    Training a Model

    +

    After labeling the images, you can train a model. You can perform model training to obtain the required image classification model. Training images must be classified into at least two classes, and each class must contain at least five images. Before training, ensure that the labeled images meet the requirements. Otherwise, the Train button is unavailable.

    +

    Procedure

    1. On the ExeML page, click the name of the project that is successfully created. The Label Data tab page is displayed.
    2. On the Label Data tab page, click Train in the upper right corner. In the displayed Training Configuration dialog box, set related parameters. Table 1 describes the parameters. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Default Value

      +

      Dataset Version

      +

      This version is the one when the dataset is published in Data Management. In an ExeML project, when a training job is started, the dataset is published as a version based on the previous data labeling.

      +

      The system automatically provides a version number. You can change it to the version number that you want.

      +

      Randomly provided by the system

      +

      Training and Validation Ratios

      +

      The labeled sample is randomly divided into a training set and a validation set. By default, the ratio for the training set is 0.8, and that for the validation set is 0.2. The usage field in the manifest file records the set type. The value ranges from 0 to 1.

      +

      0.8

      +

      Incremental Training Version

      +

      Select the version with the highest precision to perform training again. This accelerates model convergence and improves training precision.

      +

      None

      +

      Max. Training Duration (Minute)

      +

      If training is not completed within the maximum training duration, the model is saved and training stops. To prevent the model from exiting before convergence, set this parameter to a large value. The value ranges from 6 to 6000. It is a good practice to properly extend the training duration.

      +

      60

      +

      Training Preference

      +
      • performance_first: performance first. The training duration is short and the generated model is small.
      • balance: balanced performance and precision
      • accuracy_first: precision first. The training duration is long and the generated model is large.
      +

      balance

      +

      Instance Flavor

      +

      Select the resource specifications used for training. By default, the following specifications are supported:

      +
      • Compute-intensive instance (GPU)
      +

      The compute flavors are for reference only. Obtain the flavors on the management console.

      +

      ExeML (GPU)

      +
      +
      +
    3. After configuring training parameters, click Next to go to the configuration page, confirm the specifications, and click Submit to start auto model training. The training takes a certain period of time. Wait until the training is complete. If you close or exit this page, the system still performs the training operation.
    4. On the Train Model tab page, wait until the training status changes from Running to Completed.
    5. View the training details, such as Accuracy, Evaluation Result, Training Parameters, and Classification Statistics. For details about the evaluation result parameters, see Table 2. +
      + + + + + + + + + + + + + + + + +
      Table 2 Evaluation result parameters

      Parameter

      +

      Description

      +

      Recall

      +

      Fraction of correctly predicted samples over all samples predicted as a class. It shows the ability of a model to distinguish positive samples.

      +

      Precision

      +

      Fraction of correctly predicted samples over all samples predicted as a class. It shows the ability of a model to distinguish negative samples.

      +

      Accuracy

      +

      Fraction of correctly predicted samples over all samples. It shows the general ability of a model to recognize samples.

      +

      F1 Score

      +

      Harmonic average of the precision and recall of a model. It is used to evaluate the quality of a model. A high F1 score indicates a good model.

      +
      +
      +
    +

    An ExeML project supports multiple rounds of training, and each round generates a version. For example, the first training version is V001 (xxx), and the next version is V002 (xxx). The trained models can be managed by training version. After the trained model meets your requirements, deploy the model as a service.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0007.html b/modelarts/umn/modelarts_21_0007.html new file mode 100644 index 000000000..d27fb21d3 --- /dev/null +++ b/modelarts/umn/modelarts_21_0007.html @@ -0,0 +1,44 @@ + + +

    Deploying a Model as a Service

    +

    Deploying a Model

    You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version with the ideal accuracy and in the Successful status as a service. The procedure is as follows:

    +
    1. On the Train Model tab page, wait until the training status changes to Successful. Click Deploy in the Version Manager pane to deploy the model as a real-time service.
    2. In the Deploy dialog box, select resource flavor, set the Auto Stop function, and click OK to start the deployment.
      • Specifications: The GPU specifications are better, and the CPU specifications are more cost-effective.
      • Compute Nodes: The default value is 1 and cannot be changed.
      • Auto Stop: After this function is enabled and the auto stop time is set, a service automatically stops at the specified time.
      +

      The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer from 1 to 24 hours in the text box on the right.

      +
    3. After the model deployment is started, view the deployment status on the Service Deployment page.

      It takes a certain period of time to deploy a model. When the status in the Version Manager pane changes from Deploying to Running, the deployment is complete.

      +

      On the ExeML page, trained models can only be deployed as real-time services. For details about how to deploy them as batch services, see Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?

      +
      +
    +
    +

    Testing a Service

    • On the Service Deployment page, select a service type. For example, on the ExeML page, the image classification model is deployed as a real-time service by default. On the Real-Time Services page, click Prediction in the Operation column of the target service to perform a service test. For details, see "Testing a Service".
    • You can also use code to test a service. For details, see "Accessing a Real-Time Service".
    • The following describes the procedure for performing a service test after the image classification model is deployed as a service on the ExeML page.
      1. After the model is deployed, test the service using an image. On the ExeML page, click the target project, go to the Deploy Service tab page, select the service version in the Running status, click Upload in the service test area, and upload a local image to perform the test.
      2. Click Prediction to conduct the test. After the prediction is complete, label sunflowers and its detection score are displayed in the prediction result area on the right. If the model accuracy does not meet your expectation, add images on the Label Data tab page, label the images, and train and deploy the model again. Table 1 describes the parameters in the prediction result. If you are satisfied with the model prediction result, call the API to access the real-time service as prompted. For details, see Accessing a Real-Time Service.

        Currently, only JPG, JPEG, BMP, and PNG images are supported.

        + +
        + + + + + + + + + + +
        Table 1 Parameters in the prediction result

        Parameter

        +

        Description

        +

        predict_label

        +

        Image prediction label

        +

        scores

        +

        Prediction confidence of top 5 labels

        +
        +
        +

        A running real-time service keeps consuming resources. If you do not need to use the real-time service, click Stop in the Version Manager pane to stop the service. If you want to use the service again, click Start.

        +
        +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0008.html b/modelarts/umn/modelarts_21_0008.html new file mode 100644 index 000000000..82ddfe59a --- /dev/null +++ b/modelarts/umn/modelarts_21_0008.html @@ -0,0 +1,24 @@ + + +

    Object Detection

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_21_0009.html b/modelarts/umn/modelarts_21_0009.html new file mode 100644 index 000000000..87b9c8ddb --- /dev/null +++ b/modelarts/umn/modelarts_21_0009.html @@ -0,0 +1,126 @@ + + +

    Preparing Data

    +

    Before using ModelArts ExeML to build a model, upload data to an OBS bucket.

    +

    Uploading Data to OBS

    This operation uses the OBS console to upload data. For more information about how to create a bucket and upload files, see Creating a Bucket and Uploading an Object.

    +

    Perform the following operations to import data to the dataset for model training and building.

    +
    1. Log in to OBS Console and create a bucket.
    2. Upload the local data to the OBS bucket. If you have a large amount of data, use OBS Browser+ to upload data or folders. The uploaded data must meet the dataset requirements of the ExeML project.
    +
    +

    Requirements on Datasets

    • The name of files in a dataset cannot contain Chinese characters, plus signs (+), spaces, or tabs.
    • Ensure that no damaged image exists. The supported image formats include JPG, JPEG, BMP, and PNG.
    • Do not store data of different projects in the same dataset.
    • To ensure the prediction accuracy of models, the training samples must be similar to the actual application scenarios.
    • To ensure the generalization capability of models, datasets should cover all possible scenarios.
    • In an object detection dataset, if the coordinates of the bounding box exceed the boundaries of an image, the image cannot be identified as a labeled image.
    +
    +

    Requirements for Files Uploaded to OBS

    • If you do not need to upload training data in advance, create an empty folder to store files generated in the future, for example, /bucketName/data-cat.
    • If you need to upload images to be labeled in advance, create an empty folder and save the images in the folder. An example of the image directory structure is /bucketName/data-cat/cat.jpg.
    • If you want to upload labeled images to the OBS bucket, upload them according to the following specifications:
      • The dataset for object detection requires storing labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object is IMG_20180919_114745.jpg, the name of the label file must be IMG_20180919_114745.xml.

        The label files for object detection must be in PASCAL VOC format. For details about the format, see Table 1.

        +
        Example of data files:
        ├─<dataset-import-path> 
        +      │      IMG_20180919_114732.jpg 
        +      │      IMG_20180919_114732.xml 
        +      │      IMG_20180919_114745.jpg 
        +      │      IMG_20180919_114745.xml 
        +      │      IMG_20180919_114945.jpg 
        +      │      IMG_20180919_114945.xml
        +
        +
      +
      • Images in JPG, JPEG, PNG, and BMP formats are supported. When uploading images on the ModelArts console, ensure that the size of an image does not exceed 5 MB and the total size of images to be uploaded in one attempt does not exceed 8 MB. If the data volume is large, use OBS Browser+ to upload images.
      • A label name can contain a maximum of 32 characters, including letters, digits, hyphens (-), and underscores (_). +
        + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 PASCAL VOC format description

        Field

        +

        Mandatory

        +

        Description

        +

        folder

        +

        Yes

        +

        Directory where the data source is located

        +

        filename

        +

        Yes

        +

        Name of the file to be labeled

        +

        size

        +

        Yes

        +

        Image pixel

        +
        • width: image width. This parameter is mandatory.
        • height: image height. This parameter is mandatory.
        • depth: number of image channels. This parameter is mandatory.
        +

        segmented

        +

        Yes

        +

        Segmented or not

        +

        object

        +

        Yes

        +

        Object detection information. Multiple object{} functions are generated for multiple objects.

        +
        • name: class of the labeled object. This parameter is mandatory.
        • pose: shooting angle of the labeled object. This parameter is mandatory.
        • truncated: whether the labeled object is truncated (0 indicates that the object is not truncated). This parameter is mandatory.
        • occluded: whether the labeled object is occluded (0 indicates that the object is not occluded). This parameter is mandatory.
        • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
        • confidence: confidence score of the labeled object. The value range is 0 to 1. This parameter is optional.
        • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 2.
        +
        +
        + +
        + + + + + + + + + +
        Table 2 Description of bounding box types

        type

        +

        Shape

        +

        Labeling Information

        +

        bndbox

        +

        Rectangle

        +

        Coordinates of the upper left and lower right points

        +

        <xmin>100<xmin>

        +

        <ymin>100<ymin>

        +

        <xmax>200<xmax>

        +

        <ymax>200<ymax>

        +
        +
        +
        Example of the label file in KITTI format:
        <annotation>
        +   <folder>test_data</folder>
        +   <filename>260730932.jpg</filename>
        +   <size>
        +       <width>767</width>
        +       <height>959</height>
        +       <depth>3</depth>
        +   </size>
        +   <segmented>0</segmented>
        +   <object>
        +       <name>bag</name>
        +       <pose>Unspecified</pose>
        +       <truncated>0</truncated>
        +       <occluded>0</occluded>
        +       <difficult>0</difficult>
        +       <bndbox>
        +           <xmin>108</xmin>
        +           <ymin>101</ymin>
        +           <xmax>251</xmax>
        +           <ymax>238</ymax>
        +       </bndbox>
        +   </object>
        +</annotation>
        +
        +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0010.html b/modelarts/umn/modelarts_21_0010.html new file mode 100644 index 000000000..4197681b5 --- /dev/null +++ b/modelarts/umn/modelarts_21_0010.html @@ -0,0 +1,64 @@ + + +

    Creating a Project

    +

    ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an ExeML project.

    +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose ExeML. The ExeML page is displayed.
    2. Click Create Project in the box of your desired project. The page for creating an ExeML project is displayed.
    3. On the displayed page, set the parameters by referring to Table 1. +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Name

      +

      Name of an ExeML project

      +
      • Enter a maximum of 20 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. This parameter is mandatory.
      • The name must start with a letter.
      +

      Description

      +

      Brief description of a project

      +

      Dataset Source

      +

      You can create a dataset or specify an existing dataset.

      +
      • Create: Configure parameters such as Dataset Name, Input Dataset Path, Output Dataset Path, and Label Set.
      • Specify: Select a dataset of the same type from ModelArts Data Management to create an ExeML project. Only datasets of the same type are displayed in the Dataset Name drop-down list.
      +

      Dataset Name

      +

      If you select Create for Dataset Source, enter a dataset name based on required rules in the text box on the right. If you select Specify for Dataset Source, select one from available datasets of the same type under the current account displayed in the drop-down list.

      +

      Input Dataset Path

      +

      Select the OBS path to the input dataset. For details about dataset input specifications, see Preparing Data.

      +
      • Except the files and folders described in Preparing Data > Requirements for Files Uploaded to OBS, no other files or folders can be saved in the training data path. Otherwise, an error will be reported.
      • Do not modify the files in the training data path.
      +

      Output Dataset Path

      +

      Select the OBS path for storing the output dataset.

      +
      NOTE:

      The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. It is a good practice to select an empty directory in Output Dataset Path.

      +
      +

      Label Set

      +
      • Label Name: Enter a label name. The label name can contain only Chinese characters, letters, digits, underscores (_), and hyphens (-), which contains 1 to 32 characters.
      • Add Label: Click Add Label to add one or more labels.
      • Set the label color: You need to set label colors for object detection datasets, but you do not need to set label colors for image classification datasets. Select a color from the color palette on the right of a label, or enter the hexadecimal color code to set the color.

        +
      +
      +
      +
    4. Click Create Project. The system displays a message indicating that the project has been created. Then, the Label Data tab page is displayed. Alternatively, view the created project on the ExeML page and click the project name to go to the Label Data page.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0011.html b/modelarts/umn/modelarts_21_0011.html new file mode 100644 index 000000000..4092dd07d --- /dev/null +++ b/modelarts/umn/modelarts_21_0011.html @@ -0,0 +1,32 @@ + + +

    Labeling Data

    +

    Before data labeling, consider how to design labels. The labels must correspond to the distinct characteristics of the detected images and are easy to identify (the detected object in an image is highly distinguished from the background). Each label specifies the expected recognition result of the detected images. After the label design is complete, prepare images based on the designed labels. It is recommended that the number of all images to be detected be greater than 100. If the labels of some images are similar, prepare more images.

    +
    • During labeling, the variance of a class should be as small as possible. That is, the labeled objects of the same class should be as similar as possible. The labeled objects of different classes should be as different as possible.
    • The contrast between the labeled objects and the image background should be as stark as possible.
    • In object detection labeling, a target object must be entirely contained within a labeling box. If there are multiple objects in an image, do not relabel or miss any objects.
    +

    Labeling Images

    1. On the Label Data tab page, click the Unlabeled tab. All unlabeled images are displayed. Click an image to go to the labeling page.
    2. Left-click and drag the mouse to select the area where the target object is located. In the dialog box that is displayed, select the label color, enter the label name, and press Enter. After the labeling is complete, the status of the images changes to Labeled.
      More descriptions of data labeling are as follows:
      • You can click the arrow keys in the upper and lower parts of the image, or press the left and right arrow keys on the keyboard to select another image. Then, repeat the preceding operations to label the image. If an image contains more than one object, you can label all the objects.
      • You can add multiple labels with different colors for an object detection ExeML project for easy identification. After selecting an object, select a new color and enter a new label name in the dialog box that is displayed to add a new label.
      • In an ExeML project, object detection supports only rectangular labeling boxes. In the Data Management function, more types of labeling boxes are supported for object detection datasets.
      • In the Label Data window, you can scroll the mouse to zoom in or zoom out on the image to quickly locate the object.
      +
      +

      +
    3. After all images in the image directory are labeled, click ExeML in the upper left corner. In the dialog box that is displayed, click OK to save the labeling information. The Label Data page is displayed. On the Labeled tab page, you can view the labeled images or view the label names and quantity in the right pane.
    +
    +

    Synchronizing or Adding Images

    On the ExeML page, click the project name. The Label Data tab page is displayed. When creating a project, you can add images from a local PC or synchronize image data from OBS.
    • Add: You can quickly add images on a local PC to ModelArts and synchronize the images to the OBS path specified during project creation. Click Add. In the dialog box that is displayed, click Add Image and add images. The total size of all images uploaded in one attempt cannot exceed 8 MB. The size of a single image cannot exceed 5 MB.
    • Synchronize Data Source: You can upload images to the OBS directory specified during project creation and click Synchronize Data Source to quickly add the images in the OBS directory to ModelArts.
    • Delete: You can delete images one by one, or select Select Images on Current Page to delete all images on the page.

      The deleted images cannot be recovered. Exercise caution when performing this operation.

      +
      +
    +
    +
    +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on images

      On the dataset details page, click the Labeled tab, click the image to be modified. The labeling page is displayed. Modify the image information in the label information area on the right.

      +
      • Modifying a label: In the Labeling area, click the edit icon, enter the correct label name in the text box, and click the check mark to complete the modification. The label color cannot be modified.
      • Deleting a label: In the Labeling area, click the deletion icon to delete a label from the image.

        After the label is deleted, click the project name in the upper left corner of the page to exit the labeling page. The image will be returned to the Unlabeled tab page.

        +

        +
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Modifying a label: Click the edit icon in the Operation column. In the dialog box that is displayed, enter the new label name and click OK. After the modification, the images that have been added with the label use the new label name.
      • Deleting a label: Click the deletion icon in the Operation column. In the displayed dialog box, select the object to be deleted as prompted and click OK.
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0012.html b/modelarts/umn/modelarts_21_0012.html new file mode 100644 index 000000000..1f1c1b845 --- /dev/null +++ b/modelarts/umn/modelarts_21_0012.html @@ -0,0 +1,102 @@ + + +

    Training a Model

    +

    After labeling the images, perform auto training to obtain an appropriate model version.

    +

    Procedure

    1. On the ExeML page, click the name of the project that is successfully created. The Label Data tab page is displayed.
    2. On the Label Data tab page, click Train in the upper right corner. In the displayed Training Configuration dialog box, set related parameters. Table 1 describes the parameters. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Default Value

      +

      Dataset Version

      +

      This version is the one when the dataset is published in Data Management. In an ExeML project, when a training job is started, the dataset is published as a version based on the previous data labeling.

      +

      The system automatically provides a version number. You can change it to the version number that you want.

      +

      Randomly provided by the system

      +

      Training and Validation Ratios

      +

      The labeled sample is randomly divided into a training set and a validation set. By default, the ratio for the training set is 0.8, and that for the validation set is 0.2. The usage field in the manifest file records the set type. The value ranges from 0 to 1.

      +

      0.8

      +

      Incremental Training Version

      +

      Select the version with the highest precision to perform training again. This accelerates model convergence and improves training precision.

      +

      None

      +

      Max. Training Duration (Minute)

      +

      If training is not completed within the maximum training duration, the model is saved and training stops. To prevent the model from exiting before convergence, set this parameter to a large value. The value ranges from 6 to 6000. You are advised to properly extend the training duration. Set the training duration to more than 1 hour for a training set with 2,000 images.

      +

      60

      +

      Training Preference

      +
      • performance_first: performance first. The training duration is short and the generated model is small.
      • balance: balanced performance and precision
      • accuracy_first: precision first. The training duration is long and the generated model is large.
      +

      balance

      +

      Instance Flavor

      +

      Select the resource specifications used for training. By default, the following specifications are supported:

      +
      • Compute-intensive instance (GPU)
      +

      The compute flavors are for reference only. Obtain the flavors on the management console.

      +

      ExeML (GPU)

      +
      +
      +
    3. After configuring training parameters, click Next to go to the configuration page, confirm the specifications, and click Submit to start auto model training. The training takes a certain period of time. Wait until the training is complete. If you close or exit this page, the system still performs the training operation.
    4. On the Train Model tab page, wait until the training status changes from Running to Completed.
    5. View the training details, such as Accuracy, Evaluation Result, Training Parameters, and Classification Statistics. For details about the evaluation result parameters, see Table 2. +
      + + + + + + + + + + + + + + + + +
      Table 2 Evaluation result parameters

      Parameter

      +

      Description

      +

      Recall

      +

      Fraction of correctly predicted samples over all samples predicted as a class. It shows the ability of a model to distinguish positive samples.

      +

      Precision

      +

      Fraction of correctly predicted samples over all samples predicted as a class. It shows the ability of a model to distinguish negative samples.

      +

      Accuracy

      +

      Fraction of correctly predicted samples over all samples. It shows the general ability of a model to recognize samples.

      +

      F1 Score

      +

      Harmonic average of the precision and recall of a model. It is used to evaluate the quality of a model. A high F1 score indicates a good model.

      +
      +
      +
    +

    An ExeML project supports multiple rounds of training, and each round generates a version. For example, the first training version is V001 (xxx), and the next version is V002 (xxx). The trained models can be managed by training version. After the trained model meets your requirements, deploy the model as a service.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0013.html b/modelarts/umn/modelarts_21_0013.html new file mode 100644 index 000000000..eb6b28ae7 --- /dev/null +++ b/modelarts/umn/modelarts_21_0013.html @@ -0,0 +1,51 @@ + + +

    Deploying a Model as a Service

    +

    Deploying a Model

    You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version with the ideal accuracy and in the Successful status as a service. The procedure is as follows:

    +
    1. On the Train Model tab page, wait until the training status changes to Successful. Click Deploy in the Version Manager pane to deploy the model as a real-time service.
    2. In the Deploy dialog box, select resource flavor, set the Auto Stop function, and click OK to start the deployment.
      • Specifications: The GPU specifications are better, and the CPU specifications are more cost-effective.
      • Compute Nodes: The default value is 1 and cannot be changed.
      • Auto Stop: After this function is enabled and the auto stop time is set, a service automatically stops at the specified time.
      +

      The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer from 1 to 24 hours in the text box on the right.

      +
    3. After the model deployment is started, view the deployment status on the Service Deployment page.

      It takes a certain period of time to deploy a model. When the status in the Version Manager pane changes from Deploying to Running, the deployment is complete.

      +

      On the ExeML page, trained models can only be deployed as real-time services. For details about how to deploy them as batch services, see Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?

      +
      +
    +
    +

    Testing a Service

    • On the Service Deployment page, select a service type. For example, on the ExeML page, the object detection model is deployed as a real-time service by default. On the Real-Time Services page, click Prediction in the Operation column of the target service to perform a service test. For details, see "Testing a Service".
    • You can also use code to test a service. For details, see "Accessing a Real-Time Service".
    • The following describes the procedure for performing a service test after the object detection model is deployed as a service on the ExeML page.
      1. After the model is deployed, test the service using an image. On the ExeML page, click the target project, go to the Deploy Service tab page, select the service version in the Running status, click Upload in the service test area, and upload a local image to perform the test.
      2. Click Predict to perform the test. After the prediction is complete, the result is displayed in the Test Result pane on the right. If the model accuracy does not meet your expectation, add images on the Label Data tab page, label the images, and train and deploy the model again. Table 1 describes the parameters in the prediction result. If you are satisfied with the model prediction result, call the API to access the real-time service as prompted. For details, see "Accessing a Real-Time Service".

        Currently, only JPG, JPEG, BMP, and PNG images are supported.

        + +
        + + + + + + + + + + + + + +
        Table 1 Parameters in the prediction result

        Parameter

        +

        Description

        +

        detection_classes

        +

        Label of each detection box

        +

        detection_boxes

        +

        Coordinates of four points (y_min, x_min, y_max, and x_max) of each detection box, as shown in Figure 1

        +

        detection_scores

        +

        Confidence of each detection box

        +
        +
        +
        Figure 1 Illustration for coordinates of four points of a detection box
        +

        A running real-time service keeps consuming resources. If you do not need to use the real-time service, click Stop in the Version Manager pane to stop the service. If you want to use the service again, click Start.

        +

        If you enable the auto stop function, the service automatically stops after the specified time and no fee is generated.

        +
        +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0030.html b/modelarts/umn/modelarts_21_0030.html new file mode 100644 index 000000000..a65464786 --- /dev/null +++ b/modelarts/umn/modelarts_21_0030.html @@ -0,0 +1,22 @@ + + +

    Tips

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_21_0031.html b/modelarts/umn/modelarts_21_0031.html new file mode 100644 index 000000000..3db3e902b --- /dev/null +++ b/modelarts/umn/modelarts_21_0031.html @@ -0,0 +1,14 @@ + + +

    How Do I Quickly Create an OBS Bucket and a Folder When Creating a Project?

    +

    When creating a project, select a training data path. This section describes how to quickly create an OBS bucket and folder when you select the training data path.

    +
    1. On the page for creating an ExeML project, click on the right of Input Dataset Path. The Input Dataset Path dialog box is displayed.
    2. Click Create Bucket. The Create Bucket page is displayed. For details about how to create a bucket, see Creating a Bucket in the Object Storage Service Console Operation Guide.
      Figure 1 Creating an OBS bucket
      +
    3. Select the bucket, and click Create Folder. In the dialog box that is displayed, enter the folder name and click OK.
      • The name cannot contain the following special characters: \/:*?"<>|
      • The name cannot start or end with a period (.) or slash (/).
      • The absolute path of a folder cannot exceed 1,023 characters.
      • Any single slash (/) separates and creates multiple levels of folders at once.
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0032.html b/modelarts/umn/modelarts_21_0032.html new file mode 100644 index 000000000..021f1066e --- /dev/null +++ b/modelarts/umn/modelarts_21_0032.html @@ -0,0 +1,19 @@ + + +

    How Do I View the Added Data in an ExeML Project?

    +

    To add data for an existing project, perform the following operations. The operations described in this section apply only to object detection and image classification projects.

    +

    Obtaining the Data Source of an ExeML Project

    1. Log in to the ModelArts management console and choose ExeML from the left navigation pane.
    2. In the ExeML project list, you can view the data source corresponding to the project in the Data Source column. Click your desired data source link to go to the dataset selected or created during project creation.
    +
    +

    Uploading New Data to OBS

    Log in to OBS Console, access the data storage path, and upload new data to OBS.

    +

    For details about how to upload files to OBS, see Uploading an Object.

    +
    +

    Synchronizing Data to ModelArts

    1. After data is uploaded to OBS, go to the ExeML page on the ModelArts management console.
    2. In the ExeML project list, select the project to which data is to be added and click the project name. The Label Data page is displayed.
    3. On the Label Data page, click Synchronize Data Source.

      It takes several minutes to complete data synchronization. After the synchronization is complete, the new data is synchronized to the Unlabeled or Labeled tab page.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0033.html b/modelarts/umn/modelarts_21_0033.html new file mode 100644 index 000000000..e007453ed --- /dev/null +++ b/modelarts/umn/modelarts_21_0033.html @@ -0,0 +1,17 @@ + + +

    How Do I Perform Incremental Training in an ExeML Project?

    +

    Each round of training generates a training version in an ExeML project. If a training result is unsatisfactory (for example, if the precision is not good enough), you can add high-quality data or add or delete labels, and perform training again.

    +
    • For better training results, use high-quality data for incremental training to improve data labeling performance.
    +
    +

    Incremental Training Procedure

    1. Log in to the ModelArts console, and click ExeML in the left navigation pane.
    2. On the ExeML page, click a project name. The ExeML details page of the project is displayed.
    3. On the Label Data page, click the Unlabeled tab. On the Unlabeled tab page, you can add images or add or delete labels.

      If you add images, label the added images again. If you add or delete labels, check all images and label them again. You also need to check whether new labels need to be added for the labeled data.

      +
    4. After all images are labeled, click Train in the upper right corner. In the Training Configuration dialog box that is displayed, set Incremental Training Version to the training version that has been completed to perform incremental training based on this version. Set other parameters as prompted.

      After the settings are complete, click Yes to start incremental training. The system automatically switches to the Train Model page. After the training is complete, you can view the training details, such as training precision, evaluation result, and training parameters.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_21_0034.html b/modelarts/umn/modelarts_21_0034.html new file mode 100644 index 000000000..91e9d6a97 --- /dev/null +++ b/modelarts/umn/modelarts_21_0034.html @@ -0,0 +1,19 @@ + + +

    Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?

    +

    Unified Model Management

    For an ExeML project, after the model training is complete, the generated model is automatically displayed on the Model Management > Models page. The model name is automatically generated by the system. Its prefix is the same as the name of the ExeML project for easy identification.

    +

    Models generated by ExeML cannot be downloaded.

    +
    +
    +

    What Other Operations Are Supported for Models Generated by ExeML?

    • Deploying models as real-time and batch services

      On the ExeML page, models can only be deployed as real-time services. You can deploy models as batch services on the Model Management > Models page.

      +

      It should be noted that resources with other specifications can be used when you create a model deployment task on the Model Management > Models page. On the ExeML project page, only Compute-intensive 2 instance (NPU) can be used to deploy models.

      +
    • Creating a version

      When creating a new version, you can select a meta model only from a ModelArts training job, OBS, model template, or custom image. You cannot create a version from the original ExeML project.

      +
    • Deleting a model or its version
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0002.html b/modelarts/umn/modelarts_23_0002.html new file mode 100644 index 000000000..013d08038 --- /dev/null +++ b/modelarts/umn/modelarts_23_0002.html @@ -0,0 +1,29 @@ + + +

    Data Management

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0003.html b/modelarts/umn/modelarts_23_0003.html new file mode 100644 index 000000000..24de9da95 --- /dev/null +++ b/modelarts/umn/modelarts_23_0003.html @@ -0,0 +1,85 @@ + + +

    Introduction to Data Management

    +

    In ModelArts, you can import and label data on the Data Management page to prepare for model building. ModelArts uses datasets as the basis for model development or training.

    +

    Dataset Types

    ModelArts supports datasets of images, audio, text, tables, videos, and other types for the following purposes:

    +
    • Images
      • Image classification: identifies a class of objects in images.
      • Object detection: identifies the position and class of each object in an image.
      • Image segmentation: identifies the outline of each object in an image.
      +
    • Audio
      • Sound classification: classifies and identifies different sounds.
      • Speech labeling: labels speech content.
      • Speech paragraph labeling: segments and labels speech content.
      +
    • Text
      • Text classification: assigns labels to text according to its content.
      • Named entity recognition: assigns labels to named entities in text, such as time and locations.
      • Text triplet: assigns labels to entity segments and entity relationships in the text.
      +
    • Tables
      • Table: applies to structured data processing such as tables. The file format can be CSV. You can preview a maximum of 100 records in a table.
      +
    • Videos
      • Video labeling: identifies the position and class of each object in a video. Only the MP4 format is supported.
      +
    • Others
      • Free format: manages data in any format. Labeling is not available for data of the free format type. The free format type is applicable to scenarios where labeling is not required or developers customize labeling. If your dataset needs to contain data in multiple formats or your data format does not meet the requirements of other types of datasets, you can select a dataset in free format.
        Figure 1 Example of a dataset in free format
        +
      +
    +
    +

    Dataset Management Process and Functions

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Function description

    Function

    +

    Description

    +

    Creating a Dataset

    +

    Create a dataset.

    +

    Image Classification

    +

    Object Detection

    +

    Text Classification

    +

    Named Entity Recognition

    +

    Text Triplet

    +

    Sound Classification

    +

    Speech Labeling

    +

    Speech Paragraph Labeling

    +

    Video Labeling

    +

    Label data based on the types of datasets. Data labeling is not supported for datasets in free format or table format.

    +

    Import Operation

    +

    Import the local manifest file or data stored in OBS to the dataset.

    +

    Exporting Data

    +

    Export part of the data as a new dataset or to OBS. Historical tasks can be viewed and managed.

    +

    Modifying a Dataset

    +

    Modify the basic information about a dataset, such as the dataset name, description, and labels.

    +

    Publishing a Dataset

    +

    Publish the labeled dataset as a new version for model building.

    +

    Managing Dataset Versions

    +

    View data version updates.

    +

    Introduction to Team Labeling

    +

    Allow multiple users to label the same dataset and enable the dataset creator to manage labeling tasks in a unified manner. Add a team and its members to participate in labeling datasets.

    +

    Deleting a Dataset

    +

    Delete a dataset to release resources.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0004.html b/modelarts/umn/modelarts_23_0004.html new file mode 100644 index 000000000..5cae94d16 --- /dev/null +++ b/modelarts/umn/modelarts_23_0004.html @@ -0,0 +1,355 @@ + + +

    Creating a Dataset

    +

    To manage data using ModelArts, create a dataset. Then you can perform operations on the dataset, such as labeling data, importing data, and publishing the dataset.

    +

    Prerequisites

    • Before using the data management function, you need permissions to access OBS. This function cannot be used if you are not authorized to access OBS. Before using the data management function, go to the Settings page and complete access authorization using an agency.
    • You have created OBS buckets and folders for storing data. In addition, the OBS buckets and ModelArts are in the same region.
    • You have uploaded data to be used to OBS.
    +
    +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. Click Create Dataset. On the Create Dataset page, create datasets of different types based on the data type and data labeling requirements.
      1. Set the basic information, the name and description of the dataset.
        Figure 1 Basic information about a dataset
        +
      2. Select a labeling scene and type as required. For details about the types supported by ModelArts, see Dataset Types.
        Figure 2 Selecting a labeling scene and type
        +
      3. Set the parameters based on the dataset type. For details, see the parameters of the following dataset types: +
      4. Click Create in the lower right corner of the page.

        After the dataset is created, the dataset management page is displayed. You can perform the following operations on the dataset: label data, publish dataset versions, manage dataset versions, modify the dataset, import data, and delete the dataset. For details about the operations supported by different types of datasets, see .

        +
      +
    +
    +

    Images (Image Classification, Object Detection, and Image Segmentation)

    Figure 3 Parameters of datasets for image classification and object detection
    + +
    + + + + + + + + + + + + + + + + +
    Table 1 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    +
    NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    +
    +

    Label Set

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    • Setting a label color: This function is available only for datasets of the object detection type. Select a color from the color palette on the right of a label, or enter the hexadecimal color code to set the color.

      +
    • Setting label attributes: For an object detection dataset, you can click the plus sign (+) on the right to add label attributes after setting a label color. Label attributes are used to distinguish different attributes of the objects with the same label. For example, yellow kittens and black kittens have the same label cat and their label attribute is color.
    +

    Team Labeling

    +

    Enable or disable team labeling. Image segmentation does not support team labeling. Therefore, this parameter is unavailable when you use image segmentation.

    +

    After enabling team labeling, enter the name and type of the team labeling task, and select the labeling team and team members. For details about the parameter settings, see Creating Team Labeling Tasks.

    +

    Before enabling team labeling, ensure that you have added a team and members on the Labeling Teams page. If no labeling team is available, click the link on the page to go to the Labeling Teams page, and add your team and members. For details, see Introduction to Team Labeling.

    +

    After a dataset is created with team labeling enabled, you can view the Team Labeling mark in Labeling Type.

    +
    +
    +
    +

    Audio (Sound Classification, Speech Labeling, and Speech Paragraph Labeling)

    Figure 4 Parameters of datasets for sound classification, speech labeling, and speech paragraph labeling
    + +
    + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    +
    NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    +
    +

    Label Set (Sound Classification)

    +

    Set labels only for datasets of the sound classification type.

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    +

    Label Management (Speech Paragraph Labeling)

    +

    Only datasets for speech paragraph labeling support multiple labels.

    +
    • Single Label
      A single label is used to label a piece of audio that has only one class.
      • Label Name: Enter a label name. The label name can contain contains 1 to 32 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.
      • Label Color: Set the label color in the Label Color column. You can select a color from the color palette or enter a hexadecimal color code to set the color.
      +
      +
    • Multiple Labels
      Multiple labels are suitable for multi-dimensional labeling. For example, you can label a piece of audio as both noise and speech. For speech, you can label the audio with different speakers. You can click Add Label Class to add multiple label classes. A label class can contain multiple labels. The label class and name can contain contains 1 to 32 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.
      • Label Class: Set a label class.
      • Label Name: Enter a label name.
      • Add Label: Click Add Label to add more labels.
      +
      +
    +

    Speech Labeling (Speech Paragraph Labeling)

    +

    Only datasets for speech paragraph labeling support speech labeling. By default, speech labeling is disabled. If this function is enabled, you can label speech content.

    +

    Team Labeling

    +

    Only datasets of speech paragraph labeling support team labeling.

    +

    After enabling team labeling, set the name and type of the team labeling task, and select the team and team members. For details about the parameter settings, see Creating Team Labeling Tasks.

    +

    Before enabling team labeling, ensure that you have added a team and members on the Labeling Teams page. If no labeling team is available, click the link on the page to go to the Labeling Teams page, and add your team and members. For details, see Introduction to Team Labeling.

    +

    After a dataset is created with team labeling enabled, you can view the Team Labeling mark in Labeling Type.

    +
    +
    +
    +

    Text (Text Classification, Named Entity Recognition, and Text Triplet)

    Figure 5 Parameters of datasets for text classification, named entity recognition, and text triplet
    + +
    + + + + + + + + + + + + + + + + + + + +
    Table 2 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +
    NOTE:

    Labeled text classification data can be identified only when you import data. When creating a dataset, set an empty OBS directory. After the dataset is created, import the labeled data into it. For details about the format of the data to be imported, see Specifications for Importing Data from an OBS Directory.

    +
    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    +
    NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    +
    +

    Label Set (for text classification and named entity recognition)

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    • Setting a label color: Select a color from the color palette or enter the hexadecimal color code to set the color.

      +
    +

    Label Set (for text triplet)

    +

    For datasets of the text triplet type, set entity labels and relationship labels.

    +
    • Entity Label: Set the label name and label color. You can click the plus sign (+) on the right of the color area to add multiple labels.
    • Relationship Label: a relationship between two entities. Set the source entity and target entity. Therefore, add at least two entity labels before adding a relationship label.
    +

    +

    Team Labeling

    +

    Enable or disable team labeling.

    +

    After enabling team labeling, enter the name and type of the team labeling task, and select the labeling team and team members. For details about the parameter settings, see Creating Team Labeling Tasks.

    +

    Before enabling team labeling, ensure that you have added a team and members on the Labeling Teams page. If no labeling team is available, click the link on the page to go to the Labeling Teams page, and add your team and members. For details, see Introduction to Team Labeling.

    +

    After a dataset is created with team labeling enabled, you can view the Team Labeling mark in Labeling Type.

    +
    +
    +
    +

    Table

    When using a CSV file, pay attention to the following:

    +
    • When the data type is set to String, the data in the double quotation marks is regarded as one record by default. Ensure that the double quotation marks in the same row are closed. Otherwise, the data will be too large to display.
    • If the number of columns in a row of the CSV file is different from that defined in the schema, the row will be ignored.
    +
    + +
    + + + + + + + + + + + + + + + + +
    Table 3 Dataset parameters

    Parameter

    +

    Description

    +

    Storage Path

    +

    Select the OBS path for storing table data. The data imported from the data source is stored in this path. The path cannot be the same as or a subdirectory of the file path in the OBS data source.

    +

    After a table dataset is created, the following four directories are automatically generated in the storage path:

    +
    • annotation: version publishing directory. Each time a version is published, a subdirectory with the same name as the version is generated in this directory.
    • data: data storage directory. Imported data is stored in this directory.
    • logs: directory for storing logs
    • temp: temporary working directory
    +

    Import

    +

    If you have stored table data on other cloud services, you can enable this function to import data stored on OBS, DLI, or MRS.

    +

    Data Source (OBS)

    +
    • File Path: Browse all OBS buckets of the account and select the directory where the data file to be imported is located.
    • Contain Table Header: If this parameter is enabled, the imported file contains table headers. In this case, the first row of the imported file is used as the column name. Otherwise, the default column name is added and automatically filled in the schema information.
    +

    For details about OBS functions, see Object Storage Service Console Operation Guide.

    +

    Schema

    +

    Names and types of table columns, which must be the same as those of the imported data. Set the column name based on the imported data and select the column type. For details about the supported types, see Table 4.

    +

    Click Add Schema to add a new record. When creating a dataset, you must specify a schema. Once created, the schema cannot be modified.

    +

    When data is imported from OBS, the schema of the CSV file in the file path is automatically obtained. If the schemas of multiple CSV files are inconsistent, an error is reported.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 Migration data types

    Type

    +

    Description

    +

    Storage Space

    +

    Range

    +

    String

    +

    String

    +

    -

    +

    -

    +

    Short

    +

    Signed integer

    +

    2 bytes

    +

    -32768 to 32767

    +

    Int

    +

    Signed integer

    +

    4 bytes

    +

    –2147483648 to 2147483647

    +

    Long

    +

    Signed integer

    +

    8 bytes

    +

    –9223372036854775808 to 9223372036854775807

    +

    Double

    +

    Double-precision floating point

    +

    8 bytes

    +

    -

    +

    Float

    +

    Single-precision floating point

    +

    4 bytes

    +

    -

    +

    Byte

    +

    Signed integer

    +

    1 byte

    +

    -128 to 127

    +

    Date

    +

    Date type in the format of yyyy-MM-dd, for example, 2014-05-29

    +

    -

    +

    -

    +

    Timestamp

    +

    Timestamp that represents date and time. Format: yyyy-MM-dd HH:mm:ss

    +

    -

    +

    -

    +

    Boolean

    +

    Boolean

    +

    1 byte

    +

    TRUE or FALSE

    +
    +
    +
    +

    Video

    Figure 6 Parameters of datasets of the video type
    + +
    + + + + + + + + + + + + + +
    Table 5 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    +
    NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    +
    +

    Label Set

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    • Setting a label color: Select a color from the color palette or enter the hexadecimal color code to set the color.

      +
    +
    +
    +
    +

    Other (Free Format)

    Figure 7 Parameters of datasets of the free format type
    + +
    + + + + + + + + + + +
    Table 6 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    +
    NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    +
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0005.html b/modelarts/umn/modelarts_23_0005.html new file mode 100644 index 000000000..3e19c1cdb --- /dev/null +++ b/modelarts/umn/modelarts_23_0005.html @@ -0,0 +1,20 @@ + + +

    Importing Data

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0006.html b/modelarts/umn/modelarts_23_0006.html new file mode 100644 index 000000000..0a3d7ba34 --- /dev/null +++ b/modelarts/umn/modelarts_23_0006.html @@ -0,0 +1,141 @@ + + +

    Import Operation

    +

    After a dataset is created, you can directly synchronize data from the dataset. Alternatively, you can import more data by importing the dataset. Data can be imported from an OBS directory or the manifest file.

    +

    Prerequisites

    • You have created a dataset.
    • You have stored the data to be imported in OBS. You have stored the manifest file in OBS.
    • The OBS buckets and ModelArts are in the same region.
    +
    +

    Import Modes

    There are two import modes: OBS path and Manifest file.

    +
    • OBS path: indicates that the dataset to be imported has been stored in an OBS directory in advance. In this case, you need to select an OBS path that you can access. In addition, the directory structure in the OBS path must comply with the specifications. For details, see Specifications for Importing Data from an OBS Directory. Only the following types of dataset support the OBS path import mode: Image classification, Object detection, Text classification, Table, and Sound classification.
    • Manifest file: indicates that the dataset file is in the manifest format and data is imported from the manifest file. The manifest file defines the mapping between labeling objects and content. In addition, the manifest file has been uploaded to OBS. For details about the specifications of the manifest file, see Specifications for Importing the Manifest File.
    +

    Before importing an object detection dataset, ensure that the labeling range of the labeling file does not exceed the size of the original image. Otherwise, the import may fail.

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Import modes supported by datasets

    Dataset Type

    +

    Importing Data from an OBS Path

    +

    Importing Data from a Manifest File

    +

    Image classification

    +

    Supported

    +

    Follow the format specifications described in Image Classification.

    +

    Supported

    +

    Follow the format specifications described in Image Classification.

    +

    Object detection

    +

    Supported

    +

    Follow the format specifications described in Object Detection.

    +

    Supported

    +

    Follow the format specifications described in Object Detection.

    +

    Image segmentation

    +

    Supported

    +

    Follow the format specifications described in Image Segmentation.

    +

    Supported

    +

    Follow the format specifications described in Image Segmentation.

    +

    Sound classification

    +

    Supported

    +

    Follow the format specifications described in Sound Classification.

    +

    Supported

    +

    Follow the format specifications described in Sound Classification.

    +

    Speech labeling

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Speech Paragraph Labeling.

    +

    Speech paragraph labeling

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Speech Labeling.

    +

    Text classification

    +

    Supported

    +

    Follow the format specifications described in Text Classification.

    +

    Supported

    +

    Follow the format specifications described in Text Classification.

    +

    Named entity recognition

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Named Entity Recognition.

    +

    Text triplet

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Text Triplet.

    +

    Table

    +

    Supported

    +

    Follow the format specifications described in Table.

    +

    N/A

    +

    Video

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Video Labeling.

    +

    Free format

    +

    N/A

    +

    N/A

    +
    +
    +
    +

    Importing Data from an OBS Path

    The parameters on the GUI for data import vary according to the dataset type. The following uses a dataset of the image classification type as an example.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. Locate the row that contains the desired dataset and choose More > Import in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Import in the upper right corner.

      +
    3. In the Import dialog box, set Import Mode to OBS path and set OBS path to the path for storing data. Then click OK.

      After the data import is successful, the data is automatically synchronized to the dataset. On the Datasets page, you can click the dataset name to view its details and label the data.

      +
    +
    +

    Importing Data from a Manifest File

    The parameters on the GUI for data import vary according to the dataset type. The following uses a dataset of the object detection type as an example. Datasets of the table type cannot be imported from the manifest file.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. Locate the row that contains the desired dataset and choose More > Import in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Import in the upper right corner.

      +
    3. In the Import dialog box, set the parameters as follows and click OK.
      • Import Mode: Select Manifest file.
      • Manifest file: Select the OBS path for storing the manifest file.
      • Import by Label: The system automatically obtains the labels of the dataset. You can click Add Label to add a label or click the deletion icon on the right to delete a label. This field is optional. After importing a dataset, you can add or delete labels during data labeling.
      • Import labels: If this parameter is selected, the labels defined in the manifest file are imported to the ModelArts dataset.
      +

      After the data import is successful, the data is automatically synchronized to the dataset. On the Datasets page, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Label in the upper right corner. On the displayed dataset details page, view detailed data and label data.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0008.html b/modelarts/umn/modelarts_23_0008.html new file mode 100644 index 000000000..21f4262b7 --- /dev/null +++ b/modelarts/umn/modelarts_23_0008.html @@ -0,0 +1,283 @@ + + +

    Specifications for Importing Data from an OBS Directory

    +

    When a dataset is imported, the data storage directory and file name must comply with the ModelArts specifications if the data to be used is stored in OBS.

    +

    Only the following types of dataset support the OBS path import mode: Image classification, Object detection, Text classification, Table, and Sound classification.

    +

    To import data from an OBS directory, you must have the read permission on the OBS directory.

    +
    +

    Image Classification

    • Image classification data can be in two modes. The first mode (directory mode) supports only single labels. The second mode (.txt label files) supports multiple labels.
      • Images with the same label must be stored in the same directory, and the label name is the directory name. If there are multiple levels of directories, the last level is used as the label name.

        In the following example, Cat and Dog are label names.

        +
        dataset-import-example 
        +├─Cat 
        +│      10.jpg 
        +│      11.jpg 
        +│      12.jpg 
        +│ 
        +└─Dog 
        +        1.jpg 
        +        2.jpg 
        +        3.jpg
        +
      • If .txt files exist in the directory, the content in the .txt files is used as the image label. This mode is better than the previous one.

        In the following example, import-dir-1 and import-dir-2 are the imported subdirectories:

        +
        dataset-import-example 
        +├─import-dir-1
        +│      10.jpg
        +│      10.txt    
        +│      11.jpg 
        +│      11.txt
        +│      12.jpg 
        +│      12.txt
        +└─import-dir-2
        +        1.jpg 
        +        1.txt
        +        2.jpg 
        +        2.txt
        +

        The following shows a label file for a single label, for example, the 1.txt file:

        +
        Cat
        +

        The following shows a label file for multiple labels, for example, the 1.txt file:

        +
        Cat
        +Dog
        +
      +
    • Only images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.
    +
    +

    Object Detection

    • The simple mode of object detection requires users store labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object file is IMG_20180919_114745.jpg, the name of the label file must be IMG_20180919_114745.xml.

      The label files for object detection must be in PASCAL VOC format. For details about the format, see Table 8.

      +

      Example:

      +
      ├─dataset-import-example 
      +│      IMG_20180919_114732.jpg 
      +│      IMG_20180919_114732.xml 
      +│      IMG_20180919_114745.jpg 
      +│      IMG_20180919_114745.xml 
      +│      IMG_20180919_114945.jpg 
      +│      IMG_20180919_114945.xml
      +

      A label file example is as follows:

      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      +<annotation>
      +    <folder>NA</folder>
      +    <filename>bike_1_1593531469339.png</filename>
      +    <source>
      +        <database>Unknown</database>
      +    </source>
      +    <size>
      +        <width>554</width>
      +        <height>606</height>
      +        <depth>3</depth>
      +    </size>
      +    <segmented>0</segmented>
      +    <object>
      +        <name>Dog</name>
      +        <pose>Unspecified</pose>
      +        <truncated>0</truncated>
      +        <difficult>0</difficult>
      +        <occluded>0</occluded>
      +        <bndbox>
      +            <xmin>279</xmin>
      +            <ymin>52</ymin>
      +            <xmax>474</xmax>
      +            <ymax>278</ymax>
      +        </bndbox>
      +    </object>
      +    <object>
      +        <name>Cat</name>
      +        <pose>Unspecified</pose>
      +        <truncated>0</truncated>
      +        <difficult>0</difficult>
      +        <occluded>0</occluded>
      +        <bndbox>
      +            <xmin>279</xmin>
      +            <ymin>198</ymin>
      +            <xmax>456</xmax>
      +            <ymax>421</ymax>
      +        </bndbox>
      +    </object>
      +</annotation>
      +
      +
      +
    +
    • Only images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.
    +
    +

    Image Segmentation

    • The simple mode of image segmentation requires users store labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object file is IMG_20180919_114746.jpg, the name of the label file must be IMG_20180919_114746.xml.

      Fields mask_source and mask_color are added to the label file in PASCAL VOC format. For details about the format, see Table 4.

      +

      Example:

      +
      ├─dataset-import-example 
      +│      IMG_20180919_114732.jpg 
      +│      IMG_20180919_114732.xml 
      +│      IMG_20180919_114745.jpg 
      +│      IMG_20180919_114745.xml 
      +│      IMG_20180919_114945.jpg 
      +│      IMG_20180919_114945.xml
      +

      A label file example is as follows:

      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      +<annotation>
      +    <folder>NA</folder>
      +    <filename>image_0006.jpg</filename>
      +    <source>
      +        <database>Unknown</database>
      +    </source>
      +    <size>
      +        <width>230</width>
      +        <height>300</height>
      +        <depth>3</depth>
      +    </size>
      +    <segmented>1</segmented>
      +    <mask_source>obs://xianao/out/dataset-8153-Jmf5ylLjRmSacj9KevS/annotation/V001/segmentationClassRaw/image_0006.png</mask_source>
      +    <object>
      +        <name>bike</name>
      +        <pose>Unspecified</pose>
      +        <truncated>0</truncated>
      +        <difficult>0</difficult>
      +        <mask_color>193,243,53</mask_color>
      +        <occluded>0</occluded>
      +        <polygon>
      +            <x1>71</x1>
      +            <y1>48</y1>
      +            <x2>75</x2>
      +            <y2>73</y2>
      +            <x3>49</x3>
      +            <y3>69</y3>
      +            <x4>68</x4>
      +            <y4>92</y4>
      +            <x5>90</x5>
      +            <y5>101</y5>
      +            <x6>45</x6>
      +            <y6>110</y6>
      +            <x7>71</x7>
      +            <y7>48</y7>
      +        </polygon>
      +    </object>
      +</annotation>
      +
      +
      +
    +
    +

    Text Classification

    Text classification supports two import modes.

    +
    • The labeled objects and labels for text classification are in the same text file. You can specify a separator to separate the labeled objects and labels, as well as multiple labeled objects.
      For example, the following shows an example text file. The Tab key is used to separate the labeled object from the label.
      It touches good and responds quickly. I don't know how it performs in the future.   positive
      +Three months ago, I bought a very good phone and replaced my old one with it. It can operate longer between charges.  positive
      +Why does my phone heat up if I charge it for a while? The volume button stuck after being pressed down.  negative
      +It's a gift for Father's Day. The logistics is fast and I received it in 24 hours. I like the earphones because the bass sounds feel good and they would not fall off.  positive
      +
      +
    • The labeled objects and label files for text classification are text files, and correspond to each other based on the rows. For example, the first row in a label file indicates the label of the first row in the file of the labeled object.

      For example, the content of labeled object COMMENTS_20180919_114745.txt is as follows:

      +
      It touches good and responds quickly. I don't know how it performs in the future.
      +Three months ago, I bought a very good phone and replaced my old one with it. It can operate longer between charges.
      +Why does my phone heat up if I charge it for a while? The volume button stuck after being pressed down.
      +It's a gift for Father's Day. The logistics is fast and I received it in 24 hours. I like the earphones because the bass sounds feel good and they would not fall off.
      +

      The content of label file COMMENTS_20180919_114745_result.txt is as follows:

      +
      positive
      +negative
      +negative 
      +positive
      +

      The data format requires users to store labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object file is COMMENTS_20180919_114745.txt, the name of the label file must be COMMENTS _20180919_114745_result.txt.

      +

      Example of data file storage:

      +
      ├─dataset-import-example 
      +│      COMMENTS_20180919_114732.txt 
      +│      COMMENTS _20180919_114732_result.txt 
      +│      COMMENTS _20180919_114745.txt 
      +│      COMMENTS _20180919_114745_result.txt 
      +│      COMMENTS _20180919_114945.txt 
      +│      COMMENTS _20180919_114945_result.txt
      +
    +
    +

    Sound Classification

    For sound classification, sound files with the same label must be stored in the same directory, and the label name is the directory name.

    +

    Example:

    +
    dataset-import-example 
    +├─Cat 
    +│      10.wav 
    +│      11.wav 
    +│      12.wav 
    +│ 
    +└─Dog 
    +        1.wav 
    +        2.wav 
    +        3.wav
    +
    +

    Table

    You can import data from OBS.

    +

    Import description:

    +
    1. The prerequisite for successful import is that the schema of the data source must be the same as that specified during dataset creation. The schema indicates column names and types of a table. Once specified during dataset creation, the values cannot be changed.
    2. If the data format is invalid, the data is set to null values. For details, see Table 4.
    3. When a CSV file is imported from OBS, the data type is not verified, but the number of columns must be the same as that in the schema of the dataset.
    +
    • From OBS

      CSV files can be imported from OBS. You need to select the directory where the files are stored. The number of columns in the CSV file must be the same as that in the dataset schema. The schema of the CSV file can be automatically obtained.

      +
      ├─dataset-import-example 
      +│      table_import_1.csv 
      +│      table_import_2.csv
      +│      table_import_3.csv
      +│      table_import_4.csv
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0009.html b/modelarts/umn/modelarts_23_0009.html new file mode 100644 index 000000000..7fab0d5c8 --- /dev/null +++ b/modelarts/umn/modelarts_23_0009.html @@ -0,0 +1,1075 @@ + + +

    Specifications for Importing the Manifest File

    +

    The manifest file defines the mapping between labeling objects and content. The Manifest file import mode means that the manifest file is used for dataset import. The manifest file can be imported from OBS. When importing a manifest file from OBS, ensure that the current user has the permissions to access the directory housing the manifest file.

    +

    There are many requirements on the Manifest file compilation. Import new data from OBS. Generally, Manifest file import is used for data migration of ModelArts in different regions or using different accounts. If you have labeled data in a region using ModelArts, you can obtain the manifest file of the published dataset from the output path. Then you can import the dataset using the manifest file to ModelArts of other regions or accounts. The imported data carries the labeling information and does not need to be labeled again, improving development efficiency.

    +
    +

    The manifest file that contains information about the original file and labeling can be used in labeling, training, and inference scenarios. The manifest file that contains only information about the original file can be used in inference scenarios or used to generate an unlabeled dataset. The manifest file must meet the following requirements:

    +
    • The manifest file uses the UTF-8 encoding format. The source value of text classification can contain Chinese characters. However, Chinese characters are not recommended for other parameters.
    • The manifest file uses the JSON Lines format (jsonlines.org). A line contains one JSON object.
      {"source": "/path/to/image1.jpg", "annotation": ... }
      +{"source": "/path/to/image2.jpg", "annotation": ... }
      +{"source": "/path/to/image3.jpg", "annotation": ... }
      +

      In the preceding example, the manifest file contains multiple lines of JSON object.

      +
    • The manifest file can be generated by users, third-party tools, or ModelArts Data Labeling. The file name can be any valid file name. To facilitate the internal use of the ModelArts system, the file name generated by the ModelArts Data Labeling function consists of the following character strings: DatasetName-VersionName.manifest. For example, animal-v201901231130304123.manifest.
    +

    Image Classification

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    {
    +    "source":"s3://path/to/image1.jpg",
    +    "usage":"TRAIN",
    +    "id":"0162005993f8065ef47eefb59d1e4970",
    +    "annotation": [
    +        {
    +            "type": "modelarts/image_classification",
    +            "name": "cat",
    +            "property": {
    +                "color":"white",
    +                "kind":"Persian cat"            
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"        
    +        },
    +        {
    +            "type": "modelarts/image_classification",
    +            "name":"animal",
    +            "annotated-by":"modelarts/active-learning",
    +            "confidence": 0.8,
    +            "creation-time":"2019-01-23 11:30:30"        
    +        }],
    +    "inference-loc":"/path/to/inference-output"
    +}
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    source

    +

    Yes

    +

    URI of an object to be labeled. For details about data source types and examples, see Table 2.

    +

    usage

    +

    No

    +

    By default, the parameter value is left blank. Possible values are as follows:

    +
    • TRAIN: The object is used for training.
    • EVAL: The object is used for evaluation.
    • TEST: The object is used for testing.
    • INFERENCE: The object is used for inference.
    +

    If the parameter value is left blank, the user decides how to use the object.

    +

    id

    +

    No

    +

    Sample ID exported from the system. You do not need to set this parameter when importing the sample.

    +

    annotation

    +

    No

    +

    If the parameter value is left blank, the object is not labeled. The value of annotation consists of an object list. For details about the parameters, see Table 3.

    +

    inference-loc

    +

    No

    +

    This parameter is available when the file is generated by the inference service, indicating the location of the inference result file.

    +
    +
    + +
    + + + + + + + + + + +
    Table 2 Data source types

    Type

    +

    Example

    +

    OBS

    +

    "source":"s3://path-to-jpg"

    +

    Content

    +

    "source":"content://I love machine learning"

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 annotation objects

    Parameter

    +

    Mandatory

    +

    Description

    +

    type

    +

    Yes

    +

    Label type. Possible values are as follows:

    +
    • image_classification: image classification
    • text_classification: text classification
    • text_entity: named entity recognition
    • object_detection: object detection
    • audio_classification: sound classification
    • audio_content: speech labeling
    • audio_segmentation: speech paragraph labeling
    +

    name

    +

    Yes/No

    +

    This parameter is mandatory for the classification type but optional for other types. This example uses the image classification type.

    +

    id

    +

    Yes/No

    +

    Label ID. This parameter is mandatory for triplets but optional for other types. The entity label ID of a triplet is in E+number format, for example, E1 and E2. The relationship label ID of a triplet is in R+number format, for example, R1 and R2.

    +

    property

    +

    No

    +

    Labeling property. In this example, the cat has two properties: color and kind.

    +

    annotated-by

    +

    No

    +

    The default value is human, indicating manual labeling.

    +
    • human
    +

    creation-time

    +

    No

    +

    Time when the labeling job was created. It is the time when labeling information was written, not the time when the manifest file was generated.

    +

    confidence

    +

    No

    +

    Confidence score of machine labeling. The value ranges from 0 to 1.

    +
    +
    +
    +

    Image Segmentation

    {
    +    "annotation": [{
    +        "annotation-format": "PASCAL VOC",
    +        "type": "modelarts/image_segmentation",
    +        "annotation-loc": "s3://path/to/annotation/image1.xml",
    +        "creation-time": "2020-12-16 21:36:27",
    +        "annotated-by": "human"
    +    }],
    +    "usage": "train",
    +    "source": "s3://path/to/image1.jpg",
    +    "id": "16d196c19bf61994d7deccafa435398c",
    +    "sample-type": 0
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • annotation-loc indicates the path for saving the label file. This parameter is mandatory for image segmentation and object detection but optional for other labeling types.
    • annotation-format indicates the format of the label file. This parameter is optional. The default value is PASCAL VOC. Only PASCAL VOC is supported.
    • sample-type indicates a sample format. Value 0 indicates image, 1 text, 2 audio, 4 table, and 6 video.
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 PASCAL VOC format parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    folder

    +

    Yes

    +

    Directory where the data source is located

    +

    filename

    +

    Yes

    +

    Name of the file to be labeled

    +

    size

    +

    Yes

    +

    Image pixel

    +
    • width: image width. This parameter is mandatory.
    • height: image height. This parameter is mandatory.
    • depth: number of image channels. This parameter is mandatory.
    +

    segmented

    +

    Yes

    +

    Segmented or not

    +

    mask_source

    +

    No

    +

    Segmentation mask path

    +

    object

    +

    Yes

    +

    Object detection information. Multiple object{} functions are generated for multiple objects.

    +
    • name: class of the labeled content. This parameter is mandatory.
    • pose: shooting angle of the labeled content. This parameter is mandatory.
    • truncated: whether the labeled content is truncated (0 indicates that the content is not truncated). This parameter is mandatory.
    • occluded: whether the labeled content is occluded (0 indicates that the content is not occluded). This parameter is mandatory.
    • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
    • confidence: confidence score of the labeled object. The value ranges from 0 to 1. This parameter is optional.
    • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 5.
    • mask_color: label color, which is represented by the RGB value. This parameter is mandatory.
    +
    +
    + +
    + + + + + + + + + +
    Table 5 Bounding box types

    Type

    +

    Shape

    +

    Labeling Information

    +

    polygon

    +

    Polygon

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>100<y2>

    +

    <x3>250<x3>

    +

    <y3>150<y3>

    +

    <x4>200<x4>

    +

    <y4>200<y4>

    +

    <x5>100<x5>

    +

    <y5>200<y5>

    +

    <x6>50<x6>

    +

    <y6>150<y6>

    +

    <x7>100<x7>

    +

    <y7>100<y7>

    +
    +
    +
    Example:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    +<annotation>
    +    <folder>NA</folder>
    +    <filename>image_0006.jpg</filename>
    +    <source>
    +        <database>Unknown</database>
    +    </source>
    +    <size>
    +        <width>230</width>
    +        <height>300</height>
    +        <depth>3</depth>
    +    </size>
    +    <segmented>1</segmented>
    +    <mask_source>obs://xianao/out/dataset-8153-Jmf5ylLjRmSacj9KevS/annotation/V001/segmentationClassRaw/image_0006.png</mask_source>
    +    <object>
    +        <name>bike</name>
    +        <pose>Unspecified</pose>
    +        <truncated>0</truncated>
    +        <difficult>0</difficult>
    +        <mask_color>193,243,53</mask_color>
    +        <occluded>0</occluded>
    +        <polygon>
    +            <x1>71</x1>
    +            <y1>48</y1>
    +            <x2>75</x2>
    +            <y2>73</y2>
    +            <x3>49</x3>
    +            <y3>69</y3>
    +            <x4>68</x4>
    +            <y4>92</y4>
    +            <x5>90</x5>
    +            <y5>101</y5>
    +            <x6>45</x6>
    +            <y6>110</y6>
    +            <x7>71</x7>
    +            <y7>48</y7>
    +        </polygon>
    +    </object>
    +</annotation>
    +
    +
    +

    Text Classification

    {
    +    "source": "content://I like this product ",
    +    "id":"XGDVGS",
    +    "annotation": [
    +        {
    +            "type": "modelarts/text_classification",
    +            "name": " positive",
    +            "annotated-by": "human",
    +            "creation-time": "2019-01-23 11:30:30"        
    +        } ]
    +}
    +

    The content parameter indicates the text to be labeled (in UTF-8 encoding format, which can be Chinese). The other parameters are the same as those described in Image Classification. For details, see Table 1.

    +
    +

    Named Entity Recognition

    {
    +    "source":"content://Michael Jordan is the most famous basketball player in the world.",
    +    "usage":"TRAIN",
    +    "annotation":[
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Person",
    +            "property":{
    +                "@modelarts:start_index":0,
    +                "@modelarts:end_index":14
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Category",
    +            "property":{
    +                "@modelarts:start_index":34,
    +                "@modelarts:end_index":44
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +

    +

    The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.

    +

    Table 6 describes the property parameters. For example, if you want to extract Michael from "source":"content://Michael Jordan", the value of start_index is 0 and that of end_index is 7.

    + +
    + + + + + + + + + + + + + +
    Table 6 Description of property parameters

    Parameter

    +

    Data Type

    +

    Description

    +

    @modelarts:start_index

    +

    Integer

    +

    Start position of the text. The value starts from 0, including the characters specified by start_index.

    +

    @modelarts:end_index

    +

    Integer

    +

    End position of the text, excluding the characters specified by end_index.

    +
    +
    +
    +

    Text Triplet

    {
    +    "source":"content://"Three Body" is a series of long science fiction novels created by Liu Cix.",
    +    "usage":"TRAIN",
    +    "annotation":[
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Person",
    +            "id":"E1",
    +            "property":{
    +                "@modelarts:start_index":67,
    +                "@modelarts:end_index":74
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Book",
    +            "id":"E2",
    +            "property":{
    +                "@modelarts:start_index":0,
    +                "@modelarts:end_index":12
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_triplet",
    +            "name":"Author",
    +            "id":"R1",
    +            "property":{
    +                "@modelarts:from":"E1",
    +                "@modelarts:to":"E2"
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_triplet",
    +            "name":"Works",
    +            "id":"R2",
    +            "property":{
    +                "@modelarts:from":"E2",
    +                "@modelarts:to":"E1"
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +
    +

    The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.

    +

    Table 5 property parameters describes the property parameters. @modelarts:start_index and @modelarts:end_index are the same as those of named entity recognition. For example, when source is set to content://"Three Body" is a series of long science fiction novels created by Liu Cix., Liu Cix is an entity person, Three Body is an entity book, the person is the author of the book, and the book is works of the person.

    + +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 7 Description of property parameters

    Parameter

    +

    Data Type

    +

    Description

    +

    @modelarts:start_index

    +

    Integer

    +

    Start position of the triplet entities. The value starts from 0, including the characters specified by start_index.

    +

    @modelarts:end_index

    +

    Integer

    +

    End position of the triplet entities, excluding the characters specified by end_index.

    +

    @modelarts:from

    +

    String

    +

    Start entity ID of the triplet relationship.

    +

    @modelarts:to

    +

    String

    +

    Entity ID pointed to in the triplet relationship.

    +
    +
    +

    Object Detection

    {
    +    "source":"s3://path/to/image1.jpg",
    +    "usage":"TRAIN",
    +    "annotation": [
    +        {
    +            "type":"modelarts/object_detection",
    +            "annotation-loc": "s3://path/to/annotation1.xml",
    +            "annotation-format":"PASCAL VOC",
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"                
    +        }]
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • annotation-loc indicates the path for saving the label file. This parameter is mandatory for object detection and image segmentation but optional for other labeling types.
    • annotation-format indicates the format of the label file. This parameter is optional. The default value is PASCAL VOC. Only PASCAL VOC is supported.
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 8 PASCAL VOC format parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    folder

    +

    Yes

    +

    Directory where the data source is located

    +

    filename

    +

    Yes

    +

    Name of the file to be labeled

    +

    size

    +

    Yes

    +

    Image pixel

    +
    • width: image width. This parameter is mandatory.
    • height: image height. This parameter is mandatory.
    • depth: number of image channels. This parameter is mandatory.
    +

    segmented

    +

    Yes

    +

    Segmented or not

    +

    object

    +

    Yes

    +

    Object detection information. Multiple object{} functions are generated for multiple objects.

    +
    • name: class of the labeled content. This parameter is mandatory.
    • pose: shooting angle of the labeled content. This parameter is mandatory.
    • truncated: whether the labeled content is truncated (0 indicates that the content is not truncated). This parameter is mandatory.
    • occluded: whether the labeled content is occluded (0 indicates that the content is not occluded). This parameter is mandatory.
    • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
    • confidence: confidence score of the labeled object. The value ranges from 0 to 1. This parameter is optional.
    • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 9.
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 9 Description of bounding box types

    Type

    +

    Shape

    +

    Labeling Information

    +

    point

    +

    Point

    +

    Coordinates of a point

    +

    <x>100<x>

    +

    <y>100<y>

    +

    line

    +

    Line

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>200<y2>

    +

    bndbox

    +

    Rectangle

    +

    Coordinates of the upper left and lower right points

    +

    <xmin>100<xmin>

    +

    <ymin>100<ymin>

    +

    <xmax>200<xmax>

    +

    <ymax>200<ymax>

    +

    polygon

    +

    Polygon

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>100<y2>

    +

    <x3>250<x3>

    +

    <y3>150<y3>

    +

    <x4>200<x4>

    +

    <y4>200<y4>

    +

    <x5>100<x5>

    +

    <y5>200<y5>

    +

    <x6>50<x6>

    +

    <y6>150<y6>

    +

    circle

    +

    Circle

    +

    Center coordinates and radius

    +

    <cx>100<cx>

    +

    <cy>100<cy>

    +

    <r>50<r>

    +
    +
    +
    Example:
    <annotation>
    +   <folder>test_data</folder>
    +   <filename>260730932.jpg</filename>
    +   <size>
    +       <width>767</width>
    +       <height>959</height>
    +       <depth>3</depth>
    +   </size>
    +   <segmented>0</segmented>
    +   <object>
    +       <name>point</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <point>
    +           <x1>456</x1>
    +           <y1>596</y1>
    +       </point>
    +   </object>
    +   <object>
    +       <name>line</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <line>
    +           <x1>133</x1>
    +           <y1>651</y1>
    +           <x2>229</x2>
    +           <y2>561</y2>
    +       </line>
    +   </object>
    +   <object>
    +       <name>bag</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <bndbox>
    +           <xmin>108</xmin>
    +           <ymin>101</ymin>
    +           <xmax>251</xmax>
    +           <ymax>238</ymax>
    +       </bndbox>
    +   </object>
    +   <object>
    +       <name>boots</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       
    +       <polygon>
    +           <x1>373</x1>
    +           <y1>264</y1>
    +           <x2>500</x2>
    +           <y2>198</y2>
    +           <x3>437</x3>
    +           <y3>76</y3>
    +           <x4>310</x4>
    +           <y4>142</y4>
    +       </polygon>
    +   </object>
    +   <object>
    +       <name>circle</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <circle>
    +           <cx>405</cx>
    +           <cy>170</cy>
    +           <r>100<r>
    +       </circle>
    +   </object>
    +</annotation>
    +
    +
    +

    Sound Classification

    {
    +"source":
    +"s3://path/to/pets.wav", 
    +    "annotation": [
    +        {
    +            "type": "modelarts/audio_classification",
    +            "name":"cat",    
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        } 
    +    ]
    +}
    +

    The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.

    +
    +

    Speech Labeling

    {
    +    "source":"s3://path/to/audio1.wav",
    +    "annotation":[
    +        {
    +            "type":"modelarts/audio_content",
    +            "property":{
    +                "@modelarts:content":"Today is a good day."
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • The @modelarts:content parameter in property indicates speech labeling. The data type is String.
    +
    +

    Speech Paragraph Labeling

    {
    +    "source":"s3://path/to/audio1.wav",
    +    "usage":"TRAIN",
    +    "annotation":[
    +        {
    +           
    +"type":"modelarts/audio_segmentation",
    +            "property":{
    +                "@modelarts:start_time":"00:01:10.123",
    +                "@modelarts:end_time":"00:01:15.456",
    +               
    +                "@modelarts:source":"Tom",
    +               
    +                "@modelarts:content":"How are you?"
    +            },
    +           "annotated-by":"human",
    +           "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +           "type":"modelarts/audio_segmentation",
    +            "property":{
    +                "@modelarts:start_time":"00:01:22.754",
    +                "@modelarts:end_time":"00:01:24.145",
    +                "@modelarts:source":"Jerry",
    +                "@modelarts:content":"I'm fine, thank you."
    +            },
    +           "annotated-by":"human",
    +           "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • Table 10 describes the property parameters. +
      + + + + + + + + + + + + + + + + + + + + + +
      Table 10 Description of property parameters

      Parameter

      +

      Data Type

      +

      Description

      +

      @modelarts:start_time

      +

      String

      +

      Start time of the sound. The format is hh:mm:ss.SSS.

      +

      hh indicates the hour, mm indicates the minute, ss indicates the second, and SSS indicates the millisecond.

      +

      @modelarts:end_time

      +

      String

      +

      End time of the sound. The format is hh:mm:ss.SSS.

      +

      hh indicates the hour, mm indicates the minute, ss indicates the second, and SSS indicates the millisecond.

      +

      @modelarts:source

      +

      String

      +

      Sound source

      +

      @modelarts:content

      +

      String

      +

      Sound content

      +
      +
      +
    +
    +

    Video Labeling

    {
    +	"annotation": [{
    +		"annotation-format": "PASCAL VOC",
    +		"type": "modelarts/object_detection",
    +		"annotation-loc": "s3://path/to/annotation1_t1.473722.xml",
    +		"creation-time": "2020-10-09 14:08:24",
    +		"annotated-by": "human"
    +	}],
    +	"usage": "train",
    +	"property": {
    +		"@modelarts:parent_duration": 8,
    +		"@modelarts:parent_source": "s3://path/to/annotation1.mp4",
    +		"@modelarts:time_in_video": 1.473722
    +	},
    +	"source": "s3://input/path/to/annotation1_t1.473722.jpg",
    +	"id": "43d88677c1e9a971eeb692a80534b5d5",
    +	"sample-type": 0
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • annotation-loc indicates the path for saving the label file. This parameter is mandatory for object detection but optional for other labeling types.
    • annotation-format indicates the format of the label file. This parameter is optional. The default value is PASCAL VOC. Only PASCAL VOC is supported.
    • sample-type indicates a sample format. Value 0 indicates image, 1 text, 2 audio, 4 table, and 6 video.
    + +
    + + + + + + + + + + + + + + + + + +
    Table 11 property parameters

    Parameter

    +

    Data Type

    +

    Description

    +

    @modelarts:parent_duration

    +

    Double

    +

    Duration of the labeled video, in seconds

    +

    @modelarts:time_in_video

    +

    Double

    +

    Timestamp of the labeled video frame, in seconds

    +

    @modelarts:parent_source

    +

    String

    +

    OBS path of the labeled video

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 12 PASCAL VOC format parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    folder

    +

    Yes

    +

    Directory where the data source is located

    +

    filename

    +

    Yes

    +

    Name of the file to be labeled

    +

    size

    +

    Yes

    +

    Image pixel

    +
    • width: image width. This parameter is mandatory.
    • height: image height. This parameter is mandatory.
    • depth: number of image channels. This parameter is mandatory.
    +

    segmented

    +

    Yes

    +

    Segmented or not

    +

    object

    +

    Yes

    +

    Object detection information. Multiple object{} functions are generated for multiple objects.

    +
    • name: class of the labeled content. This parameter is mandatory.
    • pose: shooting angle of the labeled content. This parameter is mandatory.
    • truncated: whether the labeled content is truncated (0 indicates that the content is not truncated). This parameter is mandatory.
    • occluded: whether the labeled content is occluded (0 indicates that the content is not occluded). This parameter is mandatory.
    • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
    • confidence: confidence score of the labeled object. The value ranges from 0 to 1. This parameter is optional.
    • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 13.
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 13 Bounding box types

    Type

    +

    Shape

    +

    Labeling Information

    +

    point

    +

    Point

    +

    Coordinates of a point

    +

    <x>100<x>

    +

    <y>100<y>

    +

    line

    +

    Line

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>200<y2>

    +

    bndbox

    +

    Rectangle

    +

    Coordinates of the upper left and lower right points

    +

    <xmin>100<xmin>

    +

    <ymin>100<ymin>

    +

    <xmax>200<xmax>

    +

    <ymax>200<ymax>

    +

    polygon

    +

    Polygon

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>100<y2>

    +

    <x3>250<x3>

    +

    <y3>150<y3>

    +

    <x4>200<x4>

    +

    <y4>200<y4>

    +

    <x5>100<x5>

    +

    <y5>200<y5>

    +

    <x6>50<x6>

    +

    <y6>150<y6>

    +

    circle

    +

    Circle

    +

    Center coordinates and radius

    +

    <cx>100<cx>

    +

    <cy>100<cy>

    +

    <r>50<r>

    +
    +
    +
    Example:
    <annotation>
    +   <folder>test_data</folder>
    +   <filename>260730932_t1.473722.jpg.jpg</filename>
    +   <size>
    +       <width>767</width>
    +       <height>959</height>
    +       <depth>3</depth>
    +   </size>
    +   <segmented>0</segmented>
    +   <object>
    +       <name>point</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <point>
    +           <x1>456</x1>
    +           <y1>596</y1>
    +       </point>
    +   </object>
    +   <object>
    +       <name>line</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <line>
    +           <x1>133</x1>
    +           <y1>651</y1>
    +           <x2>229</x2>
    +           <y2>561</y2>
    +       </line>
    +   </object>
    +   <object>
    +       <name>bag</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <bndbox>
    +           <xmin>108</xmin>
    +           <ymin>101</ymin>
    +           <xmax>251</xmax>
    +           <ymax>238</ymax>
    +       </bndbox>
    +   </object>
    +   <object>
    +       <name>boots</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <polygon>
    +           <x1>373</x1>
    +           <y1>264</y1>
    +           <x2>500</x2>
    +           <y2>198</y2>
    +           <x3>437</x3>
    +           <y3>76</y3>
    +           <x4>310</x4>
    +           <y4>142</y4>
    +       </polygon>
    +   </object>
    +   <object>
    +       <name>circle</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <circle>
    +           <cx>405</cx>
    +           <cy>170</cy>
    +           <r>100<r>
    +       </circle>
    +   </object>
    +</annotation>
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0010.html b/modelarts/umn/modelarts_23_0010.html new file mode 100644 index 000000000..63167dd39 --- /dev/null +++ b/modelarts/umn/modelarts_23_0010.html @@ -0,0 +1,34 @@ + + +

    Labeling Data

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0011.html b/modelarts/umn/modelarts_23_0011.html new file mode 100644 index 000000000..d2f0bebd2 --- /dev/null +++ b/modelarts/umn/modelarts_23_0011.html @@ -0,0 +1,55 @@ + + +

    Image Classification

    +

    Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by manual labeling or auto labeling. In addition, you can modify the labels of images, or remove their labels and label the images again.

    +

    Before labeling an image in image classification scenarios, you need to understand the following:

    +
    • You can add multiple labels to an image.
    • A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +
    • For an image classification dataset, the .txt file with the same name in the same directory as the data source is used as the label of the target image.
    • For an object detection dataset or image segmentation dataset, the .xml file with the same name in the same directory is used as the label of the target image.
    +

    To quickly obtain the latest data in the OBS bucket, on the All or Unlabeled tab page of the dataset details page, click Synchronize Data Source to add data from OBS to the dataset.

    +
    +

    Filtering Data

    On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed, showing all data in the dataset by default. On the All, Unlabeled, or Labeled tab page, you can add filter criteria in the filter criteria area to quickly filter the data you want to view.

    +

    The following filter criteria are supported. You can set one or more filter criteria.

    +
    • Label: Select All or one or more labels you specified.
    • Sample Creation Time: Select Within 1 month, Within 1 day, or Custom to customize a time range.
    • File Name or Path: Filter files by file name or file storage path.
    • Labeled By: Select the name of the user who performs the labeling operation.
    +
    +

    Labeling Images (Manually)

    The dataset details page displays images on the All, Labeled, and Unlabeled tabs. Images on the All tab page are displayed by default. Click an image to preview it. For the images that have been labeled, the label information is displayed at the bottom of the preview page.

    +
    1. On the Unlabeled tab page, select the images to be labeled.
      • Manual selection: In the image list, click the selection box in the upper left corner of an image to enter the selection mode, indicating that the image is selected. You can select multiple images of the same type and add labels to them together.
      • Batch selection: If all the images on the current page of the image list belong to the same type, you can click Select Images on Current Page in the upper right corner to select all the images on the current page.
      +
    2. Add labels to the selected images.
      1. In the label adding area on the right, set the label in the Label text box.

        Click the Label text box and select an existing label from the drop-down list. If the existing labels cannot meet the requirements, you can go to the page for modifying the dataset and add labels.

        +
      2. Confirm the Labels of Selected Image information and click OK. The selected image is automatically moved to the Labeled tab page. On the Unlabeled and All tab pages, the labeling information is updated along with the labeling process, including the added label names and the number of images for each label.
      +
    +
    +

    Viewing Labeled Images

    On the dataset details page, click the Labeled tab to view the list of the labeled images. By default, the corresponding labels are displayed under the image thumbnails. You can also select an image and view the label information of the image in the File Labels area on the right.

    +
    +

    Modifying Labeling Information

    After labeling data, you can modify labeled data on the Labeled tab page.
    • Modifying based on images

      On the dataset details page, click the Labeled tab, and select one or more images to be modified from the image list. Modify the image information in the label information area on the right.

      +

      Modifying a label: In the File Labels area, click the edit icon in the Operation column, enter the correct label name in the text box, and click the check mark to complete the modification.

      +
      Deleting a label: In the File Labels area, click the delete icon in the Operation column to delete the label. This operation deletes only the labels added to the selected image.
      Figure 1 Modifying a label
      +
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Modifying a label: Click the editing icon in the Operation column. In the dialog box that is displayed, enter the new label name and click OK. After the modification, the images that have been added with the label use the new label name.
      • Deleting a label: Click the deletion icon in the Operation column. In the displayed dialog box, select Delete label, Delete label and images with only the label (Do not delete source files), or Delete label and images with only the label (Delete source files), and click OK.
      +
      Figure 2 Information about all labels
      +
    +
    +
    +

    Adding Images

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add images on ModelArts for data labeling.

    +
    1. On the dataset details page, click the All or Unlabeled tab. Then click Add.
    2. On the Add page that is displayed, click Add Image.

      Select one or more images to be uploaded in the local environment. Images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.

      +

      After the images are selected, their thumbnails and sizes are displayed on the Add page.

      +
    3. On the Add page, click OK.

      The images you have added will be automatically displayed in the image list on the Unlabeled tab page. In addition, the images are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    +
    +

    Deleting Images

    You can quickly delete the images you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the images to be deleted or click Select Images on Current Page to select all images on the page, and click Delete in the upper left corner to delete the images. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the images.

    +

    If a tick is displayed in the upper left corner of an image, the image is selected. If no image is selected on the page, the Delete button is unavailable.

    +

    If you select Delete source files, images stored in the corresponding OBS directory will be deleted when you delete the selected images. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0012.html b/modelarts/umn/modelarts_23_0012.html new file mode 100644 index 000000000..069b3787c --- /dev/null +++ b/modelarts/umn/modelarts_23_0012.html @@ -0,0 +1,153 @@ + + +

    Object Detection

    +

    Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by manual labeling or auto labeling. In addition, you can modify the labels of images, or remove their labels and label the images again.

    +

    Before labeling an image in object detection scenarios, pay attention to the following:

    +
    • All target objects in the image must be labeled.
    • Target objects are clear without any blocking and contained within bounding boxes.
    • Only the entire object must be contained within a bounding box. The edge of the bounding box cannot intersect the edge outline of the target object. Additionally, there must not be a gap between the edge and the target object to prevent the background from interfering with the model training.
    +

    Labeling the Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, click the dataset to be labeled based on the labeling type. The Dashboard tab page of the dataset is displayed.

      By default, the Dashboard tab page of the current dataset version is displayed. To label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +
    • For an image classification dataset, the .txt file with the same name in the same directory as the data source is used as the label of the target image.
    • For an object detection dataset or image segmentation dataset, the .xml file with the same name in the same directory is used as the label of the target image.
    +

    To quickly obtain the latest data in the OBS bucket, on the All or Unlabeled tab page of the dataset details page, click Synchronize Data Source.

    +
    +

    Filtering Data

    On the Dashboard tab page of the dataset, the summary of the dataset is displayed by default. In the upper left corner of the page, click Label. The dataset details page is displayed, showing all data in the dataset by default. On the All, Unlabeled, or Labeled tab page, you can add filter criteria in the filter criteria area to quickly filter the data you want to view.

    +

    The following filter criteria are supported. You can set one or more filter criteria.

    +
    • Label: Select All or one or more labels you specified.
    • Sample Creation Time: Select Within 1 month, Within 1 day, or Custom to customize a time range.
    • File Name or Path: Filter files by file name or file storage path.
    • Labeled By: Select the name of the user who performs the labeling operation.
    + +

    +
    +

    Labeling Images (Manually)

    The dataset details page provides the Labeled and Unlabeled tabs. The All tab page is displayed by default.

    +
    1. On the Unlabeled tab page, click an image. The image labeling page is displayed. For details about how to use common buttons on the Labeled tab page, see Table 2.
    2. In the left tool bar, select a proper labeling shape. The default labeling shape is a rectangle. In this example, the rectangle is used for labeling.

      On the left of the page, multiple tools are provided for you to label images. However, you can use only one tool at a time.

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Supported bounding box

      Icon

      +

      Description

      +

      +

      Rectangle. Click the edge of the upper left corner of the object to be labeled. A rectangle will be displayed. Drag the rectangle to cover the object and click to label the object.

      +

      +

      Polygon. In the area where the object to be labeled is located, click to label a point, move the mouse and click multiple points along the edge of the object, and then click the first point again. All the points form a polygon. Therefore, the object to be labeled is in the bounding box.

      +

      +

      Circle. Click the center point of an object, and move the mouse to draw a circle to cover the object and click to label the object.

      +

      +

      Straight line. Click to specify the start and end points of an object, and move the mouse to draw a straight line to cover the object and click to label the object.

      +

      +

      Dotted line. Click to specify the start and end points of an object, and move the mouse to draw a dotted line to cover the object and click to label the object.

      +

      +

      Point. Click the object in an image to label a point.

      +
      +
      +
    3. In the Add Label text box, enter a new label name, select the label color, and click Add. Alternatively, select an existing label from the drop-down list.

      Label all objects in an image. Multiple labels can be added to an image. After labeling an image, you can click the image list below the image to quickly select other images that are not labeled and label them on the labeling page.

      +
    4. Click Back to Data Labeling Preview in the upper left part of the page to view the labeling information. In the dialog box that is displayed, click OK to save the labeling settings.

      The selected image is automatically moved to the Labeled tab page. On the Unlabeled and All tab pages, the labeling information is updated along with the labeling process, including the added label names and the number of images for each label.

      +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Common icons on the labeling page

    Icon

    +

    Description

    +

    +

    Cancel the previous operation.

    +

    +

    Redo the previous operation.

    +

    +

    Zoom in an image.

    +

    +

    Zoom out an image.

    +

    +

    Delete all bounding boxes on the current image.

    +

    +

    Display or hide a bounding box. You can perform this operation only on a labeled image.

    +

    +

    Drag a bounding box to another position or drag the edge of the bounding box to resize it.

    +

    +

    Reset. After dragging a bounding box, you can click this button to quickly restore the bounding box to its original shape and position.

    +

    +

    Display the labeled image in full screen.

    +
    +
    +
    +

    Viewing Labeled Images

    On the dataset details page, click the Labeled tab to view the list of the labeled images. You can click an image to view the label information about the image in the All Labels area on the right.

    +
    +

    Modifying Labeling Information

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on images

      On the dataset details page, click the Labeled tab, click the image to be modified. The labeling page is displayed. Modify the image information in the label information area on the right.

      +
      • Modifying a label: In the Labeling area, click the edit icon, enter the correct label name in the text box, and click the check mark to complete the modification. Alternatively, click a label. In the image labeling area, adjust the position and size of the bounding box. After the adjustment is complete, click another label to save the modification.
      • Deleting a label: In the Labeling area, click the deletion icon to delete a label from the image.

        After deleting the label, click Back to Data Labeling Preview in the upper left corner of the page to exit the labeling page. In the dialog box that is displayed, save the modification. After all labels of an image are deleted, the image is displayed on the Unlabeled tab page.

        +
        Figure 1 Editing an object detection label
        +
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Modifying a label: Click the edit icon in the Operation column. In the dialog box that is displayed, enter the new label name, select the new label color, and click OK. After the modification, the images that have been added with the label use the new label name.
      • Deleting a label: Click the deletion icon in the Operation column to delete a label.
      +
      Figure 2 All labels for object detection
      +
    +
    +

    Adding Images

    In addition to the data automatically synchronized from Input Dataset Path, you can directly add images on ModelArts for labeling.

    +
    1. On the dataset details page, click the All or Unlabeled tab. Then, click Add.
    2. On the Add page that is displayed, click Add Image.

      Select one or more images to be uploaded in the local environment. Images in JPG, JPEG, PNG, or BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.

      +

      After the images are selected, their thumbnails and total size are displayed on the Add page.

      +
    3. On the Add page, click OK.

      The images you have added will be automatically displayed in the image list on the Unlabeled tab page. In addition, the images are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    +
    +

    Deleting Images

    You can quickly delete the images you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the images to be deleted or click Select Images on Current Page, and click Delete in the upper left corner to delete them. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the images.

    +

    If a tick is displayed in the upper left corner of an image, the image is selected. If no image is selected on the page, the Delete button is unavailable.

    +

    If you select Delete source files, images stored in the OBS directory will be deleted accordingly. This operation may affect other dataset versions or datasets using those files, for example, leading to an error in page display, training, or inference. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0013.html b/modelarts/umn/modelarts_23_0013.html new file mode 100644 index 000000000..dc0fc250f --- /dev/null +++ b/modelarts/umn/modelarts_23_0013.html @@ -0,0 +1,44 @@ + + +

    Text Classification

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, add labels to the files that are not labeled. In addition, you can modify, delete, and re-label the labeled text.

    +

    Text classification classifies text content based on labels. Before labeling text content, you need to understand the following:

    +
    • Text labeling supports multiple labels. That is, you can add multiple labels to a labeling object.
    • A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Labeling Content

    The dataset details page displays the labeled and unlabeled text files in the dataset. The Unlabeled tab page is displayed by default.

    +
    1. On the Unlabeled tab page, the objects to be labeled are listed in the left pane. In the list, click the text object to be labeled, and select a label in the Label Set area in the right pane. Multiple labels can be added to a labeling object.

      You can repeat this operation to select objects and add labels to the objects.

      +
      Figure 1 Labeling for text classification
      +
    2. After all objects are labeled, click Save Current Page at the bottom of the page to complete labeling text files on the Unlabeled tab page.
    +
    +

    Adding Labels

    • Adding labels on the Unlabeled tab page: Click the plus sign (+) next to Label Set. On the Add Label page that is displayed, add a label name, select a label color, and click OK.
      Figure 2 Adding a label (1)
      +
    • Adding labels on the Labeled tab page: Click the plus sign (+) next to All Labels. On the Add Label page that is displayed, add a label name, select a label color, and click OK.
      Figure 3 Adding a label (2)
      +
    +
    +

    Viewing the Labeled Text

    On the dataset details page, click the Labeled tab to view the list of the labeled text. You can also view all labels supported by the dataset in the All Labels area on the right.

    +
    +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on texts

      On the dataset details page, click the Labeled tab, and select the text to be modified from the text list.

      +

      In the text list, click the text. When the text background turns blue, the text is selected. If a text file has multiple labels, you can click above a label to delete the label.

      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Batch modification: In the All Labels area, click the editing icon in the Operation column, modify the label name in the text box, select a label color, and click OK.
      • Batch deletion: In the All Labels area, click the deletion icon in the Operation column to delete the label. In the dialog box that is displayed, select Delete label or Delete label and objects with only the label, and click OK.
      +
    +
    +

    Adding Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add text files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add File.
    2. In the displayed Add File dialog box, set the parameters as required and then select the file to be uploaded.

      Select one or more files to be uploaded in the local environment. Only .txt and .csv files are supported. The total size of files uploaded at a time cannot exceed 8 MB. Text and Label Separator and Label Separator must be different.

      +
      • Pattern: Select Merge text objects and labels or Separate text objects and labels. An example is provided. Determine the mode of the file to be added by referring to the example.
      • Text and Label Separator: Select Tab, Space, Semicolon, Comma, or Other. If you select Other, enter a separator in the text box on the right.
      • Label Separator: Select Tab, Space, Semicolon, Comma, or Other. If you select Other, enter a separator in the text box on the right.
      +
    3. In the Add File dialog box, click Upload. The files you add will be automatically displayed on the Unlabeled or Labeled tab page.
    +
    +

    Deleting a File

    You can quickly delete the files you want to discard.

    +
    • On the Unlabeled tab page, select the text to be deleted, and click Delete in the upper left corner to delete the text.
    • On the Labeled tab page, select the text to be deleted and click Delete. Alternatively, you can tick Select Images on Current Page to select all text objects on the current page and click Delete in the upper left corner.
    +

    The background of the selected text is blue.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0014.html b/modelarts/umn/modelarts_23_0014.html new file mode 100644 index 000000000..fa718301d --- /dev/null +++ b/modelarts/umn/modelarts_23_0014.html @@ -0,0 +1,44 @@ + + +

    Named Entity Recognition

    +

    Named entity recognition assigns labels to named entities in text, such as time and locations. Before labeling, you need to understand the following:

    +
    • A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Labeling Content

    The dataset details page displays the labeled and unlabeled text files in the dataset. The Unlabeled tab page is displayed by default.

    +

    +
    1. On the Unlabeled tab page, the objects to be labeled are listed in the left pane. In the list, click the text object to be labeled, select a part of text displayed under Label Set for labeling, and select a label in the Label Set area in the right pane. Multiple labels can be added to a labeling object.

      You can repeat this operation to select objects and add labels to the objects.

      +
    2. Click Save Current Page in the lower part of the page to complete the labeling.
    +
    +

    Adding Labels

    • Adding labels on the Unlabeled tab page: Click the plus sign (+) next to Label Set. On the Add Label page that is displayed, add a label name, select a label color, and click OK.
      Figure 1 Adding a named entity label (1)
      +
    • Adding labels on the Labeled tab page: Click the plus sign (+) next to All Labels. On the Add Label page that is displayed, add a label name, select a label color, and click OK.
      Figure 2 Adding a named entity label (2)
      +

      +
    +
    +

    Viewing the Labeled Text

    On the dataset details page, click the Labeled tab to view the list of the labeled text. You can also view all labels supported by the dataset in the All Labels area on the right.

    +
    +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +

    On the dataset details page, click the Labeled tab, and modify the text information in the label information area on the right.

    +
    • Modifying based on texts

      On the dataset details page, click the Labeled tab, and select the text to be modified from the text list.

      +

      Manual deletion: In the text list, click the text. When the text background turns blue, the text is selected. On the right of the page, click above a text label to delete the label.

      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Batch modification: In the All Labels area, click the editing icon in the Operation column, add a label name in the text box, select a label color, and click OK.
      • Batch deletion: In the All Labels area, click the deletion icon in the Operation column to delete the label. In the dialog box that is displayed, select Delete label or Delete label and objects with only the label, and click OK.
      +
    +
    +

    Adding Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add text files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add File.
    2. In the displayed Add File dialog box, set the parameters as required and then select the file to be uploaded.

      Select one or more files to be uploaded in the local environment. Only .txt and .csv files are supported. The total size of files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add File dialog box, click Upload. The files you add will be automatically displayed on the Unlabeled tab page.
    +
    +

    Deleting a File

    You can quickly delete the files you want to discard.

    +
    • On the Unlabeled tab page, select the text to be deleted, and click Delete in the upper left corner to delete the text.
    • On the Labeled tab page, select the text to be deleted and click Delete. Alternatively, you can tick Select Images on Current Page to select all text objects on the current page and click Delete in the upper left corner.
    +

    The background of the selected text is blue.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0015.html b/modelarts/umn/modelarts_23_0015.html new file mode 100644 index 000000000..237c3b9a6 --- /dev/null +++ b/modelarts/umn/modelarts_23_0015.html @@ -0,0 +1,49 @@ + + +

    Sound Classification

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files in batches by one click. In addition, you can modify the labels of audio files, or remove their labels and label the audio files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing the Data Source

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    +
    +

    Labeling Audio Files

    The dataset details page displays the labeled and unlabeled audio files. The Unlabeled tab page is displayed by default. Click on the left of the audio to preview the audio.

    +
    1. On the Unlabeled tab page, select the audio files to be labeled.
      • Manual selection: In the audio list, click the target audio. If the blue check box is displayed in the upper right corner, the audio is selected. You can select multiple audio files of the same type and label them together.
      • Batch selection: If all audio files of the current page belong to one type, you can click Select Images on Current Page in the upper right corner of the list to select all the audio files on the page.
      +
    2. Add labels.
      1. In the right pane, set a label name in the Label text box.

        Method 1 (the required label already exists): In the right pane, select a shortcut from the Shortcut drop-down list, select an existing label name from the Label text box, and click OK.

        +

        Method 2 (adding a label): In the right pane, select a shortcut from the Shortcut drop-down list, and enter a new label name in the Label text box.

        +
      2. The selected audio files are automatically moved to the Labeled tab page. On the Unlabeled tab page, the labeling information is updated along with the labeling process, including the added label names and the number of audio files corresponding to each label.
      +

      Shortcut key description: After specifying a shortcut key for a label, you can select an audio file and press the shortcut key to add a label for the audio file. Example: Specify 1 as the shortcut key for the aa label. Select one or more files and press 1 during data labeling. A message is displayed, asking you whether to label the files with aa. Click OK.

      +

      Each label has a shortcut key. A shortcut key cannot be specified for different labels. Shortcut keys can greatly improve the labeling efficiency.

      +
      +
    +
    +

    Viewing the Labeled Audio Files

    On the dataset details page, click the Labeled tab to view the list of the labeled audio files. Click an audio file. You can view the label information about the audio file in the File Labels area on the right.

    +
    +

    Modifying Labels

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on audio

      On the data labeling page, click the Labeled tab. Select one or more audio files to be modified from the audio list. Modify the label in the label details area on the right.

      +
      • Modifying a label: In the File Labels area, click the edit icon in the Operation column, enter the correct label name in the text box, and click the check mark to complete the modification.
      • Deleting a label: In the File Labels area, click the delete icon in the Operation column to delete the label.
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      Figure 1 Information about all labels
      +
      • Modifying a label: Click the editing icon in the Operation column. In the dialog box that is displayed, enter the new label name and click OK. After the modification, the new label applies to the audio files that contain the original label.
      • Deleting a label: Click the deletion icon in the Operation column. In the displayed dialog box, select the object to be deleted as prompted and click OK.
      +
    +
    +

    Adding Audio Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add audio files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add Audio in the upper left corner.
    2. In the Add Audio dialog box that is displayed, click Add Audio.

      Select the audio files to be uploaded in the local environment. Only WAV audio files are supported. The size of an audio file cannot exceed 4 MB. The total size of audio files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add Audio dialog box, click OK.

      The audio files you add will be automatically displayed on the Unlabeled tab page. In addition, the audio files are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    +
    +

    Deleting Audio Files

    You can quickly delete the audio files you want to discard.

    +

    On the Unlabeled or Labeled tab page, select the audio files to be deleted one by one or tick Select Images on Current Page to select all audio files on the page, and then click Delete File in the upper left corner. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the audio files.

    +

    If a tick is displayed in the upper right corner of an audio file, the audio file is selected. If no audio file is selected on the page, the Delete File button is unavailable.

    +

    If you select Delete source files, audio files stored in the corresponding OBS directory will be deleted when you delete the selected audio files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0016.html b/modelarts/umn/modelarts_23_0016.html new file mode 100644 index 000000000..b8606258c --- /dev/null +++ b/modelarts/umn/modelarts_23_0016.html @@ -0,0 +1,36 @@ + + +

    Speech Labeling

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files in batches by one click. In addition, you can modify the labels of audio files, or remove their labels and label the audio files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing the Data Source

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    +
    +

    Labeling Audio Files

    The dataset details page displays the labeled and unlabeled audio files. The Unlabeled tab page is displayed by default.

    +
    1. In the audio file list on the Unlabeled tab page, click the target audio file. In the area on the right, the audio file is displayed. Click below the audio file to play the audio.
    2. In Speech Content, enter the speech content.
    3. After entering the content, click OK to complete the labeling. The audio file is automatically moved to the Labeled tab page.
      Figure 1 Labeling an audio file
      +
    +
    +

    Viewing the Labeled Audio Files

    On the dataset details page, click the Labeled tab to view the list of the labeled audio files. Click the audio file to view the audio content in the Speech Content text box on the right.

    +
    +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +

    On the data labeling page, click the Labeled tab, and select the audio file to be modified from the audio file list. In the label information area on the right, modify the content of the Speech Content text box, and click OK to complete the modification.

    +
    +

    Adding Audio Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add audio files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add Audio in the upper left corner.
    2. In the Add Audio dialog box that is displayed, click Add Audio.

      Select the audio files to be uploaded in the local environment. Only WAV audio files are supported. The size of an audio file cannot exceed 4 MB. The total size of audio files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add Audio dialog box, click OK.

      The audio files you add will be automatically displayed on the Unlabeled tab page. In addition, the audio files are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    +
    +

    Deleting Audio Files

    You can quickly delete the audio files you want to discard.

    +

    On the Unlabeled or Labeled tab page, select the audio files to be deleted, and then click Delete File in the upper left corner. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the audio files.

    +

    If you select Delete source files, audio files stored in the corresponding OBS directory will be deleted when you delete the selected audio files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0017.html b/modelarts/umn/modelarts_23_0017.html new file mode 100644 index 000000000..3ba8f5fa9 --- /dev/null +++ b/modelarts/umn/modelarts_23_0017.html @@ -0,0 +1,37 @@ + + +

    Speech Paragraph Labeling

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files. In addition, you can modify the labels of audio files, or remove their labels and label the audio files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing the Data Source

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    +
    +

    Labeling Audio Files

    The dataset details page displays the labeled and unlabeled audio files. The Unlabeled tab page is displayed by default.

    +
    1. In the audio file list on the Unlabeled tab page, click the target audio file. In the area on the right, the audio file is displayed. Click below the audio file to play the audio.
    2. Select an audio segment based on the content being played, and enter the audio file label and content in the Speech Content text box.
      Figure 1 Labeling an audio file
      +
    3. After entering the content, click OK to complete the labeling. The audio file is automatically moved to the Labeled tab page.
    +
    +

    Viewing the Labeled Audio Files

    On the dataset details page, click the Labeled tab to view the list of the labeled audio files. Click the audio file to view the audio content in the Speech Content text box on the right.

    +
    +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying a label: On the dataset details page, click the Labeled tab, and select the audio file to be modified from the audio file list. In the Speech Content area, modify Label and Content, and click OK to complete the modification.
    • Deleting a label: Click in the Operation column of the target number to delete the label of the audio segment. Alternatively, you can click the cross (x) icon above the labeled audio file to delete the label. Then click OK.
    +
    +

    Adding Audio Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add audio files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add Audio in the upper left corner.
    2. In the Add Audio dialog box that is displayed, click Add Audio.

      Select the audio files to be uploaded in the local environment. Only WAV audio files are supported. The size of an audio file cannot exceed 4 MB. The total size of audio files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add Audio dialog box, click OK.

      The audio files you add will be automatically displayed on the Unlabeled tab page. In addition, the audio files are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    +
    +

    Deleting Audio Files

    You can quickly delete the audio files you want to discard.

    +

    On the Unlabeled or Labeled tab page, select the audio files to be deleted, and then click Delete File in the upper left corner. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the audio files.

    +

    If you select Delete source files, audio files stored in the corresponding OBS directory will be deleted when you delete the selected audio files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0018.html b/modelarts/umn/modelarts_23_0018.html new file mode 100644 index 000000000..a488c7941 --- /dev/null +++ b/modelarts/umn/modelarts_23_0018.html @@ -0,0 +1,75 @@ + + +

    Publishing a Dataset

    +

    ModelArts distinguishes data of the same source according to versions labeled at different time, which facilitates the selection of dataset versions during subsequent model building and development. After labeling the data, you can publish the dataset to generate a new dataset version.

    +

    About Dataset Versions

    • For a newly created dataset (before publishing), there is no dataset version information. The dataset must be published before being used for model development or training.
    • The default naming rules of dataset versions are V001 and V002 in ascending order. You can customize the version number during publishing.
    • You can set any version to the current directory. Then the details of the version are displayed on the dataset details page.
    • You can obtain the dataset in the manifest file format corresponding to each dataset version based on the value of Storage Path. The dataset can be used when you import data or filter hard examples.
    • The version of a table dataset cannot be changed.
    +
    +

    Publishing a Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, click Publish in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Publish in the upper right corner.

      +
    3. In the displayed dialog box, set the parameters and click OK. +
      + + + + + + + + + + + + + + + + +
      Table 1 Parameters for publishing a dataset

      Parameter

      +

      Description

      +

      Version Name

      +

      The naming rules of V001 and V002 in ascending order are used by default. A version name can be customized. Only letters, digits, hyphens (-), and underscores (_) are allowed.

      +

      Format

      +

      +

      Only table datasets support version format setting. Available values are CSV and CarbonData.

      +
      NOTE:

      If the exported CSV file contains any command starting with =, +, -, or @, ModelArts automatically adds the Tab setting and escapes the double quotation marks (") for security purposes.

      +
      +

      Splitting

      +

      Only image classification, object detection, text classification, and sound classification datasets support data splitting.

      +

      By default, this function is disabled. After this function is enabled, you need to set the training and validation ratios.

      +

      Enter a value ranging from 0 to 1 for Training Set Ratio. After the training set ratio is set, the validation set ratio is determined. The sum of the training set ratio and the validation set ratio is 1.

      +

      The training set ratio is the ratio of sample data used for model training. The validation set ratio is the ratio of the sample data used for model validation. The training and validation ratios affect the performance of training templates.

      +

      Description

      +

      Description of the current dataset version.

      +
      +
      +

      After the version is published, you can go to the Version Manager tab page to view the detailed information. By default, the system sets the latest version to the current directory.

      +
    +
    +

    Directory Structure of Related Files After the Dataset Is Published

    Datasets are managed based on OBS directories. After a new version is published, the directory is generated based on the new version in the output dataset path.

    +

    Take an image classification dataset as an example. After the dataset is published, the directory structure of related files generated in OBS is as follows:

    +
    |-- user-specified-output-path
    +    |-- DatasetName-datasetId
    +        |-- annotation
    +            |-- VersionMame1
    +                |-- VersionMame1.manifest
    +            |-- VersionMame2
    +                ...
    +            |-- ...
    +

    The following uses object detection as an example. If a manifest file is imported to the dataset, the following provides the directory structure of related files after the dataset is published:

    +
    |-- user-specified-output-path 
    +    |-- DatasetName-datasetId 
    +        |-- annotation 
    +            |-- VersionMame1 
    +                |-- VersionMame1.manifest 
    +                |-- annotation
    +                   |-- file1.xml 
    +            |-- VersionMame2
    +                ...
    +            |-- ...
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0019.html b/modelarts/umn/modelarts_23_0019.html new file mode 100644 index 000000000..4d507882c --- /dev/null +++ b/modelarts/umn/modelarts_23_0019.html @@ -0,0 +1,23 @@ + + +

    Managing Dataset Versions

    +

    After labeling data, you can publish the dataset to multiple versions for management. For the published versions, you can view the dataset version updates, set the current version, and delete versions. For details about dataset versions, see About Dataset Versions.

    +

    For details about how to publish a new version, see Publishing a Dataset.

    +

    Viewing Dataset Version Updates

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Manage Version in the Operation column. The Manage Version tab page is displayed.

      You can view basic information about the dataset, and view the versions and publish time on the left.

      +
    +
    +

    Setting to Current Version

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Manage Version in the Operation column. The Manage Version tab page is displayed.
    3. On the Manage Version tab page, select the desired dataset version, and click Set to Current Version in the basic information area on the right. After the setting is complete, Current version is displayed to the right of the version name.

      Only the version in Normal status can be set to the current version.

      +
      +
    +
    +

    Deleting a Dataset Version

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Manage Version in the Operation column. The Manage Version tab page is displayed.
    3. Locate the row that contains the target version, and click Delete in the Operation column. In the dialog box that is displayed, click OK.

      Deleting a dataset version does not remove the original data. Data and its labeling information are still stored in the OBS directory. However, if it is deleted, you cannot manage the dataset versions on the ModelArts management console. Exercise caution when performing this operation.

      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0020.html b/modelarts/umn/modelarts_23_0020.html new file mode 100644 index 000000000..4bea65af2 --- /dev/null +++ b/modelarts/umn/modelarts_23_0020.html @@ -0,0 +1,41 @@ + + +

    Modifying a Dataset

    +

    For a created dataset, you can modify its basic information to match service changes.

    +

    Prerequisites

    You have created a dataset.

    +
    +

    Modifying the Basic Information About a Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Modify in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Modify in the upper right corner.

      +
    3. Modify basic information about the dataset and then click OK. Refer to Table 1 for details. +
      + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Name

      +

      Enter the name of the dataset. A dataset name can contain only letters, digits, underscores (_), and hyphens (-).

      +

      Description

      +

      Enter a brief description for the dataset.

      +

      Label Set

      +

      The label set varies depending on the dataset type. For details about how to modify the label set, see the parameters of different dataset types in Creating a Dataset.

      +
      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0021.html b/modelarts/umn/modelarts_23_0021.html new file mode 100644 index 000000000..0a1a9c5a6 --- /dev/null +++ b/modelarts/umn/modelarts_23_0021.html @@ -0,0 +1,17 @@ + + +

    Deleting a Dataset

    +

    If a dataset is no longer in use, you can delete it to release resources.

    +

    After a dataset is deleted, if you need to delete the data in the dataset input and output paths in OBS to release resources, delete the data and the OBS folders on the OBS Console.

    +
    +

    Procedure

    1. In the left navigation pane, choose Data Management > Datasets. On the Datasets page, choose More > Delete in the Operation column of the dataset.
    2. In the displayed dialog box, click OK.

      After a dataset is deleted, some functions such as dataset version management become unavailable. Exercise caution when performing this operation. However, the original data and labeling data of the dataset are still stored in OBS.

      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0032.html b/modelarts/umn/modelarts_23_0032.html new file mode 100644 index 000000000..9eaf57af7 --- /dev/null +++ b/modelarts/umn/modelarts_23_0032.html @@ -0,0 +1,17 @@ + + +

    DevEnviron (Notebook)

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0033.html b/modelarts/umn/modelarts_23_0033.html new file mode 100644 index 000000000..6cd219a6d --- /dev/null +++ b/modelarts/umn/modelarts_23_0033.html @@ -0,0 +1,81 @@ + + +

    Introduction to Notebook

    +

    ModelArts integrates the open-source Jupyter Notebook and JupyterLab to provide you with online interactive development and debugging environments. You can use the Notebook on the ModelArts management console to compile and debug code and train models based on the code, without concerning installation and configurations.

    +
    • Jupyter Notebook is an interactive notebook. For details about how to perform operations on Jupyter Notebook, see Jupyter Notebook Documentation.
    • JupyterLab is an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals, edit MarkDown text, open interaction modes, and view CSV files and images. For details about how to perform operations on JupyterLab, see JupyterLab Documentation.
    +

    Supported AI Engines

    Each development environment supports multiple AI engines that run independently. All supported AI engines can be used in the same notebook instance, and these engines can be switched quickly and conveniently.

    +
    • Each ModelArts notebook instance can use all supported engines.
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 AI engines

    Work Environment

    +

    Built-in AI Engine and Version

    +

    Supported Chip

    +

    Multi-Engine 1.0 (Python 3, Recommended)

    +

    MXNet-1.2.1

    +

    GPU

    +

    PySpark-2.3.2

    +

    CPU

    +

    Pytorch-1.0.0

    +

    GPU

    +

    TensorFlow-1.13.1

    +

    GPU

    +

    XGBoost-Sklearn

    +

    CPU

    +

    Multi-Engine 2.0 (Python3)

    +

    Pytorch-1.4.0

    +

    GPU

    +

    TensorFlow-2.1.0

    +

    CPU/GPU

    +

    Ascend-Powered-Engine 1.0 (Python3)

    +

    MindSpore-1.1.1

    +

    Ascend 910

    +

    TensorFlow-1.15.0

    +

    Ascend 910

    +
    +
    +
    +

    Constraints

    • For security purposes, the root permission is not granted to the notebook instances integrated in ModelArts. You can use the non-privileged user jovyan or ma-user (using Multi-Engine) to perform operations. Therefore, you cannot use apt-get to install the OS software.
    • Notebook instances support only standalone training under the current AI engine framework. If you need to use distributed training, use ModelArts training jobs and specify multiple nodes in the resource pool.
    • ModelArts DevEnviron does not support apt-get. You can use a custom image to train a model.
    • Notebook instances do not support GUI-related libraries, such as PyQt.
    • Notebook instances created using Ascend specifications cannot be attached to EVS disks.
    • Notebook instances cannot be connected to DWS and database services.
    • Notebook instances cannot directly read files in OBS. You need to download the files to the local host. To access data in OBS, use Moxing or SDK for interaction.
    • DevEnviron does not support TensorBoard. Use the visualization job function under Training Jobs.
    • After a notebook instance is created, you cannot modify its specifications. For example, you cannot change the CPU specifications to GPU specifications or change the work environment. Therefore, select the specifications required by the service when creating a notebook instance, or save your code and data to OBS in a timely manner during development so that you can quickly upload the code and data to a new notebook instance.
    • If the code output is still displayed after you close the page and open it again, use Terminal.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0034.html b/modelarts/umn/modelarts_23_0034.html new file mode 100644 index 000000000..fb73792a4 --- /dev/null +++ b/modelarts/umn/modelarts_23_0034.html @@ -0,0 +1,87 @@ + + +

    Creating a Notebook Instance

    +

    Before developing a model, create a notebook instance, open it, and perform encoding.

    +

    Background

    • Only notebook instances in the Running state can be started.
    • A maximum of 10 notebook instances can be created for an account. By default, the notebook instances created by the current user are displayed. If Display Only My Instances is disabled, all notebook instances created by the current account and its IAM users are displayed.
    • If OBS storage is used, ensure that the OBS directory you use and ModelArts are in the same region.
    • Before creating a notebook instance, learn about the AI engines supported by ModelArts and their versions.
    +
    +

    Creating a Notebook Instance

    1. Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page.
    2. Click Create. On the displayed page, set the required parameters.
      1. Enter the basic information about the notebook instance, including the name, description, and whether to automatically stop the notebook instance. For details about the parameters, see Table 1.
        Figure 1 Basic information about a notebook instance
        + +
        + + + + + + + + + + + + + +
        Table 1 Parameters of basic information

        Parameter

        +

        Description

        +

        Name

        +

        Name of a notebook instance, which contains a maximum of 64 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. This parameter is mandatory.

        +

        Description

        +

        Brief description of a notebook instance.

        +

        Auto Stop

        +

        This function is enabled by default. The default value is 1 hour later, indicating that the notebook instance automatically stops after running for 1 hour and its billing stops.

        +

        The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. You can select Custom to specify any integer from 1 to 24 hours.

        +
        +
        +
      2. Set notebook parameters, such as the work environment and instance flavor. For details, see Table 2. +
        + + + + + + + + + + + + + + + + + + + +
        Table 2 Notebook instance parameters

        Parameter

        +

        Description

        +

        Work Environment

        +

        Only public images, which are the AI frameworks built in ModelArts are supported.

        +

        All supported AI engines can be used in the same notebook instance. Different engines can be switched quickly and conveniently, and run in independent development environments. After the notebook instance is created, go to the Jupyter page to create the development environment with the desired AI engine. The AI engine varies depending on the operating environment. For details, see Supported AI Engines.

        +

        Resource Pool

        +

        Select Public resource pools or Dedicated resource pools. For details about the dedicated resource pools and how to buy them, see Resource Pools.

        +

        Public resource pools are available immediately after being provisioned. Dedicated resource pools are queue-free. When a large number of users use the public resource pool, they may queue for resources. Purchase a dedicated resource pool to improve development efficiency.

        +

        Type

        +

        The CPU and GPU types are supported.

        +

        Instance Flavor

        +

        If you select a public resource pool, available flavors vary depending on the selected type.

        +
        • If you select CPU for Type, available options include 2 vCPUs | 8 GiB and 8 vCPUs | 32 GiB.
        • If you select GPU for Type, the available option is GPU: 1 x v100NV32 CPU: 8 vCPUs | 64 GiB.
        • If you select Ascend for Type, available options include Ascend: 1 x Ascend 910 CPU: 24 vCPUs | 96 GiB and Ascend: 8 x Ascend 910 CPU: 192 vCPUs | 720 GiB.
        +

        Storage

        +

        The EVS and OBS options are available.

        +
        • Selecting EVS

          Set Disk Space based on the actual usage. The default value of Disk Space is 5 GB. ModelArts provides 5 GB disk space for you to use for free. If the disk space exceeds 5 GB, the additional space is billed by GB according to pricing of ultra-high I/O disks. The value of Disk Space ranges from 5 to 4096.

          +

          If you select this storage mode, all read and write operations on files on the notebook instances take effect on the data stored in your notebook instances. There is no data loss after you restart notebook instances.

          +
        • Selecting OBS

          Click Select next to the Storage Path text box to set the OBS path for storing notebook instance data. If you want to use existing files or data, upload the files or data to the corresponding OBS path in advance. Storage Path must be set to a specific directory in an OBS bucket rather than the root directory of the OBS bucket.

          +

          If you select this storage mode, all read and write operations on files on the notebook instances take effect on the data stored in your selected OBS path. To synchronize data in a file stored in OBS to a notebook instance, select the file and click Sync OBS. For details, see Synchronizing Files with OBS. There is no data loss after you restart this notebook instance.

          +
        +
        +
        +
      +
    3. Click Next.
    4. After confirming the parameter configurations, click Submit.

      Switch to the notebook instance list. Status of the notebook instance being created is Starting. If Status of the notebook instance changes to Running, the notebook instance has been created.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0035.html b/modelarts/umn/modelarts_23_0035.html new file mode 100644 index 000000000..9d59e2d0f --- /dev/null +++ b/modelarts/umn/modelarts_23_0035.html @@ -0,0 +1,27 @@ + + + +

    Using Jupyter Notebook

    + +

    +
    + +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0037.html b/modelarts/umn/modelarts_23_0037.html new file mode 100644 index 000000000..253836121 --- /dev/null +++ b/modelarts/umn/modelarts_23_0037.html @@ -0,0 +1,15 @@ + + +

    Using the Convert to Python File Function

    +

    After code compiling is finished, you can save the entered code as a .py file which can be used for starting training jobs.

    +
    1. Create and open a notebook instance or open an existing notebook instance in the notebook instance list.
    2. On the Files tab page, click New and choose the required AI engine from the drop-down list to access the code development page.
    3. After code compiling is complete, click the save button in the upper left corner. Then, click Convert to Python File to convert the current ipynb file into a Python file. This function can be used to directly save your entered code as a .py file to the working directory.
      The generated .py file can be used to start ModelArts training jobs.
      Figure 1 Convert to Python File
      +
      +
    4. In the dialog box that is displayed, enter the file name as required, and select or deselect Force overwrite if file already exists. By default, the item is not selected, indicating that the file will not be overwritten when a file with the same name exists in the directory. Click Convert.
      Figure 2 Setting and saving the configuration
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0038.html b/modelarts/umn/modelarts_23_0038.html new file mode 100644 index 000000000..dbbce017c --- /dev/null +++ b/modelarts/umn/modelarts_23_0038.html @@ -0,0 +1,18 @@ + + +

    Synchronizing Files with OBS

    +

    If you specify Storage Path during notebook instance creation, your compiled code will be automatically stored in your specified OBS bucket. If code invocation among different .ipynb files is required, you can use the Sync OBS function.

    +

    The Sync OBS function is used to synchronize the objects selected in the list of notebook instance files from the OBS bucket to the current container directory ~/work.

    +

    Precautions

    • The maximum size of files to be synchronized at a time is 500 MB, and the maximum number of files to be synchronized at a time is 1,024.
    • The total size of objects to be synchronized cannot exceed 5 GB. For example, if 2 GB files exist in the ~/work container directory, you can use Sync OBS to synchronize a maximum of 3 GB files.
    • The Sync OBS function only takes effect on notebook instances for which Storage is OBS. For notebook instances whose Storage is not OBS, all files are read and written in the ~/work container directory.
    +
    +

    Procedure

    The Sync OBS function can be used in notebook instances. The following describes how to use the function.

    +

    For example, if the Example1.ipynb file needs to call module in the Example2.ipynb file, select both files and click Sync OBS.

    +
    Figure 1 Using the Sync OBS function
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0040.html b/modelarts/umn/modelarts_23_0040.html new file mode 100644 index 000000000..7778fe82e --- /dev/null +++ b/modelarts/umn/modelarts_23_0040.html @@ -0,0 +1,26 @@ + + +

    Installing External Libraries and Kernels in Notebook Instances

    +

    Multiple environments have been installed in ModelArts notebook instances, including TensorFlow. You can use pip install to install external libraries from a Jupyter notebook or terminal to facilitate use.

    +

    Installing an External Library from a Jupyter Notebook

    Assume that you want to install Shapely from a notebook instance. Follow the following instructions:

    +
    1. In the left navigation pane of the ModelArts management console, choose DevEnviron > Notebooks. Open a notebook instance in the displayed notebook instance list.
    2. In the Jupyter Notebook page that is displayed, click New and select the required AI engine from the drop-down list.
    3. In the displayed window, type the following command in the code input bar to install Shapely:

      pip install shapely

      +
    +
    +

    Installing an External Library from a Terminal

    Assume that you want to install Shapely from the terminal of a notebook instance by using pip. Follow the following instructions:

    +
    1. In the left navigation pane of the ModelArts management console, choose DevEnviron > Notebooks. Open a notebook instance in the displayed notebook instance list.
    2. In the displayed Jupyter dashboard, click New and choose Terminal from the shortcut menu.
    3. For a notebook instance that does not use the AI engine of the Multi-Engine type, enter the following command in the code input bar to install Shapely:

      /opt/conda/envs/python27_tf/bin/pip install Shapely

      +
    4. The Multi-Engine notebook instance can use multiple engines. By referring to the README file in the /home/ma-user/ path, switch to the installation package of the corresponding engine environment and install Shapely. For example, you can install Shapely from TensorFlow-1.13.1 with the following code:
      source /home/ma-user/anaconda3/bin/activate TensorFlow-1.13.1
      +pip install shapely
      +
    +

    When you create a ModelArts training job, a new independent running environment is started, which is not associated with the packages installed in the Notebook environment. Therefore, add os.system('pip install xxx') to the startup code before importing the installation package.

    +

    For example, if you need to use the Shapely dependency in the training job, add the following code to the startup code:

    +
    os.system('pip install Shapely')
    +import Shapely
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0041.html b/modelarts/umn/modelarts_23_0041.html new file mode 100644 index 000000000..cc2ed8328 --- /dev/null +++ b/modelarts/umn/modelarts_23_0041.html @@ -0,0 +1,13 @@ + + +

    Starting or Stopping a Notebook Instance

    +

    You can stop unwanted notebook instances to prevent unnecessary fees. You can also start a notebook instance that is in the Stopped state to use it again.

    +

    Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page. Perform the following operations to stop or start a notebook instance:

    +
    • To stop a notebook instance, locate the row where the notebook instance resides and click Stop in the Operation column. Only notebook instances in the Running state can be stopped.
    • To start a notebook instance, locate the row where the notebook instance resides and click Start in the Operation column. Only notebook instances in the Stopped state can be started.
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0042.html b/modelarts/umn/modelarts_23_0042.html new file mode 100644 index 000000000..eea9a0d2d --- /dev/null +++ b/modelarts/umn/modelarts_23_0042.html @@ -0,0 +1,15 @@ + + +

    Deleting a Notebook Instance

    +

    You can delete notebook instances that are no longer used to release resources.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page.
    2. In the notebook instance list, locate the row where the target notebook instance resides and click Delete in the Operation column. In the dialog box that is displayed, click OK.

      +

      Deleted notebook instances cannot be recovered. Therefore, exercise caution when performing this operation. However, the files created in notebook instances are still stored in OBS specified during creation of the notebook instances.

      +
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0043.html b/modelarts/umn/modelarts_23_0043.html new file mode 100644 index 000000000..7631a5f5e --- /dev/null +++ b/modelarts/umn/modelarts_23_0043.html @@ -0,0 +1,23 @@ + + +

    Training Management

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0044.html b/modelarts/umn/modelarts_23_0044.html new file mode 100644 index 000000000..33f4b83ec --- /dev/null +++ b/modelarts/umn/modelarts_23_0044.html @@ -0,0 +1,47 @@ + + +

    Introduction to Model Training

    +

    ModelArts provides model training for you to view the training effect, based on which you can adjust your model parameters. You can select resource pools (CPU or GPU) with different instance flavors for model training. In addition to the models developed by users, ModelArts also provides built-in algorithms. You can directly adjust parameters of the built-in algorithms, instead of developing a model by yourself, to obtain a satisfactory model.

    +

    Description of the Model Training Function

    +
    + + + + + + + + + + + + + + + + + +
    Table 1 Function description

    Function

    +

    Description

    +

    Reference

    +

    Training job management

    +

    You can create training jobs, manage training job versions, and view details of training jobs, and evaluation details.

    +

    Creating a Training Job

    +

    Managing Training Job Versions

    +

    Viewing Job Details

    +

    Job parameter management

    +

    You can save the parameter settings of a training job (including the data source, algorithm source, running parameters, resource pool parameters, and more) as a job parameter, which can be directly used when you create a training job, eliminating the need to set parameters one by one. As such, the configuration efficiency can be greatly improved.

    +

    Managing Job Parameters

    +

    Model training visualization

    +

    TensorBoard and MindInsight effectively display the computational graph of a model in the running process, the trend of all metrics in time, and the data used in the training.

    +

    Managing Visualization Jobs

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0046.html b/modelarts/umn/modelarts_23_0046.html new file mode 100644 index 000000000..6cb991d72 --- /dev/null +++ b/modelarts/umn/modelarts_23_0046.html @@ -0,0 +1,15 @@ + + +

    Introduction to Training Jobs

    +

    ModelArts supports multiple types of training jobs during the entire AI development process. Select a creation mode based on the algorithm source.

    +

    Algorithm Sources of Training Jobs

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0047.html b/modelarts/umn/modelarts_23_0047.html new file mode 100644 index 000000000..c7892038f --- /dev/null +++ b/modelarts/umn/modelarts_23_0047.html @@ -0,0 +1,62 @@ + + +

    Managing Training Job Versions

    +

    During model building, you may need to frequently tune the data, training parameters, or the model based on the training results to obtain a satisfactory model. ModelArts allows you to manage training job versions to effectively train your model after the tuning. Specifically, ModelArts generates a version each time when a training is performed. You can quickly get the difference between different versions.

    +

    Viewing Training Job Versions

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. By default, the system switches to the Training Jobs page.
    2. In the training job list, click the name of a training job.

      By default, the basic information about the latest version is displayed. If there are multiple available versions, click Select Version in the upper left corner to view a certain version. Click the downward arrow to the left of the version to display job details.

      +
    +
    +

    Comparing Versions of a Training Job

    On the Version Manager page, click View Comparison Result to view the comparison of all or selected versions of the current training job. The comparison result involves the following information: Running Parameter, F1 Score, Recall, Precision, and Accuracy.

    +

    The F1 Score, Recall, Precision, and Accuracy parameters of a training job are displayed only when the job is created using a built-in algorithm. For training jobs created using frequently-used frameworks or custom images, define the output of these parameters in your training script code. These parameters cannot be viewed on the GUI.

    +
    +
    +

    Shortcut Operations Based on Training Job Versions

    On the Version Manager page, ModelArts provides certain shortcut operation buttons for you to quickly enter the subsequent steps after model training is complete.

    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Shortcut operation button description

    Shortcut Operation Button

    +

    Description

    +

    Creating Visualization Job

    +

    Creates a visualization job (TensorBoard) for the current training version. For details, see Managing Visualization Jobs.

    +
    NOTE:

    TensorBoard supports only the TensorFlow and MXNet engines. Therefore, you can create the TensorBoard jobs only when the AI engine is TensorFlow or MXNet.

    +
    +

    Create Model

    +

    Creates a model for the current training version. For details about how to create a model, see Importing a Model. You can only create models for training jobs in the Running status.

    +

    Modify

    +

    If the training result of the current version does not meet service requirements or the training job fails, click Modify to switch to the page where you can modify the job parameter settings. For details about the parameters of the training job, see Creating a Training Job. After modifying the job parameter settings as required, click OK to start the training job of a new version.

    +

    Save Training Parameters

    +

    You can save the job parameter settings of this version as a job parameter configuration, which will be displayed on the Job Parameter Mgmt page. Click More > Save Training Parameters to switch to the Training Parameter page. After confirming that the settings are correct, click OK. For details about training parameter management, see Managing Job Parameters.

    +

    Stop

    +

    Click More > Stop to stop the training job of the current version. Only training jobs in the Running state can be stopped.

    +

    Delete

    +

    Click More > Delete to delete the training job of the current version.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0048.html b/modelarts/umn/modelarts_23_0048.html new file mode 100644 index 000000000..77c65988d --- /dev/null +++ b/modelarts/umn/modelarts_23_0048.html @@ -0,0 +1,54 @@ + + +

    Viewing Job Details

    +

    After a training job finishes, you can manage the training job versions and check whether the training result of the job is satisfactory by viewing the job details.

    +

    Training Job Details

    In the left navigation pane of the ModelArts management console, choose Training Management > Training Jobs to switch to the Training Jobs page. In the training job list, click a job name to view the job details.

    +

    Table 1 lists parameters of the training job of each version.

    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Training job details

    Parameter

    +

    Description

    +

    Version

    +

    Version of a training job, which is automatically defined by the system, for example, V0001 and V0002.

    +

    Status

    +

    Status of a training job,

    +

    Duration

    +

    Running duration of a training job

    +

    Configurations

    +

    Details about the parameters of the current training job version

    +

    Logs

    +

    Logs of the current training job version. If you set Log Output Path when creating a training job, you can click the download button on the Logs tab page to download the logs stored in the OBS bucket to the local host.

    +

    Resource Usages

    +

    Usage of resources of the current training version, including the CPU, GPU, and memory.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0049.html b/modelarts/umn/modelarts_23_0049.html new file mode 100644 index 000000000..0298014ed --- /dev/null +++ b/modelarts/umn/modelarts_23_0049.html @@ -0,0 +1,23 @@ + + +

    Managing Job Parameters

    +

    You can store the parameter settings in ModelArts during job creation so that you can use the stored settings to create follow-up training jobs, which makes job creation more efficient.

    +

    During the operations of creating, editing, and viewing training jobs, the saved job parameter settings are displayed on the Job Parameter Mgmt page.

    +

    Using a Job Parameter Configuration

    • Method 1: Using a job parameter configuration on the Job Parameter Mgmt page

      Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. On the displayed page, click the Job Parameter Mgmt tab. In the job parameter list, click Creating Training Job for a job parameter configuration to create a training job based on the job parameter configuration.

      +
    • Method 2: Using a job parameter configuration on the Creating Training Job page

      On the Creating Training Job page, click One-Click Configuration. In the displayed dialog box, select the required job parameter configuration to quickly create an available training job.

      +
    +
    +

    Editing a Job Parameter Configuration

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. On the displayed page, click the Job Parameter Mgmt tab.
    2. In the job parameter configuration list, click Edit in the Operation column in a row.
    3. On the displayed page, modify related parameters by referring to "Creating a Training Job" and click OK to save the job parameter settings.

      In the existing job parameter settings, the job name cannot be changed.

      +
    +
    +

    Deleting a Training Job Parameter Configuration

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. On the displayed page, click the Job Parameter Mgmt tab.
    2. In the job parameter list, click Delete in the Operation column in a row.
    3. In the displayed dialog box, click OK.

      Deleted job parameter configurations cannot be recovered. Therefore, exercise caution when performing this operation.

      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0050.html b/modelarts/umn/modelarts_23_0050.html new file mode 100644 index 000000000..82d6725a0 --- /dev/null +++ b/modelarts/umn/modelarts_23_0050.html @@ -0,0 +1,32 @@ + + +

    Managing Visualization Jobs

    +

    You can create visualization jobs of TensorBoard and MindInsight types on ModelArts.

    +

    TensorBoard supports training jobs based on the TensorFlow engine, and MindInsight supports training jobs based on the MindSpore engine.

    +

    TensorBoard and MindInsight can effectively display the change trend of a training job and the data used in the training.

    +

    You can use the summary file generated during model training to create a visualization job.

    +

    Prerequisites

    To ensure that the summary file is generated in the training result, you need to add the related code to the training script.

    +
    • Using the TensorFlow engine:

      When using the TensorFlow-based MoXing, in mox.run, set save_summary_steps>0 and summary_verbosity≥1.

      +

      If you want to display other metrics, add tensors to log_info in the return value mox.ModelSpec of model_fn. Only the rank-0 tensors (scalars) are supported. The added tensors are written into the summary file. If you want to write tensors of higher ranks in the summary file, use the native tf.summary of TensorFlow in model_fn.

      +
    • Using the MindSpore engine:

      MindSpore allows you to save data to the summary log file and display the data on the GUI. For details, see the MindSpore official website.

      +
    +
    +

    Creating a Visualization Job

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Jobs. On the displayed page, click the Visualization Jobs tab.
    2. In the upper left corner of the visualization job list, click Create to switch to the Create Visualization Job page.
    3. Set Job Type to TensorBoard and MindInsight. Enter the visualization job name and description as required, set the Training Output Path and Auto Stop parameters.
      • Training Output Path: Select the training output path specified when the training job is created.
      • Auto Stop: Enable or disable the auto stop function. The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer within 1 to 24 hours in the textbox on the right.
      +
    4. After confirming the specifications, click Next.

      In the visualization job list, when the status changes to Running, the virtualization job has been created. You can click the name of the visualization job to view its details.

      +
    +
    +

    Opening a Visualization Job

    In the visualization job list, click the name of the target visualization job. The TensorBoard page is displayed. Only the visualization job in the Running status can be opened.

    +
    +

    Running or Stopping a Visualization Job

    • Stopping a visualization job: In the visualization job list, click Stop in the Operation column to stop the visualization job.
    • Running a visualization job: You can run and use a visualization job in the Canceled status again. In the visualization job list, click Run in the Operation column to run the visualization job.
    +
    +

    Deleting a Visualization Job

    If your visualization job is no longer used, you can delete it to release resources. In the visualization job list, click Delete in the Operation column to delete the visualization job.

    +

    A deleted visualized job cannot be recovered. You need to create a new visualization job if you want to use it. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0051.html b/modelarts/umn/modelarts_23_0051.html new file mode 100644 index 000000000..0463c178b --- /dev/null +++ b/modelarts/umn/modelarts_23_0051.html @@ -0,0 +1,17 @@ + + +

    Model Management

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0052.html b/modelarts/umn/modelarts_23_0052.html new file mode 100644 index 000000000..b279dffac --- /dev/null +++ b/modelarts/umn/modelarts_23_0052.html @@ -0,0 +1,43 @@ + + +

    Introduction to Model Management

    +

    AI model development and optimization require frequent iterations and debugging. Changes in datasets, training code, or parameters may affect the quality of models. If the metadata of the development process cannot be managed in a unified manner, the optimal model may fail to be reproduced.

    +

    ModelArts model management allows you to import models generated with all training versions to manage all iterated and debugged models in a unified manner.

    +

    Usage Restrictions

    • In an automatic learning project, after a model is deployed, the model is automatically uploaded to the model management list. However, models generated by automatic learning cannot be downloaded and can be used only for deployment and rollout.
    +
    +

    Methods of Importing a Model

    • Importing from Trained Models: You can create a training job on ModelArts and complete model training. After obtaining a satisfactory model, import the model to the Model Management page for model deployment.
    • Importing from a Template: Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import models without compiling the config.json configuration file.
    • Importing from a Container Image: For AI engines that are not supported by ModelArts, you can import the model you compile to ModelArts using custom images.
    • Importing from OBS: If you use a frequently-used framework to develop and train a model locally, you can import the model to ModelArts for model deployment.
    +
    +

    Model Management Functions

    +
    + + + + + + + + + + + + + +
    Table 1 Model management functions

    Supported Function

    +

    Description

    +

    Importing a Model

    +

    Import the trained models to ModelArts for unified management. You can import models using four methods. The following provides the operation guide for each method.

    + +

    Managing Model Versions

    +

    To facilitate source tracing and repeated model tuning, ModelArts provides the model version management function. You can manage models based on versions.

    +

    Compressing and Converting Models

    +

    To obtain higher and more economical computing power, you can deploy the models created on ModelArts or a local PC on the Ascend chip, Arm, or GPU. In this case, you need to compress or convert the models to the required formats before deploying them.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0054.html b/modelarts/umn/modelarts_23_0054.html new file mode 100644 index 000000000..4241d302a --- /dev/null +++ b/modelarts/umn/modelarts_23_0054.html @@ -0,0 +1,85 @@ + + +

    Importing a Meta Model from a Training Job

    +

    You can create a training job on ModelArts and perform training to obtain a satisfactory model. Then import the model to Model Management for unified management. In addition, you can quickly deploy the model as a service.

    +

    Background

    • If a model generated by the ModelArts training job is used, ensure that the training job has been successfully executed and the model has been stored in the corresponding OBS directory.
    • If a model is generated from a training job that uses built-in algorithms, the model can be directly imported to ModelArts without using the inference code and configuration file.
    • If a model is generated from a training job that uses a frequently-used framework or custom image, upload the inference code and configuration file to the storage directory of the model by referring to Model Package Specifications.
    • The OBS directory you use and ModelArts are in the same region.
    • ModelArts of the Arm version does not support model import from training.
    +
    +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 1. +
        + + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        +
        +
      2. Select the meta model source and set related parameters. Set Meta Model Source based on your application scenario. For details, see Methods of Importing a Model. If Meta Model Source is set to Training job, set other parameters by referring to Table 2. +
        + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Meta Model Source

        +

        Select Training job, and select a specified training job that has completed training under the current account and its version from the drop-down lists on the right of Training Job and Version respectively.

        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +

        Inference Code

        +

        Display the model inference code URL. You can copy this URL directly.

        +

        Parameter Configuration

        +

        Click on the right to view the input and output parameters of the model.

        +

        Runtime Dependency

        +

        List the dependencies of the selected model on the environment.

        +
        +
        +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    +
    +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0055.html b/modelarts/umn/modelarts_23_0055.html new file mode 100644 index 000000000..811b9e3d8 --- /dev/null +++ b/modelarts/umn/modelarts_23_0055.html @@ -0,0 +1,19 @@ + + +

    Managing Model Versions

    +

    To facilitate source tracing and repeated model tuning, ModelArts provides the model version management function. You can manage models based on versions.

    +

    Prerequisites

    You have imported a model to ModelArts,

    +
    +

    Creating a New Version

    On the Model Management > Models page, click Create New Version in the Operation column. The Create New Version page is displayed. Set related parameters by following the instructions in Importing Models and click Next.

    +
    +

    Deleting a Version

    On the Model Management > Models page, click the triangle on the left of the model name to expand a model version list. In the model version list, click Delete in the Operation column to delete the corresponding version.

    +

    A deleted version cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0057.html b/modelarts/umn/modelarts_23_0057.html new file mode 100644 index 000000000..c295ac225 --- /dev/null +++ b/modelarts/umn/modelarts_23_0057.html @@ -0,0 +1,21 @@ + + +

    Model Deployment

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0058.html b/modelarts/umn/modelarts_23_0058.html new file mode 100644 index 000000000..375753903 --- /dev/null +++ b/modelarts/umn/modelarts_23_0058.html @@ -0,0 +1,14 @@ + + +

    Introduction to Model Deployment

    +
    After a training job is complete and a model is generated, you can deploy the model on the Service Deployment page. You can also deploy the model imported from OBS. ModelArts supports the following deployment types:
    • Real-Time Services

      Deploy a model as a web service to provide real-time test UI and monitoring capabilities.

      +
    • Batch Services

      A batch service can perform inference on batch data. After data processing is complete, the batch service automatically stops.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0059.html b/modelarts/umn/modelarts_23_0059.html new file mode 100644 index 000000000..2c7e55218 --- /dev/null +++ b/modelarts/umn/modelarts_23_0059.html @@ -0,0 +1,21 @@ + + +

    Real-Time Services

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0060.html b/modelarts/umn/modelarts_23_0060.html new file mode 100644 index 000000000..b28fcde33 --- /dev/null +++ b/modelarts/umn/modelarts_23_0060.html @@ -0,0 +1,166 @@ + + +

    Deploying a Model as a Real-Time Service

    +

    After a model is prepared, you can deploy the model as a real-time service and predict and call the service.

    +

    A maximum of 20 real-time services can be deployed by a user.

    +
    +

    Prerequisites

    • Data has been prepared. Specifically, you have created a model in the Normal state in ModelArts.
    +
    +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose Service Deployment > Real-Time Services. By default, the system switches to the Real-Time Services page.
    2. In the real-time service list, click Deploy in the upper left corner. The Deploy page is displayed.
    3. Set parameters for a real-time service.
      1. Set basic information about model deployment. For details about the parameters, see Table 1. +
        + + + + + + + + + + + + + +
        Table 1 Basic parameters of model deployment

        Parameter

        +

        Description

        +

        Name

        +

        Name of the real-time service. Set this parameter as prompted.

        +

        Auto Stop

        +

        After this parameter is enabled and the auto stop time is set, a service automatically stops at the specified time. The auto stop function is enabled by default, and the default value is 1 hour later.

        +

        The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer from 1 to 24 hours in the textbox on the right.

        +

        Description

        +

        Brief description of the real-time service.

        +
        +
        +
      2. Enter key information including the resource pool and model configurations. For details, see Table 2. +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters

        Parameter

        +

        Sub-Parameter

        +

        Description

        +

        Resource Pool

        +

        Public resource pools

        +

        Instances in the public resource pool can be of the CPU or GPU type.

        +

        Resource Pool

        +

        Dedicated resource pools

        +

        For details about how to create a dedicated resource pool, see Creating a Dedicated Resource Pool. You can select a specification from the resource pool specifications.

        +

        Model and Configuration

        +

        Model Source

        +

        You can select My Models or My Subscriptions based on site requirements. The models that match the model sources are displayed.

        +

        Model

        +

        The system automatically associates with the list of available models. Select a model in the Normal status and its version.

        +

        Traffic Ratio (%)

        +

        Set the traffic proportion of the current instance node. Service calling requests are allocated to the current version based on this proportion.

        +

        If you deploy only one version of a model, set this parameter to 100%. If you select multiple versions for gated launch, ensure that the sum of the traffic ratios of multiple versions is 100%.

        +

        Specifications

        +

        If you select Public resource pools, you can select the CPU or GPU resources based on site requirements. For details, see Table 3.

        +

        Compute Nodes

        +

        Set the number of instances for the current model version. If you set Instances to 1, the standalone computing mode is used. If you set Instances to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +

        Environment Variable

        +

        Set environment variables and inject them to the container instance. To ensure data security, do not enter sensitive information, such as plaintext passwords, in environment variables.

        +

        Add Model and Configuration

        +

        ModelArts supports multiple model versions and flexible traffic policies. You can use gated launch to smoothly upgrade the model version.

        +
        NOTE:

        If the selected model has only one version, the system does not display Add Model Version and Configuration.

        +
        +

        Traffic Limit

        +

        N/A

        +

        Maximum number of times a service can be accessed within a second. You can set this parameter as needed.

        +
        +
        + +
        + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 3 Supported specifications

        Specifications

        +

        Description

        +

        ExeML specifications (CPU)

        +

        ExeML specifications (GPU)

        +

        Only be used by models trained in ExeML projects.

        +

        CPU: 2 vCPUs | 8 GiB

        +

        Suitable for models with only CPU loads.

        +

        CPU: 8 vCPUs | 64 GiB GPU: 1 x V100

        +

        Suitable for running GPU models.

        +

        CPU: 8 vCPUs | 32 GiB GPU: 1 x T4

        +

        Suitable for models requiring CPU and GPU (NVIDIA T4) resources.

        +

        Arm: 3 vCPUs | 6 GiB Ascend: 1 x Ascend 310

        +

        Carrying one Ascend 310 chip, suitable for models requiring Ascend 310 chip resources.

        +

        Ascend: 1 x Ascend 910 CPU: 24 vCPUs | 96 GiB

        +

        Carrying one Ascend 910 chip, suitable for models requiring Ascend 910 chip resources.

        +

        Ascend: 8 Ascend 910 CPU: 192 vCPUs | 720 GiB

        +

        Carrying eight Ascend 910 chips, suitable for models requiring Ascend 910 chip resources.

        +
        +
        +
      +
    4. After confirming the entered information, complete service deployment as prompted. Generally, service deployment jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      After a real-time service is deployed, it is started immediately.

      +
      +

      You can go to the real-time service list to view the basic information about the real-time service. In the real-time service list, after the status of the newly deployed service changes from Deploying to Running, the service is deployed successfully.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0061.html b/modelarts/umn/modelarts_23_0061.html new file mode 100644 index 000000000..b5a8aef90 --- /dev/null +++ b/modelarts/umn/modelarts_23_0061.html @@ -0,0 +1,282 @@ + + +

    Viewing Service Details

    +

    After a model is deployed as a real-time service, you can access the service page to view its details.

    +
    1. Log in to the ModelArts management console and choose Service Deployment > Real-Time Services.
    2. On the Real-Time Services page, click the name of the target service. The service details page is displayed.

      You can view the service name and status. For details, see Table 1.

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Real-time service parameters

      Parameter

      +

      Description

      +

      Name

      +

      Name of the real-time service.

      +

      Status

      +

      Current status of the real-time service.

      +

      Source

      +

      Model source of the real-time service.

      +

      Failed Calls/Total Calls

      +

      Number of service calls, which is counted from the time when the service was created.

      +

      If the number of models is changed or a service is invoked when a model is not ready, the number of calls is not counted.

      +

      Network Configuration

      +

      Customized network configuration of the used dedicated resource pool.

      +

      Description

      +

      Service description, which can be edited after you click the edit button on the right side.

      +

      Custom Settings

      +

      Customized configurations based on real-time service versions. This allows version-based traffic distribution policies and configurations. Enable this option and click View Settings to customize the settings. For details, see Modifying Customized Settings.

      +

      Data Collection

      +

      Enable this option to store the data generated when the real-time service is invoked to a specified OBS path.

      +

      Filter

      +

      Enable this option so that the system automatically identifies hard examples in all sample data.

      +

      Synchronize Data

      +

      Synchronize the collected data to a dataset for centralized management and utilization.

      +

      Traffic Limit

      +

      Maximum number of times a service can be accessed within a second.

      +
      +
      +
    3. You can switch between tabs on the details page of a real-time service to view more details. For details, see Table 2. +
      + + + + + + + + + + + + + + + + + + + +
      Table 2 Service details

      Parameter

      +

      Description

      +

      Usage Guides

      +

      Displays the API address, model information, input parameters, and output parameters. You can click to copy the API address to call the service.

      +

      Prediction

      +

      Performs a prediction test on the real-time service. For details, see Testing a Service.

      +

      Configuration Updates

      +

      Displays Existing Configuration and Historical Updates.

      +
      • Existing Configuration: includes the model name, version, status, traffic ratio, .
      • Historical Updates: displays historical model information.
      +

      Monitoring

      +

      Displays Resource Usage and Model Calls.

      +
      • Resource Usage: includes the used and available CPU, memory, and GPU resources.
      • Model Calls: indicates the number of model calls. The statistics collection starts after the model status changes to Ready.
      +

      Logs

      +

      Displays the log information about each model in the service. You can view logs generated in the latest 5 minutes, latest 30 minutes, latest 1 hour, and user-defined time segment.

      +
      • You can select the start time and end time when defining the time segment.
      +
      +
      +
    +

    Modifying Customized Settings

    A customized configuration rule consists of the configuration condition (Setting), access version (Version), and customized running parameters (including Setting Name and Setting Value).

    +

    You can configure different settings with customized running parameters for different versions of a real-time service.

    +

    The priorities of customized configuration rules are in descending order. You can change the priorities by dragging the sequence of customized configuration rules.

    +

    After a rule is matched, the system will no longer match subsequent rules. A maximum of 10 configuration rules can be configured.

    + +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Parameters for Custom Settings

    Parameter

    +

    Mandatory

    +

    Description

    +

    Setting

    +

    Yes

    +

    Expression of the Spring Expression Language (SPEL) rule. Only the equal and matches expressions of the character type are supported.

    +

    Version

    +

    Yes

    +

    Access version for a customized service configuration rule. When a rule is matched, the real-time service of the version is requested.

    +

    Setting Name

    +

    No

    +

    Key of a customized running parameter, consisting of a maximum of 128 characters.

    +

    Configure this parameter if the HTTP message header is used to carry customized running parameters to a real-time service.

    +

    Setting Value

    +

    No

    +

    Value of a customized running parameter, consisting of a maximum of 256 characters.

    +

    Configure this parameter if the HTTP message header is used to carry customized running parameters to a real-time service.

    +
    +
    +

    Customized settings can be used in the following scenarios:

    +
    • If multiple versions of a real-time service are deployed for dark launch, customized settings can be used to distribute traffic by user. +
      + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Built-in variables

      Built-in Variable

      +

      Description

      +

      DOMAIN_NAME

      +

      Account name that is used to invoke the inference request

      +

      DOMAIN_ID

      +

      Account ID that is used to invoke the inference request

      +

      PROJECT_NAME

      +

      Project name that is used to invoke the inference request

      +

      PROJECT_ID

      +

      Project ID that invokes the inference request

      +

      USER_NAME

      +

      Username that is used to invoke the inference request

      +

      USER_ID

      +

      User ID that is used to invoke the inference request

      +
      +
      +

      Pound key (#) indicates that a variable is referenced. The matched character string must be enclosed in single quotation marks.

      +
      #{Built-in variable} == 'Character string'
      +#{Built-in variable} matches 'Regular expression'
      +
      • Example 1:

        If the account name for invoking the inference request is User A, the specified version is matched.

        +
        #DOMAIN_NAME == 'User A'
        +
      • Example 2:

        If the account name in the inference request starts with op, the specified version is matched.

        +
        #DOMAIN_NAME matches 'op.*'
        + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 5 Common regular expressions

        Character

        +

        Description

        +

        .

        +

        Match any single character except \n. To match any character including \n, use (.|\n).

        +

        *

        +

        Match the subexpression that it follows for zero or multiple times. For example, zo* can match z and zoo.

        +

        +

        +

        Match the subexpression that it follows for once or multiple times. For example, zo+ can match zo and zoo, but cannot match z.

        +

        ?

        +

        Match the subexpression that it follows for zero or one time. For example, do(es)? can match does or do in does.

        +

        ^

        +

        Match the start of the input string.

        +

        $

        +

        Match the end of the input string.

        +

        {n}

        +

        Match for the number specified by n, a non-negative integer. For example, o{2} cannot match o in Bob, but can match two os in food.

        +

        x|y

        +

        Match x or y. For example, z|food can match z or food, and (z|f)ood can match zood or food.

        +

        [xyz]

        +

        Match any single character contained in a character set. For example, [abc] can match a in plain.

        +
        +
        +
        Figure 1 Traffic distribution by user
        +
      +
    • If multiple versions of a real-time service are deployed for dark launch, customized settings can be used to access different versions through the header.
      Start with #HEADER_, indicating that the header is referenced as a condition.
      #HEADER_{key} == '{value}'
      +#HEADER_{key} matches '{value}'
      +
      +
      • Example 1:

        If the header of an inference HTTP request contains a version and the value is 0.0.1, the condition is met. Otherwise, the condition is not met.

        +
        #HEADER_version == '0.0.1'
        +
      • Example 2:

        If the header of an inference HTTP request contains testheader and the value starts with mock, the rule is matched.

        +
        #HEADER_testheader matches 'mock.*'
        +
        Figure 2 Using the header to access different versions
        +
      +
    • If a real-time service version supports different running configurations, you can use Setting Name and Setting Value to specify customized running parameters so that different users can use different running configurations.

      Example:

      +
      When user A accesses the model, the user uses configuration A. When user B accesses the model, the user uses configuration B. When matching a running configuration, ModelArts adds a header to the request and also the customized running parameters specified by Setting Name and Setting Value.
      Figure 3 Customized running parameters added for a customized configuration rule
      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0062.html b/modelarts/umn/modelarts_23_0062.html new file mode 100644 index 000000000..571946421 --- /dev/null +++ b/modelarts/umn/modelarts_23_0062.html @@ -0,0 +1,25 @@ + + +

    Testing a Service

    +

    After a model is deployed as a real-time service, you can debug code or add files for testing on the Prediction tab page. Based on the input request (JSON text or file) defined by the model, the service can be tested in either of the following ways:

    +
    1. JSON Text Prediction: If the input type of the model of the deployed service is JSON text, that is, the input does not contain files, you can enter the JSON code on the Prediction tab page for service testing.
    2. File Prediction (Images and Audios): If the input type of the model of the deployed service is file, including images, audios, and videos, you can add images on the Prediction tab page for service testing.
    +
    • If the input type is image, the size of a single image must be less than 10 MB.
    • The following image types are supported: png, psd, jpg, jpeg, bmp, gif, webp, psd, svg, and tiff.
    +
    +

    Input Parameters

    For the service that you have deployed, you can learn about its input parameters of the service, that is, the input request type mentioned above, on the Usage Guides tab page of the service details page.

    +

    The input parameters displayed on the Usage Guides tab page depend on the model source that you select.

    +
    • If your model comes from ExeML or a built-in algorithm, the input and output parameters are defined by ModelArts. For details, see the Usage Guides tab page. On the Prediction tab page, enter the corresponding JSON text or file for service testing.
    • If you use a custom model with the inference code and configuration file compiled by yourself (Specifications for Compiling the Model Configuration File), the Usage Guides tab page only visualizes your data. The following figure shows the mapping between the input parameters displayed on the Usage Guides tab page and the configuration file.
      Figure 1 Mapping between the configuration file and Usage Guides
      +
    • If your model is imported using a model template, the input and output parameters vary with the template. For details, see Introduction to Model Templates.
    +
    +

    JSON Text Prediction

    1. Log in to the ModelArts management console and choose Service Deployment > Real-Time Services.
    2. On the Real-Time Services page, click the name of the target service. The service details page is displayed. On the Prediction tab page, enter the prediction code and click Predict to perform prediction.

      +
    +
    +

    File Prediction (Images and Audios)

    1. Log in to the ModelArts management console and choose Service Deployment > Real-Time Services.
    2. On the Real-Time Services page, click the name of the target service. The service details page is displayed. On the Prediction tab page, click Upload and select a test file. After the file is uploaded successfully, click Predict to perform a prediction test.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0063.html b/modelarts/umn/modelarts_23_0063.html new file mode 100644 index 000000000..d73488761 --- /dev/null +++ b/modelarts/umn/modelarts_23_0063.html @@ -0,0 +1,47 @@ + + +

    Accessing a Real-Time Service (Token-based Authentication)

    +

    If a real-time service is in the Running state, the real-time service has been deployed successfully. This service provides a standard RESTful API for users to call. Before integrating the API to the production environment, commission the API. You can use either of the following methods to send an inference request to the real-time service:

    +

    Method 1: Use GUI-based Software for Inference (Postman) (Postman is recommended for Windows.)

    +

    Method 2: Run the cURL Command to Send an Inference Request (curl commands are recommended for Linux.)

    +

    Method 1: Use GUI-based Software for Inference (Postman)

    1. Download Postman and install it, or install the Postman Chrome extension. Alternatively, use other software that can send POST requests. Postman 7.24.0 is recommended.
    2. Open Postman.
    3. Set parameters on Postman. The following uses image classification as an example.
      • Select a POST task and copy the API URL to the POST text box. To obtain the API URL of the real-time service, switch to the Usage Guides tab on the page providing details about the real-time service. On the Headers tab page, set Key to X-Auth-Token and Value to the obtained token.

        +

        +
      • On the Body tab page, file input and text input are available.
        • File input

          Select form-data. Set KEY to the input parameter of the model, for example, images. Set VALUE to an image to be inferred (only one image can be inferred).

          +
        • Text input

          Select raw and then JSON(application/json). Enter the request body in the text box below. An example request body is as follows:

          +
          {
          +  "meta": {
          +    "uuid": "10eb0091-887f-4839-9929-cbc884f1e20e"
          +  },
          +  "data": {
          +    "req_data": [
          +      {
          +        "sepal_length": 3,
          +        "sepal_width": 1,
          +        "petal_length": 2.2,
          +        "petal_width": 4
          +      }
          +    ]
          +  }
          +}
          +

          meta can carry a universally unique identifier (UUID). When you call an API, the system provides a UUID. When the inference result is returned, the UUID is returned to trace the request. If you do not need this function, leave meta blank. data contains a req_data array for one or multiple pieces of input data. The parameters of each piece of data are determined by the model, such as sepal_length and sepal_width in this example.

          +
        +
      +
    4. After setting the parameters, click Send to send the request. The result is displayed in the response.
      • Inference result using file input: The field values in the return result vary with the model.
      • Inference result using text input: The request body contains meta and data. If the request contains uuid, uuid will be returned in the response. Otherwise, uuid is left blank. data contains a resp_data array for the inference results of one or multiple pieces of input data. The parameters of each result are determined by the model, for example, sepal_length and predictresult in this example.
      +
    +
    +

    Method 2: Run the cURL Command to Send an Inference Request

    The command for sending inference requests can be input as a file or text.

    +
    +
    1. File input
      curl -k -F 'images=@Image path' -H 'X-Auth-Token:Token value' -X POST Real-time service URL
      +
      • -k indicates that SSL websites can be accessed without using a security certificate.
      • -F indicates file input. In this example, the parameter name is images, which can be changed as required. The image storage path follows @.
      • -H indicates the header of the POST command. X-Auth-Token is the KEY value on the Headers page. Token value indicates the obtained token. For details about how to obtain the token, see .
      • POST is followed by the API URL of the real-time service.
      +

      The following is an example of the cURL command for inference with file input:

      +
      curl -k -F 'images=@/home/data/test.png' -H 'X-Auth-Token:MIISkAY***80T9wHQ==' -X POST https://modelarts-infers-1.xxx/v1/infers/eb3e0c54-3dfa-4750-af0c-95c45e5d3e83
      +
    2. Text input
      curl -k -d '{"data":{"req_data":[{"sepal_length":3,"sepal_width":1,"petal_length":2.2,"petal_width":4}]}}' -H 'X-Auth-Token:MIISkAY***80T9wHQ==' -H 'Content-type: application/json' -X POST https://modelarts-infers-1.xxx/v1/infers/eb3e0c54-3dfa-4750-af0c-95c45e5d3e83
      +

      -d indicates the text input of the request body.

      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0065.html b/modelarts/umn/modelarts_23_0065.html new file mode 100644 index 000000000..e61b73245 --- /dev/null +++ b/modelarts/umn/modelarts_23_0065.html @@ -0,0 +1,17 @@ + + +

    Batch Services

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0066.html b/modelarts/umn/modelarts_23_0066.html new file mode 100644 index 000000000..c11be409e --- /dev/null +++ b/modelarts/umn/modelarts_23_0066.html @@ -0,0 +1,230 @@ + + +

    Deploying a Model as a Batch Service

    +

    After a model is prepared, you can deploy it as a batch service. The Service Deployment > Batch Services page lists all batch services. You can enter a service name in the search box in the upper right corner and click to query the service.

    +

    Prerequisites

    • Data has been prepared. Specifically, you have created a model in the Normal state in ModelArts.
    • Data to be batch processed is ready and has been upload to an OBS directory.
    • At least one empty folder has been created on OBS for storing the output.
    +
    +

    Background

    • A maximum of 1,000 batch services can be created.
    • Based on the input request (JSON or other file) defined by the model, different parameter are entered. If the model input is a JSON file, a configuration file is required to generate a mapping file. If the model input is other file, no mapping file is required.
    • Batch services can only be deployed in a public resource pool, but not a dedicated resource pool.
    +
    +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose Service Deployment > Batch Services. By default, the Batch Services page is displayed.
    2. In the batch service list, click Deploy in the upper left corner. The Deploy page is displayed.
    3. Set parameters for a batch service.
      1. Set the basic information, including Name and Description. The name is generated by default, for example, service-bc0d. You can specify Name and Description according to actual requirements.
      2. Set other parameters, including model configurations. For details, see Table 1. +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 Parameters

        Parameter

        +

        Description

        +

        Model and Version

        +

        Select the model and version that are in the Normal state.

        +

        Input Path

        +

        Select the OBS directory where the data is to be uploaded. Select a folder or a .manifest file. For details about the specifications of the .manifest file, see Manifest File Specifications.

        +
        NOTE:
        • If the input data is an image, ensure that the size of a single image is less than 10 MB.
        • If the input data is in CSV format, ensure that no Chinese character is included. To use Chinese, set the file encoding format to UTF-8.
        +
        +

        Request Path

        +

        API URI of a batch service.

        +

        Mapping Relationship

        +

        If the model input is in JSON format, the system automatically generates the mapping based on the configuration file corresponding to the model. If the model input is other file, mapping is not required.

        +

        Automatically generated mapping file. Enter the field index corresponding to each parameter in the CSV file. The index starts from 0.

        +

        Mapping rule: The mapping rule comes from the input parameter (request) in the model configuration file config.json. When type is set to string/number/integer/boolean, you are required to set the index parameter. For details about the mapping rule, see Example Mapping.

        +

        The index must be a positive integer starting from 0. If the value of index does not comply with the rule, this parameter is ignored in the request. After the mapping rule is configured, the corresponding CSV data must be separated by commas (,).

        +

        Output Path

        +

        Select the path for saving the batch prediction result. You can select the empty folder that you create.

        +

        Specifications

        +

        Select available specifications based on the list displayed on the console. The specifications in gray cannot be used at the current site.

        +

        Compute Nodes

        +

        Set the number of instances for the current model version. If you set Instances to 1, the standalone computing mode is used. If you set Instances to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +

        Environment Variable

        +

        Set environment variables and inject them to the container instance. To ensure data security, do not enter sensitive information, such as plaintext passwords, in environment variables.

        +
        +
        +
      +
    4. After setting the parameters, deploy the model as a batch service as prompted. Generally, service deployment jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      You can go to the batch service list to view the basic information about the batch service. In the batch service list, after the status of the newly deployed service changes from Deploying to Running, the service is deployed successfully.

      +
    +
    +

    Manifest File Specifications

    Batch services of the inference platform support the manifest file. The manifest file describes the input and output of data.

    +
    +
    Example input manifest file
    • File name: test.manifest
    • File content:
      {"source": "<obs path>/test/data/1.jpg"}
      +{"source": "https://infers-data.obs.xxx.com:443/xgboosterdata/data.csv?AccessKeyId=2Q0V0TQ461N26DDL18RB&Expires=1550611914&Signature=wZBttZj5QZrReDhz1uDzwve8GpY%3D&x-obs-security-token=gQpzb3V0aGNoaW5hixvY8V9a1SnsxmGoHYmB1SArYMyqnQT-ZaMSxHvl68kKLAy5feYvLDM..."}
      +
    • File requirements:
      1. The file name extension must be .manifest.
      2. The file content is in JSON format. Each row describes a piece of input data, which must be accurate to a file instead of a folder.
      +
    +
    +

    Example output manifest file

    +
    If you use an input manifest file, the output directory will contain an output manifest file.
    • Assume that the output path is //test-bucket/test/. The result is stored in the following path:
      OBS bucket/directory name
      +├── test-bucket
      +│   ├── test
      +│   │   ├── infer-result-0.manifest
      +│   │   ├── infer-result
      +│   │   │ ├── 1.jpg_result.txt
      +│   │   │ ├── 2.jpg_result.txt
      +
    • Content of the infer-result-0.manifest file:
      {"source": "<obs path>/obs-data-bucket/test/data/1.jpg",  "inference-loc": "<obs path>/test-bucket/test/infer-result/1.jpg_result.txt"}
      +{"source ": "https://infers-data.obs.xxx.com:443/xgboosterdata/2.jpg?AccessKeyId=2Q0V0TQ461N26DDL18RB&Expires=1550611914&Signature=wZBttZj5QZrReDhz1uDzwve8GpY%3D&x-obs-security-token=gQpzb3V0aGNoaW5hixvY8V9a1SnsxmGoHYmB1SArYMyqnQT-ZaMSxHvl68kKLAy5feYvLDMNZWxzhBZ6Q-3HcoZMh9gISwQOVBwm4ZytB_m8sg1fL6isU7T3CnoL9jmvDGgT9VBC7dC1EyfSJrUcqfB...",  "inference-loc": "obs://test-bucket/test/infer-result/2.jpg_result.txt"}
      +
    +
    +
    • File format:
      1. The file name is infer-result-{{index}}.manifest, where index is the instance ID. Each running instance of a batch service generates a manifest file.
      2. The infer-result directory is created in the manifest directory to store the result.
      3. The file content is in JSON format. Each row describes the output result of a piece of input data.
      4. The content contains two fields:
        1. source: input data description, which is the same as that of the input manifest file
        2. inference-loc: output result path in the format of <obs path>/{{Bucket name}}/{{Object name}}
        +
      +
    +

    Example Mapping

    The following example shows the relationship between the configuration file, mapping rule, CSV data, and inference request.

    +

    Assume that the apis parameter in the configuration file used by your model is as follows:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    [
    +    {
    +        "protocol": "http",
    +        "method": "post",
    +        "url": "/",
    +        "request": {
    +            "type": "object",
    +            "properties": {
    +                "data": {
    +                    "type": "object",
    +                    "properties": {
    +                        "req_data": {
    +                            "type": "array",
    +                            "items": [
    +                                {
    +                                    "type": "object",
    +                                    "properties": {
    +                                        "input_1": {
    +                                            "type": "number"
    +                                        },
    +                                        "input_2": {
    +                                            "type": "number"
    +                                        },
    +                                        "input_3": {
    +                                            "type": "number"
    +                                        },
    +                                        "input_4": {
    +                                            "type": "number"
    +                                        }
    +                                    }
    +                                }
    +                            ]
    +                        }
    +                    }
    +                }
    +            }
    +        }
    +    }
    +]
    +
    +
    +

    At this point, the corresponding mapping relationship is shown below. The ModelArts management console automatically resolves the mapping relationship from the configuration file. When calling a ModelArts API, write the mapping relationship by yourself according to the rule.

    +
    {
    +    "type": "object",
    +    "properties": {
    +        "data": {
    +            "type": "object",
    +            "properties": {
    +                "req_data": {
    +                    "type": "array",
    +                    "items": [
    +                        {
    +                            "type": "object",
    +                            "properties": {
    +                                "input_1": {
    +                                    "type": "number",
    +                                    "index": 0
    +                                },
    +                                "input_2": {
    +                                    "type": "number",
    +                                    "index": 1
    +                                },
    +                                "input_3": {
    +                                    "type": "number",
    +                                    "index": 2
    +                                },
    +                                "input_4": {
    +                                    "type": "number",
    +                                    "index": 3
    +                                }
    +                            }
    +                        }
    +                    ]
    +                }
    +            }
    +        }
    +    }
    +}
    +

    The data for inference, that is, the CSV data, is in the following format. The data must be separated by commas (,).

    +
    5.1,3.5,1.4,0.2
    +4.9,3.0,1.4,0.2
    +4.7,3.2,1.3,0.2
    +

    Depending on the defined mapping relationship, the inference request is shown below. The format is similar to the format used by the real-time service.

    +
    {
    +	"data": {
    +		"req_data": [{
    +			"input_1": 5.1,
    +			"input_2": 3.5,
    +			"input_3": 1.4,
    +			"input_4": 0.2
    +		}]
    +	}
    +}
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0067.html b/modelarts/umn/modelarts_23_0067.html new file mode 100644 index 000000000..c3265e5cf --- /dev/null +++ b/modelarts/umn/modelarts_23_0067.html @@ -0,0 +1,15 @@ + + +

    Viewing the Batch Service Prediction Result

    +

    When deploying a batch service, you can select the location of the output data directory. You can view the running result of the batch service that is in the Running completed status.

    +

    Procedure

    1. Log in to the ModelArts management console and choose Service Deployment > Batch Services.
    2. Click the name of the target service in the Running completed status. The service details page is displayed.
      • You can view the service name, status, ID, input path, output path, and description.
      • You can click in the Description area to edit the description.
      +
    3. Obtain the detailed OBS path next to Output Path, switch to the path and obtain the batch service prediction result.
      • If images are entered, a result file is generated for each image in the Image name__result.txt format, for example, IMG_20180919_115016.jpg_result.txt.
      • If audio files are entered, a result file is generated for each audio file in the Audio file name__result.txt format, for example, 1-36929-A-47.wav_result.txt.
      • If table data is entered, the result file is generated in the Table name__result.txt format, for example, train.csv_result.txt.
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0071.html b/modelarts/umn/modelarts_23_0071.html new file mode 100644 index 000000000..36534fe21 --- /dev/null +++ b/modelarts/umn/modelarts_23_0071.html @@ -0,0 +1,23 @@ + + +

    Modifying a Service

    +

    For a deployed service, you can modify its basic information to match service changes. You can modify the basic information about a service in either of the following ways:

    +

    Method 1: Modify Service Information on the Service Management Page

    +

    Method 2: Modify Service Information on the Service Details Page

    +

    Prerequisites

    A service has been deployed.

    +
    +

    Method 1: Modify Service Information on the Service Management Page

    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service.
    2. In the service list, click Modify in the Operation column of the target service, modify basic service information, and click OK. +

      Services in the Deploying status cannot be modified.

      +
      +
    +
    +

    Method 2: Modify Service Information on the Service Details Page

    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service.
    2. Click the name of the target service. The service details page is displayed.
    3. Click Modify in the upper right corner of the page, modify the service details, and click OK. +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0072.html b/modelarts/umn/modelarts_23_0072.html new file mode 100644 index 000000000..988ec7ce7 --- /dev/null +++ b/modelarts/umn/modelarts_23_0072.html @@ -0,0 +1,16 @@ + + +

    Starting or Stopping a Service

    +

    Starting a Service

    You can start services in the Successful, Abnormal, or Stopped status. Services in the Deploying status cannot be started. You can start a service in either of the following ways:

    +
    +
    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click Start in the Operation column to start the target service.
    2. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click the name of the target service. The service details page is displayed. Click Start in the upper right corner of the page to start the service.
    +

    Stopping a Service

    You can stop services in the Running or Alarm status. Services in the Deploying status cannot be stopped. After a service is stopped, ModelArts stops charging. You can stop a service in either of the following ways:

    +
    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click Stop in the Operation column to stop the target service.
    2. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click the name of the target service. The service details page is displayed. Click Stop in the upper right corner of the page to stop the service.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0073.html b/modelarts/umn/modelarts_23_0073.html new file mode 100644 index 000000000..3dd26aa2d --- /dev/null +++ b/modelarts/umn/modelarts_23_0073.html @@ -0,0 +1,15 @@ + + +

    Deleting a Service

    +

    If a service is no longer in use, you can delete it to release resources.

    +
    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service.
      1. For a real-time service, choose More > Delete in the Operation column to delete it.
      2. For a batch service, click Delete in the Operation column to delete it.
      +

      A deleted service cannot be recovered. Exercise caution when performing this operation.

      +
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0076.html b/modelarts/umn/modelarts_23_0076.html new file mode 100644 index 000000000..df6236a37 --- /dev/null +++ b/modelarts/umn/modelarts_23_0076.html @@ -0,0 +1,111 @@ + + +

    Resource Pools

    +

    ModelArts Resource Pools

    When using ModelArts to implement AI Development Lifecycle, you can use two different resource pools to train and deploy models.

    + +
    +

    Dedicated Resource Pool

    • Dedicated resource pools can be used in the following jobs and tasks: notebook instances, training, TensorBoard, and deployment.
    • Dedicated resource pools are classified into two types: Dedicated for Development/Training and Dedicated for Service Deployment. The Dedicated for Development/Training type can be used only for notebook instances, training, and TensorBoard. The Dedicated for Service Deployment type can be used only for model deployment.
    • Dedicated resource pools are available only when they are in the Running status. If a dedicated resource pool is unavailable or abnormal, rectify the fault before using it.
    +
    +

    Creating a Dedicated Resource Pool

    1. Log in to the ModelArts management console and choose Dedicated Resource Pools on the left.
    2. On the Dedicated Resource Pools page, select Dedicated for Development/Training or Dedicated for Service Deployment.
    3. Click Create in the upper left corner. The page for creating a dedicated resource pool is displayed.
    4. Set the parameters on the page. For details about how to set parameters, see Table 1 and Table 2. +
      + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters of the Dedicated for Development/Training type

      Parameter

      +

      Description

      +

      Resource Type

      +

      The default value is and cannot be changed.

      +

      Name

      +

      Name of a dedicated resource pool.

      +

      The value can contain letters, digits, hyphens (-), and underscores (_).

      +

      Description

      +

      Brief description of a dedicated resource pool.

      +

      Nodes

      +

      Select the number of nodes in a dedicated resource pool. More nodes mean higher computing performance.

      +

      Specifications

      +

      Required specifications. The GPU delivers better performance, and the CPU is more cost-effective. If a flavor is sold out, you can purchase it again only after other users delete the resource pool.

      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters of the Dedicated for Service Deployment type

      Parameter

      +

      Description

      +

      Resource Type

      +

      The default value is Dedicated for Service Deployment and cannot be changed.

      +

      Name

      +

      Name of a dedicated resource pool.

      +

      The value can contain letters, digits, hyphens (-), and underscores (_).

      +

      Description

      +

      Brief description of a dedicated resource pool.

      +

      Custom Network Configuration

      +

      If you enable Custom Network Configuration, the service instance runs on the specified network and can communicate with other cloud service resource instances on the network. If you do not enable Custom Network Configuration, ModelArts allocates a dedicated network to each user and isolates users from each other.

      +

      If you enable Custom Network Configuration, set VPC, Subnet, and Security Group. If no network is available, go to the VPC service and create a network. .

      +

      AZ

      +

      You can select Random, AZ 1, AZ 2, or AZ 3 based on site requirements. An AZ is a physical region where resources use independent power supplies and networks. AZs are physically isolated but interconnected through an internal network. To enhance workload availability, create nodes in different AZs.

      +

      Nodes

      +

      Select the number of nodes in a dedicated resource pool. More nodes mean higher computing performance.

      +

      Specifications

      +

      Required specifications. The GPU delivers better performance.

      + +
      +
      +
    5. After confirming that the specifications are correct, create a dedicated resource pool as prompted. After a dedicated resource pool is created, its status changes to Running.
    +
    +

    Scaling a Dedicated Resource Pool

    After a dedicated resource pool is used for a period of time, you can scale out or in the capacity of the resource pool by increasing or decreasing the number of nodes.

    +

    The procedure for scaling is as follows:

    +
    1. Go to the dedicated resource pool management page, locate the row that contains the desired dedicated resource pool, and click Scale in the Operation column.
    2. On the scaling page, increase or decrease the number of nodes. Increasing the node quantity scales out the resource pool whereas decreasing the node quantity scales in the resource pool. Scale the capacity based on service requirements.
      • During capacity expansion,
      • During capacity reduction, delete the target nodes in the Operation column. To reduce one node, you need to switch off the node in Node List to delete the node.
      +
    3. Click Submit. After the request is submitted, the dedicated resource pool management page is displayed.
    +
    +

    Deleting a Dedicated Resource Pool

    If a dedicated resource pool is no longer needed during AI service development, you can delete the resource pool to release resources.

    +
    • After a dedicated resource pool is deleted, the training jobs, notebook instances, and deployment that depend on the resource pool are unavailable. A dedicated resource pool cannot be restored after being deleted. Exercise caution when deleting a dedicated resource pool.
    +
    +
    1. Go to the dedicated resource pool management page, locate the row that contains the desired dedicated resource pool, and click Delete in the Operation column.
    2. In the dialog box that is displayed, click OK.
    +
    +
    + diff --git a/modelarts/umn/modelarts_23_0077.html b/modelarts/umn/modelarts_23_0077.html new file mode 100644 index 000000000..98c7d3e07 --- /dev/null +++ b/modelarts/umn/modelarts_23_0077.html @@ -0,0 +1,16 @@ + + +

    Permissions Management

    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0078.html b/modelarts/umn/modelarts_23_0078.html new file mode 100644 index 000000000..9e0dbee77 --- /dev/null +++ b/modelarts/umn/modelarts_23_0078.html @@ -0,0 +1,13 @@ + + +

    Basic Concepts

    +

    A fine-grained policy is a set of permissions defining which operations on which cloud services can be performed. Each policy can define multiple permissions. After a policy is granted to a user group, users in the group can obtain all permissions defined by the policy. IAM implements fine-grained permissions management based on the permissions defined by policies.

    +

    IAM supports two types of policies:

    +
    • Default policies: Define the common permissions preset in the system, which are typically read-only or management permissions for cloud services such as ModelArts. Default policies can be used only for authorization and cannot be edited or modified.
    • Custom policies: Define the permissions created and managed by users and are the extension and supplement of default policies.
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0079.html b/modelarts/umn/modelarts_23_0079.html new file mode 100644 index 000000000..8f5599efc --- /dev/null +++ b/modelarts/umn/modelarts_23_0079.html @@ -0,0 +1,53 @@ + + +

    Creating a User and Granting Permissions

    +

    Policy Content

    A fine-grained policy consists of the policy version (the Version field) and statement (the Statement field).

    +
    • Version: Distinguishes between role-based access control (RBAC) and fine-grained policies.
      • 1.0: RBAC policies, which are preset in the system and used to grant permissions of each service as a whole. After such a policy is granted to a user, the user has all permissions of the corresponding service.
      • 1.1: Fine-grained policies. A fine-grained policy consists of API-based permissions for operations on specific resource types. Fine-grained policies, as the name suggests, allow for more fine-grained control than RBAC policies. Users granted permissions of such a policy can only perform specific operations on the corresponding service. Fine-grained policies are classified into default and custom policies.
        • Default policies: Preset common permission sets to control read and administrator permissions of different services.
        • Custom policies: Permission sets created and managed by users as an extension and supplement to system-defined policies. For example, a custom policy can be created to allow users only to modify ECS specifications.
        +
      +
    +
    +
    • Statement: Detailed information about a policy, containing the Effect and Action elements.
      • Effect

        Valid values for Effect include Allow and Deny. In a custom policy that contains both Allow and Deny statements, the Deny statements take precedence.

        +
      • Action

        The value can be one or more resource operations.

        +
        The value format is Service name:Resource type:Action, for example, modelarts:exemlProject:create.
        • Service name: service name. Only lowercase letters are supported, for example, modelarts.
        • Resource type and Action: The values are case-insensitive, and the wildcard (*) are allowed. A wildcard (*) can represent all or part of information about resource types and actions for the specific service.
        +
        +
        +
      +
    +

    Example Policies

    • A policy can define a single permission, such as the permission to deny ExeML project deletion.
      { 
      +      "Version": "1.1", 
      +      "Statement": [ 
      +            { 
      +		  "Effect": "Deny", 
      +                  "Action": [ 
      +                        "modelarts:exemlProject:delete" 
      +                  ] 
      +            } 
      +      ] 
      +}
      +
    • A policy can define multiple permissions, such as the permissions to delete an ExeML version and an ExeML project.
      { 
      +    "Version": "1.1", 
      +    "Statement": [ 
      +        { 
      +            "Effect": "Allow", 
      +            "Action": [ 
      +                "modelarts:exemlProjectVersion:delete", 
      +                "modelarts:exemlProject:delete" 
      +            ] 
      +        } 
      +    ] 
      +}
      +
    +
    +

    Authentication Logic

    IAM authenticates users according to the permissions that the users have been granted. The authentication logic is as follows:

    +
    Figure 1 Authentication logic
    +

    The actions in each policy bear the OR relationship.

    +
    +
    1. A user accesses the system and makes an operation request.
    2. The system evaluates all the permissions policies assigned to the user.
    3. In these policies, the system looks for explicit deny permissions. If the system finds an explicit deny that applies, it returns a decision of Deny, and the authentication ends.
    4. If no explicit deny is found, the system looks for allow permissions that would apply to the request. If the system finds an explicit allow permission that applies, it returns a decision of Allow, and the authentication ends.
    5. If no explicit allow permission is found, the system returns a decision of Deny, and the authentication ends.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0080.html b/modelarts/umn/modelarts_23_0080.html new file mode 100644 index 000000000..139e209f5 --- /dev/null +++ b/modelarts/umn/modelarts_23_0080.html @@ -0,0 +1,76 @@ + + +

    Creating a Custom Policy

    +

    If default policies cannot meet the requirements on fine-grained access control, you can create custom policies and assign the policies to the user group.

    +

    You can create custom policies in either of the following ways:

    +
    • Visual editor: Select cloud services, actions, resources, and request conditions. This does not require knowledge of policy syntax.
    • JSON: Edit JSON policies from scratch or based on an existing policy.
    +

    For details about how to create a custom policy, see section "Creating a Custom Policy" in the Identity and Access Management User Guide. This section describes example custom policies of OBS (a dependent service of ModelArts) and ModelArts.

    +

    Precautions

    • The permissions to use ModelArts depend on OBS authorization. Therefore, you need to grant OBS system permissions to users.
    • A custom policy can contain actions of multiple services that are globally accessible or accessible through region-specific projects.
    • To define permissions required to access both global and project-level services, create two custom policies and specify the scope as Global services and Project-level services. Then grant the two policies to the users.
    +
    +

    Example Custom Policies of OBS

    ModelArts is a project-level service, and OBS is a global service. Therefore, you need to create custom policies for the two services respectively and grant them to users. The permissions to use ModelArts depend on OBS authorization. The following example shows the minimum permissions for OBS, including the permissions for OBS buckets and objects. After being granted the minimum permissions for OBS, users can access OBS from ModelArts without restrictions.

    +
    {
    +    "Version": "1.1",
    +    "Statement": [
    +        {
    +            "Action": [
    +                "obs:bucket:ListAllMybuckets",
    +                "obs:bucket:HeadBucket",
    +                "obs:bucket:ListBucket",
    +                "obs:bucket:GetBucketLocation",
    +                "obs:object:GetObject",
    +                "obs:object:GetObjectVersion",
    +                "obs:object:PutObject",
    +                "obs:object:DeleteObject",
    +                "obs:object:DeleteObjectVersion",
    +                "obs:object:ListMultipartUploadParts",
    +                "obs:object:AbortMultipartUpload",
    +                "obs:object:GetObjectAcl",
    +                "obs:object:GetObjectVersionAcl",
    +                "obs:bucket:PutBucketAcl"
    +            ],
    +            "Effect": "Allow"
    +        }
    +    ]
    +}
    +
    +

    Example Custom Policies of ModelArts

    • Example: Denying ExeML project deletion

      A deny policy must be used in conjunction with other policies to take effect. If the permissions assigned to a user contain both Allow and Deny actions, the Deny actions take precedence over the Allow actions.

      +

      The following method can be used if you need to assign permissions of the ModelArts FullAccess policy to a user but also forbid the user from deleting ExeML projects. Create a custom policy for denying ExeML project deletion, and assign both policies to the group the user belongs to. Then the user can perform all operations on ModelArts except deleting ExeML projects. The following is an example deny policy:

      +
      { 
      +      "Version": "1.1", 
      +      "Statement": [ 
      +            { 
      +		  "Effect": "Deny", 
      +                  "Action": [ 
      +                        "modelarts:exemlProject:delete" 
      +                  ] 
      +            } 
      +      ] 
      +}
      +
    • Example: Allowing users to use only development environments

      The following is a policy configuration example for this user:

      +
      { 
      +    "Version": "1.1", 
      +    "Statement": [ 
      +
      +        { 
      +            "Effect": "Allow", 
      +            "Action": [ 
      +                "modelarts:notebook:list", 
      +                "modelarts:notebook:create" ,
      +                "modelarts:notebook:get" ,
      +                "modelarts:notebook:update" ,
      +                "modelarts:notebook:delete" ,
      +                "modelarts:notebook:action" ,
      +                "modelarts:notebook:access" 
      +            ] 
      +        } 
      +    ] 
      +}
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0083.html b/modelarts/umn/modelarts_23_0083.html new file mode 100644 index 000000000..d8d2348d6 --- /dev/null +++ b/modelarts/umn/modelarts_23_0083.html @@ -0,0 +1,18 @@ + + +

    Custom Images

    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0084.html b/modelarts/umn/modelarts_23_0084.html new file mode 100644 index 000000000..be6bcda6d --- /dev/null +++ b/modelarts/umn/modelarts_23_0084.html @@ -0,0 +1,17 @@ + + +

    Introduction to Custom Images

    +

    ModelArts provides multiple frequently-used built-in engines. However, when users have special requirements for the deep learning engine and development library, the built-in AI engines cannot meet user requirements. ModelArts provides the custom image function to allow users to customize engines.

    +

    The bottom layer of ModelArts uses the container technology. Custom images refer to that users create container images and run them on ModelArts. The custom image function supports command line parameters and environment variables in free-text format. The custom images are highly flexible and support the job boot requirements of any computing engine.

    +

    The following services are also required for creating a custom image: Software Repository for Container (SWR), OBS, and Elastic Cloud Server (ECS)

    +

    Application Scenarios of Custom Images

    • For Training Models

      If you have developed a model or training script locally and the AI engine you use is not supported by ModelArts, you can create a custom image based on the basic image packages provided by ModelArts and upload the custom image to SWR. Then, you can use the custom image to create a training job on ModelArts and use the resources provided by ModelArts to train models.

      +
    • For Importing Models

      If you use an AI engine that is not supported by ModelArts to develop a model, you can create a custom image, import the image to ModelArts for unified management, and deploy the model as a service.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0085.html b/modelarts/umn/modelarts_23_0085.html new file mode 100644 index 000000000..a04ab2b77 --- /dev/null +++ b/modelarts/umn/modelarts_23_0085.html @@ -0,0 +1,18 @@ + + +

    Creating and Uploading a Custom Image

    +

    ModelArts allows you to use custom images to create training jobs and import models. Before creating and uploading a custom image, understand the following information:

    +
    • Software Repository for Container (SWR)

      SWR provides easy, secure, and reliable management over Docker container images throughout their lifecycle, facilitating the deployment of containerized applications. You can push, pull, and manage container images through SWR console, SWR APIs, or community Command Line Interface (CLI).

      +

      Obtain the custom images used by ModelArts for model training and import from the SWR service management list. Upload the custom images you create to SWR.

      +
    • Specifications for custom images. For details about how to use a custom image for a training job, see Specifications for Custom Images Used for Training Jobs. For details about how to use a custom image for model import, see Specifications for Custom Images Used for Importing Models.
    +

    +

    Creating and Uploading a Custom Image

    1. Purchase a cloud server or use a local host to set up the Docker environment.
    2. Obtain the basic image from the local environment.
    3. Compile a Dockerfile based on your requirements to build a custom image. For details about how to efficiently compile a Dockerfile, see SoftWare Repository for Container Best Practices.
    1. After customizing an image, upload the image to SWR by referring to "Uploading an Image Through a Docker Client" in Software Repository for Container User Guide.
    +

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0086.html b/modelarts/umn/modelarts_23_0086.html new file mode 100644 index 000000000..b79d20e34 --- /dev/null +++ b/modelarts/umn/modelarts_23_0086.html @@ -0,0 +1,21 @@ + + +

    Importing a Model Using a Custom Image

    +

    After creating and uploading a custom image to SWR, you can use the image to import a model and deploy the model as a service on the ModelArts management console.

    +

    Prerequisites

    +
    +

    Importing a Model

    Set basic parameters for importing a model according to Importing a Meta Model from a Container Image. When importing a model using a custom image, pay attention to the settings of Meta Model Source and Configuration File.

    +
    • Meta Model Source

      Select Container Image. Click in the edit box of Container Image Path to select an image. The system automatically lists all images uploaded to SWR. Select an image based on the site requirements.

      +
    • Configuration File

      The model configuration file needs to be compiled independently. For details about how to compile the model configuration file, see Specifications for Compiling the Model Configuration File. For details about the configuration file examples of a custom image, see Example of the Custom Image Model Configuration File. After editing the model configuration file based on the ModelArts specifications, upload it to OBS or use Edit online on the Import Model page.

      +
    +
    +

    Deploying a Service

    After a model is successfully imported using a custom image, that is, the model status is normal, you can deploy the model as a service. On the Models page, click Deploy in the Operation column and select a service type, for example, Real-time Service.

    +

    You can deploy models as real-time or batch services based on the business logic of your custom image. The procedure for deploying a model imported using other methods is the same as that for deploying a model imported using a custom image. For details, see Introduction to Model Deployment.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0087.html b/modelarts/umn/modelarts_23_0087.html new file mode 100644 index 000000000..362857d6c --- /dev/null +++ b/modelarts/umn/modelarts_23_0087.html @@ -0,0 +1,79 @@ + + +

    Creating a Training Job Using a Custom Image (GPU)

    +

    After creating and uploading a custom image to SWR, you can use the image to create a training job on the ModelArts management console to complete model training.

    +

    Prerequisites

    +
    +

    Creating a Training Job

    Log in to the ModelArts management console and create a training job according to Creating a Training Job. When using a custom image to create a job, pay attention to the settings of Algorithm Source, Environment Variable, and Resource Pool.

    +
    • Algorithm Source

      Select Custom.

      +
      • Image Path: SWR URL after the image is uploaded to SWR
        Figure 1 SWR image address
        +
      • Code Directory: OBS path for storing the training code file.
      • Boot Command: boot command after the image is started. The basic format is as follows:

        bash /home/work/run_train.sh {UserCommand}

        +

        bash /home/work/run_train.sh [python/bash/..] {file_location} {file_parameter}

        +

        run_train.sh is the training boot script. After this script is executed, ModelArts recursively downloads all content in the code directory to the local path of the container. The local path is in the format of /home/work/user-job-dir/${Name of the last level in the code directory}/.

        +

        For example, if the OBS path of the training code file is obs://obs-bucket/new/train.py and the code directory is obs://obs-bucket/new/, the local path of the container is /home/work/user-job-dir/new/. The local training code path of the container is /home/work/user-job-dir/new/train.py. Then, you can set the boot command to the following: bash /home/work/run_train.sh python /home/work/user-job-dir/new/train.py {python_file_parameter}

        +

        If you create a training job using a custom image, ModelArts allows you to customize the boot command. The following are two basic formats for the boot command:

        +

        bash /home/work/run_train.sh {UserCommand}

        +

        bash /home/work/run_train.sh [python/bash/..] {file_location} {file_parameter}

        +

        run_train.sh is the training boot script. When creating a custom image, you can implement the training boot script or place the training code in the custom image environment in advance to customize the boot command (in the basic formats or any other formats).

        +
        +
      +
    • Environment Variable

      After the container is started, besides the environment variables added by configuring Environment Variable during training job creation, Table 1 lists other environment variables to be loaded. You can determine whether to use these environment variables in your own Python training script, or run the {python_file_parameter} command to pass the required parameters.

      + +
      + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Optional environment variables

      Environment Variable

      +

      Description

      +

      DLS_TASK_INDEX

      +

      Container index, starting from 0.

      +

      DLS_TASK_NUMBER

      +

      Number of containers, corresponding to Compute Nodes

      +

      DLS_APP_URL

      +

      Code directory, corresponding to Code Dir with the protocol name added. For example, you can use $DLS_APP_URL/*.py to read files in OBS.

      +

      DLS_DATA_URL

      +

      Dataset path, corresponding to Data Source with the protocol name added

      +

      DLS_TRAIN_URL

      +

      Training output path, corresponding to Training Output Path with the protocol name added

      +

      BATCH_{jobName}.0_HOSTS (standalone)

      +

      For standalone training, that is, when the number of compute nodes is 1, the environment variable is BATCH_{jobName}.0_HOSTS.

      +

      The format of the HOSTS environment variable is hostname:port. A container can view the HOSTS of all containers in the same job, such as BATCH_CUSTOM0_HOSTS and BATCH_CUSTOM1_HOSTS, varying according to the indexes. If the resource pool is a dedicated resource pool with the 8GPU specifications, the network type of the container is a host network, and the host IB network can be used to accelerate communications. If other resource pools are used, the network is a container network.

      +
      NOTE:

      When the host IB network is used for communication acceleration, the ip_mapper.py tool is required to obtain the IP address of the ib0 NIC for using the IPoIB feature.

      +
      +
      +
      +
    +
    +
    • Resource Pool

      If you select a resource pool of the GPU type, ModelArts mounts NVME SSDs to the /cache directory. You can use this directory to store temporary files.

      +
    +

    Running a Training Job Created Using a Custom Image

    After a custom image is uploaded to SWR, ModelArts is authorized to obtain and run the image by default when you create a training job using the custom image. When a custom image is run for the first time, the image is checked first. For details about the check, see Specifications for Custom Images Used for Training Jobs. The check failure cause is outputted in the log, and you can modify the image based on the log.

    +

    After the image is checked, the backend starts the custom image container to run the training job. You can view the training status based on the log.

    +

    After an image is reviewed, the image does not need to be reviewed again when being used to create training jobs again.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0090.html b/modelarts/umn/modelarts_23_0090.html new file mode 100644 index 000000000..524ed2bb2 --- /dev/null +++ b/modelarts/umn/modelarts_23_0090.html @@ -0,0 +1,16 @@ + + +

    Model Package Specifications

    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0091.html b/modelarts/umn/modelarts_23_0091.html new file mode 100644 index 000000000..97a7c3c8d --- /dev/null +++ b/modelarts/umn/modelarts_23_0091.html @@ -0,0 +1,91 @@ + + +

    Model Package Specifications

    +

    When you import models in Model Management, if the meta model is imported from OBS or a container image, the model package must meet the following specifications:

    +
    • The model package must contain the model directory. The model directory stores the model file, model configuration file, and model inference code.
    • The model configuration file must exist and its name is fixed to config.json. There exists only one model configuration file. For details about how to compile the model configuration file, see Specifications for Compiling the Model Configuration File.
    • The model inference code file is optional. If this file is required, the file name is fixed to customize_service.py. There must be one and only one such file. For details about how to compile the model inference code, see Specifications for Compiling Model Inference Code.
      • The .py file on which customize_service.py depends can be directly stored in the model directory. Use the Python import mode to import the custom package.
      • The other files on which customize_service.py depends can be stored in the model directory. You must use absolute paths to access these files. For more details, see Obtaining an Absolute Path.
      +
      +
    +

    ModelArts also provides custom script examples of common AI engines. For details, see Examples of Custom Scripts.

    +

    Model Package Example

    • Structure of the TensorFlow-based model package

      When publishing the model, you only need to specify the ocr directory.

      +
      OBS bucket/directory name
      +|── ocr
      +|   ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   │   ├── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   │   ├── saved_model.pb (Mandatory) Protocol buffer file, which contains the diagram description of the model
      +|   │   ├── variables Name of a fixed sub-directory, which contains the weight and deviation rate of the model. It is mandatory for the main file of the *.pb model.
      +|   │   │   ├── variables.index Mandatory
      +|   │   │   ├── variables.data-00000-of-00001 Mandatory
      +|   │   ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   │   ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
      +
    • Structure of the MindSpore-based model package
      OBS bucket/directory name
      +|── resnet
      +|   ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   │   ├── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   │   ├── checkpoint_lenet_1-1_1875.ckpt (Mandatory) Model file in ckpt format trained using MindSpore
      +|   │   ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   │   ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file is supported. The files on which customize_service.py depends can be directly stored in the model directory.
      +

      +
    • Structure of the MXNet-based model package

      When publishing the model, you only need to specify the resnet directory.

      +
      OBS bucket/directory name
      +|── resnet
      +|   ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   │   ├── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   │   ├── resnet-50-symbol.json (Mandatory) Model definition file, which contains the neural network description of the model
      +|   │   ├── resnet-50-0000.params (Mandatory) Model variable parameter file, which contains parameter and weight information
      +|   │   ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   │   ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
      +
    • Structure of the Image-based model package

      When publishing the model, you only need to specify the resnet directory.

      +
      OBS bucket/directory name
      +|── resnet
      +|   ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   │  ├──config.json (Mandatory) Model configuration file (the address of the SWR image must be configured). The file name is fixed to config.json. Only one model configuration file is supported.
      +
    • Structure of the PySpark-based model package

      When publishing the model, you only need to specify the resnet directory.

      +
      OBS bucket/directory name
      +|── resnet
      +|   ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   │  ├── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   │  ├── spark_model (Mandatory) Model directory, which contains the model content saved by PySpark
      +|   │  ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   │  ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
      +
    • Structure of the PyTorch-based model package

      When publishing the model, you only need to specify the resnet directory.

      +
      OBS bucket/directory name
      +|── resnet
      +|   ├── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   │  ├── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   │  ├── resnet50.pth (Mandatory) PyTorch model file, which contains variable and weight information and is saved as state_dict
      +|   │  ├──config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   │  ├──customize_service.py (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory.
      +
    • Structure of the Caffe-based model package
      When publishing the model, you only need to specify the resnet directory.
      OBS bucket/directory name
      +|── resnet
      +|   |── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   |   |── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   |   |── deploy.prototxt (Mandatory) Caffe model file, which contains information such as the model network structure
      +|   |   |── resnet.caffemodel (Mandatory) Caffe model file, which contains variable and weight information
      +|   |   |── config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   |   |── customize_service.py  (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory. 
      +
      +
    • Structure of the XGBoost-based model package
      When publishing the model, you only need to specify the resnet directory.
      OBS bucket/directory name
      +|── resnet
      +|   |── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   |   |── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   |   |── *.m (Mandatory): Model file whose extension name is .m
      +|   |   |── config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   |   |── customize_service.py  (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory. 
      +
      +
    • Structure of the Scikit_Learn-based model package
      When publishing the model, you only need to specify the resnet directory.
      OBS bucket/directory name
      +|── resnet
      +|   |── model (Mandatory) Name of a fixed subdirectory, which is used to store model-related files
      +|   |   |── <<Custom Python package>> (Optional) User's Python package, which can be directly referenced in the model inference code
      +|   |   |── *.m (Mandatory): Model file whose extension name is .m
      +|   |   |── config.json (Mandatory) Model configuration file. The file name is fixed to config.json. Only one model configuration file is supported.
      +|   |   |── customize_service.py  (Optional) Model inference code. The file name is fixed to customize_service.py. Only one model inference code file exists. The files on which customize_service.py depends can be directly stored in the model directory. 
      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0092.html b/modelarts/umn/modelarts_23_0092.html new file mode 100644 index 000000000..c007153ad --- /dev/null +++ b/modelarts/umn/modelarts_23_0092.html @@ -0,0 +1,1338 @@ + + +

    Specifications for Compiling the Model Configuration File

    +

    A model developer needs to compile a configuration file when publishing a model. The model configuration file describes the model usage, computing framework, precision, inference code dependency package, and model API.

    +

    Configuration File Format

    The configuration file is in JSON format. Table 1 describes the parameters.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    model_algorithm

    +

    Yes

    +

    String

    +

    Model algorithm, which is set by the model developer to help model users understand the usage of the model. The value must start with a letter and contain no more than 36 characters. Chinese characters and special characters (&!'\"<>=) are not allowed. Common model algorithms include image_classification (image classification), object_detection (object detection), and predict_analysis (prediction analysis).

    +

    model_type

    +

    Yes

    +

    String

    +

    Model AI engine, which indicates the computing framework used by a model. The options are TensorFlow, MXNet, Spark_MLlib, Caffe, Scikit_Learn, XGBoost, PyTorch, MindSpore, and Image.

    +

    Image is not a common AI framework. When model_type is set to Image, a model is imported from a custom image. In this case, swr_location is mandatory. For details about how to make Image images, see Custom Image Specifications.

    +

    runtime

    +

    No

    +

    String

    +

    Model runtime environment. Python 3.6 is used by default. The value of runtime depends on the value of model_type. If model_type is set to Image, you do not need to set runtime. If model_type is set to another frequently-used framework, select the engine and development environment. For details about the supported running environments, see Table 1.

    +

    If your model needs to run on a specified CPU or GPU, select the runtime based on the suffix information. If the runtime does not contain the CPU or GPU information, read the description of each runtime in Table 1.

    +

    swr_location

    +

    No

    +

    String

    +

    SWR image address.

    +
    • If you import a custom image model from a container image, you do not need to set swr_location.
    • If you import a custom image model from OBS (not recommended) and set model_type to Image, you must set swr_location. swr_location indicates the address of the Docker image on SWR, indicating that the Docker image on SWR is used to publish the model.
    +

    metrics

    +

    No

    +

    Object

    +

    Model precision information, including the average value, recall rate, precision, and accuracy. For details about the metrics object structure, see Table 2.

    +

    This parameter is used only to display model information and is optional.

    +

    apis

    +

    No

    +

    api array

    +

    Format of the requests received and returned by a model. The value is structure data.

    +

    It is the RESTful API array provided by a model. For details about the API data structure, see Table 3.

    +
    • When model_type is set to Image, that is, in the model scenario of a custom image, APIs with different paths can be declared in apis based on the request path exposed by the image.
    • When model_type is not Image, only one API whose request path is / can be declared in apis because the preconfigured AI engine exposes only one inference API whose request path is /.
    +

    dependencies

    +

    No

    +

    dependency array

    +

    Package on which the model inference code depends, which is structure data.

    +

    Model developers need to provide the package name, installation mode, and version constraints. Only the pip installation mode is supported. Table 6 describes the dependency array.

    +

    If the model package does not contain the customize_service.py file, you do not need to set this parameter. Dependency packages cannot be installed for custom image models.

    +

    health

    +

    No

    +

    health data structure

    +

    Configuration of an image health interface. This parameter is mandatory only when model_type is set to Image. For details about the health data structure, see Table 8.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 metrics object description

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    f1

    +

    No

    +

    Number

    +

    F1 score. The value is rounded to 17 decimal places.

    +

    recall

    +

    No

    +

    Number

    +

    Recall rate. The value is rounded to 17 decimal places.

    +

    precision

    +

    No

    +

    Number

    +

    Precision. The value is rounded to 17 decimal places.

    +

    accuracy

    +

    No

    +

    Number

    +

    Accuracy. The value is rounded to 17 decimal places.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 api array

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    protocol

    +

    No

    +

    String

    +

    Request protocol. The default value is http. Set the parameter value to http or https based on your custom image. For details about other parameter, see Example of the Object Detection Model Configuration File.

    +

    url

    +

    No

    +

    String

    +

    Request path. The default value is a slash (/). For a custom image model (model_type is Image), set this parameter to the actual request path exposed in the image. For a non-custom image model (model_type is not Image), the URL can only be /.

    +

    method

    +

    No

    +

    String

    +

    Request method. The default value is POST.

    +

    request

    +

    No

    +

    Object

    +

    Request body. For details about the request structure, see Table 4.

    +

    response

    +

    No

    +

    Object

    +

    Response body. For details about the response structure, see Table 5.

    +
    +
    + +
    + + + + + + + + + + + + + + + + +
    Table 4 request description

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    Content-type

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    Data is sent in a specified content format. The default value is application/json.

    +

    The options are as follows:

    +
    • application/json: sends JSON data.
    • multipart/form-data: uploads a file.
    +
    NOTE:

    For machine learning models, only application/json is supported.

    +
    +

    data

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    The request body is described in JSON schema.

    +
    +
    + +
    + + + + + + + + + + + + + + + + +
    Table 5 response description

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    Content-type

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    Data is sent in a specified content format. The default value is application/json.

    +

    The options are as follows:

    +
    • application/json: sends JSON data.
    • multipart/form-data: uploads a file.
    +
    NOTE:

    For machine learning models, only application/json is supported.

    +
    +

    data

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    The response body is described in JSON schema.

    +
    +
    + +
    + + + + + + + + + + + + + + + + +
    Table 6 dependency array

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    installer

    +

    Yes

    +

    String

    +

    Installation method. Only pip is supported.

    +

    packages

    +

    Yes

    +

    package array

    +

    Dependency package collection. For details about the package structure array, see Table 7.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 7 package array

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    package_name

    +

    Yes

    +

    String

    +

    Dependency package name. Chinese characters and special characters (&!'"<>=) are not allowed.

    +

    package_version

    +

    No

    +

    String

    +

    Dependency package version. If the dependency package does not rely on the version number, leave this field blank. Chinese characters and special characters (&!'"<>=) are not allowed.

    +

    restraint

    +

    No

    +

    String

    +

    Version restriction. This parameter is mandatory only when package_version is configured. Possible values are EXACT, ATLEAST, and ATMOST.

    +
    • EXACT indicates that a specified version is installed.
    • ATLEAST indicates that the version of the installation package is not earlier than the specified version.
    • ATMOST indicates that the version of the installation package is not later than the specified version.
      NOTE:
      • If there are specific requirements on the version, preferentially use EXACT. If EXACT conflicts with the system installation packages, you can select ATLEAST.
      • If there is no specific requirement on the version, retain only the package_name parameter and leave restraint and package_version blank.
      +
      +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 8 health data structure description

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    url

    +

    Yes

    +

    String

    +

    Request URL of the health check interface

    +

    protocol

    +

    No

    +

    String

    +

    Request protocol of the health check interface. Only HTTP is supported.

    +

    initial_delay_seconds

    +

    No

    +

    String

    +

    After an instance is started, a health check starts after seconds configured in initial_delay_seconds.

    +

    timeout_seconds

    +

    No

    +

    String

    +

    Health check timeout

    +
    +
    +
    +

    Example of the Object Detection Model Configuration File

    The following code uses the TensorFlow engine as an example. You can modify the model_type parameter based on the actual engine type.

    +
    • Model input

      Key: images

      +

      Value: image files

      +
    • Model output
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      ```
      +{
      +    "detection_classes": [
      +        "face",
      +        "arm"
      +    ],
      +    "detection_boxes": [
      +        [
      +            33.6,
      +            42.6,
      +            104.5,
      +            203.4
      +        ],
      +        [
      +            103.1,
      +            92.8,
      +            765.6,
      +            945.7
      +        ]
      +    ],
      +    "detection_scores": [0.99, 0.73]
      +}
      +```
      +
      +
      +
    • Configuration file
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      +63
      +64
      +65
      +66
      +67
      +68
      +69
      +70
      +71
      +72
      +73
      ```
      +{
      +    "model_type": "TensorFlow",
      +    "model_algorithm": "object_detection",
      +    "metrics": {
      +        "f1": 0.345294,
      +        "accuracy": 0.462963,
      +        "precision": 0.338977,
      +        "recall": 0.351852
      +    },
      +    "apis": [{
      +        "protocol": "http",
      +        "url": "/",
      +        "method": "post",
      +        "request": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "images": {
      +                        "type": "file"
      +                    }
      +                }
      +            }
      +        },
      +        "response": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "detection_classes": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "string"
      +                        }]
      +                    },
      +                    "detection_boxes": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "array",
      +                            "minItems": 4,
      +                            "maxItems": 4,
      +                            "items": [{
      +                                "type": "number"
      +                            }]
      +                        }]
      +                    },
      +                    "detection_scores": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "number"
      +                        }]
      +                    }
      +                }
      +            }
      +        }
      +    }],
      +    "dependencies": [{
      +        "installer": "pip",
      +        "packages": [{
      +                "restraint": "EXACT",
      +                "package_version": "1.15.0",
      +                "package_name": "numpy"
      +            },
      +            {
      +                "restraint": "EXACT",
      +                "package_version": "5.2.0",
      +                "package_name": "Pillow"
      +            }
      +        ]
      +    }]
      +}
      +```
      +
      +
      +
    +
    +

    Example of the Image Classification Model Configuration File

    The following code uses the TensorFlow engine as an example. You can modify the model_type parameter based on the actual engine type.

    +
    • Model input

      Key: images

      +

      Value: image files

      +
    • Model output
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +8
      +9
      ```
      +{
      +    "predicted_label": "flower",
      +    "scores": [
      +       ["rose", 0.99],
      +       ["begonia", 0.01]
      +    ]
      +}
      +```
      +
      +
      +
    • Configuration file
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      +63
      +64
      +65
      +66
      +67
      +68
      +69
      ```
      +{
      +    "model_type": "TensorFlow",
      +    "model_algorithm": "image_classification",
      +    "metrics": {
      +        "f1": 0.345294,
      +        "accuracy": 0.462963,
      +        "precision": 0.338977,
      +        "recall": 0.351852
      +    },
      +    "apis": [{
      +        "protocol": "http",
      +        "url": "/",
      +        "method": "post",
      +        "request": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "images": {
      +                        "type": "file"
      +                    }
      +                }
      +            }
      +        },
      +        "response": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "predicted_label": {
      +                        "type": "string"
      +                    },
      +                    "scores": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "array",
      +                            "minItems": 2,
      +                            "maxItems": 2,
      +                            "items": [
      +                                {
      +                                    "type": "string"
      +                                },
      +                                {
      +                                    "type": "number"
      +                                }
      +                            ]
      +                        }]
      +                    }
      +                }
      +            }
      +        }
      +    }],
      +    "dependencies": [{
      +        "installer": "pip",
      +        "packages": [{
      +                "restraint": "ATLEAST",
      +                "package_version": "1.15.0",
      +                "package_name": "numpy"
      +            },
      +            {
      +                "restraint": "",
      +                "package_version": "",
      +                "package_name": "Pillow"
      +            }
      +        ]
      +    }]
      +}
      +```
      +
      +
      +
    +
    +

    Example of the Predictive Analytics Model Configuration File

    The following code uses the TensorFlow engine as an example. You can modify the model_type parameter based on the actual engine type.

    +
    • Model input
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      ```
      +{
      +    "data": {
      +        "req_data": [
      +            {
      +                "buying_price": "high",
      +                "maint_price": "high",
      +                "doors": "2",
      +                "persons": "2",
      +                "lug_boot": "small",
      +                "safety": "low",
      +                "acceptability": "acc"
      +            },
      +            {
      +                "buying_price": "high",
      +                "maint_price": "high",
      +                "doors": "2",
      +                "persons": "2",
      +                "lug_boot": "small",
      +                "safety": "low",
      +                "acceptability": "acc"
      +            }
      +        ]
      +    }
      +}
      +```
      +
      +
      +
    • Model output
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      ```
      +{
      +    "data": {
      +        "resp_data": [
      +            {
      +                "predict_result": "unacc"
      +            },
      +            {
      +                "predict_result": "unacc"
      +            }
      +        ]
      +    }
      +}
      +```
      +
      +
      +
    • Configuration file
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      +63
      +64
      +65
      +66
      +67
      +68
      +69
      +70
      +71
      +72
      +73
      +74
      +75
      +76
      +77
      ```
      +{
      +    "model_type": "TensorFlow",
      +    "model_algorithm": "predict_analysis",
      +    "metrics": {
      +        "f1": 0.345294,
      +        "accuracy": 0.462963,
      +        "precision": 0.338977,
      +        "recall": 0.351852
      +    },
      +    "apis": [
      +        {
      +            "protocol": "http",
      +            "url": "/",
      +            "method": "post",
      +            "request": {
      +                "Content-type": "application/json",
      +                "data": {
      +                    "type": "object",
      +                    "properties": {
      +                        "data": {
      +                            "type": "object",
      +                            "properties": {
      +                                "req_data": {
      +                                    "items": [
      +                                        {
      +                                            "type": "object",
      +                                            "properties": {
      +                                            }
      +                                        }],
      +                                    "type": "array"
      +                                }
      +                            }
      +                        }
      +                    }
      +                }
      +            },
      +            "response": {
      +                "Content-type": "multipart/form-data",
      +                "data": {
      +                    "type": "object",
      +                    "properties": {
      +                        "data": {
      +                            "type": "object",
      +                            "properties": {
      +                                "resp_data": {
      +                                    "type": "array",
      +                                    "items": [
      +                                        {
      +                                            "type": "object",
      +                                            "properties": {
      +                                            }
      +                                        }]
      +                                }
      +                            }
      +                        }
      +                    }
      +                }
      +            }
      +        }],
      +    "dependencies": [
      +        {
      +            "installer": "pip",
      +            "packages": [
      +                {
      +                    "restraint": "EXACT",
      +                    "package_version": "1.15.0",
      +                    "package_name": "numpy"
      +                },
      +                {
      +                    "restraint": "EXACT",
      +                    "package_version": "5.2.0",
      +                    "package_name": "Pillow"
      +                }]
      +        }]
      +}
      +```
      +
      +
      +
    +
    +

    Example of the Custom Image Model Configuration File

    The model input and output are similar to those in Example of the Object Detection Model Configuration File.

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    {
    +    "model_algorithm": "image_classification",
    +    "model_type": "Image",
    +
    +    "metrics": {
    +        "f1": 0.345294,
    +        "accuracy": 0.462963,
    +        "precision": 0.338977,
    +        "recall": 0.351852
    +    },
    +    "apis": [{
    +        "protocol": "http",
    +        "url": "/",
    +        "method": "post",
    +        "request": {
    +            "Content-type": "multipart/form-data",
    +            "data": {
    +                "type": "object",
    +                "properties": {
    +                    "images": {
    +                        "type": "file"
    +                    }
    +                }
    +            }
    +        },
    +        "response": {
    +            "Content-type": "multipart/form-data",
    +            "data": {
    +                "type": "object",
    +                "required": [
    +                    "predicted_label",
    +                    "scores"
    +                ],
    +                "properties": {
    +                    "predicted_label": {
    +                        "type": "string"
    +                    },
    +                    "scores": {
    +                        "type": "array",
    +                        "items": [{
    +                            "type": "array",
    +                            "minItems": 2,
    +                            "maxItems": 2,
    +                            "items": [{
    +                                    "type": "string"
    +                                },
    +                                {
    +                                    "type": "number"
    +                                }
    +                            ]
    +                        }]
    +                    }
    +                }
    +            }
    +        }
    +    }]
    +}
    +
    +
    +
    +

    Example of the Machine Learning Model Configuration File

    The following uses XGBoost as an example:

    +
    • Model input
    +
    {
    +	"data": {
    +		"req_data": [{
    +			"sepal_length": 5,
    +			"sepal_width": 3.3,
    +			"petal_length": 1.4,
    +			"petal_width": 0.2
    +		}, {
    +			"sepal_length": 5,
    +			"sepal_width": 2,
    +			"petal_length": 3.5,
    +			"petal_width": 1
    +		}, {
    +			"sepal_length": 6,
    +			"sepal_width": 2.2,
    +			"petal_length": 5,
    +			"petal_width": 1.5
    +		}]
    +	}
    +}
    +
    • Model output
    +
    {
    +	"data": {
    +		"resp_data": [{
    +			"predict_result": "Iris-setosa"
    +		}, {
    +			"predict_result": "Iris-versicolor"
    +		}]
    +	}
    +}
    +
    • Configuration file
    +
    {
    +  "model_type": "XGBoost",
    +  "model_algorithm": "xgboost_iris_test",
    +  "runtime": "python2.7",
    +  "metrics": {
    +    "f1": 0.345294,
    +    "accuracy": 0.462963,
    +    "precision": 0.338977,
    +    "recall": 0.351852
    +  },
    +  "apis": [
    +    {
    +      "protocol": "http",
    +      "url": "/",
    +      "method": "post",
    +      "request": {
    +        "Content-type": "application/json",
    +        "data": {
    +          "type": "object",
    +          "properties": {
    +            "data": {
    +              "type": "object",
    +              "properties": {
    +                "req_data": {
    +                  "items": [
    +                    {
    +                      "type": "object",
    +                      "properties": {}
    +                    }
    +                  ],
    +                  "type": "array"
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "response": {
    +        "Content-type": "applicaton/json",
    +        "data": {
    +          "type": "object",
    +          "properties": {
    +            "resp_data": {
    +              "type": "array",
    +              "items": [
    +                {
    +                  "type": "object",
    +                  "properties": {
    +                    "predict_result": {
    +                      "type": "number"
    +                    }
    +                  }
    +                }
    +              ]
    +            }
    +          }
    +        }
    +      }
    +    }
    +  ]
    +}
    +

    +
    +

    Example of a Model Configuration File Using a Custom Dependency Package

    The following example defines the NumPy 1.16.4 dependency environment.

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    {
    +     "model_algorithm": "image_classification",
    +     "model_type": "TensorFlow",
    +     "runtime": "python3.6",
    +     "apis": [{
    +             "procotol": "http",
    +             "url": "/",
    +             "method": "post",
    +             "request": {
    +                 "Content-type": "multipart/form-data",
    +                 "data": {
    +                     "type": "object",
    +                     "properties": {
    +                         "images": {
    +                             "type": "file"
    +                         }
    +                     }
    +                 }
    +             },
    +             "response": {
    +                 "Content-type": "applicaton/json",
    +                 "data": {
    +                     "type": "object",
    +                     "properties": {
    +                         "mnist_result": {
    +                             "type": "array",
    +             "item": [{
    +                "type": "string"
    +                         }]
    +                         }
    +                     }
    +                 }
    +             }
    +         }
    +     ],
    +     "metrics": {
    +         "f1": 0.124555,
    +         "recall": 0.171875,
    +         "precision": 0.0023493892851938493,
    +         "accuracy": 0.00746268656716417
    +     },
    +    "dependencies": [{
    +        "installer": "pip",
    +        "packages": [{
    +                "restraint": "EXACT",
    +                "package_version": "1.16.4",
    +                "package_name": "numpy"
    +            }
    +        ]
    +    }]
    + }
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0093.html b/modelarts/umn/modelarts_23_0093.html new file mode 100644 index 000000000..87d44911b --- /dev/null +++ b/modelarts/umn/modelarts_23_0093.html @@ -0,0 +1,667 @@ + + +

    Specifications for Compiling Model Inference Code

    +

    This section describes how to compile model inference code in ModelArts. The following also provides an example of inference code for the TensorFlow engine and an example of customizing inference logic in an inference script.

    +

    Specifications for Compiling Inference Code

    1. All custom Python code must be inherited from the BaseService class. Table 1 lists the import statements of different types of model parent classes. +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Import statements of the BaseService class

      Model Type

      +

      Parent Class

      +

      Import Statement

      +

      TensorFlow

      +

      TfServingBaseService

      +

      from model_service.tfserving_model_service import TfServingBaseService

      +

      MXNet

      +

      MXNetBaseService

      +

      from mms.model_service.mxnet_model_service import MXNetBaseService

      +

      PyTorch

      +

      PTServingBaseService

      +

      from model_service.pytorch_model_service import PTServingBaseService

      +

      Pyspark

      +

      SparkServingBaseService

      +

      from model_service.spark_model_service import SparkServingBaseService

      +

      Caffe

      +

      CaffeBaseService

      +

      from model_service.caffe_model_service import CaffeBaseService

      +

      XGBoost

      +

      XgSklServingBaseService

      +

      from model_service.python_model_service import XgSklServingBaseService

      +

      Scikit_Learn

      +

      XgSklServingBaseService

      +

      from model_service.python_model_service import XgSklServingBaseService

      +

      MindSpore

      +

      SingleNodeService

      +

      from model_service.model_service import SingleNodeService

      +
      +
      +
    2. The following methods can be rewritten: +
      + + + + + + + + + + + + + + + + + + + +
      Table 2 Methods to be rewritten

      Method

      +

      Description

      +

      __init__(self, model_name, model_path)

      +

      Initialization method, which is suitable for models created based on deep learning frameworks. Models and labels are loaded using this method. This method must be rewritten for models based on PyTorch and Caffe to implement the model loading logic.

      +

      __init__(self, model_path)

      +

      Initialization method, which is suitable for models created based on machine learning frameworks. The model path (self.model_path) is initialized using this method. In Spark_MLlib, this method also initializes SparkSession (self.spark).

      +

      _preprocess(self, data)

      +

      Preprocess method, which is called before an inference request and is used to convert the original request data of an API into the expected input data of a model

      +

      _inference(self, data)

      +

      Inference request method. You are not advised to rewrite the method because once the method is rewritten, the built-in inference process of ModelArts will be overwritten and the custom inference logic will run.

      +

      _postprocess(self, data)

      +

      Postprocess method, which is called after an inference request is complete and is used to convert the model output to the API output

      +
      +
      +
      • You can choose to rewrite the preprocess and postprocess methods to implement preprocessing of the API input and postprocessing of the inference output.
      • Rewriting the init method of the BaseService inheritance class may cause a model to run abnormally.
      +
      +
    3. The attribute that can be used is the local path where the model resides. The attribute name is self.model_path. In addition, PySpark-based models can use self.spark to obtain the SparkSession object in customize_service.py.

      An absolute path is required for reading files in the inference code. You can obtain the absolute path of the model from the self.model_path attribute.

      +
      • When TensorFlow, Caffe, or MXNet is used, self.model_path indicates the path of the model file. See the following example:
        # Store the label.json file in the model directory. The following information is read:
        +with open(os.path.join(self.model_path, 'label.json')) as f:
        +    self.label = json.load(f)
        +
      +
      • When PyTorch, Scikit_Learn, or PySpark is used, self.model_path indicates the path of the model file. See the following example:
        # Store the label.json file in the model directory. The following information is read:
        +dir_path = os.path.dirname(os.path.realpath(self.model_path))
        +with open(os.path.join(dir_path, 'label.json')) as f:
        +    self.label = json.load(f)
        +
      +
      +
    4. Two types of content-type APIs can be used for inputting data: multipart/form-data and application/json
      • multipart/form-data request
        curl -X POST \
        +  <modelarts-inference-endpoint> \
        +  -F image1=@cat.jpg \
        +  -F images2=@horse.jpg
        +

        The corresponding input data is as follows:

        +
        [
        +   {
        +      "image1":{
        +         "cat.jpg":"<cat..jpg file io>"
        +      }
        +   },
        +   {
        +      "image2":{
        +         "horse.jpg":"<horse.jpg file io>"
        +      }
        +   }
        +]
        +
      • application/json request
         curl -X POST \
        +   <modelarts-inference-endpoint> \
        +   -d '{
        +    "images":"base64 encode image"
        +    }'
        +

        The corresponding input data is python dict.

        +
         {
        +    "images":"base64 encode image"
        +
        + }
        +
      +
    +
    +

    TensorFlow Inference Script Example

    The following is an example of TensorFlow MnistService.
    • Inference code
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      from PIL import Image
      +import numpy as np
      +from model_service.tfserving_model_service import TfServingBaseService
      +
      +class mnist_service(TfServingBaseService):
      +
      +    def _preprocess(self, data):
      +        preprocessed_data = {}
      +
      +        for k, v in data.items():
      +            for file_name, file_content in v.items():
      +                image1 = Image.open(file_content)
      +                image1 = np.array(image1, dtype=np.float32)
      +                image1.resize((1, 784))
      +                preprocessed_data[k] = image1
      +
      +        return preprocessed_data
      +
      +    def _postprocess(self, data):
      +
      +        infer_output = {}
      +
      +        for output_name, result in data.items():
      +
      +            infer_output["mnist_result"] = result[0].index(max(result[0]))
      +
      +        return infer_output
      +
      +
      +
    • Request
      curl -X POST \ Real-time service address \ -F images=@test.jpg
      +
    • Response
      {"mnist_result": 7}
      +
    +
    +

    The preceding code example resizes images imported to the user's form to adapt to the model input shape. The 32×32 image is read from the Pillow library and resized to 1×784 to match the model input. In subsequent processing, convert the model output into a list for the RESTful API to display.

    +
    +

    XGBoost Inference Script Example

    # coding:utf-8
    +import collections
    +import json
    +import xgboost as xgb
    +from model_service.python_model_service import XgSklServingBaseService
    +
    +
    +class user_Service(XgSklServingBaseService):
    +
    +    # request data preprocess
    +    def _preprocess(self, data):
    +        list_data = []
    +        json_data = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        for element in json_data["data"]["req_data"]:
    +            array = []
    +            for each in element:
    +                array.append(element[each])
    +                list_data.append(array)
    +        return list_data
    +
    +    #   predict
    +    def _inference(self, data):
    +        xg_model = xgb.Booster(model_file=self.model_path)
    +        pre_data = xgb.DMatrix(data)
    +        pre_result = xg_model.predict(pre_data)
    +        pre_result = pre_result.tolist()
    +        return pre_result
    +
    +    # predict result process
    +    def _postprocess(self, data):
    +        resp_data = []
    +        for element in data:
    +            resp_data.append({"predict_result": element})
    +        return resp_data
    +

    +
    +

    Inference Script Example of the Custom Inference Logic

    First, define a dependency package in the configuration file. For details, see Example of a Model Configuration File Using a Custom Dependency Package. Then, use the following code example to implement the loading and inference of the model in saved_model format.

    +
      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    # -*- coding: utf-8 -*-
    +import json
    +import os
    +import threading
    +
    +import numpy as np
    +import tensorflow as tf
    +from PIL import Image
    +
    +from model_service.tfserving_model_service import TfServingBaseService
    +import logging
    +
    +logger = logging.getLogger(__name__)
    +
    +
    +class MnistService(TfServingBaseService):
    +
    +    def __init__(self, model_name, model_path):
    +        self.model_name = model_name
    +        self.model_path = model_path
    +        self.model_inputs = {}
    +        self.model_outputs = {}
    +
    +       # The label file can be loaded here and used in the post-processing function.
    +        # Directories for storing the label.txt file on OBS and in the model package
    +
    +        # with open(os.path.join(self.model_path, 'label.txt')) as f:
    +        #     self.label = json.load(f)
    +
    +        # Load the model in saved_model format in non-blocking mode to prevent blocking timeout.
    +        thread = threading.Thread(target=self.get_tf_sess)
    +        thread.start()
    +
    +    def get_tf_sess(self):
    +        # Load the model in saved_model format.
    +
    +       # The session will be reused. Do not use the with statement.
    +        sess = tf.Session(graph=tf.Graph())
    +        meta_graph_def = tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], self.model_path)
    +        signature_defs = meta_graph_def.signature_def
    +
    +        self.sess = sess
    +
    +        signature = []
    +
    +        # only one signature allowed
    +        for signature_def in signature_defs:
    +            signature.append(signature_def)
    +        if len(signature) == 1:
    +            model_signature = signature[0]
    +        else:
    +            logger.warning("signatures more than one, use serving_default signature")
    +            model_signature = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
    +
    +        logger.info("model signature: %s", model_signature)
    +
    +        for signature_name in meta_graph_def.signature_def[model_signature].inputs:
    +            tensorinfo = meta_graph_def.signature_def[model_signature].inputs[signature_name]
    +            name = tensorinfo.name
    +            op = self.sess.graph.get_tensor_by_name(name)
    +            self.model_inputs[signature_name] = op
    +
    +        logger.info("model inputs: %s", self.model_inputs)
    +
    +        for signature_name in meta_graph_def.signature_def[model_signature].outputs:
    +            tensorinfo = meta_graph_def.signature_def[model_signature].outputs[signature_name]
    +            name = tensorinfo.name
    +            op = self.sess.graph.get_tensor_by_name(name)
    +
    +            self.model_outputs[signature_name] = op
    +
    +        logger.info("model outputs: %s", self.model_outputs)
    +
    +    def _preprocess(self, data):
    +        # Two request modes using HTTPS
    +        # 1. The request in form-data file format is as follows: data = {"Request key value":{"File name":<File io>}}
    +       # 2. Request in JSON format is as follows: data = json.loads("JSON body transferred by the API")
    +        preprocessed_data = {}
    +
    +        for k, v in data.items():
    +            for file_name, file_content in v.items():
    +                image1 = Image.open(file_content)
    +                image1 = np.array(image1, dtype=np.float32)
    +                image1.resize((1, 28, 28))
    +                preprocessed_data[k] = image1
    +
    +        return preprocessed_data
    +
    +    def _inference(self, data):
    +
    +        feed_dict = {}
    +        for k, v in data.items():
    +            if k not in self.model_inputs.keys():
    +                logger.error("input key %s is not in model inputs %s", k, list(self.model_inputs.keys()))
    +                raise Exception("input key %s is not in model inputs %s" % (k, list(self.model_inputs.keys())))
    +            feed_dict[self.model_inputs[k]] = v
    +
    +        result = self.sess.run(self.model_outputs, feed_dict=feed_dict)
    +        logger.info('predict result : ' + str(result))
    +
    +        return result
    +
    +    def _postprocess(self, data):
    +        infer_output = {"mnist_result": []}
    +        for output_name, results in data.items():
    +
    +            for result in results:
    +                infer_output["mnist_result"].append(np.argmax(result))
    +
    +        return infer_output
    +
    +    def __del__(self):
    +        self.sess.close()
    +
    +
    +
    +

    MindSpore Inference Script Example

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    import threading
    +
    +import mindspore
    +import mindspore.nn as nn
    +import numpy as np
    +import logging
    +from mindspore import Tensor, context
    +from mindspore.common.initializer import Normal
    +from mindspore.train.serialization import load_checkpoint, load_param_into_net
    +from model_service.model_service import SingleNodeService
    +from PIL import Image
    +
    +logger = logging.getLogger(__name__)
    +logger.setLevel(logging.INFO)
    +
    +
    +
    +context.set_context(mode=context.GRAPH_MODE, device_target="Ascend")
    +
    +
    +class LeNet5(nn.Cell):
    +    """Lenet network structure."""
    +
    +    # define the operator required
    +    def __init__(self, num_class=10, num_channel=1):
    +        super(LeNet5, self).__init__()
    +        self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid')
    +        self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid')
    +        self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02))
    +        self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02))
    +        self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02))
    +        self.relu = nn.ReLU()
    +        self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2)
    +        self.flatten = nn.Flatten()
    +
    +    # use the preceding operators to construct networks
    +    def construct(self, x):
    +        x = self.max_pool2d(self.relu(self.conv1(x)))
    +        x = self.max_pool2d(self.relu(self.conv2(x)))
    +        x = self.flatten(x)
    +        x = self.relu(self.fc1(x))
    +        x = self.relu(self.fc2(x))
    +        x = self.fc3(x)
    +        return x
    +
    +
    +class mnist_service(SingleNodeService):
    +    def __init__(self, model_name, model_path):
    +        self.model_name = model_name
    +        self.model_path = model_path
    +        logger.info("self.model_name:%s self.model_path: %s", self.model_name,
    +                    self.model_path)
    +        self.network = None
    +        # Load the model in non-blocking mode to prevent blocking timeout.
    +        thread = threading.Thread(target=self.load_model)
    +        thread.start()
    +
    +    def load_model(self):
    +        logger.info("load network ... \n")
    +        self.network = LeNet5()
    +        ckpt_file = self.model_path + "/checkpoint_lenet_1-1_1875.ckpt"
    +        logger.info("ckpt_file: %s", ckpt_file)
    +        param_dict = load_checkpoint(ckpt_file)
    +        load_param_into_net(self.network, param_dict)
    +        logger.info("load network successfully ! \n")
    +
    +    def _preprocess(self, input_data):
    +        preprocessed_result = {}
    +        images = []
    +        for k, v in input_data.items():
    +            for file_name, file_content in v.items():
    +                image1 = Image.open(file_content)
    +                image1 = image1.resize((1, 32 * 32))
    +                image1 = np.array(image1, dtype=np.float32)
    +                images.append(image1)
    +
    +        images = np.array(images, dtype=np.float32)
    +        logger.info(images.shape)
    +        images.resize([len(input_data), 1, 32, 32])
    +        logger.info("images shape: %s", images.shape)
    +        inputs = Tensor(images, mindspore.float32)
    +        preprocessed_result['images'] = inputs
    +
    +        return preprocessed_result
    +
    +    def _inference(self, preprocessed_result):
    +        inference_result = self.network(preprocessed_result['images'])
    +        return inference_result
    +
    +    def _postprocess(self, inference_result):
    +        return str(inference_result)
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0097.html b/modelarts/umn/modelarts_23_0097.html new file mode 100644 index 000000000..0da459df4 --- /dev/null +++ b/modelarts/umn/modelarts_23_0097.html @@ -0,0 +1,16 @@ + + +

    Model Templates

    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0098.html b/modelarts/umn/modelarts_23_0098.html new file mode 100644 index 000000000..7a792a098 --- /dev/null +++ b/modelarts/umn/modelarts_23_0098.html @@ -0,0 +1,22 @@ + + +

    Introduction to Model Templates

    +

    Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import models without compiling the config.json configuration file. In simple terms, a template integrates AI engine and model configurations. Each template corresponds to a specific AI engine and inference mode. With the templates, you can quickly import models to ModelArts.

    +

    Using a Template

    The following uses the template described in TensorFlow-py36 General Template as an example. Upload the TensorFlow model package to OBS before using the template. Store the model files in the model directory. When creating a model using this template, you need to select the model directory.

    +
    1. On the Import Model page, set Meta Model Source to Template.
    2. In the Template area, select TensorFlow-py36 general template.

      ModelArts also provides three filter criteria: Type, Engine, and Environment, helping you quickly find the desired template. If the three filter criteria cannot meet your requirements, you can enter keywords to search for the target template.

      +
    3. For Model Folder, select the model directory where the model files reside. For details, see Template Description.

      If a training job is executed for multiple times, different version directories are generated, such as V001 and V002, and the generated models are stored in the model folder in different version directories. When selecting model files, specify the model folder in the corresponding version directory.

      +
      +
    4. If the default input and output mode of the selected template can be overwritten, you can select an input and output mode based on the model function or application scenario. Input and Output Mode is an abstract of the API in config.json. It describes the interface provided by the model for external inference. An input and output mode describes one or more APIs, and corresponds to a template.

      For details about the supported input and output modes, see Input and Output Modes.

      +
    +
    + + +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0099.html b/modelarts/umn/modelarts_23_0099.html new file mode 100644 index 000000000..62da4e7e6 --- /dev/null +++ b/modelarts/umn/modelarts_23_0099.html @@ -0,0 +1,21 @@ + + +

    Input and Output Modes

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0100.html b/modelarts/umn/modelarts_23_0100.html new file mode 100644 index 000000000..242da471f --- /dev/null +++ b/modelarts/umn/modelarts_23_0100.html @@ -0,0 +1,83 @@ + + +

    Built-in Object Detection Mode

    +

    Input

    This is a built-in input and output mode for object detection. The models using this mode are identified as object detection models. The prediction request path is /, the request protocol is HTTP, the request method is POST, Content-Type is multipart/form-data, key is images, and type is file. Before selecting this mode, ensure that your model can process the input data whose key is images.

    +
    +

    Output

    The inference result is returned in JSON format. For details about the fields, see Table 1.

    + +
    + + + + + + + + + + + + + + + + + +
    Table 1 Parameters

    Field

    +

    Type

    +

    Description

    +

    detection_classes

    +

    String array

    +

    List of detected objects, for example, ["flowers","cat"]

    +

    detection_boxes

    +

    Float array

    +

    Coordinates of the bounding box, in the format of

    +

    detection_scores

    +

    Float array

    +

    Confidence scores of detected objects, which are used to measure the detection accuracy

    +
    +
    +

    The JSON Schema of the inference result is as follows:

    +
    {
    +	"type": "object",
    +	"properties": {
    +		"detection_classes": {
    +			"items": {
    +				"type": "string"
    +			},
    +			"type": "array"
    +		},
    +		"detection_boxes": {
    +			"items": {
    +				"minItems": 4,
    +				"items": {
    +					"type": "number"
    +				},
    +				"type": "array",
    +				"maxItems": 4
    +			},
    +			"type": "array"
    +		},
    +		"detection_scores": {
    +			"items": {
    +				"type": "string"
    +			},
    +			"type": "array"
    +		}
    +	}
    +}
    +
    +

    Sample Request

    In this mode, input an image to be processed in the inference request. The inference result is returned in JSON format. The following are examples:
    • Performing prediction on the console

      On the Prediction tab page of the service details page, upload an image and click Predict to obtain the prediction result.

      +
    • Using Postman to call a RESTful API for prediction

      After a model is deployed as a service, you can obtain the API URL on the Usage Guides tab page of the service details page.

      +
      • On the Headers tab page, set Content-Type to multipart/form-data and X-Auth-Token to the actual token obtained.
      +
      • On the Body tab page, set the request body. Set key to images, select File, select the image to be processed, and click send to send your prediction request.
      +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0101.html b/modelarts/umn/modelarts_23_0101.html new file mode 100644 index 000000000..0378d672f --- /dev/null +++ b/modelarts/umn/modelarts_23_0101.html @@ -0,0 +1,18 @@ + + +

    Built-in Image Processing Mode

    +

    Input

    The built-in image processing input and output mode can be applied to models such as image classification, object detection, and image semantic segmentation. The prediction request path is /, the request protocol is HTTPS, the request method is POST, Content-Type is multipart/form-data, key is images, and type is file. Before selecting this mode, ensure that your model can process the input data whose key is images.

    +
    +

    Output

    The inference result is returned in JSON format. The specific fields are determined by the model.

    +
    +

    Sample Request

    In this mode, input an image to be processed in the inference request. The response in JSON format varies according to the model. The following are examples:

    +
    • Performing prediction on the console
    • Using Postman to call a RESTful API for prediction

      After a model is deployed as a service, you can obtain the API URL on the Usage Guides tab page of the service details page. On the Body tab page, set the request body. Set key to images, select File, select the image to be processed, and click send to send your prediction request.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0102.html b/modelarts/umn/modelarts_23_0102.html new file mode 100644 index 000000000..6e9118948 --- /dev/null +++ b/modelarts/umn/modelarts_23_0102.html @@ -0,0 +1,134 @@ + + +

    Built-in Predictive Analytics Mode

    +

    Input

    This is a built-in input and output mode for predictive analytics. The models using this mode are identified as predictive analytics models. The prediction request path is /, the request protocol is HTTP, the request method is POST, and Content-Type is application/json. The request body is in JSON format. For details about the JSON fields, see Table 1. Before selecting this mode, ensure that your model can process the input data in JSON Schema format.

    + +
    + + + + + + + + + +
    Table 1 JSON field description

    Field

    +

    Type

    +

    Description

    +

    data

    +

    Data structure

    +

    Inference data. For details, see Table 2.

    +
    +
    + +
    + + + + + + + + + +
    Table 2 Data description

    Field

    +

    Type

    +

    Description

    +

    req_data

    +

    ReqData array

    +

    List of inference data

    +
    +
    +

    ReqData is of the Object type and indicates the inference data. The data structure is determined by the application scenario. For models using this mode, the preprocessing logic in the custom model inference code should be able to correctly process the data inputted in the format defined by the mode.

    +

    The JSON Schema of a prediction request is as follows:

    +
    {
    +	"type": "object",
    +	"properties": {
    +		"data": {
    +			"type": "object",
    +			"properties": {
    +				"req_data": {
    +					"items": [{
    +						"type": "object",
    +						"properties": {}
    +					}],
    +					"type": "array"
    +				}
    +			}
    +		}
    +	}
    +}
    +
    +

    Output

    The inference result is returned in JSON format. For details about the JSON fields, see Table 3.

    + +
    + + + + + + + + + +
    Table 3 JSON field description

    Field

    +

    Type

    +

    Description

    +

    data

    +

    Data structure

    +

    Inference data. For details, see Table 4.

    +
    +
    + +
    + + + + + + + + + +
    Table 4 Data description

    Field

    +

    Type

    +

    Description

    +

    resp_data

    +

    RespData array

    +

    List of prediction results

    +
    +
    +

    Similar to ReqData, RespData is also of the Object type and indicates the prediction result. Its structure is determined by the application scenario. For models using this mode, the postprocessing logic in the custom model inference code should be able to correctly output data in the format defined by the mode.

    +

    The JSON Schema of a prediction result is as follows:

    +
    {
    +	"type": "object",
    +	"properties": {
    +		"data": {
    +			"type": "object",
    +			"properties": {
    +				"resp_data": {
    +					"type": "array",
    +					"items": [{
    +						"type": "object",
    +						"properties": {}
    +					}]
    +				}
    +			}
    +		}
    +	}
    +}
    +
    +

    Sample Request

    In this mode, input the data to be predicted in JSON format. The prediction result is returned in JSON format. The following are examples:

    +
    • Performing prediction on the console

      On the Prediction tab page of the service details page, enter inference code and click Predict to obtain the prediction result.

      +
    • Using Postman to call a RESTful API for prediction

      After a model is deployed as a service, you can obtain the API URL on the Usage Guides tab page of the service details page.

      +
      • On the Headers tab page, set Content-Type to application/json and X-Auth-Token to the actual token obtained.
      • On the Body tab page, edit the data to be predicted and click send to send your prediction request.
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0103.html b/modelarts/umn/modelarts_23_0103.html new file mode 100644 index 000000000..cfbf16ee8 --- /dev/null +++ b/modelarts/umn/modelarts_23_0103.html @@ -0,0 +1,18 @@ + + +

    Undefined Mode

    +

    Description

    The undefined mode does not define the input and output mode. The input and output mode is determined by the model. Select this mode only when the existing input and output mode is not applicable to the application scenario of the model. The models imported in undefined mode cannot be deployed as batch services. In addition, the service prediction page may not be displayed properly. New modes are coming soon for more application scenarios.

    +
    +

    Input

    No limit.

    +
    +

    Output

    No limit.

    +
    +

    Sample Request

    The undefined mode has no specific sample request because the input and output of the request are entirely determined by the model.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0106.html b/modelarts/umn/modelarts_23_0106.html new file mode 100644 index 000000000..5cf9e8b41 --- /dev/null +++ b/modelarts/umn/modelarts_23_0106.html @@ -0,0 +1,21 @@ + + +

    Model Compression and Conversion

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0107.html b/modelarts/umn/modelarts_23_0107.html new file mode 100644 index 000000000..039e21643 --- /dev/null +++ b/modelarts/umn/modelarts_23_0107.html @@ -0,0 +1,23 @@ + + +

    Compressing and Converting Models

    +

    To obtain higher computing power, you can deploy the models created on ModelArts or a local PC on the Ascend chip, Arm, or GPU. In this case, you need to compress or convert the models to the required formats before deploying them.

    +

    ModelArts supports model conversion, allowing you to convert a model to a required format before deploying the model on a chip with higher computing power and performance.

    +

    Model conversion applies to the following scenarios:

    +
    • If you use the TensorFlow framework (in frozen_graph or saved_model format) to train a model, you can convert the model to the .om format. The converted model can be deployed and run on Ascend chips.
    +

    Constraints

    • Only Ascend chips are supported for model conversion.
    • Only Caffe and TensorFlow models can be converted. For a TensorFlow model, the input data type is of the INT32, BOOL, UINT8, or FLOAT type.
    • ModelArts provides conversion templates for you to choose. For details about the supported templates, see Conversion Templates.
    • The .tflite and TensorRT formats support fewer operators and quantization operators. Therefore, some models may fail to be converted. If the conversion fails, view the log dialog box or check error logs in the conversion output directory.
    • An OBS directory must be specified in compression/conversion tasks. Ensure that the OBS directory you use and ModelArts are in the same region.
    • When importing the converted model to ModelArts, you need to use the model template.
    • For a TensorFlow model, the FrozenGraphDef and SavedModel formats are supported. If a model is in the SavedModel format, the model is converted to the FrozenGraphDef format and then to the OM format.
    • Inputs with dynamic shapes are not supported, for example, NHWC = [?,?,?,3]. A fixed value needs to be specified during model conversion.
    • The input can be up to 4-dimensional. Operators involving dimension changes (such as reshape and expanddim) cannot output five dimensions.
    • Except the const operator, the input and output at all layers in a model must meet the condition dim!=0.
    • Model conversion does not support models that contain training operators.
    • A UINT8 quantized model cannot be converted.
    • Model operators support only 2D convolution but do not support 3D convolution. The batch_normalization_1 and FusedBatchNorm operators cannot be converted in batches.
    +
    +

    Deleting a Model Compression/Conversion Task

    You can delete unnecessary conversion tasks. However, tasks in the Running or Initializing status cannot be deleted.

    +

    Deleted tasks cannot be recovered. Exercise caution when performing this operation.

    +
    +
    • Deleting a single task:

      On the Compression/Conversion page, click Delete in the Operation column of the target task.

      +
    • Deleting a batch of tasks:

      On the Compression/Conversion page, select multiple tasks to be deleted and click Delete in the upper left corner.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0108.html b/modelarts/umn/modelarts_23_0108.html new file mode 100644 index 000000000..c6ced2e41 --- /dev/null +++ b/modelarts/umn/modelarts_23_0108.html @@ -0,0 +1,26 @@ + + +

    Model Input Path Specifications

    +

    Ascend Chip

    The requirements for converting the models run on the Ascend chip are as follows:

    +
    • For TensorFlow-based models (in frozen_graph or saved_model format), the input path must comply with the following specifications during model conversion:
      frozen_graph format
      |
      +|---xxxx.pb                 (Mandatory) Model network file. Only one model network file can exist in the input path. The model must be in frozen_graph or saved_model format.
      +|---insert_op_conf.cfg      (Optional) Insertion operator configuration file. Only one insertion operator configuration file can exist in the input path.
      +|---plugin                  (Optional) Custom operator directory. The input directory can contain only one plugin folder. Only custom operators developed based on Tensor Engine (TE) are supported.
      +
      +

      saved_model format

      +
      |
      +|---saved_model.pb          (Mandatory) Model network file. Only one model network file can exist in the input path. The model must be in frozen_graph or saved_model format.
      +|---variables               (Mandatory) Fixed subdirectory name, including the model weight deviation.
      +    |---variables.index     Mandatory
      +    |---variables.data-00000-of-00001 Mandatory
      +|---insert_op_conf.cfg      (Optional) Insertion operator configuration file. Only one insertion operator configuration file can exist in the input path.
      +|---plugin                  (Optional) Custom operator directory. The input directory can contain only one plugin folder. Only custom operators developed based on Tensor Engine (TE) are supported.
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0109.html b/modelarts/umn/modelarts_23_0109.html new file mode 100644 index 000000000..a5c521e35 --- /dev/null +++ b/modelarts/umn/modelarts_23_0109.html @@ -0,0 +1,16 @@ + + +

    Model Output Path Description

    +

    Ascend Chip

    The following describes the output path of the model run on the Ascend chip after conversion:

    +
    +
    • For TensorFlow-based models, the output path must comply with the following specifications during model conversion:
      |
      +|---xxxx.om           Converted model to run on the Ascend chip. The model file name extension is .om.
      +|---job_log.txt       Conversion log file
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0110.html b/modelarts/umn/modelarts_23_0110.html new file mode 100644 index 000000000..d008c0336 --- /dev/null +++ b/modelarts/umn/modelarts_23_0110.html @@ -0,0 +1,96 @@ + + +

    Conversion Templates

    +

    ModelArts provides the following conversion templates based on different AI frameworks:

    + +

    TF-FrozenGraph-To-Ascend-C32

    Convert the model trained by the TensorFlow framework and saved in frozen_graph format. The converted model can run on the Ascend. The custom operators (TBE operators) developed based on Tensor Based Engine (TBE) can be used for conversion.

    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Advanced settings of the custom operator conversion template

    Parameter

    +

    Description

    +

    input_shape

    +

    Enter the shape of the input data of the model, for example, input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2. input_name must be the node name in the network model before model conversion. This parameter is mandatory when the model has dynamic shape input. For example, in input_name1:? ,h,w,c, the question mark (?) indicates the batch size, that is, the number of images processed at a time. It is used to convert the original model with a dynamic shape into an offline model with a fixed shape. The batch feature is not supported. The batch value of the input_shape can only be 1. During the conversion, the system parses the input model to obtain the input tensor and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    input_format

    +

    NCHW and NHWC are supported. The default format is NHWC. For the TensorFlow framework, the default value is NHWC. To use the NCHW format, you need to specify NCHW. For the Caffe framework, only the NCHW format is supported.

    +

    out_nodes

    +

    Specifies the output node, for example, node_name1:0;node_name1:1;node_name2:0. node_name must be the node name in the network model before model conversion. The digit after each colon (:) indicates the sequence number of the output. For example, node_name1:0 indicates the 0th output of node_name1. If the output node is not specified, the output of the last operator layer serves as the model output by default. To check the parameters of a specific operator layer, specify the operator layer by using this parameter. During the conversion, the system parses the input model to obtain the output node and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    net_format

    +

    Specifies the preferred data format for network operators. Possible values are ND (N cannot be more than 4) and 5D. This parameter only takes effect if the input data of operators on the network supports both ND and 5D formats. ND indicates that operators in the model are converted into the NCHW format. 5D indicates that operators in the model are converted into the 5D format. 5D is the default value.

    +

    fp16_high_prec

    +

    Specifies whether to generate a high-precision FP16 Davinci model. 0 is the default value, indicating that a common FP16 Da Vinci model with better inference performance is generated. The value 1 indicates that a high-precision FP16 Da Vinci model with better inference precision is generated. High-precision models support only Caffe operators (Convolution, Pooling, and FullConnection) and TensorFlow operators (tf.nn.conv2d and tf.nn.max_poo).

    +

    output_type

    +

    FP32 is the default value and is recommended for classification and detection networks. For image super-resolution networks, UINT8 is recommended for better inference performance.

    +
    +
    +
    +

    TF-SavedModel-To-Ascend-C32

    Convert the model trained by the TensorFlow framework and saved in saved_model format. The converted model can run on the Ascend. The custom operators (TE operators) developed based on TE can be used for conversion.

    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Advanced settings of the custom operator conversion template

    Parameter

    +

    Description

    +

    input_shape

    +

    Enter the shape of the input data of the model, for example, input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2. input_name must be the node name in the network model before model conversion. This parameter is mandatory when the model has dynamic shape input. For example, in input_name1:? ,h,w,c, the question mark (?) indicates the batch size, that is, the number of images processed at a time. It is used to convert the original model with a dynamic shape into an offline model with a fixed shape. The batch feature is not supported. The batch value of the input_shape can only be 1. During the conversion, the system parses the input model to obtain the input tensor and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    input_format

    +

    NCHW and NHWC are supported. The default format is NHWC. For the TensorFlow framework, the default value is NHWC. To use the NCHW format, you need to specify NCHW. For the Caffe framework, only the NCHW format is supported.

    +

    out_nodes

    +

    Specifies the output node, for example, node_name1:0;node_name1:1;node_name2:0. node_name must be the node name in the network model before model conversion. The digit after each colon (:) indicates the sequence number of the output. For example, node_name1:0 indicates the 0th output of node_name1. If the output node is not specified, the output of the last operator layer serves as the model output by default. To check the parameters of a specific operator layer, specify the operator layer by using this parameter. During the conversion, the system parses the input model to obtain the output node and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    net_format

    +

    Specifies the preferred data format for network operators. Possible values are ND (N cannot be more than 4) and 5D. This parameter only takes effect if the input data of operators on the network supports both ND and 5D formats. ND indicates that operators in the model are converted into the NCHW format. 5D indicates that operators in the model are converted into the 5D format. 5D is the default value.

    +

    fp16_high_prec

    +

    Specifies whether to generate a high-precision FP16 Davinci model. 0 is the default value, indicating that a common FP16 Da Vinci model with better inference performance is generated. The value 1 indicates that a high-precision FP16 Da Vinci model with better inference precision is generated. High-precision models support only Caffe operators (Convolution, Pooling, and FullConnection) and TensorFlow operators (tf.nn.conv2d and tf.nn.max_poo).

    +

    output_type

    +

    FP32 is the default value and is recommended for classification and detection networks. For image super-resolution networks, UINT8 is recommended for better inference performance.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0111.html b/modelarts/umn/modelarts_23_0111.html new file mode 100644 index 000000000..7f0333ad9 --- /dev/null +++ b/modelarts/umn/modelarts_23_0111.html @@ -0,0 +1,22 @@ + + +

    Managing Notebook Instances

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0117.html b/modelarts/umn/modelarts_23_0117.html new file mode 100644 index 000000000..48c84dac6 --- /dev/null +++ b/modelarts/umn/modelarts_23_0117.html @@ -0,0 +1,18 @@ + + +

    Using the Notebook Terminal Function

    +

    For developers who are used to coding, the terminal function is very convenient and practical. This section describes how to enable the terminal function in a notebook instance and switch the engine environment in the terminal.

    +

    Enabling the Notebook Terminal Function

    1. In the notebook instance list, click Open in the Operation column of the target notebook instance to go to the Jupyter Notebook page.
    2. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
      Figure 1 Going to the Terminal page
      +
    +
    +

    Switching Engine Environments on the Terminal

    You can switch to another AI engine environment in the terminal environment of Jupyter.

    +
    1. Create and open a notebook instance or open an existing notebook instance in the notebook instance list.
    2. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
    3. Figure 2 Output after command execution
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0118.html b/modelarts/umn/modelarts_23_0118.html new file mode 100644 index 000000000..82ac6597d --- /dev/null +++ b/modelarts/umn/modelarts_23_0118.html @@ -0,0 +1,25 @@ + + +

    Template Description

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0120.html b/modelarts/umn/modelarts_23_0120.html new file mode 100644 index 000000000..9f508541b --- /dev/null +++ b/modelarts/umn/modelarts_23_0120.html @@ -0,0 +1,80 @@ + + +

    Common Operations on Jupyter Notebook

    +

    This section describes common operations on Jupyter Notebook.

    +

    Opening Jupyter Notebook

    In the notebook instance list, locate the row where the target notebook instance resides and click Open in the Operation column to switch to the Jupyter Notebook page.

    +

    Two tab pages are available on the Jupyter Notebook page: Files and Running.

    +
    Figure 1 Jupyter Notebook
    +
    +

    Selecting Different AI Engines to Create Files

    Open a notebook instance and go to the Jupyter Notebook page. On the Files tab page, click New in the upper right corner, select the required AI engine, and create a file for encoding.

    +
    Figure 2 Selecting different AI engines
    +
    +

    Uploading a File

    Open a notebook instance and go to the Jupyter Notebook page. On the Files tab page, click Upload in the upper right corner to select a file from the local PC and upload it.

    +
    Figure 3 Uploading a file
    +
    +

    Compiling a File

    After a file is created, click the file name to go to the file compilation page.

    +
    Figure 4 Compiling a file
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Introduction to the file compilation page

    No.

    +

    Area

    +

    Description

    +

    1

    +

    File name

    +

    You can enter a user-defined file name in this area. After the file name is changed and saved, the new file name is updated to the file list accordingly.

    +

    2

    +

    Menu bar

    +

    The menu bar provides rich functions such as File, Edit, View, Insert, Cell, Kernel, and Help. For details, see Jupyter Notebook Documentation. The following toolbar provides common functions for compiling common Python running files.

    +

    3

    +

    Toolbar

    +

    The toolbar lists the common shortcut operations. From left to right, the shortcut operations are as follows: saving a file, adding a new cell, cutting a selected cell, copying a selected cell, pasting a selected cell, moving a selected cell upwards, moving a selected cell downwards, running a selected cell, terminating the kernel, restarting the kernel, and restarting the kernel and running all cells again.

    +

    The Code drop-down list contains the following options:

    +
    • Code: Write Python code.
    • MarkDown: Write MarkDown code, which is usually used for comments.
    • Raw NBConvert: conversion tool.
    • Heading: Quickly add a MarkDown title.
    +

    4

    +

    AI engine and Python version

    +

    Displays the AI engine and Python version corresponding to the current file. For details about all AI engines and Python versions supported by ModelArts, see Supported AI Engines.

    +

    5

    +

    Code cell

    +

    Each cell has two modes: command mode and editing mode.

    +

    The blue bar on the left indicates the command mode, and the green bar indicates the editing mode (in this mode, the cursor exists in the cell and you can write code). In command mode, you can press Enter or click the code box to enter the editing mode. In editing mode, you can press ESC or click the left area of the code box to enter the command mode.

    +

    +
    +
    +
    +

    Deleting a File or Folder

    To delete a file or folder from Jupyter Notebook, select the file or folder in the Files list and click the Delete button.

    +

    After the file or folder is deleted, click the Refresh button in the upper right corner to refresh the Jupyter page and clear the cache.

    +
    +
    Figure 5 Jupyter page
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0159.html b/modelarts/umn/modelarts_23_0159.html new file mode 100644 index 000000000..3d6346d92 --- /dev/null +++ b/modelarts/umn/modelarts_23_0159.html @@ -0,0 +1,18 @@ + + +

    Stopping or Deleting a Job

    +

    Stopping a Training Job

    In the training job list, click Stop in the Operation column for a training job in the Running state to stop a running training job.

    +

    If you have selected Save Training Parameters for a stopped training job, the job's parameter settings will be saved to the Job Parameter Mgmt page.

    +

    You cannot stop a training job that has stopped running, for example the job in the Successful or Running failed state. Only training jobs in the Running state can be stopped.

    +
    +

    Deleting a Training Job

    If an existing training job is no longer used, you can delete it.

    +

    For a training job in the Running, Successful, Running failed, Canceled, or Deploying state, click Delete in the Operation column to delete it.

    +

    If you have selected Save Training Parameters for a deleted training job, the job's parameter settings will be saved to the Job Parameter Mgmt page.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0162.html b/modelarts/umn/modelarts_23_0162.html new file mode 100644 index 000000000..cbd6f0631 --- /dev/null +++ b/modelarts/umn/modelarts_23_0162.html @@ -0,0 +1,35 @@ + + +

    TensorFlow-py36 General Template

    +

    Introduction

    AI engine: TensorFlow 1.8; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    +
    +

    Template Input

    The template input is the TensorFlow-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    +
    +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    +
    +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    +
    +

    Model Package Example

    Structure of the TensorFlow-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    ├── <<Custom Python package>>    (Optional) User's Python package, which can be directly referenced in the model inference code
    +    ├── saved_model.pb        (Mandatory) Protocol buffer file, which contains the diagram description of the model
    +    ├── variables             Mandatory for the main file of the *.pb model. The folder must be named variables and contains the weight deviation of the model.
    +        ├── variables.index                   Mandatory
    +        ├── variables.data-00000-of-00001     Mandatory
    +    ├──customize_service.py   (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0164.html b/modelarts/umn/modelarts_23_0164.html new file mode 100644 index 000000000..9510d4b98 --- /dev/null +++ b/modelarts/umn/modelarts_23_0164.html @@ -0,0 +1,33 @@ + + +

    MXNet-py36 General Template

    +

    Introduction

    AI engine: MXNet 1.2.1; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    +
    +

    Template Input

    The template input is the MXNet-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    +
    +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    +
    +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    +
    +

    Model Package Example

    Structure of the MXNet-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    ├── <<Custom Python package>>       (Optional) User's Python package, which can be directly referenced in the model inference code
    +    ├── resnet-50-symbol.json    (Mandatory) Model definition file, which contains the neural network description of the model
    +    ├── resnet-50-0000.params    (Mandatory) Model variable parameter file, which contains parameter and weight information
    +    ├──customize_service.py      (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0166.html b/modelarts/umn/modelarts_23_0166.html new file mode 100644 index 000000000..ddcfc4305 --- /dev/null +++ b/modelarts/umn/modelarts_23_0166.html @@ -0,0 +1,32 @@ + + +

    PyTorch-py36 General Template

    +

    Introduction

    AI engine: PyTorch 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    +
    +

    Template Input

    The template input is the PyTorch-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    +
    +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    +
    +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    +
    +

    Model Package Example

    Structure of the PyTorch-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +   ├── <<Custom Python package>>     (Optional) User's Python package, which can be directly referenced in the model inference code
    +   ├── resnet50.pth           (Mandatory) PyTorch model file, which contains variable and weight information
    +   ├──customize_service.py    (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0169.html b/modelarts/umn/modelarts_23_0169.html new file mode 100644 index 000000000..bb01e029a --- /dev/null +++ b/modelarts/umn/modelarts_23_0169.html @@ -0,0 +1,33 @@ + + +

    Caffe-CPU-py36 General Template

    +

    Introduction

    AI engine: CPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    +
    +

    Template Input

    The template input is the Caffe-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    +
    +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    +
    +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    +
    +

    Model Package Example

    Structure of the Caffe-based model package

    +
    When publishing the model, you only need to specify the model directory.
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    |── <<Custom Python package>>      (Optional) User's Python package, which can be directly referenced in the model inference code
    +    |── deploy.prototxt         (Mandatory) Caffe model file, which contains information such as the model network structure
    +    |── resnet.caffemodel       (Mandatory) Caffe model file, which contains variable and weight information
    +   |── customize_service.py    (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0170.html b/modelarts/umn/modelarts_23_0170.html new file mode 100644 index 000000000..99b6f1e19 --- /dev/null +++ b/modelarts/umn/modelarts_23_0170.html @@ -0,0 +1,33 @@ + + +

    Caffe-GPU-py36 General Template

    +

    Introduction

    AI engine: GPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    +
    +

    Template Input

    The template input is the Caffe-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    +
    +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    +
    +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    +
    +

    Model Package Example

    Structure of the Caffe-based model package

    +
    When publishing the model, you only need to specify the model directory.
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    |── <<Custom Python package>>      (Optional) User's Python package, which can be directly referenced in the model inference code
    +    |── deploy.prototxt         (Mandatory) Caffe model file, which contains information such as the model network structure
    +    |── resnet.caffemodel       (Mandatory) Caffe model file, which contains variable and weight information
    +   |── customize_service.py    (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0172.html b/modelarts/umn/modelarts_23_0172.html new file mode 100644 index 000000000..c4b94cd50 --- /dev/null +++ b/modelarts/umn/modelarts_23_0172.html @@ -0,0 +1,25 @@ + + + +

    Examples of Custom Scripts

    + +

    +
    + +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0173.html b/modelarts/umn/modelarts_23_0173.html new file mode 100644 index 000000000..a26e12d7b --- /dev/null +++ b/modelarts/umn/modelarts_23_0173.html @@ -0,0 +1,739 @@ + + +

    TensorFlow

    +

    TensorFlow has two types of APIs: Keras and tf. Keras and tf use different code for training and saving models, but the same code for inference.

    +

    Training a Model (Keras API)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    from keras.models import Sequential
    +model = Sequential()
    +from keras.layers import Dense
    +import tensorflow as tf
    +
    +# Import a training dataset.
    +mnist = tf.keras.datasets.mnist
    +(x_train, y_train),(x_test, y_test) = mnist.load_data()
    +x_train, x_test = x_train / 255.0, x_test / 255.0
    +
    +print(x_train.shape)
    +
    +from keras.layers import Dense
    +from keras.models import Sequential
    +import keras
    +from keras.layers import Dense, Activation, Flatten, Dropout
    +
    +# Define a model network.
    +model = Sequential()
    +model.add(Flatten(input_shape=(28,28)))
    +model.add(Dense(units=5120,activation='relu'))
    +model.add(Dropout(0.2))
    +
    +model.add(Dense(units=10, activation='softmax'))
    +
    +# Define an optimizer and loss functions.
    +model.compile(optimizer='adam',
    +              loss='sparse_categorical_crossentropy',
    +              metrics=['accuracy'])
    +
    +model.summary()
    +# Train the model.
    +model.fit(x_train, y_train, epochs=2)
    +# Evaluate the model.
    +model.evaluate(x_test, y_test)
    +
    +
    +
    +

    Saving a Model (Keras API)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    from keras import backend as K  
    +
    +# K.get_session().run(tf.global_variables_initializer())
    +
    +# Define the inputs and outputs of the prediction API.
    +# The key values of the inputs and outputs dictionaries are used as the index keys for the input and output tensors of the model.
    + # The input and output definitions of the model must match the custom inference script.
    +predict_signature = tf.saved_model.signature_def_utils.predict_signature_def(
    +    inputs={"images" : model.input},
    +    outputs={"scores" : model.output}
    +)
    +
    +# Define a save path.
    +builder = tf.saved_model.builder.SavedModelBuilder('./mnist_keras/')
    +
    +builder.add_meta_graph_and_variables(
    +
    +    sess = K.get_session(),
    +    # The tf.saved_model.tag_constants.SERVING tag needs to be defined for inference and deployment.
    +    tags=[tf.saved_model.tag_constants.SERVING],
    +    """
    +    signature_def_map: Only single items can exist, or the corresponding key needs to be defined as follows:
    +    tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
    +    """
    +    signature_def_map={
    +        tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
    +            predict_signature
    +    }
    +
    +)
    +builder.save()
    +
    +
    +
    +

    Training a Model (tf API)

      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    from __future__ import print_function
    +
    +import gzip
    +import os
    +import urllib
    +
    +import numpy
    +import tensorflow as tf
    +from six.moves import urllib
    +
    +# Training data is obtained from the Yann LeCun official website http://yann.lecun.com/exdb/mnist/.
    +SOURCE_URL = 'http://yann.lecun.com/exdb/mnist/'
    +TRAIN_IMAGES = 'train-images-idx3-ubyte.gz'
    +TRAIN_LABELS = 'train-labels-idx1-ubyte.gz'
    +TEST_IMAGES = 't10k-images-idx3-ubyte.gz'
    +TEST_LABELS = 't10k-labels-idx1-ubyte.gz'
    +VALIDATION_SIZE = 5000
    +
    +
    +def maybe_download(filename, work_directory):
    +    """Download the data from Yann's website, unless it's already here."""
    +    if not os.path.exists(work_directory):
    +        os.mkdir(work_directory)
    +    filepath = os.path.join(work_directory, filename)
    +    if not os.path.exists(filepath):
    +        filepath, _ = urllib.request.urlretrieve(SOURCE_URL + filename, filepath)
    +        statinfo = os.stat(filepath)
    +        print('Successfully downloaded %s %d bytes.' % (filename, statinfo.st_size))
    +    return filepath
    +
    +
    +def _read32(bytestream):
    +    dt = numpy.dtype(numpy.uint32).newbyteorder('>')
    +    return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]
    +
    +
    +def extract_images(filename):
    +    """Extract the images into a 4D uint8 numpy array [index, y, x, depth]."""
    +    print('Extracting %s' % filename)
    +    with gzip.open(filename) as bytestream:
    +        magic = _read32(bytestream)
    +        if magic != 2051:
    +            raise ValueError(
    +                'Invalid magic number %d in MNIST image file: %s' %
    +                (magic, filename))
    +        num_images = _read32(bytestream)
    +        rows = _read32(bytestream)
    +        cols = _read32(bytestream)
    +        buf = bytestream.read(rows * cols * num_images)
    +        data = numpy.frombuffer(buf, dtype=numpy.uint8)
    +        data = data.reshape(num_images, rows, cols, 1)
    +        return data
    +
    +
    +def dense_to_one_hot(labels_dense, num_classes=10):
    +    """Convert class labels from scalars to one-hot vectors."""
    +    num_labels = labels_dense.shape[0]
    +    index_offset = numpy.arange(num_labels) * num_classes
    +    labels_one_hot = numpy.zeros((num_labels, num_classes))
    +    labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
    +    return labels_one_hot
    +
    +
    +def extract_labels(filename, one_hot=False):
    +    """Extract the labels into a 1D uint8 numpy array [index]."""
    +    print('Extracting %s' % filename)
    +    with gzip.open(filename) as bytestream:
    +        magic = _read32(bytestream)
    +        if magic != 2049:
    +            raise ValueError(
    +                'Invalid magic number %d in MNIST label file: %s' %
    +                (magic, filename))
    +        num_items = _read32(bytestream)
    +        buf = bytestream.read(num_items)
    +        labels = numpy.frombuffer(buf, dtype=numpy.uint8)
    +        if one_hot:
    +            return dense_to_one_hot(labels)
    +        return labels
    +
    +
    +class DataSet(object):
    +    """Class encompassing test, validation and training MNIST data set."""
    +
    +    def __init__(self, images, labels, fake_data=False, one_hot=False):
    +        """Construct a DataSet. one_hot arg is used only if fake_data is true."""
    +
    +        if fake_data:
    +            self._num_examples = 10000
    +            self.one_hot = one_hot
    +        else:
    +            assert images.shape[0] == labels.shape[0], (
    +                    'images.shape: %s labels.shape: %s' % (images.shape,
    +                                                           labels.shape))
    +            self._num_examples = images.shape[0]
    +
    +            # Convert shape from [num examples, rows, columns, depth]
    +            # to [num examples, rows*columns] (assuming depth == 1)
    +            assert images.shape[3] == 1
    +            images = images.reshape(images.shape[0],
    +                                    images.shape[1] * images.shape[2])
    +            # Convert from [0, 255] -> [0.0, 1.0].
    +            images = images.astype(numpy.float32)
    +            images = numpy.multiply(images, 1.0 / 255.0)
    +        self._images = images
    +        self._labels = labels
    +        self._epochs_completed = 0
    +        self._index_in_epoch = 0
    +
    +    @property
    +    def images(self):
    +        return self._images
    +
    +    @property
    +    def labels(self):
    +        return self._labels
    +
    +    @property
    +    def num_examples(self):
    +        return self._num_examples
    +
    +    @property
    +    def epochs_completed(self):
    +        return self._epochs_completed
    +
    +    def next_batch(self, batch_size, fake_data=False):
    +        """Return the next `batch_size` examples from this data set."""
    +        if fake_data:
    +            fake_image = [1] * 784
    +            if self.one_hot:
    +                fake_label = [1] + [0] * 9
    +            else:
    +                fake_label = 0
    +            return [fake_image for _ in range(batch_size)], [
    +                fake_label for _ in range(batch_size)
    +            ]
    +        start = self._index_in_epoch
    +        self._index_in_epoch += batch_size
    +        if self._index_in_epoch > self._num_examples:
    +            # Finished epoch
    +            self._epochs_completed += 1
    +            # Shuffle the data
    +            perm = numpy.arange(self._num_examples)
    +            numpy.random.shuffle(perm)
    +            self._images = self._images[perm]
    +            self._labels = self._labels[perm]
    +            # Start next epoch
    +            start = 0
    +            self._index_in_epoch = batch_size
    +            assert batch_size <= self._num_examples
    +        end = self._index_in_epoch
    +        return self._images[start:end], self._labels[start:end]
    +
    +
    +def read_data_sets(train_dir, fake_data=False, one_hot=False):
    +    """Return training, validation and testing data sets."""
    +
    +    class DataSets(object):
    +        pass
    +
    +    data_sets = DataSets()
    +
    +    if fake_data:
    +        data_sets.train = DataSet([], [], fake_data=True, one_hot=one_hot)
    +        data_sets.validation = DataSet([], [], fake_data=True, one_hot=one_hot)
    +        data_sets.test = DataSet([], [], fake_data=True, one_hot=one_hot)
    +        return data_sets
    +
    +    local_file = maybe_download(TRAIN_IMAGES, train_dir)
    +    train_images = extract_images(local_file)
    +
    +    local_file = maybe_download(TRAIN_LABELS, train_dir)
    +    train_labels = extract_labels(local_file, one_hot=one_hot)
    +
    +    local_file = maybe_download(TEST_IMAGES, train_dir)
    +    test_images = extract_images(local_file)
    +
    +    local_file = maybe_download(TEST_LABELS, train_dir)
    +    test_labels = extract_labels(local_file, one_hot=one_hot)
    +
    +    validation_images = train_images[:VALIDATION_SIZE]
    +    validation_labels = train_labels[:VALIDATION_SIZE]
    +    train_images = train_images[VALIDATION_SIZE:]
    +    train_labels = train_labels[VALIDATION_SIZE:]
    +
    +    data_sets.train = DataSet(train_images, train_labels)
    +    data_sets.validation = DataSet(validation_images, validation_labels)
    +    data_sets.test = DataSet(test_images, test_labels)
    +    return data_sets
    +
    +training_iteration = 1000
    +
    +modelarts_example_path =  './modelarts-mnist-train-save-deploy-example'
    +
    +export_path = modelarts_example_path + '/model/'
    +data_path = './'
    +
    +print('Training model...')
    +mnist = read_data_sets(data_path, one_hot=True)
    +sess = tf.InteractiveSession()
    +serialized_tf_example = tf.placeholder(tf.string, name='tf_example')
    +feature_configs = {'x': tf.FixedLenFeature(shape=[784], dtype=tf.float32), }
    +tf_example = tf.parse_example(serialized_tf_example, feature_configs)
    +x = tf.identity(tf_example['x'], name='x')  # use tf.identity() to assign name
    +y_ = tf.placeholder('float', shape=[None, 10])
    +w = tf.Variable(tf.zeros([784, 10]))
    +b = tf.Variable(tf.zeros([10]))
    +sess.run(tf.global_variables_initializer())
    +y = tf.nn.softmax(tf.matmul(x, w) + b, name='y')
    +cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
    +train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
    +values, indices = tf.nn.top_k(y, 10)
    +table = tf.contrib.lookup.index_to_string_table_from_tensor(
    +    tf.constant([str(i) for i in range(10)]))
    +prediction_classes = table.lookup(tf.to_int64(indices))
    +for _ in range(training_iteration):
    +    batch = mnist.train.next_batch(50)
    +    train_step.run(feed_dict={x: batch[0], y_: batch[1]})
    +correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
    +accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
    +print('training accuracy %g' % sess.run(
    +    accuracy, feed_dict={
    +        x: mnist.test.images,
    +        y_: mnist.test.labels
    +    }))
    +print('Done training!')
    +
    +
    +
    +

    Saving a Model (tf API)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    # Export the model.
    +# The model needs to be saved using the saved_model API.
    +print('Exporting trained model to', export_path)
    +builder = tf.saved_model.builder.SavedModelBuilder(export_path)
    +
    +tensor_info_x = tf.saved_model.utils.build_tensor_info(x)
    +tensor_info_y = tf.saved_model.utils.build_tensor_info(y)
    +
    +# Define the inputs and outputs of the prediction API.
    +# The key values of the inputs and outputs dictionaries are used as the index keys for the input and output tensors of the model.
    + # The input and output definitions of the model must match the custom inference script.
    +prediction_signature = (
    +    tf.saved_model.signature_def_utils.build_signature_def(
    +        inputs={'images': tensor_info_x},
    +        outputs={'scores': tensor_info_y},
    +        method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))
    +
    +legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
    +builder.add_meta_graph_and_variables(
    +    # Set tag to serve/tf.saved_model.tag_constants.SERVING.
    +    sess, [tf.saved_model.tag_constants.SERVING],
    +    signature_def_map={
    +        'predict_images':
    +            prediction_signature,
    +    },
    +    legacy_init_op=legacy_init_op)
    +
    +builder.save()
    +
    +print('Done exporting!')
    +
    +
    +
    +

    Inference Code (Keras and tf APIs)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    from PIL import Image
    +import numpy as np
    +from model_service.tfserving_model_service import TfServingBaseService
    +
    +
    +class mnist_service(TfServingBaseService):
    +
    +    # Match the model input with the user's HTTPS API input during preprocessing.
    +    # The model input corresponding to the preceding training part is {"images":<array>}.
    +    def _preprocess(self, data):
    +
    +        preprocessed_data = {}
    +        images = []
    +        # Iterate the input data.
    +        for k, v in data.items():
    +            for file_name, file_content in v.items():
    +                image1 = Image.open(file_content)
    +                image1 = np.array(image1, dtype=np.float32)
    +                image1.resize((1,784))
    +                images.append(image1)
    +        # Return the numpy array.
    +        images = np.array(images,dtype=np.float32)
    +        # Perform batch processing on multiple input samples and ensure that the shape is the same as that inputted during training.
    +        images.resize((len(data), 784))
    +        preprocessed_data['images'] = images
    +        return preprocessed_data
    +
    +    # Processing logic of the inference for invoking the parent class.
    +
    +    # The output corresponding to model saving in the preceding training part is {"scores":<array>}.
    +    # Postprocess the HTTPS output.
    +    def _postprocess(self, data):
    +        infer_output = {"mnist_result": []}
    +        # Iterate the model output.
    +        for output_name, results in data.items():
    +            for result in results:
    +                infer_output["mnist_result"].append(result.index(max(result)))
    +        return infer_output
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0175.html b/modelarts/umn/modelarts_23_0175.html new file mode 100644 index 000000000..7d0d52a88 --- /dev/null +++ b/modelarts/umn/modelarts_23_0175.html @@ -0,0 +1,380 @@ + + +

    PyTorch

    +

    Training a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    from __future__ import print_function
    +import argparse
    +import torch
    +import torch.nn as nn
    +import torch.nn.functional as F
    +import torch.optim as optim
    +from torchvision import datasets, transforms
    +
    +# Define a network structure.
    +class Net(nn.Module):
    +    def __init__(self):
    +        super(Net, self).__init__()
    +# The second dimension of the input must be 784.
    +        self.hidden1 = nn.Linear(784, 5120, bias=False)
    +        self.output = nn.Linear(5120, 10, bias=False)
    +
    +    def forward(self, x):
    +        x = x.view(x.size()[0], -1)
    +        x = F.relu((self.hidden1(x)))
    +        x = F.dropout(x, 0.2)
    +        x = self.output(x)
    +        return F.log_softmax(x)
    +
    +def train(model, device, train_loader, optimizer, epoch):
    +    model.train()
    +    for batch_idx, (data, target) in enumerate(train_loader):
    +        data, target = data.to(device), target.to(device)
    +        optimizer.zero_grad()
    +        output = model(data)
    +        loss = F.cross_entropy(output, target)
    +        loss.backward()
    +        optimizer.step()
    +        if batch_idx % 10 == 0:
    +            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
    +                epoch, batch_idx * len(data), len(train_loader.dataset),
    +                       100. * batch_idx / len(train_loader), loss.item()))
    +
    +def test( model, device, test_loader):
    +    model.eval()
    +    test_loss = 0
    +    correct = 0
    +    with torch.no_grad():
    +        for data, target in test_loader:
    +            data, target = data.to(device), target.to(device)
    +            output = model(data)
    +            test_loss += F.nll_loss(output, target, reduction='sum').item()  # sum up batch loss
    +            pred = output.argmax(dim=1, keepdim=True)  # get the index of the max log-probability
    +            correct += pred.eq(target.view_as(pred)).sum().item()
    +
    +    test_loss /= len(test_loader.dataset)
    +
    +    print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
    +        test_loss, correct, len(test_loader.dataset),
    +        100. * correct / len(test_loader.dataset)))
    +
    +device = torch.device("cpu")
    +
    +batch_size=64
    +
    +kwargs={}
    +
    +train_loader = torch.utils.data.DataLoader(
    +    datasets.MNIST('.', train=True, download=True,
    +                   transform=transforms.Compose([
    +                       transforms.ToTensor()
    +                   ])),
    +    batch_size=batch_size, shuffle=True, **kwargs)
    +test_loader = torch.utils.data.DataLoader(
    +    datasets.MNIST('.', train=False, transform=transforms.Compose([
    +        transforms.ToTensor()
    +    ])),
    +    batch_size=1000, shuffle=True, **kwargs)
    +
    +model = Net().to(device)
    +optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)
    +optimizer = optim.Adam(model.parameters())
    +
    +for epoch in range(1, 2 + 1):
    +    train(model, device, train_loader, optimizer, epoch)
    +    test(model, device, test_loader)
    +
    +
    +
    +

    Saving a Model

    1
    +2
    # The model must be saved using state_dict and can be deployed remotely.
    +torch.save(model.state_dict(), "pytorch_mnist/mnist_mlp.pt")
    +
    +
    +
    +

    Inference Code

      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    from PIL import Image
    +import log
    +from model_service.pytorch_model_service import PTServingBaseService
    +import torch.nn.functional as F
    +
    +import torch.nn as nn
    +import torch
    +import json
    +
    +import numpy as np
    +
    +logger = log.getLogger(__name__)
    +
    +import torchvision.transforms as transforms
    +
    +# Define model preprocessing.
    +infer_transformation = transforms.Compose([
    +    transforms.Resize((28,28)),
    +    # Transform to a PyTorch tensor.
    +    transforms.ToTensor()
    +])
    +
    +
    +import os
    +
    +
    +class PTVisionService(PTServingBaseService):
    +
    +    def __init__(self, model_name, model_path):
    +        # Call the constructor of the parent class.
    +        super(PTVisionService, self).__init__(model_name, model_path)
    +        # Call the customized function to load the model.
    +        self.model = Mnist(model_path)
    +         # Load tags.
    +        self.label = [0,1,2,3,4,5,6,7,8,9]
    +        # Labels can also be loaded by label file.
    +        # Store the label.json file in the model directory. The following information is read:
    +        dir_path = os.path.dirname(os.path.realpath(self.model_path))
    +        with open(os.path.join(dir_path, 'label.json')) as f:
    +            self.label = json.load(f)
    +
    +
    +    def _preprocess(self, data):
    +
    +        preprocessed_data = {}
    +        for k, v in data.items():
    +            input_batch = []
    +            for file_name, file_content in v.items():
    +                with Image.open(file_content) as image1:
    +                    # Gray processing
    +                    image1 = image1.convert("L")
    +                    if torch.cuda.is_available():
    +                        input_batch.append(infer_transformation(image1).cuda())
    +                    else:
    +                        input_batch.append(infer_transformation(image1))
    +            input_batch_var = torch.autograd.Variable(torch.stack(input_batch, dim=0), volatile=True)
    +            print(input_batch_var.shape)
    +            preprocessed_data[k] = input_batch_var
    +
    +        return preprocessed_data
    +
    +    def _postprocess(self, data):
    +        results = []
    +        for k, v in data.items():
    +            result = torch.argmax(v[0])
    +            result = {k: self.label[result]}
    +            results.append(result)
    +        return results
    +
    +class Net(nn.Module):
    +    def __init__(self):
    +        super(Net, self).__init__()
    +        self.hidden1 = nn.Linear(784, 5120, bias=False)
    +        self.output = nn.Linear(5120, 10, bias=False)
    +
    +    def forward(self, x):
    +        x = x.view(x.size()[0], -1)
    +        x = F.relu((self.hidden1(x)))
    +        x = F.dropout(x, 0.2)
    +        x = self.output(x)
    +        return F.log_softmax(x)
    +
    +
    +
    +def Mnist(model_path, **kwargs):
    +    # Generate a network.
    +    model = Net()
    +    # Load the model.
    +    if torch.cuda.is_available():
    +        device = torch.device('cuda')
    +        model.load_state_dict(torch.load(model_path, map_location="cuda:0"))
    +    else:
    +        device = torch.device('cpu')
    +        model.load_state_dict(torch.load(model_path, map_location=device))
    +    # CPU or GPU mapping
    +    model.to(device)
    +    # Declare an inference mode.
    +    model.eval()
    +
    +    return model
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0176.html b/modelarts/umn/modelarts_23_0176.html new file mode 100644 index 000000000..ed2bf77a8 --- /dev/null +++ b/modelarts/umn/modelarts_23_0176.html @@ -0,0 +1,763 @@ + + +

    Caffe

    +

    Training and Saving a Model

    lenet_train_test.prototxt file

    +
      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    name: "LeNet"
    +layer {
    +  name: "mnist"
    +  type: "Data"
    +  top: "data"
    +  top: "label"
    +  include {
    +    phase: TRAIN
    +  }
    +  transform_param {
    +    scale: 0.00390625
    +  }
    +  data_param {
    +    source: "examples/mnist/mnist_train_lmdb"
    +    batch_size: 64
    +    backend: LMDB
    +  }
    +}
    +layer {
    +  name: "mnist"
    +  type: "Data"
    +  top: "data"
    +  top: "label"
    +  include {
    +    phase: TEST
    +  }
    +  transform_param {
    +    scale: 0.00390625
    +  }
    +  data_param {
    +    source: "examples/mnist/mnist_test_lmdb"
    +    batch_size: 100
    +    backend: LMDB
    +  }
    +}
    +layer {
    +  name: "conv1"
    +  type: "Convolution"
    +  bottom: "data"
    +  top: "conv1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 20
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool1"
    +  type: "Pooling"
    +  bottom: "conv1"
    +  top: "pool1"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "conv2"
    +  type: "Convolution"
    +  bottom: "pool1"
    +  top: "conv2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 50
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool2"
    +  type: "Pooling"
    +  bottom: "conv2"
    +  top: "pool2"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "ip1"
    +  type: "InnerProduct"
    +  bottom: "pool2"
    +  top: "ip1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 500
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "relu1"
    +  type: "ReLU"
    +  bottom: "ip1"
    +  top: "ip1"
    +}
    +layer {
    +  name: "ip2"
    +  type: "InnerProduct"
    +  bottom: "ip1"
    +  top: "ip2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 10
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "accuracy"
    +  type: "Accuracy"
    +  bottom: "ip2"
    +  bottom: "label"
    +  top: "accuracy"
    +  include {
    +    phase: TEST
    +  }
    +}
    +layer {
    +  name: "loss"
    +  type: "SoftmaxWithLoss"
    +  bottom: "ip2"
    +  bottom: "label"
    +  top: "loss"
    +}
    +
    +
    +

    lenet_solver.prototxt file

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    # The train/test net protocol buffer definition
    +net: "examples/mnist/lenet_train_test.prototxt"
    +# test_iter specifies how many forward passes the test should carry out.
    +# In the case of MNIST, we have test batch size 100 and 100 test iterations,
    +# covering the full 10,000 testing images.
    +test_iter: 100
    +# Carry out testing every 500 training iterations.
    +test_interval: 500
    +# The base learning rate, momentum and the weight decay of the network.
    +base_lr: 0.01
    +momentum: 0.9
    +weight_decay: 0.0005
    +# The learning rate policy
    +lr_policy: "inv"
    +gamma: 0.0001
    +power: 0.75
    +# Display every 100 iterations
    +display: 100
    +# The maximum number of iterations
    +max_iter: 1000
    +# snapshot intermediate results
    +snapshot: 5000
    +snapshot_prefix: "examples/mnist/lenet"
    +# solver mode: CPU or GPU
    +solver_mode: CPU
    +
    +
    +

    Train the model.

    +
    ./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
    +

    The caffemodel file is generated after model training. Rewrite the lenet_train_test.prototxt file to the lenet_deploy.prototxt file used for deployment by modifying input and output layers.

    +
      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    name: "LeNet"
    +layer {
    +  name: "data"
    +  type: "Input"
    +  top: "data"
    +  input_param { shape: { dim: 1 dim: 1  dim: 28 dim: 28 } } 
    +}
    +layer {
    +  name: "conv1"
    +  type: "Convolution"
    +  bottom: "data"
    +  top: "conv1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 20
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool1"
    +  type: "Pooling"
    +  bottom: "conv1"
    +  top: "pool1"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "conv2"
    +  type: "Convolution"
    +  bottom: "pool1"
    +  top: "conv2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 50
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool2"
    +  type: "Pooling"
    +  bottom: "conv2"
    +  top: "pool2"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "ip1"
    +  type: "InnerProduct"
    +  bottom: "pool2"
    +  top: "ip1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 500
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "relu1"
    +  type: "ReLU"
    +  bottom: "ip1"
    +  top: "ip1"
    +}
    +layer {
    +  name: "ip2"
    +  type: "InnerProduct"
    +  bottom: "ip1"
    +  top: "ip2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 10
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "prob"
    +  type: "Softmax"
    +  bottom: "ip2"
    +  top: "prob"
    +}
    +
    +
    +
    +

    Inference Code

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    from model_service.caffe_model_service import CaffeBaseService
    +
    +import numpy as np
    +
    +import os, json
    +
    +import caffe
    +
    +from PIL import Image
    +
    +
    +class LenetService(CaffeBaseService):
    +
    +    def __init__(self, model_name, model_path):
    +        # Call the inference method of the parent class.
    +        super(LenetService, self).__init__(model_name, model_path)
    +
    +        # Configure preprocessing information.
    +        transformer = caffe.io.Transformer({'data': self.net.blobs['data'].data.shape})
    +        # Transform to NCHW.
    +        transformer.set_transpose('data', (2, 0, 1)) 
    +        # Perform normalization.
    +        transformer.set_raw_scale('data', 255.0)
    +
    +        # If the batch size is set to 1, inference is supported for only one image.
    +        self.net.blobs['data'].reshape(1, 1, 28, 28)
    +        self.transformer = transformer
    +
    +       # Define the class labels.
    +        self.label = [0,1,2,3,4,5,6,7,8,9]
    +
    +
    +    def _preprocess(self, data):
    +
    +        for k, v in data.items():
    +            for file_name, file_content in v.items():
    +                im = caffe.io.load_image(file_content, color=False)
    +               # Pre-process the images.
    +                self.net.blobs['data'].data[...] = self.transformer.preprocess('data', im)
    +
    +                return
    +
    +    def _postprocess(self, data):
    +
    +        data = data['prob'][0, :]
    +        predicted = np.argmax(data)
    +        predicted = {"predicted" : str(predicted) }
    +
    +        return predicted
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0177.html b/modelarts/umn/modelarts_23_0177.html new file mode 100644 index 000000000..5d50c501b --- /dev/null +++ b/modelarts/umn/modelarts_23_0177.html @@ -0,0 +1,104 @@ + + +

    XGBoost

    +

    Training and Saving a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    import pandas as pd
    +import xgboost as xgb
    +from sklearn.model_selection import train_test_split
    +
    +# Prepare training data and setting parameters
    +iris = pd.read_csv('/data/iris.csv')
    +X = iris.drop(['virginica'],axis=1)
    +y = iris[['virginica']]
    +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234565)
    +params = {
    +    'booster': 'gbtree',
    +    'objective': 'multi:softmax',
    +    'num_class': 3,
    +    'gamma': 0.1,
    +    'max_depth': 6,
    +    'lambda': 2,
    +    'subsample': 0.7,
    +    'colsample_bytree': 0.7,
    +    'min_child_weight': 3,
    +    'silent': 1,
    +    'eta': 0.1,
    +    'seed': 1000,
    +    'nthread': 4,
    +}
    +plst = params.items()
    +dtrain = xgb.DMatrix(X_train, y_train)
    +num_rounds = 500
    +model = xgb.train(plst, dtrain, num_rounds)
    +model.save_model('/tmp/xgboost.m')
    +
    +
    +

    After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publishing. For details about the definition method, see Model Package Specifications.

    +
    +

    Inference Code

    # coding:utf-8
    +import collections
    +import json
    +import xgboost as xgb
    +from model_service.python_model_service import XgSklServingBaseService
    +class user_Service(XgSklServingBaseService):
    +
    +    # request data preprocess
    +    def _preprocess(self, data):
    +        list_data = []
    +        json_data = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        for element in json_data["data"]["req_data"]:
    +            array = []
    +            for each in element:
    +                array.append(element[each])
    +                list_data.append(array)
    +        return list_data
    +
    +    #   predict
    +    def _inference(self, data):
    +        xg_model = xgb.Booster(model_file=self.model_path)
    +        pre_data = xgb.DMatrix(data)
    +        pre_result = xg_model.predict(pre_data)
    +        pre_result = pre_result.tolist()
    +        return pre_result
    +
    +    # predict result process
    +    def _postprocess(self,data):
    +        resp_data = []
    +        for element in data:
    +            resp_data.append({"predictresult": element})
    +        return resp_data
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0178.html b/modelarts/umn/modelarts_23_0178.html new file mode 100644 index 000000000..7dc8c0d80 --- /dev/null +++ b/modelarts/umn/modelarts_23_0178.html @@ -0,0 +1,151 @@ + + +

    PySpark

    +

    Training and Saving a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    from pyspark.ml import Pipeline, PipelineModel
    +from pyspark.ml.linalg import Vectors
    +from pyspark.ml.classification import LogisticRegression
    +
    +# Prepare training data using tuples.
    +# Prepare training data from a list of (label, features) tuples.
    +training = spark.createDataFrame([
    +    (1.0, Vectors.dense([0.0, 1.1, 0.1])),
    +    (0.0, Vectors.dense([2.0, 1.0, -1.0])),
    +    (0.0, Vectors.dense([2.0, 1.3, 1.0])),
    +    (1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])
    +
    +# Create a training instance. The logistic regression algorithm is used for training.
    +# Create a LogisticRegression instance. This instance is an Estimator.
    +lr = LogisticRegression(maxIter=10, regParam=0.01)
    +
    +# Train the logistic regression model.
    +# Learn a LogisticRegression model. This uses the parameters stored in lr.
    +model = lr.fit(training)
    +
    +# Save the model to a local directory.
    +# Save model to local path.
    +model.save("/tmp/spark_model")
    +
    +
    +

    After the model is saved, it must be uploaded to the OBS directory before being published. The config.json configuration and customize_service.py must be contained during publishing. For details about the definition method, see Model Package Specifications.

    +
    +

    Inference Code

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    # coding:utf-8
    +import collections
    +import json
    +import traceback
    +
    +import model_service.log as log
    +from model_service.spark_model_service import SparkServingBaseService
    +from pyspark.ml.classification import LogisticRegression
    +
    +logger = log.getLogger(__name__)
    +
    +
    +class user_Service(SparkServingBaseService):
    +    # Pre-process data.
    +    def _preprocess(self, data):
    +        logger.info("Begin to handle data from user data...")
    +        # Read data.
    +        req_json = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        try:
    +            # Convert data to the spark dataframe format.
    +            predict_spdf = self.spark.createDataFrame(pd.DataFrame(req_json["data"]["req_data"]))
    +        except Exception as e:
    +            logger.error("check your request data does meet the requirements ?")
    +            logger.error(traceback.format_exc())
    +            raise Exception("check your request data does meet the requirements ?")
    +        return predict_spdf
    +
    +    # Perform model inference.
    +    def _inference(self, data):
    +        try:
    +             # Load a model file.
    +            predict_model = LogisticRegression.load(self.model_path)
    +            # Perform data inference.
    +            prediction_result = predict_model.transform(data)
    +	except Exception as e:
    +            logger.error(traceback.format_exc())
    +            raise Exception("Unable to load model and do dataframe transformation.")
    +        return prediction_result
    +
    +    # Post-process data.
    +    def _postprocess(self, pre_data):
    +        logger.info("Get new data to respond...")
    +        predict_str = pre_data.toPandas().to_json(orient='records')
    +        predict_result = json.loads(predict_str)
    +        return predict_result
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0179.html b/modelarts/umn/modelarts_23_0179.html new file mode 100644 index 000000000..42fd5caaf --- /dev/null +++ b/modelarts/umn/modelarts_23_0179.html @@ -0,0 +1,107 @@ + + +

    Scikit Learn

    +

    Training and Saving a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    import json
    +import pandas as pd
    +from sklearn.datasets import load_iris
    +from sklearn.model_selection import train_test_split
    +from sklearn.linear_model import LogisticRegression
    +from sklearn.externals import joblib
    +iris = pd.read_csv('/data/iris.csv')
    +X = iris.drop(['virginica'],axis=1)
    +y = iris[['virginica']]
    +# Create a LogisticRegression instance and train model
    +logisticRegression = LogisticRegression(C=1000.0, random_state=0)
    +logisticRegression.fit(X,y)
    +# Save model to local path
    +joblib.dump(logisticRegression, '/tmp/sklearn.m')
    +
    +
    +

    After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publishing. For details about the definition method, see Model Package Specifications.

    +
    +

    Inference Code

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    # coding:utf-8
    +import collections
    +import json
    +from sklearn.externals import joblib
    +from model_service.python_model_service import XgSklServingBaseService
    +
    +class user_Service(XgSklServingBaseService):
    +
    +    # request data preprocess
    +    def _preprocess(self, data):
    +        list_data = []
    +        json_data = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        for element in json_data["data"]["req_data"]:
    +            array = []
    +            for each in element:
    +                array.append(element[each])
    +                list_data.append(array)
    +        return list_data
    +
    +    # predict
    +    def _inference(self, data):
    +        sk_model = joblib.load(self.model_path)
    +        pre_result = sk_model.predict(data)
    +        pre_result = pre_result.tolist()
    +        return pre_result
    +
    +    # predict result process
    +    def _postprocess(self,data):
    +        resp_data = []
    +        for element in data:
    +            resp_data.append({"predictresult": element})
    +        return resp_data
    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0180.html b/modelarts/umn/modelarts_23_0180.html new file mode 100644 index 000000000..59d6bae99 --- /dev/null +++ b/modelarts/umn/modelarts_23_0180.html @@ -0,0 +1,22 @@ + + +

    Team Labeling

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0181.html b/modelarts/umn/modelarts_23_0181.html new file mode 100644 index 000000000..abc7eafc3 --- /dev/null +++ b/modelarts/umn/modelarts_23_0181.html @@ -0,0 +1,21 @@ + + +

    Introduction to Team Labeling

    +

    Generally, a small data labeling task can be completed by an individual. However, team work is required to label a large dataset. ModelArts provides the team labeling function. A labeling team can be formed to manage labeling for the same dataset.

    +

    The team labeling function supports only datasets for image classification, object detection, text classification, named entity recognition, text triplet, and speech paragraph labeling.

    +
    +

    How to Enable Team Labeling

    • When creating a dataset, enable Team Labeling and select a team or task manager.
      Figure 1 Enabling during dataset creation
      +
    • If team labeling is not enabled for a dataset that has been created, create a team labeling task to enable team labeling. For details about how to create a team labeling task, see Creating Team Labeling Tasks.
      Figure 2 Creating a team labeling task in a dataset list
      +
      Figure 3 Creating a team labeling task
      +
      Figure 4 Creating a team labeling task on the dataset details page
      +
    +
    + +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0182.html b/modelarts/umn/modelarts_23_0182.html new file mode 100644 index 000000000..14773ffc4 --- /dev/null +++ b/modelarts/umn/modelarts_23_0182.html @@ -0,0 +1,19 @@ + + +

    Team Management

    +

    Team labeling is managed in a unit of teams. To enable team labeling for a dataset, a team must be specified. Multiple members can be added to a team.

    +

    Background

    • An account can have a maximum of 10 teams.
    • An account must have at least one team to enable team labeling for datasets. If the account has no team, add a team by referring to Adding a Team.
    +
    +

    Adding a Team

    1. In the left navigation pane of the ModelArts management console, choose Data Management > Labeling Teams. The Labeling Teams page is displayed.
    2. On the Labeling Teams page, click Add Team.
    3. In the displayed Add Team dialog box, enter a team name and description and click OK. The labeling team is added.

      The new team is displayed on the Labeling Teams page. You can view team details in the right pane. There is no member in the new team. Add members to the new team by referring to Adding a Member.

      +
    +
    +

    Deleting a Team

    You can delete a team that is no longer used.

    +

    On the Labeling Teams page, select the target team and click Delete. In the dialog box that is displayed, click OK.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0183.html b/modelarts/umn/modelarts_23_0183.html new file mode 100644 index 000000000..32c3fcc25 --- /dev/null +++ b/modelarts/umn/modelarts_23_0183.html @@ -0,0 +1,28 @@ + + +

    Member Management

    +

    There is no member in a new team. You need to add members who will participate in a team labeling task.

    +

    A maximum of 100 members can be added to a team. If there are more than 100 members, add them to different teams for better management.

    +

    Adding a Member

    1. In the left navigation pane of the ModelArts management console, choose Data Management > Labeling Teams. The Labeling Teams page is displayed.
    2. On the Labeling Teams page, select a team from the team list on the left and click a team name. The team details are displayed in the right pane.
    3. In the Team Details area, click Add Member.
    4. In the displayed Add Member dialog box, enter an email address, description, and a role for a member and click OK.

      An email address uniquely identifies a team member. Different members cannot use the same email address. The email address you enter will be recorded and saved in ModelArts. It is used only for ModelArts team labeling. After a member is deleted, the email address will also be deleted.

      +
      Possible values of Role are Labeler, Reviewer, and Team Manager. Only one Team Manager can be set.
      Figure 1 Adding a member
      +
      +
      Figure 2 Adding a member
      +

      Information about the added member is displayed in the Team Details area.

      +
    +
    +

    Modifying Member Information

    You can modify member information if it is changed.

    +
    1. In the Team Details area, select the desired member.
    2. In the row containing the desired member, click Modify in the Operation column. In the displayed dialog box, modify the description or role.

      The email address of a member cannot be changed. To change the email address of a member, delete the member, and set a new email address when adding a member.

      +

      Possible values of Role are Labeler, Reviewer, and Team Manager. Only one Team Manager can be set.

      +
    +
    +

    Deleting Members

    • Deleting a single member

      In the Team Details area, select the desired member, and click Delete in the Operation column. In the dialog box that is displayed, click OK.

      +
    • Batch Deletion

      In the Team Details area, select members to be deleted and click Delete. In the dialog box that is displayed, click OK.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0186.html b/modelarts/umn/modelarts_23_0186.html new file mode 100644 index 000000000..dbe909cf4 --- /dev/null +++ b/modelarts/umn/modelarts_23_0186.html @@ -0,0 +1,16 @@ + + +

    Monitoring

    +

    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0187.html b/modelarts/umn/modelarts_23_0187.html new file mode 100644 index 000000000..00cfa25c4 --- /dev/null +++ b/modelarts/umn/modelarts_23_0187.html @@ -0,0 +1,193 @@ + + +

    ModelArts Metrics

    +

    Description

    The cloud service platform provides Cloud Eye to help you better understand the status of your ModelArts real-time services and models. You can use Cloud Eye to automatically monitor your ModelArts real-time services and models in real time and manage alarms and notifications, so that you can keep track of performance metrics of ModelArts and models.

    +
    +

    Namespace

    SYS.ModelArts

    +
    +

    Monitoring Metrics

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ModelArts metrics

    Metric ID

    +

    Metric Name

    +

    Meaning

    +

    Value Range

    +

    Measurement Object & Dimension

    +

    Monitoring Interval

    +

    cpu_usage

    +

    CPU Usage

    +

    CPU usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    mem_usage

    +

    Memory Usage

    +

    Memory usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    gpu_util

    +

    GPU Usage

    +

    GPU usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    gpu_mem_usage

    +

    GPU Memory Usage

    +

    GPU memory usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    successfully_called_times

    +

    Number of Successful Calls

    +

    Times that ModelArts has been successfully called

    +

    Unit: Times/min

    +

    ≥Count/min

    +

    Measurement object:

    +

    ModelArts models

    +

    ModelArts real-time services

    +

    Dimension:

    +

    model_id,

    +

    service_id

    +

    1 minute

    +

    failed_called_times

    +

    Number of Failed Calls

    +

    Times that ModelArts failed to be called

    +

    Unit: Times/min

    +

    ≥Count/min

    +

    Measurement object:

    +

    ModelArts models

    +

    ModelArts real-time services

    +

    Dimension:

    +

    model_id,

    +

    service_id

    +

    1 minute

    +

    total_called_times

    +

    API Calls

    +

    Times that ModelArts is called

    +

    Unit: Times/min

    +

    ≥Count/min

    +

    Measurement object:

    +

    ModelArts models

    +

    ModelArts real-time services

    +

    Dimension:

    +

    model_id,

    +

    service_id

    +

    1 minute

    +

    If a measurement object has multiple measurement dimensions, all the measurement dimensions are mandatory when you use an API to query monitoring metrics.

    +
    • The following provides an example of using the multi-dimensional dim to query a single monitoring metric: dim.0=service_id,530cd6b0-86d7-4818-837f-935f6a27414d&dim.1="model_id,3773b058-5b4f-4366-9035-9bbd9964714a
    • The following provides an example of using the multi-dimensional dim to query monitoring metrics in batches:

      "dimensions": [

      +

      {

      +

      "name": "service_id",

      +

      "value": "530cd6b0-86d7-4818-837f-935f6a27414d"

      +

      }

      +

      {

      +

      "name": "model_id",

      +

      "value": "3773b058-5b4f-4366-9035-9bbd9964714a"

      +

      }

      +

      ],

      +
    +
    +
    +
    +

    Dimensions

    +
    + + + + + + + + + + +
    Table 2 Dimension description

    Key

    +

    Value

    +

    service_id

    +

    Real-time service ID

    +

    model_id

    +

    Model ID

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0188.html b/modelarts/umn/modelarts_23_0188.html new file mode 100644 index 000000000..e01ecdd62 --- /dev/null +++ b/modelarts/umn/modelarts_23_0188.html @@ -0,0 +1,17 @@ + + +

    Setting Alarm Rules

    +

    Scenario

    Setting alarm rules allows you to customize the monitored objects and notification policies so that you can know the status of ModelArts real-time services and models in a timely manner.

    +

    An alarm rule includes the alarm rule name, monitored object, metric, threshold, monitoring interval, and whether to send a notification. This section describes how to set alarm rules for ModelArts services and models.

    +
    +

    Prerequisites

    You have created an ModelArts real-time service.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click Service List. Under Management & Deployment, click Cloud Eye.
    3. In the left navigation pane, choose Cloud Service Monitoring > ModelArts.
    4. Select a real-time service for which you want to create an alarm rule and click Create Alarm Rule in the Operation column.
    5. On the Create Alarm Rule page, create an alarm rule for ModelArts real-time services and models as prompted.
    6. After the setting is complete, click Create. When an alarm that meets the rule is generated, the system automatically sends a notification.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0189.html b/modelarts/umn/modelarts_23_0189.html new file mode 100644 index 000000000..912e25368 --- /dev/null +++ b/modelarts/umn/modelarts_23_0189.html @@ -0,0 +1,21 @@ + + +

    Viewing Monitoring Metrics

    +

    Scenario

    Cloud Eye on the cloud service platform monitors the status of ModelArts real-time services and model loads. You can obtain the monitoring metrics of each ModelArts real-time service and model loads on the management console. Monitored data requires a period of time for transmission and display. The status of ModelArts displayed on the Cloud Eye console is usually the status obtained 5 to 10 minutes before. You can view the monitored data of a newly created real-time service 5 to 10 minutes later.

    +
    +

    Prerequisites

    • The ModelArts real-time service is running properly.
    +
    • Alarm rules have been configured on the Cloud Eye page. For details, see Setting Alarm Rules.
    • The real-time service has been properly running for at least 10 minutes.
    • The monitoring data and graphics are available for a new real-time service after the service runs for at least 10 minutes.
    +
    • Cloud Eye does not display the metrics of a faulty or deleted real-time service. The monitoring metrics can be viewed after the real-time service starts or recovers.
    +

    Monitoring data is unavailable without alarm rules configured on Cloud Eye. For details, see Setting Alarm Rules.

    +
    +

    Procedure

    1. Log in to the management console.
    2. Click Service List. Under Management & Deployment, click Cloud Eye.
    3. In the left navigation pane, choose Cloud Service Monitoring > ModelArts.
    4. View monitoring graphs.
      • Viewing monitoring graphs of the real-time service: Click View Graph in the Operation column.
      • Viewing monitoring graphs of the model loads: Click next to the target real-time service, and select View Graph from the drop-down list for model loads in the Operation column.
      +
    5. In the monitoring area, you can select a duration to view the monitoring data.

      You can view the monitoring data in the recent 1 hour, 3 hours, or 12 hours. To view the monitoring curve of a longer time range, click to enlarge the graph.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0204.html b/modelarts/umn/modelarts_23_0204.html new file mode 100644 index 000000000..cfd52a125 --- /dev/null +++ b/modelarts/umn/modelarts_23_0204.html @@ -0,0 +1,21 @@ + + +

    Importing a Model

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0205.html b/modelarts/umn/modelarts_23_0205.html new file mode 100644 index 000000000..8c0bcb72c --- /dev/null +++ b/modelarts/umn/modelarts_23_0205.html @@ -0,0 +1,84 @@ + + +

    Importing a Meta Model from a Template

    +

    Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import models without compiling the config.json configuration file.

    +

    Background

    • Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import the model. For details about the template, see Introduction to Model Templates.
    • For details about the supported templates, see Supported Templates. For details about the input and output modes of each template, see Supported Input and Output Modes.
    • Ensure that you have uploaded the model to OBS based on the model package specifications of the corresponding template.
    • The OBS directory you use and ModelArts are in the same region.
    +
    +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 1. +
        + + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        +
        +
      2. Select the meta model source and set related parameters. Set Meta Model Source based on your application scenario. For details, see Methods of Importing a Model.If Meta Model Source is set to Template, set other parameters by referring to Table 2. +
        + + + + + + + + + + + + + + + + +
        Table 2 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Model Template

        +

        Select a template from the existing ModelArts template list .

        +

        ModelArts also provides three filter criteria: Type, Engine, and Environment, helping you quickly find the desired template. If the three filter criteria cannot meet your requirements, you can enter keywords to search for the target template. For details about the supported templates, see Supported Templates.

        +

        Model Directory

        +

        OBS path where a model is saved. Select an OBS path for storing the model based on the input requirements of the selected model template.

        +
        NOTE:

        If a training job is executed for multiple times, different version directories are generated, such as V001 and V002, and the generated models are stored in the model folder in different version directories. When selecting model files, specify the model folder in the corresponding version directory.

        +
        +

        Input and Output Mode

        +

        If the default input and output mode of the selected template can be overwritten, you can select an input and output mode based on the model function or application scenario. Input and Output Mode is an abstract of the API (apis) in config.json. It describes the interface provided by the model for external inference. An input and output mode describes one or more APIs, and corresponds to a template.

        +

        For details about the supported input and output modes, see Supported Input and Output Modes.

        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +
        +
        +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    +
    +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0206.html b/modelarts/umn/modelarts_23_0206.html new file mode 100644 index 000000000..f4c5d3a2a --- /dev/null +++ b/modelarts/umn/modelarts_23_0206.html @@ -0,0 +1,83 @@ + + +

    Importing a Meta Model from a Container Image

    +

    For AI engines that are not supported by ModelArts, you can import the model you compile to ModelArts from custom images.

    +

    Prerequisites

    • For details about the specifications and description of custom images, see Importing a Model Using a Custom Image.
    • The configuration must be provided for a model that you have developed and trained. The file must comply with ModelArts specifications. For details about the specifications, see Specifications for Compiling the Model Configuration File. After the compilation is complete, upload the file to the specified OBS directory.
    • The OBS directory you use and ModelArts are in the same region.
    +
    +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 1. +
        + + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        +
        +
      2. Select the meta model source and set related parameters. Meta Model Source has four options based on the scenario. For details, see Methods of Importing a Model. Set Meta Model Source to Container image. For details about the parameters, see Table 2. +
        + + + + + + + + + + + + + + + + +
        Table 2 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Container Image Path

        +

        Click to import the model image from the container image. The model is of the Image type, and you do not need to use swr_location in the configuration file to specify the image location.

        +

        For details about how to create a custom image, see Introduction to Custom Images.

        +
        NOTE:

        The model image you select will be shared with the administrator, so ensure you have the permission to share the image (images shared with other accounts are unsupported). When you deploy a service, ModelArts deploys the image as an inference service. Ensure that your image can be properly started and provide an inference interface.

        +
        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +

        Configuration File

        +

        The Import from OBS and Edit online methods are available. The configuration file must comply with certain specifications in Model Package Specifications. If you select Import from OBS, you need to specify the OBS path for storing the configuration file. You can enable View Configuration File to view or edit the configuration file online.

        +

        Parameter Configuration

        +

        Click on the right to view the input and output parameters of the model.

        +
        +
        +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    +
    +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0207.html b/modelarts/umn/modelarts_23_0207.html new file mode 100644 index 000000000..f3d4d28f9 --- /dev/null +++ b/modelarts/umn/modelarts_23_0207.html @@ -0,0 +1,176 @@ + + +

    Importing a Meta Model from OBS

    +

    In scenarios where frequently-used frameworks are used for model development and training, you can import the model to ModelArts for unified management.

    +

    Prerequisites

    • The model has been developed and trained, and the type and version of the AI engine it uses is supported by ModelArts. Common engines supported by ModelArts and their runtime ranges are described as follows: +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Supported AI engines and their runtime

      Engine

      +

      Runtime

      +

      Precautions

      +

      TensorFlow

      +

      python3.6

      +

      python2.7

      +

      tf1.13-python2.7-gpu

      +

      tf1.13-python2.7-cpu

      +

      tf1.13-python3.6-gpu

      +

      tf1.13-python3.6-cpu

      +

      tf1.13-python3.7-cpu

      +

      tf1.13-python3.7-gpu

      +

      tf2.1-python3.7

      +

      tf1.15-aarch64-c76-d910

      +
      • TensorFlow 1.8.0 is used in python2.7 and python3.6.
      • python3.6, python2.7, and tf2.1-python3.7 indicate that the model can run on both CPUs and GPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs.
      • The default runtime is python2.7.
      +

      MXNet

      +

      python3.7

      +

      python3.6

      +
      • MXNet 1.2.1 is used in python3.6 and python3.7.
      • python3.6 and python3.7 indicate that the model can run on both CPUs and GPUs.
      • The default runtime is python3.6.
      +

      Caffe

      +

      python3.6

      +

      python3.7

      +

      python3.6-gpu

      +

      python3.7-gpu

      +

      python3.6-cpu

      +

      python3.7-cpu

      +
      • Caffe 1.0.0 is used in python3.6, python3.7, python3.6-gpu, python3.7-gpu, python3.6-cpu, and python3.7-cpu.
      • python 3.6 and python3.7 can only be used to run models on CPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs. Use the runtime of python3.6-gpu, python3.7-gpu, python3.6-cpu, or python3.7-cpu.
      • The default runtime is python3.6.
      +

      Spark_MLlib

      +

      python3.6

      +
      • Spark_MLlib 2.3.2 is used in python3.6.
      • python 3.6 can only be used to run models on CPUs.
      +

      Scikit_Learn

      +

      python3.6

      +
      • Scikit_Learn 0.18.1 is used in python3.6.
      • python 3.6 can only be used to run models on CPUs.
      +

      XGBoost

      +

      python3.6

      +
      • XGBoost 0.80 is used in python3.6.
      • python 3.6 can only be used to run models on CPUs.
      +

      PyTorch

      +

      python3.6

      +

      python3.7

      +

      pytorch1.4-python3.7

      +
      • PyTorch 1.0 is used in python3.6 and python3.7.
      • python3.6, python3.7, and pytorch1.4-python3.7 indicate that the model can run on both CPUs and GPUs.
      • The default runtime is python3.6.
      +

      MindSpore

      +

      ms1.1-python3.7-c76

      +

      MindSpore 1.1.1 is used.

      +
      +
      +
    • The imported model, inference code, and configuration file must comply with the requirements of ModelArts. For details, see Model Package Specifications, Specifications for Compiling the Model Configuration File, and Specifications for Compiling Model Inference Code.
    • The model package that has completed training, inference code, and configuration file have been uploaded to the OBS directory.
    • The OBS directory you use and ModelArts are in the same region.
    • ModelArts of the Arm version does not support model import from OBS.
    +
    +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 2. +
        + + + + + + + + + + + + + + + + +
        Table 2 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        +
        +
      2. Select the meta model source and set related parameters. Meta Model Source has four options based on the scenario. For details, see Methods of Importing a Model. Set Meta Model Source to OBS. For details about the parameters, see Table 3.

        For the meta model imported from OBS, you need to compile the inference code and configuration file by referring to Model Package Specifications and place the inference code and configuration files in the model folder storing the meta model. If the selected directory does not contain the corresponding inference code and configuration files, the model cannot be imported.

        + +
        + + + + + + + + + + + + + + + + + + + + + + +
        Table 3 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Meta Model

        +

        Select the model storage path. This path is the training output path specified in the training job.

        +

        AI Engine

        +

        The corresponding AI engine is automatically associated based on the selected meta model storage path.

        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +

        Configuration File

        +

        By default, the system associates the configuration file stored in OBS. Enable the function to view, edit, or import the model configuration file from OBS.

        +

        Parameter Configuration

        +

        Click on the right to view the input and output parameters of the model.

        +

        Runtime Dependency

        +

        List the dependencies of the selected model on the environment.

        +
        +
        +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    +
    +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0209.html b/modelarts/umn/modelarts_23_0209.html new file mode 100644 index 000000000..09420546f --- /dev/null +++ b/modelarts/umn/modelarts_23_0209.html @@ -0,0 +1,116 @@ + + +

    Introduction to JupyterLab and Common Operations

    +

    JupyterLab is an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals, edit MarkDown text, open interaction modes, and view CSV files and images.

    +

    JupyterLab will be a mainstream development environment for developers. JupyterLab supports more flexible and powerful project operations, but has the same components as Jupyter Notebook.

    +

    ModelArts supports Jupyter Notebook and JupyterLab. You can use different tools to develop code in the same notebook instance.

    +

    Opening JupyterLab

    1. Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page.
    2. Select a notebook instance in the Running state and click Open in the Operation column to access the notebook instance.
    3. On the Jupyter page, click Open JupyterLab in the upper right corner to access the JupyterLab page of the notebook instance.
    4. The Launcher page is automatically displayed. You can use all open-source functions. For details, see JupyterLab Documentation.
      Figure 1 JupyterLab homepage
      +
    +
    +

    Creating and Opening a Notebook Instance

    On the JupyterLab homepage, click an applicable AI engine in the Notebook area to create a notebook file with the selected framework.

    +

    The AI framework supported by each notebook instance varies according to the working environment. The following figure is only an example. Select an AI framework based on the site requirements. For details about all framework versions and Python versions supported by ModelArts, see Supported AI Engines.

    +
    Figure 2 Selecting an AI engine and creating a notebook instance
    +

    The created notebook file is displayed in the navigation pane on the left.

    +
    Figure 3 Creating a notebook file
    +
    +

    Creating a Notebook File and Opening the Console

    A console is essentially a Python terminal, which is similar to the native IDE of Python, displaying the output after a statement is entered.

    +

    On the JupyterLab homepage, click an applicable AI engine in the Console area to create a notebook file with the selected framework.

    +

    The AI framework supported by each notebook instance varies according to the working environment. The following figure is only an example. Select an AI framework based on the site requirements.

    +
    Figure 4 Selecting an AI engine and creating a console
    +

    After the file is created, the console page is displayed.

    +
    Figure 5 Creating a notebook file (console)
    +
    +

    Uploading a File

    On the JupyterLab page, you can click Upload File in the upper left corner and select a local file to upload.

    +

    The size of the file to be uploaded using this method is limited. If the file size exceeds the limit, use other methods to upload the file. For details, see Uploading Data to JupyterLab.

    +
    Figure 6 Uploading a file
    +
    +

    Editing a File

    JupyterLab allows you to open multiple notebook instances or files (such as HTML, TXT, and Markdown files) in the same window and displays them on different tab pages.

    +

    Using JupyterLab, you can customize the display of multiple files. In the file display area on the right, you can drag a file to adjust its position. Multiple files can be concurrently displayed.

    +
    Figure 7 Customized display of multiple files
    +

    When writing code in a notebook instance, you can create multiple views of a file to synchronously edit the file and view the execution result in real time.

    +

    To open multiple views, open the file and choose File > New View for Notebook.

    +
    Figure 8 Multiple views of a file
    +
    +

    Downloading a File to a Local Computer

    Files created in JupyterLab can be directly downloaded to a local computer. The size of the file to be downloaded using this method is limited. If the file size exceeds the limit, use other methods to download the file. For details, see Downloading a File from JupyterLab.

    +

    In the JupyterLab file list, right-click the file to be downloaded and choose Download from the shortcut menu. The file is downloaded to the directory set for your browser.

    +
    Figure 9 Downloading a file
    +
    +

    Common Icons and Plug-ins of JupyterLab

    Figure 10 Common icons and plug-ins of JupyterLab
    + +
    + + + + + + + + + + + + + + + + +
    Table 1 Icon description

    Icon

    +

    Description

    +

    +

    Opens the Launcher page. Then you can quickly create notebook instances, consoles, or other files.

    +

    +

    Creates a folder.

    +

    +

    Uploads a file. For details, see Uploading a File.

    +

    +

    Updates a folder.

    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Common plug-ins in the plug-in area

    Plug-in

    +

    Description

    +

    +

    Lists files. You can click here to display the list of all files in the notebook instance.

    +

    +

    Lists ModelArts examples. You can click any example in the list to view its code and version mapping.

    +

    +

    Displays the terminals and kernels that are running in the current instance.

    +

    +

    Quick start command.

    +

    +

    Displays the tab page listing the files that are being opened.

    +

    +

    Document organization.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0210.html b/modelarts/umn/modelarts_23_0210.html new file mode 100644 index 000000000..313afda17 --- /dev/null +++ b/modelarts/umn/modelarts_23_0210.html @@ -0,0 +1,62 @@ + + +

    Managing Team Labeling Tasks

    +

    For datasets with team labeling enabled, you can create team labeling tasks and assign the labeling tasks to different teams so that team members can complete the labeling tasks together. During data labeling, members can initiate acceptance, continue acceptance, and view acceptance reports.

    +

    Creating Team Labeling Tasks

    If you enable team labeling when creating a dataset and assign a team to label the dataset, the system creates a labeling task based on the team by default. After the dataset is created, you can view the labeling task on the Labeling Progress tab page of the dataset.

    +

    You can also create a team marking task and assign it to different members in the same team or to other labeling teams.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. A dataset list is displayed.
    2. In the dataset list, select a dataset that supports team labeling, and click the dataset name to go to the Dashboard tab page of the dataset.
    3. Click the Labeling Progress tab to view existing labeling tasks of the dataset. Click Create Team Labeling Task in the upper right corner to create a task.
    4. In the displayed Create Team Labeling Task dialog box, set related parameters and click OK.
      • Name: Enter a task name.
      • Type: Select a task type, Team or Task Manager.
      • Select Team: If Type is set to Team, you need to select a team and members for labeling. The Select Team drop-down list lists the labeling teams and members created by the current account. For details about team management, see Introduction to Team Labeling.
      • Select Task Manager: If Type is set to Task Manager, you need to select one Team Manager member from all teams as the task manager.
      • Label Set: All existing labels and label attributes of the dataset are displayed. You can also select Automatically synchronize new images to the team labeling task or Automatically load the intelligent labeling results to images that need to be labeled under Label Set.

        The process of loading auto labeling results to a team labeling task is as follows:

        +
        • If you set Type to Team, you are required to create a team labeling task before executing the task.
        • If you set Type to Task Manager, you are required to log in to the data labeling console and assign a labeling task before executing the task.
        +

        After the task is created, you can view the new task on the Labeling Progress tab page.

        +
      +
    +
    +

    Labeling (Team Member)

    After a labeling task is created, the team member to which the task is assigned receives a labeling notification email.

    +

    In the email details, click the labeling task link and use your email address and initial password to log in to the labeling platform. After login, change the password. After logging in to the labeling platform, you can view the assigned labeling task and click the task name to go to the labeling page. The labeling method varies depending on the dataset type. For details, see the following:

    + +

    On the labeling platform, each member can view the images that are not labeled, to be corrected, rejected, to be reviewed, approved, and accepted. Pay attention to the images rejected by the administrator and the images to be corrected.

    +

    If the Reviewer role is assigned for a team labeling task, the labeling result needs to be reviewed. After the labeling result is reviewed, it is submitted to the administrator for acceptance.

    +
    Figure 1 Labeling platform
    +
    +

    Task Acceptance (Administrator)

    • Initiating acceptance

      After team members complete data labeling, the dataset creator can initiate acceptance to check labeling results. The acceptance can be initiated only when a labeling member has labeled data. Otherwise, the acceptance initiation button is unavailable.

      +
      1. On the Labeling Progress tab page, click Initiate Acceptance to accept tasks.
      2. In the displayed dialog box, set Sample Policy to By percentage or By quantity. Click OK to start the acceptance.

        By percentage: Sampling is performed based on a percentage for acceptance.

        +

        By quantity: Sampling is performed based on quantity for acceptance.

        +
      3. After the acceptance is initiated, an acceptance report is displayed on the console in real time. In the Acceptance Result area on the right, select Pass or Reject.

        If you select Pass, set Rating to A, B, C, or D. Option A indicates the highest score. If you select Reject, enter your rejection reasons in the text box.

        +
      +
    • Continuing acceptance

      You can continue accepting tasks whose acceptance is not completed. For tasks for which an acceptance process is not initiated, the Continue Acceptance button is unavailable.

      +

      On the Labeling Progress tab page, click Continue Acceptance to continue accepting tasks. The Real-Time Acceptance Report page is displayed. You can continue to accept the images that are not accepted.

      +
    • Finishing acceptance

      In the acceptance completion window, you can view dataset acceptance details, such as the number of sample files, set the following parameters, and perform acceptance. The labeling information is synchronized to the Labeled tab page of the dataset only after the acceptance is complete.

      +

      Once the labeled data is accepted, team members cannot modify the labeling information. Only the dataset creator can modify the labeling information.

      + +
      + + + + + + + + + + +
      Table 1 Parameters for finishing acceptance

      Parameter

      +

      Description

      +

      Modifying Labeled Data

      +
      • Not overwrite: For the same data, do not overwrite the existing data with the labeling result of the current team.
      • Overlays: For the same data, overwrite the existing data with the labeling result of the current team. Overwritten data cannot be recovered. Exercise caution when performing this operation.
      +

      Acceptance Scope

      +
      • All: all data that has been labeled by the current team, including Accepted, Pending Acceptance, and Rejected data. It refers to all sample files in the dataset.
      • All rejects: rejects all data that has been labeled by the current team. That is, all labeled data is rejected to the labeling personnel.

        +
      • Accepted and pending acceptance: accepts the data that passes the acceptance or is in the Pending Acceptance state in the sample files and rejects the data that fails the acceptance to the labeling personnel.
      • Accepted: accepts the data that has passed the acceptance in the sample files and rejects the data that is in the Pending Acceptance state or fails the acceptance to the labeling personnel.
      +
      +
      +
    +
    +

    Viewing an Acceptance Report

    You can view the acceptance report of an ongoing or finished labeling task. On the Labeling Progress tab page, click Acceptance Report. In the displayed Acceptance Report dialog box, view report details.

    +
    +

    Deleting a Labeling Task

    On the Labeling Progress tab page, click Delete in the row where a labeling task to be deleted. After a task is deleted, the labeling details that are not accepted will be lost. Exercise caution when performing this operation. However, the original data in the dataset and the labeled data that has been accepted are still stored in the corresponding OBS bucket.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0211.html b/modelarts/umn/modelarts_23_0211.html new file mode 100644 index 000000000..56b4034f4 --- /dev/null +++ b/modelarts/umn/modelarts_23_0211.html @@ -0,0 +1,38 @@ + + +

    Text Triplet

    +

    Triplet labeling is suitable for scenarios where structured information, such as subjects, predicates, and objects, needs to be labeled in statements. With this function, not only entities in statements, but also relationships between entities can be labeled. Triplet labeling is often used in natural language processing tasks such as dependency syntax analysis and information extraction.

    +

    Text triplet labeling involves two classes of important labels: Entity Label and Relationship Label. For the Relationship Label, you need to set its Source entity and Target entity.

    +
    • You can define multiple entity and relationship labels for a text object.
    • The Entity Label defined during dataset creation cannot be deleted.
    +

    Precautions

    Before labeling, ensure that the Entity Label and Relationship Label of a dataset have been defined. For the Relationship Label, you need to set its Source entity and Target entity. The Relationship Label must be between the defined Source entity and Target entity.

    +

    For example, if two entities are labeled as Place, you cannot add any relationship label between them. If a relationship label cannot be added, a red cross is displayed.

    +
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Labeling Content

    The dataset details page displays the labeled and unlabeled text objects in the dataset. The Unlabeled tab page is displayed by default.

    +
    1. On the Unlabeled tab page, the objects to be labeled are listed in the left pane. In the list, click a text object, select the corresponding text content on the right pane, and select an entity name from the displayed entity list to label the content.
      Figure 1 Labeling an entity
      +
    2. After labeling multiple entities, click the source entity and target entity in sequence and select a relationship type from the displayed relationship list to label the relationship.
      Figure 2 Labeling a relationship
      +
    3. After all objects are labeled, click Save Current Page at the bottom of the page.
    +

    You cannot modify the labels of a dataset in the text triplet type on the labeling page. Instead, click Edit to enter the Modify Dataset page and modify the Entity Label and Relationship Label.

    +
    +
    +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +

    On the dataset details page, click the Labeled tab. Select a text object in the left pane and the right pane displays the detailed label information. You can move your cursor to the entity or relationship label, and right-click to delete it. You can also click the source entity and target entity in sequence to add a relationship label.

    +

    You can click Delete Labels on Current Item at the bottom of the page to delete all labels in the selected text object.

    +
    +

    Adding a File

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add text files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add File.
    2. In the Add File dialog box that is displayed, select the files to be uploaded.

      Select one or more files to be uploaded in the local environment. Only .txt and .csv files are supported. The total size of files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add File dialog box, click Upload. The files you add will be automatically displayed in the Labeling Objects list on the Unlabeled tab page.
    +
    +

    Deleting a File

    You can quickly delete the files you want to discard.

    +
    • On the Unlabeled tab page, select the text to be deleted, and click Delete in the upper left corner to delete the text.
    • On the Labeled tab page, select the text to be deleted and click Delete. Alternatively, you can tick Select Images on Current Page to select all text objects on the current page and click Delete in the upper left corner.
    +

    The background of the selected text is blue. If no text is selected on the page, the Delete button is unavailable.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0214.html b/modelarts/umn/modelarts_23_0214.html new file mode 100644 index 000000000..c1760cc60 --- /dev/null +++ b/modelarts/umn/modelarts_23_0214.html @@ -0,0 +1,33 @@ + + +

    Exporting Data

    +

    A dataset includes labeled and unlabeled data. You can select images or filter data based on the filter criteria and export to a new dataset or the specified OBS directory. In addition, you can view the task history to learn about the export records.

    +

    Only datasets of image classification, object detection, image segmentation, and free format types can be exported.

    +
    • For image classification datasets, only the label files in TXT format can be exported.
    • For object detection datasets, only XML label files in Pascal VOC format can be exported.
    • For image segmentation datasets, only XML label files in Pascal VOC format and mask images can be exported.
    • For free format datasets, all files of the datasets can be exported.
    +
    +

    Exporting Data to a New Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset of the object detection or image classification type and click the dataset name to go to the Dashboard tab page of the dataset.

      For a dataset of the free format type, you can click the dataset name to directly access the dataset details page and go to 4.

      +
      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed.
    4. On the dataset details page, select or filter data to be exported. Click Export To and choose New Dataset from the drop-down list.
    5. In the displayed Export to New Dataset dialog box, enter the related information and click OK.

      Name: name of the new dataset

      +

      Storage Path: input path of the new dataset, that is, the OBS path where the data to be exported is stored

      +

      Output Path: output path of the new dataset, that is, the output path after labeling is complete. The output path cannot be the same as the storage path, and the output path cannot be a subdirectory of the storage path.

      +

      Export Content: The options are Export the selected samples and Export all samples meeting filtering criteria.

      +
    6. After the data is exported, you can view the new dataset in the dataset list.
    +
    +

    Exporting Data to OBS

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset of the object detection or image classification type and click the dataset name to go to the Dashboard tab page of the dataset.

      For a dataset of the free format type, you can click the dataset name to directly access the dataset details page and go to 4.

      +
      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed.
    4. On the dataset details page, select or filter data to be exported. Click Export To and choose OBS from the drop-down list.
    5. In the displayed Export to OBS dialog box, enter the related information and click OK.

      Storage Path: path where the data to be exported is stored. You are advised not to save data to the input or output path of the current dataset.

      +

      Export Content: The options are Export the selected samples and Export all samples meeting filtering criteria.

      +
    6. After the data is exported, you can view it in the specified path.
    +
    +

    Viewing the Task History

    When you export data to a new dataset or OBS, you can view the export task details in the View Task History dialog box.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset of the object detection or image classification type and click the dataset name to go to the Dashboard tab page of the dataset.

      For a dataset of the free format type, you can click the dataset name to directly access the dataset details page and go to 4.

      +
      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed.
    4. On the dataset details page, select or filter data to be exported. Click Export To and choose View Task History from the drop-down list.
    5. In the View Task History dialog box, view the export task history of the current dataset. Information about Task ID, Created, Type, Path, Total, and Status is included.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0216.html b/modelarts/umn/modelarts_23_0216.html new file mode 100644 index 000000000..7af6f49b5 --- /dev/null +++ b/modelarts/umn/modelarts_23_0216.html @@ -0,0 +1,17 @@ + + +

    For Training Models

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0217.html b/modelarts/umn/modelarts_23_0217.html new file mode 100644 index 000000000..86413b34f --- /dev/null +++ b/modelarts/umn/modelarts_23_0217.html @@ -0,0 +1,119 @@ + + +

    Specifications for Custom Images Used for Training Jobs

    +

    When creating an image using locally developed models and training scripts, ensure that they meet the specifications defined by ModelArts.

    +

    Specifications

    • Custom images cannot contain malicious code.
    • Part of content in the basic images cannot be changed, including all the files in /bin, /sbin, /usr, and /lib(64), some important configuration files in /etc, and the ModelArts tools in $HOME.
    • A file cannot be added whose owner is root and has permission setuid or setgid.
    • The size of a custom image cannot exceed 9.5 GB.
    +
    • To ensure that the log content can be displayed normally, the logs must be standard output.
    • The default user of a custom image must be the user whose UID is 1101.
    • Custom images can be developed based on basic ModelArts images. For details about the supported basic images, see Overview of a Basic Image Package.
    • Currently, the ModelArts backend does not support the download of open source installation packages. You are advised to install the dependency packages required for training in the custom image.
    +
    +

    Overview of a Basic Image Package

    To facilitate code download, training log output, and log file upload to OBS, ModelArts provides basic image packages for creating custom images. The basic images provided by ModelArts have the following features:

    +
    • Some necessary tools are available in the basic image. You need to create a custom image based on the basic images provided by ModelArts.
    • ModelArts continuously updates the basic image versions. For compatible updates, after the basic images are updated, you can still use the old images. For incompatible updates, the custom images created based on the old version cannot run on ModelArts, but the approved custom images can still be used.
    • If a custom image fails to be approved and the audit log contains an error message indicating that the basic image does not match, you need to use a new basic image to create an image.
    +

    Run the following command to obtain a ModelArts image:

    +
    docker pull <Address for obtaining a basic image>
    +

    After customizing an image, upload it to SWR. Make sure that you have created an organization and obtained the password for logging in to SWR. For details, see "Image Management" > "Uploading an Image Through SWR Console" in Software Repository for Container User Guide.

    +
    docker push  swr.<region>.xxx.com/<Organization to which the target image belongs>/<Image name>
    +

    Obtain basic images based on chip requirements:

    + +
    +

    CPU-based Basic Images

    Address for obtaining a basic image

    +
    swr.<region>.xxx.com/modelarts-job-dev-image/custom-cpu-base:1.3
    +

    Table 1 and Table 2 list the components and tools used by basic images.

    + +
    + + + + + + + +
    Table 1 Components

    Component

    +

    Description

    +

    run_train.sh

    +

    Training boot script. You can download the code directory, run training commands, redirect training log output, and upload log files to OBS after training commands are executed.

    +
    +
    + +
    + + + + + + + + + + + + + +
    Table 2 Tool list

    Tool

    +

    Description

    +

    utils.sh

    +

    Tool script. The run_train.sh script depends on this script.

    +

    It provides methods such as SK decryption, code directory download, and log file upload.

    +

    ip_mapper.py

    +

    Script for obtaining NIC addresses.

    +

    By default, the IP address of the ib0 NIC is obtained. Training code can use the IP address of the ib0 NIC to accelerate network communications.

    +

    dls-downloader.py

    +

    OBS download script. The utils.sh script depends on this script.

    +
    +
    +
    +

    GPU-based Basic Images

    Addresses for obtaining a basic image

    +
    swr.<region>.xxx.com/modelarts-job-dev-image/custom-gpu-cuda9-base:1.3
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-gpu-cuda92-base:1.3
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-gpu-cuda10-cudnn74-base:1.1-4
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-base-cuda10.0-cp36-ubuntu18.04-x86:1.1
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-base-cuda10.1-cp36-ubuntu18.04-x86:1.1
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-base-cuda10.2-cp36-ubuntu18.04-x86:1.1
    + +
    + + + + + + + +
    Table 3 Components

    Component

    +

    Description

    +

    run_train.sh

    +

    Training boot script. You can download the code directory, run training commands, redirect training log output, and upload log files to OBS after training commands are executed.

    +
    +
    + +
    + + + + + + + + + + + + + +
    Table 4 Tool list

    Tool

    +

    Description

    +

    utils.sh

    +

    Tool script. The run_train.sh script depends on this script.

    +

    It provides methods such as SK decryption, code directory download, and log file upload.

    +

    ip_mapper.py

    +

    Script for obtaining NIC addresses.

    +

    By default, the IP address of the ib0 NIC is obtained. Training code can use the IP address of the ib0 NIC to accelerate network communications.

    +

    dls-downloader.py

    +

    OBS download script. The utils.sh script depends on this script.

    +
    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0218.html b/modelarts/umn/modelarts_23_0218.html new file mode 100644 index 000000000..1ec7ab2f1 --- /dev/null +++ b/modelarts/umn/modelarts_23_0218.html @@ -0,0 +1,18 @@ + + +

    For Importing Models

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0219.html b/modelarts/umn/modelarts_23_0219.html new file mode 100644 index 000000000..1ce23f918 --- /dev/null +++ b/modelarts/umn/modelarts_23_0219.html @@ -0,0 +1,43 @@ + + +

    Specifications for Custom Images Used for Importing Models

    +

    When creating an image using locally developed models, ensure that they meet the specifications defined by ModelArts.

    +

    Specifications for Custom Images Used for Model Management

    • Custom images cannot contain malicious code.
    • The size of a custom image cannot exceed 30 GB.
    • External port of images

      The external service port of the image must be 8080. The inference interface must be consistent with the URL defined by apis in the config.json file. The inference interface can be directly accessed when the image is started. The following is an example of accessing the mnist image. The image contains the model trained with the mnist dataset. The model can identify handwritten digits in images. In this example, listen_ip indicates the IP address of the container.

      +
      • Sample request: curl -X POST \ http://{listen_ip}:8080/ \ -F images=@seven.jpg
      • Sample response
        {"mnist_result": 7}
        +
      +
    • Health check port

      A custom image must provide a health check interface for ModelArts to call. The health check interface is configured in the config.json file. For details, see the model configuration file compilation description. A sample health check interface is as follows:

      +
      • URI
        GET /health
        +
      • Sample request: curl -X GET \ http://{listen_ip}:8080/health
      • Sample response
        {"health": "true"}
        +
      • Status code +
        + + + + + + + + + +
        Table 1 Status code

        Status Code

        +

        Message

        +

        Description

        +

        200

        +

        OK

        +

        Successful request

        +
        +
        +
      +
    • Log file output

      To ensure that the log content can be displayed normally, the logs must be standard output.

      +
    • Image boot file

      To deploy a batch service, set the boot file of an image to /home/run.sh and use CMD to set the default boot path. The following is a sample Dockerfile.

      +

      CMD /bin/sh /home/run.sh

      +
    • Image dependencies

      To deploy a batch service, install component packages such as Python, JRE/JDK, and ZIP in the image.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0235.html b/modelarts/umn/modelarts_23_0235.html new file mode 100644 index 000000000..a1e6b6a87 --- /dev/null +++ b/modelarts/umn/modelarts_23_0235.html @@ -0,0 +1,19 @@ + + +

    Creating a Training Job

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0238.html b/modelarts/umn/modelarts_23_0238.html new file mode 100644 index 000000000..18ba0f5fc --- /dev/null +++ b/modelarts/umn/modelarts_23_0238.html @@ -0,0 +1,273 @@ + + +

    Using Frequently-used Frameworks to Train Models

    +

    If you use frequently-used frameworks, such as TensorFlow and MXNet, to develop algorithms locally, you can select Frequently-used to create training jobs and build models.

    +

    Prerequisites

    • Data has been prepared. Specifically, you have created an available dataset in ModelArts, or you have uploaded the dataset used for training to the OBS directory.
    • If you select Frequently-used for Algorithm Source, prepare the training script and upload it to the OBS directory.
    • At least one empty folder has been created on OBS for storing the training output.
    • The account is not in arrears because resources are consumed when training jobs are running.
    • The OBS directory you use and ModelArts are in the same region.
    +
    +

    Precautions

    • In the dataset directory specified for a training job, the names of the files (such as the image file, audio file, and label file) containing data used for training contain 0 to 255 characters. If the names of certain files in the dataset directory contain over 255 characters, the training job will ignore these files and use data in the valid files for training. If the names of all files in the dataset directory contain over 255 characters, no data is available for the training job and the training job fails.
    • In the training script, the Data Source and Training Output Path parameters must be set to the OBS path. Use the to perform read and write operations in the path.
    +
    +

    Frequently-used AI Frameworks for Training Management

    ModelArts supports the following AI engines and versions.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 AI engines supported by training jobs

    Environment

    +

    Supported Chip

    +

    System Architecture

    +

    System Version

    +

    AI Engine and Version

    +

    Supported CUDA or Ascend Version

    +

    TensorFlow

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    TF-1.13.1-python3.6

    +

    CUDA 10.0

    +

    TF-2.1.0-python3.6

    +

    CUDA 10.1

    +

    Caffe

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Caffe-1.0.0-python2.7

    +

    CUDA 8.0

    +

    Spark_MLlib

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Spark-2.3.2-python3.6

    +

    N/A

    +

    XGBoost-Sklearn

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Scikit_Learn-0.18.1-python3.6

    +

    N/A

    +

    PyTorch

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    PyTorch-1.3.0-python3.6

    +

    CUDA 10.0

    +

    PyTorch-1.4.0-python3.6

    +

    CUDA 10.1

    +

    Ascend-Powered-Engine

    +

    +

    Ascend 910

    +

    +

    AArch64

    +

    EulerOS 2.8

    +

    Mindspore-1.1.1-python3.7-aarch64

    +

    C76

    +

    TF-1.15-python3.7-aarch64

    +

    C76

    +

    MindSpore-GPU

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 18.04

    +

    MindSpore-1.1.0-python3.7

    +

    CUDA 10.1

    +
    +
    +
    +

    Creating a Training Job

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. By default, the system switches to the Training Jobs page.
    2. In the upper left corner of the training job list, click Create to switch to the Create Training Job page.
    3. Set related parameters.
      1. Set the basic information, including Name, Version, and Description. The Version information is automatically generated by the system and named in an ascending order of V001, V002, and so on. You cannot manually modify it.

        Specify Name and Description according to actual requirements.

        +
      2. Set job parameters, including the data source, algorithm source, and more. For details, see Table 2. +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Job parameters

        Parameter

        +

        Sub-Parameter

        +

        Description

        +

        One-Click Configuration

        +

        -

        +

        If you have saved job parameter configurations in ModelArts, click One-Click Configuration and select an existing job parameter configuration as prompted to quickly complete parameter setting for the job.

        +

        Algorithm Source

        +

        Frequently-used

        +

        Select an AI engine and its version and specify Code Directory and Boot File. The framework selected for the AI engine must be the same as the one you select when compiling training code. For example, if TensorFlow is used in your training code, select TensorFlow when you create a training job.

        +

        For details about the supported AI engines and versions, see Frequently-used AI Frameworks for Training Management.

        +

        If your model requires Python dependency packages, place the dependency packages and their configuration files in the code directory based on the requirements defined in ModelArts. For details, see How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?.

        +

        Data Source

        +

        Dataset

        +

        Select an available dataset and its version from the ModelArts Data Management module.

        +
        • Dataset: Select an existing dataset from the drop-down list. If no dataset is available in ModelArts, no result will be displayed in the drop-down list.
        • Version: Select a version according to the Dataset setting.
        +

        Data path

        +

        Select the training data from your OBS bucket. On the right of the Data path text box, click Select. In the dialog box that is displayed, select an OBS folder for storing data.

        +

        Training Output Path

        +

        -

        +

        Select a path for storing the training result.

        +
        NOTE:

        To minimize errors, select an empty directory for Training Output Path. Do not select the directory used for storing the dataset for Training Output Path.

        +
        +

        Running Parameter

        +

        -

        +

        Set the command line parameters in the code based on the algorithm code logic. Make sure that the parameter names are the same as those in the code.

        +

        For example, train_steps = 10000, where train_steps is a passing parameter in code.

        +

        Job Log Path

        +

        -

        +

        Select a path for storing log files generated during job running.

        +
        +
        +
      3. Select resources for the training job. +
        + + + + + + + + + + + + + + + + +
        Table 3 Resource parameters

        Parameter

        +

        Description

        +

        Resource Pool

        +

        Select resource pools for the job.

        +

        Type

        +

        If Resource Pool is set to Public resource pools, select a resource type. Available resource types are CPU and GPU.

        +

        The GPU resource delivers better performance, and the CPU resource is more cost effective. If the selected algorithm has been defined to use the CPU or GPU, the resource type is automatically displayed on the page. Select the resource type as required.

        +
        NOTE:

        If GPU resources are used in training code, you must select a GPU cluster when selecting a resource pool. Otherwise, the training job may fail.

        +
        +

        Specifications

        +

        Select a resource flavor based on the resource type.

        +

        +

        Compute Nodes

        +

        Set the number of compute nodes. If you set Compute Nodes to 1, the standalone computing mode is used. If you set Compute Nodes to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +

        When Frequently-used of Algorithm Source is set to Caffe, only standalone training is supported, that is, Compute Nodes must be set to 1. For other options of Frequently-used, you can select the standalone or distributed mode based on service requirements.

        +
        +
        +
      4. Configure Notification and select whether to save the parameters of the training job. +
        + + + + + + + + + + +
        Table 4 Parameters related to notification and parameter configuration saving

        Parameter

        +

        Description

        +

        Notification

        +

        Select the resource pool status to be monitored from the event list, and SMN sends a notification message when the event occurs.

        +

        This parameter is optional. You can choose whether to enable subscription based on actual requirements. If you enable subscription, set the following parameters as required:

        +
        • Topic: indicates the topic name. You can create a topic on the SMN console.
        • Event: indicates the event to be subscribed to. The options are OnJobRunning, OnJobSucceeded, and OnJobFailed, indicating that training is in progress, successful, and failed, respectively.
        +

        Saving Training Parameters

        +

        If you select this option, the parameter settings of the current job will be saved to facilitate subsequent job creation.

        +

        Select Save Training Parameters and specify Configuration Name and Description. After a training job is created, you can switch to the Job Parameters tab page to view your saved job parameter settings. For details, see Managing Job Parameters.

        +
        +
        +
      5. After setting the parameters, click Next.
      +
    4. Confirm that the information is correct on the Confirm page that is displayed and click Submit. Generally, training jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      After a training job is created, it is started immediately.

      +
      +

      You can switch to the training job list to view the basic information about training jobs. In the training job list, Status of the newly created training job is Initializing. If the status changes to Successful, the training job ends and the model generated is stored in the location specified by Training Output Path. If the status of a training job changes to Running failed, click the name of the training job and view the job logs. Troubleshoot the fault based on the logs.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0239.html b/modelarts/umn/modelarts_23_0239.html new file mode 100644 index 000000000..9ceaea957 --- /dev/null +++ b/modelarts/umn/modelarts_23_0239.html @@ -0,0 +1,141 @@ + + +

    Using Custom Images to Train Models

    +

    If the framework used for algorithm development is not a frequently-used framework, you can build an algorithm into a custom image and use the custom image to create a training job.

    +

    Prerequisites

    • Data has been prepared. Specifically, you have created an available dataset in ModelArts, or you have uploaded the dataset used for training to the OBS directory.
    • If the algorithm source is Custom, create an image and upload the image to SWR. For details, see .
    • The training script has been uploaded to the OBS directory.
    • At least one empty folder has been created on OBS for storing the training output.
    • The account is not in arrears because resources are consumed when training jobs are running.
    • The OBS directory you use and ModelArts are in the same region.
    +
    +

    Precautions

    • In the dataset directory specified for a training job, the names of the files (such as the image file, audio file, and label file) containing data used for training contain 0 to 255 characters. If the names of certain files in the dataset directory contain over 255 characters, the training job will ignore these files and use data in the valid files for training. If the names of all files in the dataset directory contain over 255 characters, no data is available for the training job and the training job fails.
    • In the training script, the Data Source and Training Output Path parameters must be set to the OBS path. Use the to perform read and write operations in the path.
    +
    +

    Creating a Training Job

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. By default, the system switches to the Training Jobs page.
    2. In the upper left corner of the training job list, click Create to switch to the Create Training Job page.
    3. Set related parameters.
      1. Set the basic information, including Name, Version, and Description. The Version information is automatically generated by the system and named in an ascending order of V001, V002, and so on. You cannot manually modify it.

        Specify Name and Description according to actual requirements.

        +
      2. Set job parameters, including the data source, algorithm source, and more. For details, see Table 1. +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 Job parameters

        Parameter

        +

        Sub-Parameter

        +

        Description

        +

        One-Click Configuration

        +

        -

        +

        If you have saved job parameter configurations in ModelArts, click One-Click Configuration and select an existing job parameter configuration as prompted to quickly complete parameter setting for the job.

        +

        Algorithm Source

        +

        Custom

        +

        For details about custom image specifications, see Specifications for Custom Images Used for Training Jobs.

        +
        • Image Path: SWR URL after the image is uploaded to SWR. For details about how to upload an image, see Creating and Uploading a Custom Image.
        • Code Directory: OBS path for storing the training code file.
        • Boot Command: Command to boot the training job after the image is started. Set this parameter based on site requirements. If the custom image is based on a basic ModelArts image, set parameters by referring to Creating a Training Job Using a Custom Image (GPU).
        +

        Data Source

        +

        Dataset

        +

        Select an available dataset and its version from the ModelArts Data Management module.

        +
        • Dataset: Select an existing dataset from the drop-down list. If no dataset is available in ModelArts, no result will be displayed in the drop-down list.
        • Version: Select a version according to the Dataset setting.
        +

        Data path

        +

        Select the training data from your OBS bucket. On the right of the Data path text box, click Select. In the dialog box that is displayed, select an OBS folder for storing data.

        +

        Training Output Path

        +

        -

        +

        Storage path of the training result

        +
        NOTE:

        To minimize errors, select an empty directory for Training Output Path. Do not select the directory used for storing the dataset for Training Output Path.

        +
        +

        Environment Variable

        +

        -

        +

        Add environment variables based on your image file. This parameter is optional. You can click Add Environment Variable to add multiple variable parameters.

        +

        Job Log Path

        +

        -

        +

        Select a path for storing log files generated during job running.

        +
        +
        +
      3. Select resources for the training job. +
        + + + + + + + + + + + + + + + + +
        Table 2 Resource parameters

        Parameter

        +

        Description

        +

        Resource Pool

        +

        Select resource pools for the job.

        +

        Type

        +

        If Resource Pool is set to Public resource pools, select a resource type. Available resource types are CPU and GPU.

        +

        The GPU resource delivers better performance, and the CPU resource is more cost effective. If the selected algorithm has been defined to use the CPU or GPU, the resource type is automatically displayed on the page. Select the resource type as required.

        +

        Specifications

        +

        Select a resource flavor based on the resource type.

        +

        +

        Compute Nodes

        +

        Set the number of compute nodes. If you set Compute Nodes to 1, the standalone computing mode is used. If you set Compute Nodes to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +
        +
        +
      4. Configure Notification and select whether to save the parameters of the training job. +
        + + + + + + + + + + +
        Table 3 Parameters related to notification and parameter configuration saving

        Parameter

        +

        Description

        +

        Notification

        +

        Select the resource pool status to be monitored from the event list, and SMN sends a notification message when the event occurs.

        +

        This parameter is optional. You can choose whether to enable subscription based on actual requirements. If you enable subscription, set the following parameters as required:

        +
        • Topic: indicates the topic name. You can create a topic on the SMN console.
        • Event: indicates the event to be subscribed to. The options are OnJobRunning, OnJobSucceeded, and OnJobFailed, indicating that training is in progress, successful, and failed, respectively.
        +

        Saving Training Parameters

        +

        If you select this option, the parameter settings of the current job will be saved to facilitate subsequent job creation.

        +

        Select Save Training Parameters and specify Configuration Name and Description. After a training job is created, you can switch to the Job Parameters tab page to view your saved job parameter settings. For details, see Managing Job Parameters.

        +
        +
        +
      5. After setting the parameters, click Next.
      +
    4. Confirm that the information is correct on the Confirm page that is displayed and click Submit. Generally, training jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      After a custom image job is created, the system authorizes ModelArts to obtain and run the image by default. When you run a custom image job for the first time, ModelArts checks the custom image. For details about the check, see Specifications for Custom Images Used for Training Jobs. You can view the cause of the check failure in the log and modify the custom image based on the log.

      +

      After the image is checked, the background starts the custom image container to run the custom image training job. You can switch to the training job list to view the basic information about training jobs. In the training job list, Status of the newly created training job is Initializing. If the status changes to Successful, the training job ends and the model generated is stored in the location specified by Training Output Path. If the status of a training job changes to Running failed. Click the name of the training job and view the job logs. Troubleshoot the fault based on the logs.

      +
      • After an image is reviewed, the image does not need to be reviewed again when being used to create training jobs again.
      • The default user of a custom image must be the user whose UID is 1101.
      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0254.html b/modelarts/umn/modelarts_23_0254.html new file mode 100644 index 000000000..2b9379a7c --- /dev/null +++ b/modelarts/umn/modelarts_23_0254.html @@ -0,0 +1,32 @@ + + +

    Arm-Ascend Template

    +

    Introduction

    AI engine: MindSpore; Environment: Python 3.5; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    +
    +

    Template Input

    The template input is the OM-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    +
    +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you cannot select another input and output mode during model creation.

    +
    +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    +
    +

    Model Package Example

    Structure of the OM-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    ├── <<Custom Python package>>    (Optional) User's Python package, which can be directly referenced in the model inference code
    +    ├── model.om              (Mandatory) Protocol buffer file, which contains the diagram description of the model
    +    ├──customize_service.py   (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0280.html b/modelarts/umn/modelarts_23_0280.html new file mode 100644 index 000000000..c5c64c6bd --- /dev/null +++ b/modelarts/umn/modelarts_23_0280.html @@ -0,0 +1,16 @@ + + +

    Switching the CUDA Version on the Terminal Page of a GPU-based Notebook Instance

    +

    For a GPU-based notebook instance, you can switch different versions of CUDA on the Terminal page of Jupyter.

    +

    CPU-based notebook instances do not use CUDA. Therefore, the following operations apply only to GPU-based notebook instances.

    +
    1. Create and open a notebook instance or open an existing notebook instance in the notebook instance list.
    2. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
    3. Run the following command to go to /usr/local:
      cd /usr/local
      +
    4. For example, to switch to CUDA 10, run the following command:
      sudo ln -snf /usr/local/cuda-10.0 cuda
      +
      Figure 1 Example of switching the CUDA version
      +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0282.html b/modelarts/umn/modelarts_23_0282.html new file mode 100644 index 000000000..ffb502684 --- /dev/null +++ b/modelarts/umn/modelarts_23_0282.html @@ -0,0 +1,36 @@ + + +

    Video Labeling

    +

    Model training requires a large amount of labeled video data. Therefore, before the model training, label the unlabeled video files. ModelArts enables you to label video files. In addition, you can modify the labels of video files, or remove their labels and label the video files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    +
    +

    Labeling Video Files

    On the dataset details page, both unlabeled and labeled video files in the dataset are displayed.

    +
    1. On the Unlabeled tab page, click the target video file in the video list on the left. The labeling page is displayed.
    2. Play the video. When the video is played to the time point to be labeled, click the pause button in the progress bar to pause the video to a specific image.
    3. In the left pane, select a bounding box. By default, a rectangular box is selected. Drag the mouse to select an object in the video image, enter a new label name in the displayed Add Label text box, select a label color, and click Add to label the object. Alternatively, select an existing label from the drop-down list and click Add to label the object. Label all objects in the image. Multiple labels can be added to an image.
      The supported bounding boxes are the same as those supported by Object Detection. For details, see Table 1 in Object Detection.
      Figure 1 Labeling video files
      +
      +
    4. After the previous image is labeled, click the play button on the progress bar to resume the playback. Then, repeat 3 to complete labeling on the entire video.

      The labeled time points of the current video are displayed on the right of the page.

      +
      Figure 2 File labels
      +
    5. Click Back to Data Labeling Preview in the upper left corner of the page. The dataset details page is displayed, and the labeled video file is displayed on the Labeled tab page.
    +
    +

    Modifying Labeled Data

    After labeling data, you can delete labeled data on the Labeled tab page.

    +
    • Click in the Operation column of the target number to delete the label of the video segment. Alternatively, you can click the cross (x) icon above the labeled video file to delete the label. Then click OK.
    +

    On the Labeled tab page, click the target video file. In the All Labels area on the right of the labeling page, click the triangle icon on the right of the time point to view details. You can modify or delete a label.

    +
    • Modifying a label: Click the edit icon on the right of a label to modify the label name.
    • Deleting a label: Click the delete icon on the right of a label to delete the label. If you click the delete icon on the right of the image time, all labels on the image are deleted.
    +
    Figure 3 Modifying labeled data
    +
    +

    Deleting a Video File

    You can quickly delete the video files you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the video files to be deleted or click Select Images on Current Page to select all video files on the page, and click Delete in the upper left corner to delete the video files. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the videos.

    +

    If a tick is displayed in the upper left corner of a video file, the video file is selected. If no video file is selected on the page, the Delete File button is unavailable.

    +

    If you select Delete source files, video files stored in the corresponding OBS directory will be deleted when you delete the selected video files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0325.html b/modelarts/umn/modelarts_23_0325.html new file mode 100644 index 000000000..6c71e4e43 --- /dev/null +++ b/modelarts/umn/modelarts_23_0325.html @@ -0,0 +1,18 @@ + + +

    Opening a Notebook Instance

    +

    You can open a created notebook instance (that is, an instance in the Running state) and start coding in the development environment.

    +

    Instance Opening

    • Go to the Jupyter Notebook page.

      In the notebook instance list, locate the row where the target notebook instance resides and click Open in the Operation column or click the notebook instance name.

      +
    • Go to the JupyterLab page.

      In the notebook instance list, select the notebook instance to be opened and click Open JupyterLab in the Operation column.

      +
    +
    +

    Code Development

    ModelArts provides two environments for code development: Jupyter Notebook and JupyterLab.

    +
    • Jupyter Notebook: a web-based application for interactive computing. It can be applied to full-process computing: development, documentation, running code, and presenting results.
    • JupyterLab: an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals, edit MarkDown text, open interaction modes, and view CSV files and images.
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0326.html b/modelarts/umn/modelarts_23_0326.html new file mode 100644 index 000000000..e5f383798 --- /dev/null +++ b/modelarts/umn/modelarts_23_0326.html @@ -0,0 +1,16 @@ + + +

    Introduction to Jupyter Notebook

    +

    Jupyter Notebook is a web-based application for interactive computing. It can be applied to full-process computing: development, documentation, running code, and presenting results.

    +

    ModelArts integrates the open-source Jupyter Notebook. After creating a notebook instance, you can open the instance for development without the need for installation and configuration.

    +

    Notebook Kernel

    • A notebook kernel is an independent code execution environment. ModelArts Notebook supports multiple kernel types, such as TensorFlow 1.13.1 and PyTorch 1.0. A code execution environment contains the pre-installed and commissioned AI engines and dependencies.
    • When a kernel is selected to open a notebook instance, an IPython process is started at the backend of the notebook instance as the running environment to execute the code and command input on the page.
    • Each kernel type contains an independent Conda running environment to ensure that the AI engines are independent of each other. For example, if the Keras library is updated in a kernel of the TensorFlow type, the kernel of the MindSpore type will not be affected.
    +
    +

    Differences Between Notebook Kernels and Common Interactive Python Interpreters

    A notebook kernel is an IPython running environment, which can be considered as an enhanced Python shell. Compared with a Python interpreter, a notebook kernel can execute shell scripts and integrate more visualized tools and magic commands. For details, see IPython Documentation.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0327.html b/modelarts/umn/modelarts_23_0327.html new file mode 100644 index 000000000..789ba32bc --- /dev/null +++ b/modelarts/umn/modelarts_23_0327.html @@ -0,0 +1,23 @@ + + + +

    Configuring the Jupyter Notebook Environment

    + +

    +
    + +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0330.html b/modelarts/umn/modelarts_23_0330.html new file mode 100644 index 000000000..95ae235e2 --- /dev/null +++ b/modelarts/umn/modelarts_23_0330.html @@ -0,0 +1,20 @@ + + +

    Using JupyterLab

    +

    +
    +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0331.html b/modelarts/umn/modelarts_23_0331.html new file mode 100644 index 000000000..d7ec29271 --- /dev/null +++ b/modelarts/umn/modelarts_23_0331.html @@ -0,0 +1,21 @@ + + + +

    Uploading and Downloading Data

    + +

    +
    + +
    + + + +
    + diff --git a/modelarts/umn/modelarts_23_0332.html b/modelarts/umn/modelarts_23_0332.html new file mode 100644 index 000000000..63c25dc53 --- /dev/null +++ b/modelarts/umn/modelarts_23_0332.html @@ -0,0 +1,38 @@ + + +

    Uploading Data to JupyterLab

    +

    On the JupyterLab page, click Upload Files to upload a file. For details, see Uploading a File in Introduction to JupyterLab and Common Operations. If a message is displayed indicating that the size of the files to be uploaded exceeds the upper limit when uploading files to notebook instances or JupyterLab, you can upload the files to OBS and then download them to notebook instances.

    +

    Step 1: Uploading Files to OBS

    Use the OBS API to upload large files because OBS Console has restrictions on the file size and quantity.

    +
    +

    Step 2: Downloading Files from OBS to Notebook Instances

    A notebook instance can be mounted to OBS or EVS as the storage location. The operation method varies depending on the instance types.

    +
    • Downloading files to notebook instances with EVS attached
      • Use the following MoXing API to synchronize files from OBS to notebook instances.
        Read an OBS file. For example, if you read the obs://bucket_name/obs_file.txt file, the content is returned as strings.
        1
        file_str = mox.file.read('obs://bucket_name/obs_file.txt')
        +
        +
        +
        +
        You can also open the file object and read data from it. Both methods are equivalent.
        1
        +2
        with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f:
        +  file_str = f.read()
        +
        +
        +
        +
      • Use the OBS API in the ModelArts SDK to download data from OBS to notebook instances.

        If the size of a single file exceeds 5 GB, the file cannot be uploaded in this mode. Use the MoXing API to upload large files.

        +
        +

        Sample code:

        +
        1
        +2
        +3
        from modelarts.session import Session
        +session = Session()
        +session.download_data(bucket_path="/bucket-name/dir1/sdk.txt", path="/home/user/sdk/obs.txt")
        +
        +
        +
      +
    • Downloading files to notebook instances using OBS for data storage

      Upload files to the OBS path specified during notebook instance creation and synchronize the files from OBS to the notebook instances using Sync OBS.

      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0333.html b/modelarts/umn/modelarts_23_0333.html new file mode 100644 index 000000000..1521461dd --- /dev/null +++ b/modelarts/umn/modelarts_23_0333.html @@ -0,0 +1,23 @@ + + +

    Downloading a File from JupyterLab

    +

    Only files within 100 MB in JupyterLab can be downloaded to a local PC. You can perform operations in different scenarios based on the storage location selected when creating a notebook instance.

    +

    Notebook Instances with EVS Attached

    For notebook instances with EVS attached, you can perform the following operations to download large files to the local PC:

    +
    1. In the notebook instance, create an ipynb file. Use MoXing to upload the large files from notebook instances to OBS. The sample code is as follows:
      1
      +2
      import moxing as mox
      +mox.file.copy('/home/ma-user/work/obs_file.txt', 'obs://bucket_name/obs_file.txt')
      +
      +
      +

      In the preceding code, /home/ma-user/work/obs_file.txt indicates a file storage path in a notebook instance, and obs://bucket_name/obs_file.txt indicates a file storage path on OBS.

      +
    2. Use OBS or the ModelArts SDKs to download the files from OBS to the local PC.
    +
    +

    Notebook Instances Using OBS Storage

    For notebook instances that use OBS storage, you can use OBS or the ModelArts SDK to download files from OBS to a local PC.

    +

    Use OBS for download.

    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0335.html b/modelarts/umn/modelarts_23_0335.html new file mode 100644 index 000000000..765a7a786 --- /dev/null +++ b/modelarts/umn/modelarts_23_0335.html @@ -0,0 +1,79 @@ + + +

    Using ModelArts SDKs

    +

    In notebook instances, you can use ModelArts SDKs to manage OBS, training jobs, models, and real-time services.

    +

    For details about how to use ModelArts SDKs, see ModelArts SDK Reference.

    +

    Notebooks carry the authentication (AK/SK) and region information about login users. Therefore, SDK session authentication can be completed without entering parameters.

    +

    Example Code

    • Creating a training job
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      from modelarts.session import Session
      +from modelarts.estimator import Estimator
      +session = Session()
      +estimator = Estimator(
      +                      modelarts_session=session,
      +                      framework_type='PyTorch',                                     # AI engine name
      +                       framework_version='PyTorch-1.0.0-python3.6',                  # AI engine version
      +                      code_dir='/obs-bucket-name/src/',                                      # Training script directory
      +                      boot_file='/obs-bucket-name/src/pytorch_sentiment.py',                 # Training startup script directory
      +                      log_url='/obs-bucket-name/log/',                                       # Training log directory
      +                      hyperparameters=[
      +                                       {"label":"classes",
      +                                        "value": "10"},    
      +                                       {"label":"lr",
      +                                        "value": "0.001"}
      +                                       ],
      +                      output_path='/obs-bucket-name/output/',                                # Training output directory
      +                      train_instance_type='modelarts.vm.gpu.p100',                  # Training environment specifications
      +                      train_instance_count=1,                                       # Number of training nodes
      +                      job_description='pytorch-sentiment with ModelArts SDK')       # Training job description
      +job_instance = estimator.fit(inputs='/obs-bucket-name/data/train/', wait=False, job_name='my_training_job')
      +
      +
      +
    +
    • Querying a model list
      1
      +2
      +3
      +4
      from modelarts.session import Session 
      +from modelarts.model import Model
      +session = Session() 
      +model_list_resp = Model.get_model_list(session, model_status="published", model_name="digit", order="desc")
      +
      +
      +
    • Querying service details
      1
      +2
      +3
      +4
      +5
      from modelarts.session import Session
      +from modelarts.model import Predictor
      +session = Session()
      +predictor_instance = Predictor(session, service_id="input your service_id")
      +predictor_info_resp = predictor_instance.get_service_info()
      +
      +
      +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/modelarts_23_0345.html b/modelarts/umn/modelarts_23_0345.html new file mode 100644 index 000000000..dfd40ec1b --- /dev/null +++ b/modelarts/umn/modelarts_23_0345.html @@ -0,0 +1,133 @@ + + +

    Image Segmentation

    +

    Training a model uses a large number of labeled images. Therefore, label images before the model training. You can label images on the ModelArts management console. Alternatively, modify labels, or delete them and label them again.

    +

    Before labeling an image in image segmentation scenarios, you need to understand the following:

    +
    • All objects whose contours need to be extracted from the image must be labeled.
    • Polygons and points can be used for labeling.
      • In polygon labeling, draw a polygon based on the outline of the target object.
      • In point labeling, label the top, bottom, leftmost, and rightmost points on the object contour. The system will infer the outline of the object based on the labeled points. For images with complex backgrounds, it is a good practice to use polygons for labeling.
      +
    • When labeling an image, ensure that the polygons or points are within the image. Otherwise, an error will occur in subsequent operations.
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    +
    +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +
    • For an image classification dataset, the .txt file with the same name in the same directory as the data source is used as the label of the target image.
    • For an object detection dataset or image segmentation dataset, the .xml file with the same name in the same directory is used as the label of the target image.
    +

    To quickly obtain the latest data in the OBS bucket, on the All or Unlabeled tab page of the dataset details page, click Synchronize Data Source to add data from OBS to the dataset.

    +
    +

    Filtering Data

    On the Dashboard tab page of the dataset, the summary of the dataset is displayed by default. In the upper right corner of the page, click Label. The dataset details page is displayed, showing all data in the dataset by default. On the All, Unlabeled, or Labeled tab page, you can add filter criteria in the filter criteria area to quickly filter the data you want to view.

    +

    The following filter criteria are supported. You can set one or more filter criteria.

    +
    • Label: Select All or one or more labels you specified.
    • Sample Creation Time: Select Within 1 month, Within 1 day, or Custom to customize a time range.
    • File Name or Path: Filter files by file name or file storage path.
    • Labeled By: Select the name of the user who labeled the image.
    + +

    +
    +

    Manually Labeling Images

    The dataset details page provides the Labeled and Unlabeled tabs. The All tab page is displayed by default.

    +
    1. On the Unlabeled tab page, click an image. The system automatically directs you to the page for labeling the image. For details about how to use common buttons on this page, see Table 2.
    2. Select a labeling method.
      On the labeling page, common labeling methods and buttons are provided in the toolbar. By default, polygon labeling is selected. Use polygon or point labeling as needed.

      After you select a method to label the first image, the labeling method automatically applies to subsequent images.

      +
      +
      Figure 1 Toolbar
      + +
      + + + + + + + + + + +
      Table 1 Labeling methods

      Icon

      +

      Description

      +

      +

      Polygon labeling. In the area where the object to be labeled is located, click to label a point, move the mouse and click multiple points along the edge of the object, and then click the first point again. All the points form a polygon. In this way, the object to be labeled is within the bounding box.

      +

      +

      Point labeling. Label the top, bottom, leftmost, and rightmost points on the object contour. The system will infer the outline of the object based on the labeled points.

      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Toolbar buttons

      Icon

      +

      Description

      +

      +

      Cancel the previous operation.

      +

      +

      Redo the previous operation.

      +

      +

      Zoom in an image.

      +

      +

      Zoom out an image.

      +

      +

      Delete all bounding boxes on the current image.

      +

      +

      Display or hide a bounding box. This operation can be performed only on a labeled image.

      +

      +

      Drag a bounding box to another position or drag the edge of the bounding box to resize it.

      +

      +

      Reset a bounding box. After dragging a bounding box, you can click this button to quickly restore the bounding box to its original shape and position.

      +

      +

      Display the labeled image in full screen.

      +
      +
      +
      +
    3. Label an object.

      This section uses point labeling as an example. Identify an object in an image. Click to label the top, bottom, leftmost, and rightmost points on the object contour. In the dialog box that is displayed, set the label name and click Add. Then, the system automatically infers the object contour.

      +

      After labeling an image, click an image that has not been labeled in the image list below to label the new image.

      +
      Figure 2 Labeling an object outline
      +
    4. Click Back to Data Labeling Preview in the upper left part of the page to view the labeling information. In the dialog box that is displayed, click OK to save the labeling settings.

      The selected image is automatically moved to the Labeled tab page. On the Unlabeled and All tab pages, the labeling information is updated along with the labeling process, including the added label names and the number of images for each label.

      +
    +
    +

    Viewing Labeled Images

    On the dataset details page, click the Labeled tab to view the list of labeled images. Click an image to view its labeling information in the File Labels area on the right.

    +
    +

    Modifying a Label

    After labeling an object, you can modify labeled data on the Labeled tab page.

    +

    On the dataset details page, click the Labeled tab and then the image to be modified. On the labeling page that is displayed, modify the labeling information in the File Labels area on the right.

    +
    • Modifying a label: In the Labeling area, click the edit icon, set the target label name or color in the displayed dialog box, and click the save icon to save the modification. Alternatively, click a label to be modified. In the image labeling area, adjust the position and size of the bounding box. After the adjustment is complete, click another label to save the modification.
    • Modifying image labeling information: In the area for displaying images, click the target bounding box. Then, blue points on the bounding box are displayed. Drag a blue point and adjust the bounding box to the edge of the object.
    • Deleting a label: In the Labeling area, click the deletion icon to delete a label from the image. After all labels of an image are deleted, the image is displayed on the Unlabeled tab page.
    +
    After the labeling information is modified, click Back to Data Labeling Preview in the upper left part of the page to exit the labeling page. In the dialog box that is displayed, click OK to save the modification.
    Figure 3 Editing image labeling information
    +
    +
    +

    Adding Images

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add images on ModelArts for data labeling.

    +
    1. On the dataset details page, click the All or Unlabeled tab. Then click Add.
    2. On the Add page that is displayed, click Add Image.

      Select one or more images to be uploaded in the local environment. Images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.

      +

      After the images are selected, their thumbnails and sizes are displayed on the Add page.

      +
    3. On the Add page, click OK.

      The images you have added will be automatically displayed in the image list on the Unlabeled tab page. In addition, the images are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    +
    +

    Deleting Images

    You can quickly delete the images you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the images to be deleted or click Select Images on Current Page to select all images on the page, and click Delete in the upper left corner to delete the images. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the images.

    +

    If a tick is displayed in the upper left corner of an image, the image is selected. If no image is selected on the page, the Delete button is unavailable.

    +

    If you select Delete source files, images stored in the corresponding OBS directory will be deleted when you delete the selected images. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    +
    +
    +
    +
    + +
    + diff --git a/modelarts/umn/process.py b/modelarts/umn/process.py new file mode 100644 index 000000000..c4129a157 --- /dev/null +++ b/modelarts/umn/process.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 + +import json +import os +import pathlib +import re +import warnings + +def get_new_name(current_name): + new_name = current_name.replace(' - ','_') + new_name = new_name.replace(' ','_') + new_name = new_name.replace('/','_') + new_name = new_name.replace('?','') + new_name = new_name.lower() + return new_name + +def get_target_path(code, metadata, path=''): + if code in metadata: + current = metadata[code] + if not current.get('p_code'): + return current['new_name'] + else: + return ( + "{0}/{1}".format( + get_target_path(current['p_code'], metadata), + current['new_name']) + ) + else: + return '' + +def build_doc_tree(metadata): + tree = dict() + flat_tree = dict() + for k, v in metadata.items(): + parent_id = v.get('p_code') + if not parent_id: + parent_id = 0 + + if parent_id not in flat_tree: + flat_tree[parent_id] = list() + flat_tree[parent_id].append(v) + return flat_tree + + +def main(): + meta_data = json.loads(open("CLASS.TXT.json").read()) + metadata_by_uri = dict() + metadata_by_code = dict() + table_re = re.compile(r'.*]+ id="([^"]+)"') + for f in meta_data: + f['new_name'] = get_new_name(f['title']) + metadata_by_uri[f['uri']] = f + metadata_by_code[f.get('code')] = f + + tree = build_doc_tree(metadata_by_code) + + for f in pathlib.Path().glob("*.html"): + if not f.name in metadata_by_uri: + continue + _target = metadata_by_uri[f.name] + target = _target['new_name'] + target_path = get_target_path(_target['p_code'], metadata_by_code) + pathlib.Path("temp/").mkdir(parents=True, exist_ok=True) + pathlib.Path("tmp_result/" + target_path).mkdir(parents=True, exist_ok=True) + pathlib.Path("result/" + target_path).mkdir(parents=True, exist_ok=True) + + # Pre-processing of html content + with open(f, 'r') as reader, open(f"temp/{target}.tmp", 'w') as writer: + print(f"Processing {target}") + for line in reader.readlines(): + table_match = table_re.match(line) + if table_match: + writer.write(f".. _{table_match.group(1)}:\n\n") + if not line.startswith("Parent topic:"): + # Drop all divs + processed_line = re.sub(r'<[/]?div[^>]*>', '', line) + writer.write(processed_line) + # Convert html to rst + os.system( + f"pandoc 'temp/{target}.tmp' -f html " + f"-o 'tmp_result/{target_path}/{target}.rst' " + f"--column 120 --ascii -s --wrap preserve" + ) + # Post processing of rendered rst + with ( + open(f"tmp_result/{target_path}/{target}.rst", 'r') as reader, + open(f"result/{target_path}/{target}.rst", 'w') as writer + ): + print(f"Post processing {target}") + for line in reader.readlines(): + processed_line = re.sub(r'\.\. \\_', '\n\n.. _', line) + processed_line = re.sub(r'√', 'Y', processed_line) + processed_line = re.sub(r'public_sys-resources/', '', processed_line) + processed_line = re.sub(r'image:: ', 'image:: /images/', processed_line) + processed_line = re.sub(r' :name: .*$', '', processed_line) + processed_line = re.sub(r'.. code:: screen', '.. code::', processed_line) + writer.write(processed_line) + # Generate indexes + for k, v in tree.items(): + path = '' + title = 'Main Index' + if k != 0: + curr = metadata_by_code[k] + title = curr['title'] + path = get_target_path(curr['code'], metadata_by_code) + with open(f"result/{path}/index.rst", "w") as index: + index.write('='*(len(title)) + '\n') + index.write(title + '\n') + index.write('='*(len(title)) + '\n') + index.write('\n') + index.write('.. toctree::\n\n') + for child in v: + new_name = child['new_name'] + if child['code'] in tree: + # If this is folder - add /index + new_name = new_name + '/index' + index.write(f" {new_name}\n") + + + p = pathlib.Path(f"result/{path}.rst") + if p.exists(): + print(f"Please check {p.resolve()}. It should be dropped in favour" + f"of result/{path}/index.rst") + + +if __name__ == "__main__": + main() diff --git a/modelarts/umn/public_sys-resources/ExpandCollapse.js b/modelarts/umn/public_sys-resources/ExpandCollapse.js new file mode 100644 index 000000000..3f1b7db00 --- /dev/null +++ b/modelarts/umn/public_sys-resources/ExpandCollapse.js @@ -0,0 +1 @@ +var expandClassName="dropdownexpand";var collapseClassName="dropdowncollapse";var collapseTableClassName="dropdowncollapsetable";var href="";function ExpandorCollapseNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseClassName}else{a.className=expandClassName}}function ExpandorCollapseTableNode(a){a=a.parentNode;if(a.className==expandClassName){a.className=collapseTableClassName}else{a.className=expandClassName}}function ExpandorCollapseAllNodes(g,h,c){var a=g.getAttribute("title");var b=g.parentNode;if(a=="collapse"){g.setAttribute("title","expand");g.className="dropdownAllButtonexpand";g.innerHTML=h}else{g.setAttribute("title","collapse");g.className="dropdownAllButtoncollapse";g.innerHTML=c}var f=b.getElementsByTagName("*");for(var d=0;d-1){ExpandForHref(href.substring(href.lastIndexOf("#")+1))}}catch(a){}}; \ No newline at end of file diff --git a/modelarts/umn/public_sys-resources/caution_3.0-en-us.png b/modelarts/umn/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 000000000..60f607621 Binary files /dev/null and b/modelarts/umn/public_sys-resources/caution_3.0-en-us.png differ diff --git a/modelarts/umn/public_sys-resources/commonltr.css b/modelarts/umn/public_sys-resources/commonltr.css new file mode 100644 index 000000000..c5480b0ab --- /dev/null +++ b/modelarts/umn/public_sys-resources/commonltr.css @@ -0,0 +1 @@ +body{font-size:10pt;font-family:Arial;margin:1.5em;border-top:2pt;padding-top:1em;padding-bottom:2em}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:.6em;margin-bottom:.6em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.figcap{font-size:10pt}img{margin-top:.3em}.figdesc{font-style:normal}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.fignone{font-size:10pt;margin-top:8pt;margin-bottom:8pt}.familylinks{margin-top:1.5em;margin-bottom:1em}.ullinks{list-style-type:none}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-top:.6em;margin-bottom:.6em}.reltasks{margin-top:.6em;margin-bottom:.6em}.relref{margin-top:.6em;margin-bottom:.6em}.relinfo{margin-top:.6em;margin-bottom:.6em}.breadcrumb{font-size:smaller;margin-bottom:.6em}.prereq{margin-left:20px}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.topictitle1{margin-top:0;margin-bottom:1em;font-size:14pt;color:#007af4}.topictitle2{margin-top:1pc;margin-bottom:.45em;font-size:1.17em;color:#007af4}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-size:1.17em;font-weight:bold;color:#007af4}.topictitle4{margin-top:.83em;font-size:1.17em;font-weight:bold}.topictitle5{font-size:1.17em;font-weight:bold}.topictitle6{font-size:1.17em;font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:1em;color:black;font-size:10.5pt;font-weight:bold;color:#007af4;overflow:auto}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}.sectiontitle2contents:link{color:#007af4}.sectiontitle2contents:visited{color:#800080}.note{margin-top:1em;margin-bottom:1em;background-color:#ffc}.notetitle{font-weight:bold}.notelisttitle{font-weight:bold}.tip{margin-top:1em;margin-bottom:1em;background-color:#ffc}.tiptitle{font-weight:bold}.fastpath{margin-top:1em;margin-bottom:1em;background-color:#ffc}.fastpathtitle{font-weight:bold}.important{margin-top:1em;margin-bottom:1em;background-color:#ffc}.importanttitle{font-weight:bold}.remember{margin-top:1em;margin-bottom:1em;background-color:#ffc}.remembertitle{font-weight:bold}.restriction{margin-top:1em;margin-bottom:1em;background-color:#ffc}.restrictiontitle{font-weight:bold}.attention{margin-top:1em;margin-bottom:1em;background-color:#ffc}.attentiontitle{font-weight:bold}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;background-color:#ffc}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;background-color:#ffc}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;background-color:#ffc}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;background-color:#ffc}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}ol{margin-top:1em;margin-bottom:1em;margin-left:2.4em;padding-left:0}ul{margin-top:1em;margin-bottom:1em;margin-left:2.0em;padding-left:0}ol ul{list-style:disc}ul ul{list-style:square}ol ul ul{list-style:square}ol ul{list-style-type:disc}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}.firstcol{font-weight:bold}th{background-color:#cfcfcf}table{margin-top:8pt;margin-bottom:12pt;width:100%}table caption{margin-top:8pt;text-align:left}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:.3em;margin-bottom:.3em}.substepexpand{margin-top:.3em;margin-bottom:.3em}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;background-color:#ddd;white-space:pre}.hrcopyright{color:#3f4e5d;margin-top:18pt}.hwcopyright{text-align:center}.comment{margin:2px 2px 2px 2px;font-family:Arial;font-size:10pt;background-color:#bfb;color:#000}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowncontext{display:none}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdowncollapsetable{border:0}.dropdowncollapsetable .dropdowncontext{display:none}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}pre{font-size:10pt;font-weight:normal;margin-left:9;margin-top:2;margin-bottom:2}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0} \ No newline at end of file diff --git a/modelarts/umn/public_sys-resources/commonltr_print.css b/modelarts/umn/public_sys-resources/commonltr_print.css new file mode 100644 index 000000000..a59823141 --- /dev/null +++ b/modelarts/umn/public_sys-resources/commonltr_print.css @@ -0,0 +1 @@ +body{font-size:12.0pt;margin:1.5em;margin-left:1.6cm}.msgph{font-family:Courier New}.rowlinecopyright{color:red;margin-top:10pt}.unresolved{background-color:skyblue}.noTemplate{background-color:yellow}.base{background-color:#fff}.nested0{margin-top:1em}.p{margin-top:1em}p{margin-top:.5em;margin-bottom:.5em}.note p{margin-top:.5em;margin-bottom:.5em}.tip p{margin-top:.5em;margin-bottom:.5em}.danger p{margin-top:.5em;margin-bottom:.5em}.warning p{margin-top:.5em;margin-bottom:.5em}.notice p{margin-top:.5em;margin-bottom:.5em}.caution p{margin-top:.5em;margin-bottom:.5em}.attention p{margin-top:.5em;margin-bottom:.5em}table p{margin-top:.2em;margin-bottom:.2em}table .p{margin-top:.4em;margin-bottom:.2em}.covertable{border:0;width:100% cellpadding:8pt;cellspacing:8pt}.cover_productname{font-size:15.0pt;font-family:"Arial"}.cover_manualtitle{font-size:24.0pt;font-weight:bold;font-family:"Arial"}.cover_manualsubtitle{font-size:18.0pt;font-weight:bold;font-family:"Arial"}.cover_heading{font-size:12.0pt;font-weight:bold;font-family:"Arial"}.cover_text{font-size:9.0pt;font-family:"Arial"}.tocheading,.heading1,.topictitle1{margin-top:40.0pt;margin-right:0;margin-bottom:20.0pt;margin-left:-1cm;text-align:left;border:0;border-bottom:solid windowtext .5pt;font-size:22.0pt;font-family:"Arial";font-weight:bold}.topictitlenumber1{font-size:72.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle2{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Arial";font-weight:bold}.topictitle3{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:16.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle4{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:14.0pt;font-family:"Book Antiqua";font-weight:bold}.topictitle5{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.blocklabel,.topictitle6{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.sectiontitle{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:-1cm;text-indent:0;font-size:13.0pt;font-family:"Arial";font-weight:bold}.tocentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Book Antiqua";font-weight:bold}.tocentry2{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry3{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry4{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tocentry5{margin-top:4.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman"}.tofentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.totentry1{margin-top:8.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;line-height:12.0pt;font-size:11.0pt;font-family:"Times New Roman";font-weight:normal}.indexheading{margin-top:15.0pt;margin-right:0;margin-bottom:4.0pt;margin-left:0;text-indent:0;font-size:13.0pt;font-family:"Book Antiqua";font-weight:bold}.indexentry1{margin-top:4pt;margin-right:0;margin-bottom:0;margin-left:0;line-height:12.0pt;font-size:12.0pt;font-family:"Times New Roman"}.indexentry2{margin-top:0;margin-right:0;margin-bottom:0;margin-left:24.0pt;line-height:12.0pt;font-size:12.0pt}.indexentry3{margin-top:0;margin-right:0;margin-bottom:0;margin-left:48pt;line-height:12.0pt;font-size:12.0pt}.figurenumber{font-weight:bold}.tablenumber{font-weight:bold}.familylinks{margin-top:1.5em;margin-bottom:1em}.figcap{font-size:11.0pt}.tablecap{font-size:11.0pt}.figdesc{font-style:normal}.fignone{margin-top:8.0pt}.figborder{border-style:solid;padding-left:3px;border-width:2px;padding-right:3px;margin-top:1em;border-color:Silver}.figsides{border-left:2px solid;padding-left:3px;border-right:2px solid;padding-right:3px;margin-top:1em;border-color:Silver}.figtop{border-top:2px solid;margin-top:1em;border-color:Silver}.figbottom{border-bottom:2px solid;border-color:Silver}.figtopbot{border-top:2px solid;border-bottom:2px solid;margin-top:1em;border-color:Silver}.ullinks{margin-left:0;list-style-type:none}.ulchildlink{margin-top:1em;margin-bottom:1em}.olchildlink{margin-top:1em;margin-bottom:1em;margin-left:1em}.linklist{margin-bottom:1em}.linklistwithchild{margin-left:1.5em;margin-bottom:1em}.sublinklist{margin-left:1.5em;margin-bottom:1em}.relconcepts{margin-left:1cm;margin-top:1em;margin-bottom:1em}.reltasks{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relref{margin-left:1cm;margin-top:1em;margin-bottom:1em}.relinfo{margin-top:1em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-left:0}.parentlink{margin-top:.6em;margin-bottom:.6em}.nextlink{margin-top:.6em;margin-bottom:.6em}.previouslink{margin-top:.6em;margin-bottom:.6em}.section{margin-top:1em;margin-bottom:1em}.example{margin-top:1em;margin-bottom:1em}table .note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.note{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.notetitle{font-weight:bold;font-size:11.0pt}.notelisttitle{font-weight:bold}table .tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.tip{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.tiptitle{font-weight:bold;font-size:11.0pt}table .fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.fastpath{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.fastpathtitle{font-weight:bold;font-size:11.0pt}table .important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.important{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.importanttitle{font-weight:bold;font-size:11.0pt}table .remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.remember{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.remembertitle{font-weight:bold;font-size:11.0pt}table .restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman";font-style:italic}.restriction{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;border-top:solid .5pt;border-bottom:solid .5pt}.restrictiontitle{font-weight:bold;font-size:11.0pt}table .attention{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.attention{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}.attentiontitle{font-weight:bold}table .danger{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.dangertitle{font-weight:bold}.danger{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .notice{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.noticetitle{font-weight:bold}.notice{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .warning{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}.warningtitle{font-weight:bold}.warning{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}table .caution{margin-top:1em;margin-bottom:1em;border:0;font-size:10.0pt;font-family:"Times New Roman"}table caption{margin-top:8pt;text-align:left;font-weight:bold}.tablenoborder{margin-top:8pt}.cautiontitle{font-weight:bold}.caution{margin-top:1em;margin-bottom:1em;border:0;border-top:solid .5pt;border-bottom:solid .5pt}ul.simple{list-style-type:none}li ul{margin-top:.6em}li{margin-top:.6em;margin-bottom:.6em}.note li{margin-top:.2em;margin-bottom:.2em}.tip li{margin-top:.2em;margin-bottom:.2em}.danger li{margin-top:.2em;margin-bottom:.2em}.warning li{margin-top:.2em;margin-bottom:.2em}.notice li{margin-top:.2em;margin-bottom:.2em}.caution li{margin-top:.2em;margin-bottom:.2em}.attention li{margin-top:.2em;margin-bottom:.2em}table li{margin-top:.2em;margin-bottom:.2em}.firstcol{font-weight:bold}th{background-color:#cfcfcf}.bold{font-weight:bold}.boldItalic{font-weight:bold;font-style:italic}.italic{font-style:italic}.underlined{text-decoration:underline}.var{font-style:italic}.shortcut{text-decoration:underline}.dlterm{font-weight:bold}dd{margin-top:.5em;margin-bottom:.5em}.dltermexpand{font-weight:bold;margin-top:1em}*[compact="yes"]>li{margin-top:0}*[compact="no"]>li{margin-top:.53em}.liexpand{margin-top:1em;margin-bottom:1em}.sliexpand{margin-top:1em;margin-bottom:1em}.dlexpand{margin-top:1em;margin-bottom:1em}.ddexpand{margin-top:1em;margin-bottom:1em}.stepexpand{margin-top:1em;margin-bottom:1em}.substepexpand{margin-top:1em;margin-bottom:1em}table{margin-top:8pt;margin-bottom:10.0pt;width:100%}thead{font-size:10.0pt;font-family:"Book Antiqua";font-weight:bold}tbody{font-size:11.0pt}ol{margin-top:1em;margin-bottom:1em;margin-left:1.7em;-webkit-padding-start:0}ul{margin-top:1em;margin-bottom:1em;margin-left:1.2em;-webkit-padding-start:0}ol ul{list-style:disc}ul ul{list-style:square}ol ol{list-style-type:lower-alpha}table ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}table ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ul{margin-top:.4em;margin-bottom:.4em;list-style:square}table ol ol{margin-top:.4em;margin-bottom:.4em;list-style:lower-alpha}table ol ul{margin-top:.4em;margin-bottom:.4em;list-style:disc}table ul ol{margin-top:.4em;margin-bottom:.4em;list-style:decimal}.substepthirdol{list-style-type:lower-roman}div.imageleft{text-align:left}div.imagecenter{text-align:center}div.imageright{text-align:right}div.imagejustify{text-align:justify}div.noblankline{text-align:center}div.noblankline img{margin-top:0}pre{font-size:10.0pt;border-width:2px;padding:2px;margin-top:5px;margin-bottom:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre.screen{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}pre.codeblock{margin-top:2px;margin-bottom:2px;padding:1.5px 1.5px 0 1.5px;border:0;white-space:pre}.dropdownAllButtonexpand{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4}.dropdownAllButtoncollapse{cursor:pointer;background-repeat:no-repeat;background-position:0 4px;padding-left:15px;background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;text-decoration:underline;color:#007af4}.dropdowntitle{background-repeat:no-repeat;background-position:0 4px;padding-left:15px;cursor:pointer;text-decoration:underline;color:#007af4}.dropdownexpand .dropdowntitle{background-image:url(icon-arrowdn.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapse .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.dropdowncollapsetable .dropdowntitle{background-image:url(icon-arrowrt.gif);text-decoration:underline;color:#007af4;margin:0 0 8px 0}.prefacesectiontitle1{margin-top:10.0pt;margin-right:0;margin-bottom:8.0pt;margin-left:-1cm;text-indent:0;font-size:18.0pt;font-family:"Book Antiqua";font-weight:bold;overflow:auto}.termcolor{color:blue;cursor:pointer}#dhtmlgoodies_tooltip{background-color:#f0f0d2;border:1px solid #000;position:absolute;display:none;z-index:20000;padding:2px;font-size:.9em;-moz-border-radius:6px;font-family:"Trebuchet MS","Lucida Sans Unicode",Arial,sans-serif}#dhtmlgoodies_tooltipShadow{position:absolute;background-color:#555;display:none;z-index:10000;opacity:.7;filter:alpha(opacity=70);-khtml-opacity:.7;-moz-opacity:.7;-moz-border-radius:6px}.freeze{position:fixed;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));left:10;top:0}.hrcopyright{color:#3f4e5d;margin-top:18pt;margin-left:-1cm}.hwcopyright{text-align:center;font-family:Arial;margin-left:-1cm} \ No newline at end of file diff --git a/modelarts/umn/public_sys-resources/commonrtl.css b/modelarts/umn/public_sys-resources/commonrtl.css new file mode 100644 index 000000000..947a9a033 --- /dev/null +++ b/modelarts/umn/public_sys-resources/commonrtl.css @@ -0,0 +1,2 @@ +.msgph{font-family:Courier New}.unresolved{background-color:#87ceeb}.noTemplate{background-color:#ff0}.base{background-color:#fff}/*! Add space for top level topics */.nested0,.p{margin-top:1em}/*! div with class=p is used for paragraphs that contain blocks, to keep the XHTML valid *//*! Default of italics to set apart figure captions */.figcap,.italic,.var{font-style:italic}.figdesc{font-style:normal}/*! Use @frame to create frames on figures */.figborder{padding-left:3px;padding-right:3px;margin-top:1em;border:2px solid Silver}.figsides{margin-top:1em;padding-left:3px;padding-right:3px;border-left:2px solid Silver;border-right:2px solid Silver}.figtop{border-top:2px solid Silver;margin-top:1em}.figbottom{border-bottom:2px solid Silver}.figtopbot{border-top:2px solid Silver;border-bottom:2px solid Silver;margin-top:1em}/*! Most link groups are created with
    . Ensure they have space before and after. */.ullinks,ul.simple{list-style-type:none}.attention,.danger,.ddexpand,.dlexpand,.example,.fastpath,.important,.liexpand,.linklist,.note,.notice,.olchildlink,.relconcepts,.relinfo,.relref,.reltasks,.remember,.restriction,.section,.sliexpand,.stepexpand,.substepexpand,.tip,.ulchildlink,.warning{margin-top:1em;margin-bottom:1em}.linklistwithchild,.sublinklist{margin-top:1em;margin-right:1.5em;margin-bottom:1em}.breadcrumb{font-size:smaller;margin-bottom:1em}.prereq{margin-right:20px}/*! Set heading sizes, getting smaller for deeper nesting */.topictitle1{font-size:1.34em;margin-top:0;margin-bottom:.1em}.topictitle2,.topictitle3,.topictitle4,.topictitle5,.topictitle6,.sectiontitle{font-size:1.17em}.topictitle2{margin-top:1pc;margin-bottom:.45em}.topictitle3{margin-top:1pc;margin-bottom:.17em;font-weight:700}.topictitle4{margin-top:.83em;font-weight:700}.topictitle5{font-weight:700}.topictitle6{font-style:italic}.sectiontitle{margin-top:1em;margin-bottom:0;color:#000;font-weight:700}/*! All note formats have the same default presentation */.attentiontitle,.bold,.cautiontitle,.dangertitle,.dlterm,.fastpathtitle,.firstcol,.importanttitle,.notelisttitle,.notetitle,.noticetitle,.parmname,.remembertitle,.restrictiontitle,.tiptitle,.uicontrol,.warningtitle{font-weight:700}.caution{font-weight:700;margin-bottom:1em}/*! Simple lists do not get a bullet *//*! Used on the first column of a table, when rowheader="firstcol" is used *//*! Various basic phrase styles */.boldItalic{font-weight:700;font-style:italic}.shortcut,.underlined{text-decoration:underline}/*! 2008-10-27 keyword采用跟随上下文的样式 +*//*! Default of bold for definition list terms *//*! Use CSS to expand lists with @compact="no" */.dltermexpand{font-weight:700;margin-top:1em}[compact="yes"]>li{margin-top:0}[compact="no"]>li{margin-top:.53em}/*! Align images based on @align on topic/image */div.imageleft,.text-align-left{text-align:left}div.imagecenter,.text-align-center{text-align:center}div.imageright,.text-align-right{text-align:right}div.imagejustify,.text-align-justify{text-align:justify}.cellrowborder{border-right:0;border-top:0;border-left:1px solid;border-bottom:1px solid}.row-nocellborder{border-left:hidden;border-right:0;border-top:0;border-bottom:1px solid}.cell-norowborder{border-top:0;border-bottom:hidden;border-right:0;border-left:1px solid}.nocellnorowborder{border:0;border-left:hidden;border-bottom:hidden}pre.codeblock,pre.screen{padding:5px;border:outset;background-color:#ccc;margin-top:2px;margin-bottom:2px;white-space:pre} \ No newline at end of file diff --git a/modelarts/umn/public_sys-resources/danger_3.0-en-us.png b/modelarts/umn/public_sys-resources/danger_3.0-en-us.png new file mode 100644 index 000000000..47a9c7235 Binary files /dev/null and b/modelarts/umn/public_sys-resources/danger_3.0-en-us.png differ diff --git a/modelarts/umn/public_sys-resources/delta.gif b/modelarts/umn/public_sys-resources/delta.gif new file mode 100644 index 000000000..0d1b1f674 Binary files /dev/null and b/modelarts/umn/public_sys-resources/delta.gif differ diff --git a/modelarts/umn/public_sys-resources/deltaend.gif b/modelarts/umn/public_sys-resources/deltaend.gif new file mode 100644 index 000000000..cc7da0fc8 Binary files /dev/null and b/modelarts/umn/public_sys-resources/deltaend.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-arrowdn.gif b/modelarts/umn/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 000000000..84eec9be2 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-arrowdn.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-arrowrt.gif b/modelarts/umn/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 000000000..39583d168 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-arrowrt.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-caution.gif b/modelarts/umn/public_sys-resources/icon-caution.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-caution.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-danger.gif b/modelarts/umn/public_sys-resources/icon-danger.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-danger.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-huawei.gif b/modelarts/umn/public_sys-resources/icon-huawei.gif new file mode 100644 index 000000000..a31d60f89 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-huawei.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-note.gif b/modelarts/umn/public_sys-resources/icon-note.gif new file mode 100644 index 000000000..31be2b039 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-note.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-notice.gif b/modelarts/umn/public_sys-resources/icon-notice.gif new file mode 100644 index 000000000..409070650 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-notice.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-tip.gif b/modelarts/umn/public_sys-resources/icon-tip.gif new file mode 100644 index 000000000..c47bae05c Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-tip.gif differ diff --git a/modelarts/umn/public_sys-resources/icon-warning.gif b/modelarts/umn/public_sys-resources/icon-warning.gif new file mode 100644 index 000000000..079c79b26 Binary files /dev/null and b/modelarts/umn/public_sys-resources/icon-warning.gif differ diff --git a/modelarts/umn/public_sys-resources/note_3.0-en-us.png b/modelarts/umn/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 000000000..57a0e1f53 Binary files /dev/null and b/modelarts/umn/public_sys-resources/note_3.0-en-us.png differ diff --git a/modelarts/umn/public_sys-resources/notice_3.0-en-us.png b/modelarts/umn/public_sys-resources/notice_3.0-en-us.png new file mode 100644 index 000000000..fa4b64990 Binary files /dev/null and b/modelarts/umn/public_sys-resources/notice_3.0-en-us.png differ diff --git a/modelarts/umn/public_sys-resources/popup.js b/modelarts/umn/public_sys-resources/popup.js new file mode 100644 index 000000000..a550862ed --- /dev/null +++ b/modelarts/umn/public_sys-resources/popup.js @@ -0,0 +1 @@ +var i=0;var dhtmlgoodies_tooltipFlag=false;var dhtmlgoodies_tooltip="";var dhtmlgoodies_tooltipShadow="";var dhtmlgoodies_shadowSize=3;var dhtmlgoodies_tooltipMaxWidth=500;var dhtmlgoodies_tooltipMinWidth=100;var dhtmlgoodies_iframe=false;var timeId;var clickFlag=false;var tooltip_is_msie=(navigator.userAgent.indexOf("MSIE")>=0&&navigator.userAgent.indexOf("opera")==-1&&document.all)?true:false;var xPos;var yPos;window.document.onmousemove=function(a){a=a||window.event;if(a.pageX){xPos=a.pageX;yPos=a.pageY}else{if(document.body!==null&&typeof document.body!=="undefined"){xPos=a.clientX+document.body.scrollLeft-document.body.clientLeft;yPos=a.clientY+document.body.scrollTop-document.body.clientTop}}};function showTooltip(e){if(document.body===null||typeof document.body==="undefined"){return}if(i==0){return}clickFlag=true;var f=Json.parse("jsonData."+e);var a=Math.max(document.body.clientWidth,document.documentElement.clientWidth)-20;if(!dhtmlgoodies_tooltipFlag){dhtmlgoodies_tooltip=document.createElement("DIV");dhtmlgoodies_tooltip.id="dhtmlgoodies_tooltip";dhtmlgoodies_tooltipShadow=document.createElement("DIV");dhtmlgoodies_tooltipShadow.id="dhtmlgoodies_tooltipShadow";document.body.appendChild(dhtmlgoodies_tooltip);document.body.appendChild(dhtmlgoodies_tooltipShadow);if(tooltip_is_msie){dhtmlgoodies_iframe=document.createElement("IFRAME");dhtmlgoodies_iframe.frameborder="5";dhtmlgoodies_iframe.style.backgroundColor="#FFFFFF";dhtmlgoodies_iframe.src="#";dhtmlgoodies_iframe.style.zIndex=100;dhtmlgoodies_iframe.style.position="absolute";document.body.appendChild(dhtmlgoodies_iframe)}}dhtmlgoodies_tooltip.style.display="block";dhtmlgoodies_tooltipShadow.style.display="block";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="block"}var b=Math.max(document.body.scrollTop,document.documentElement.scrollTop);if(navigator.userAgent.toLowerCase().indexOf("safari")>=0){b=0}var c=xPos+10;dhtmlgoodies_tooltip.style.width=null;dhtmlgoodies_tooltip.innerHTML=f;dhtmlgoodies_tooltip.style.left=c+"px";if(tooltip_is_msie){dhtmlgoodies_tooltip.style.top=yPos+20+b+"px"}else{dhtmlgoodies_tooltip.style.top=yPos+20+"px"}dhtmlgoodies_tooltipShadow.style.left=c+dhtmlgoodies_shadowSize+"px";if(tooltip_is_msie){dhtmlgoodies_tooltipShadow.style.top=yPos+20+b+dhtmlgoodies_shadowSize+"px"}else{dhtmlgoodies_tooltipShadow.style.top=yPos+20+dhtmlgoodies_shadowSize+"px"}if(dhtmlgoodies_tooltip.offsetWidth>dhtmlgoodies_tooltipMaxWidth){dhtmlgoodies_tooltip.style.width=dhtmlgoodies_tooltipMaxWidth+"px"}var d=dhtmlgoodies_tooltip.offsetWidth;if(da){dhtmlgoodies_tooltip.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((c+d)-a))+"px";dhtmlgoodies_tooltipShadow.style.left=(dhtmlgoodies_tooltipShadow.style.left.replace("px","")-((c+d)-a)+dhtmlgoodies_shadowSize)+"px"}if(tooltip_is_msie){dhtmlgoodies_iframe.style.left=dhtmlgoodies_tooltip.style.left;dhtmlgoodies_iframe.style.top=dhtmlgoodies_tooltip.style.top;dhtmlgoodies_iframe.style.width=dhtmlgoodies_tooltip.offsetWidth+"px";dhtmlgoodies_iframe.style.height=dhtmlgoodies_tooltip.offsetHeight+"px"}}function hideTooltip(){i=0;clickFlag=false;if((dhtmlgoodies_tooltip!==null&&typeof dhtmlgoodies_tooltip!=="undefined")&&+(dhtmlgoodies_tooltip.style!==null&&typeof dhtmlgoodies_tooltip.style!=="undefined")){dhtmlgoodies_tooltip.style.display="none";dhtmlgoodies_tooltipShadow.style.display="none";if(tooltip_is_msie){dhtmlgoodies_iframe.style.display="none"}}if(timeId!==null&&typeof timeId!=="undefined"&&timeId!=""){clearTimeout(timeId)}}function showText(a){i=1;timeId=setTimeout(function(){showTooltip(a)},500)}function showText2(a){if(!clickFlag){i=1;showTooltip(a);i=0;if(timeId!==null&&typeof timeId!=="undefined"&&timeId!=""){clearTimeout(timeId)}}}function anchorScroll(b){var d=document.getElementsByName(b);if(d!=null&&d.length>0){var c=d[0];var a=c.getBoundingClientRect().left+(document.body.scrollLeft||(document.documentElement&&document.documentElement.scrollLeft));var e=c.getBoundingClientRect().top+(document.body.scrollTop||(document.documentElement&&document.documentElement.scrollTop));window.scrollTo(a,e-30)}}; \ No newline at end of file diff --git a/modelarts/umn/public_sys-resources/pygments.css b/modelarts/umn/public_sys-resources/pygments.css new file mode 100644 index 000000000..49bada08a --- /dev/null +++ b/modelarts/umn/public_sys-resources/pygments.css @@ -0,0 +1 @@ +.hll{background-color:#ffc}.c{color:#069;font-style:italic}.err{color:black}.k{color:#069;font-weight:bold}.ch{color:#069;font-style:italic}.cm{color:#008200}.cp{color:black}.cpf{color:#069;font-style:italic}.c1{color:#008200}.cs{color:#069;font-weight:bold}.gd{color:#000;background-color:#fdd}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:#aaa}.gt{color:#a00}.kc{color:#000080;font-weight:bold}.kd{color:#069;font-weight:bold}.kn{color:#000080;font-weight:bold}.kp{color:#069;font-weight:bold}.kr{color:#000080;font-weight:bold}.kt{color:#069;font-weight:bold}.m{color:blue}.s{color:blue}.na{color:gray}.nt{color:#069;font-weight:bold}.ow{font-weight:bold}.w{color:#bbb}.mb{color:blue}.mf{color:blue}.mh{color:blue}.mi{color:black}.mo{color:blue}.sa{color:blue}.sb{color:blue}.sc{color:#800080}.dl{color:blue}.sd{color:blue}.s2{color:blue}.se{color:blue}.sh{color:blue}.si{color:blue}.sx{color:blue}.sr{color:blue}.s1{color:blue}.ss{color:blue}.il{color:blue}.linenos{width:15px}.linenos{border-right:3px solid #6ce26c;color:#afafaf;text-align:right;padding:0 .5em 0 1em}.codecoloring{line-height:1.1em}.code .highlight pre{font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace}.code .highlight pre span{font-size:1em}.nb{color:#ff1493}.nv{color:#a70}.nx,.o,.n,.nf{color:black}.vc,.vi{color:#a70}.highlight pre{padding:0 1em}.highlighttable pre{box-sizing:border-box;margin:0} \ No newline at end of file diff --git a/modelarts/umn/public_sys-resources/warning_3.0-en-us.png b/modelarts/umn/public_sys-resources/warning_3.0-en-us.png new file mode 100644 index 000000000..def5c3565 Binary files /dev/null and b/modelarts/umn/public_sys-resources/warning_3.0-en-us.png differ diff --git a/modelarts/umn/temp/accessing_a_real-time_service_(token-based_authentication).tmp b/modelarts/umn/temp/accessing_a_real-time_service_(token-based_authentication).tmp new file mode 100644 index 000000000..f077c8c2b --- /dev/null +++ b/modelarts/umn/temp/accessing_a_real-time_service_(token-based_authentication).tmp @@ -0,0 +1,47 @@ + + +

    Accessing a Real-Time Service (Token-based Authentication)

    +

    If a real-time service is in the Running state, the real-time service has been deployed successfully. This service provides a standard RESTful API for users to call. Before integrating the API to the production environment, commission the API. You can use either of the following methods to send an inference request to the real-time service:

    +

    Method 1: Use GUI-based Software for Inference (Postman) (Postman is recommended for Windows.)

    +

    Method 2: Run the cURL Command to Send an Inference Request (curl commands are recommended for Linux.)

    +

    Method 1: Use GUI-based Software for Inference (Postman)

    1. Download Postman and install it, or install the Postman Chrome extension. Alternatively, use other software that can send POST requests. Postman 7.24.0 is recommended.
    2. Open Postman.
    3. Set parameters on Postman. The following uses image classification as an example.
      • Select a POST task and copy the API URL to the POST text box. To obtain the API URL of the real-time service, switch to the Usage Guides tab on the page providing details about the real-time service. On the Headers tab page, set Key to X-Auth-Token and Value to the obtained token.

        +

        +
      • On the Body tab page, file input and text input are available.
        • File input

          Select form-data. Set KEY to the input parameter of the model, for example, images. Set VALUE to an image to be inferred (only one image can be inferred).

          +
        • Text input

          Select raw and then JSON(application/json). Enter the request body in the text box below. An example request body is as follows:

          +
          {
          +  "meta": {
          +    "uuid": "10eb0091-887f-4839-9929-cbc884f1e20e"
          +  },
          +  "data": {
          +    "req_data": [
          +      {
          +        "sepal_length": 3,
          +        "sepal_width": 1,
          +        "petal_length": 2.2,
          +        "petal_width": 4
          +      }
          +    ]
          +  }
          +}
          +

          meta can carry a universally unique identifier (UUID). When you call an API, the system provides a UUID. When the inference result is returned, the UUID is returned to trace the request. If you do not need this function, leave meta blank. data contains a req_data array for one or multiple pieces of input data. The parameters of each piece of data are determined by the model, such as sepal_length and sepal_width in this example.

          +
        +
      +
    4. After setting the parameters, click Send to send the request. The result is displayed in the response.
      • Inference result using file input: The field values in the return result vary with the model.
      • Inference result using text input: The request body contains meta and data. If the request contains uuid, uuid will be returned in the response. Otherwise, uuid is left blank. data contains a resp_data array for the inference results of one or multiple pieces of input data. The parameters of each result are determined by the model, for example, sepal_length and predictresult in this example.
      +
    + +

    Method 2: Run the cURL Command to Send an Inference Request

    The command for sending inference requests can be input as a file or text.

    + +
    1. File input
      curl -k -F 'images=@Image path' -H 'X-Auth-Token:Token value' -X POST Real-time service URL
      +
      • -k indicates that SSL websites can be accessed without using a security certificate.
      • -F indicates file input. In this example, the parameter name is images, which can be changed as required. The image storage path follows @.
      • -H indicates the header of the POST command. X-Auth-Token is the KEY value on the Headers page. Token value indicates the obtained token. For details about how to obtain the token, see .
      • POST is followed by the API URL of the real-time service.
      +

      The following is an example of the cURL command for inference with file input:

      +
      curl -k -F 'images=@/home/data/test.png' -H 'X-Auth-Token:MIISkAY***80T9wHQ==' -X POST https://modelarts-infers-1.xxx/v1/infers/eb3e0c54-3dfa-4750-af0c-95c45e5d3e83
      +
    2. Text input
      curl -k -d '{"data":{"req_data":[{"sepal_length":3,"sepal_width":1,"petal_length":2.2,"petal_width":4}]}}' -H 'X-Auth-Token:MIISkAY***80T9wHQ==' -H 'Content-type: application/json' -X POST https://modelarts-infers-1.xxx/v1/infers/eb3e0c54-3dfa-4750-af0c-95c45e5d3e83
      +

      -d indicates the text input of the request body.

      +
    + + + +Parent topic: Real-Time Services + + + diff --git a/modelarts/umn/temp/arm-ascend_template.tmp b/modelarts/umn/temp/arm-ascend_template.tmp new file mode 100644 index 000000000..248280fce --- /dev/null +++ b/modelarts/umn/temp/arm-ascend_template.tmp @@ -0,0 +1,32 @@ + + +

    Arm-Ascend Template

    +

    Introduction

    AI engine: MindSpore; Environment: Python 3.5; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    + +

    Template Input

    The template input is the OM-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    + +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you cannot select another input and output mode during model creation.

    + +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    + +

    Model Package Example

    Structure of the OM-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    ├── <<Custom Python package>>    (Optional) User's Python package, which can be directly referenced in the model inference code
    +    ├── model.om              (Mandatory) Protocol buffer file, which contains the diagram description of the model
    +    ├──customize_service.py   (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    + + + + +Parent topic: Template Description + + + diff --git a/modelarts/umn/temp/basic_concepts.tmp b/modelarts/umn/temp/basic_concepts.tmp new file mode 100644 index 000000000..2ff14e645 --- /dev/null +++ b/modelarts/umn/temp/basic_concepts.tmp @@ -0,0 +1,13 @@ + + +

    Basic Concepts

    +

    A fine-grained policy is a set of permissions defining which operations on which cloud services can be performed. Each policy can define multiple permissions. After a policy is granted to a user group, users in the group can obtain all permissions defined by the policy. IAM implements fine-grained permissions management based on the permissions defined by policies.

    +

    IAM supports two types of policies:

    +
    • Default policies: Define the common permissions preset in the system, which are typically read-only or management permissions for cloud services such as ModelArts. Default policies can be used only for authorization and cannot be edited or modified.
    • Custom policies: Define the permissions created and managed by users and are the extension and supplement of default policies.
    + + + +Parent topic: Permissions Management + + + diff --git a/modelarts/umn/temp/basic_concepts_of_ai_development.tmp b/modelarts/umn/temp/basic_concepts_of_ai_development.tmp new file mode 100644 index 000000000..8821a53a0 --- /dev/null +++ b/modelarts/umn/temp/basic_concepts_of_ai_development.tmp @@ -0,0 +1,22 @@ + + +

    Basic Concepts of AI Development

    +

    Machine learning is classified into supervised, unsupervised, and reinforcement learning.

    +
    • Supervised learning uses labeled samples to adjust the parameters of classifiers to achieve the required performance. It can be considered as learning with a teacher. Common supervised learning includes regression and classification.
    • Unsupervised learning is used to find hidden structures in unlabeled data. Clustering is a form of unsupervised learning.
    • Reinforcement learning is an area of machine learning concerned with how software agents ought to take actions in an environment so as to maximize some notion of cumulative reward.
    +

    Regression

    Regression reflects the time feature of data attributes and generates a function that maps one data attribute to an actual variable prediction to find the dependency between the variable and attribute. Regression mainly analyzes data and predicts data and data relationship. Regression can be used for customer development, retention, customer churn prevention, production lifecycle analysis, sales trend prediction, and targeted promotion.

    +

    + +

    Classification

    Classification involves defining a set of categories based on the common features of objects and identifying which category an object belongs to. Classification can be used for customer classification, customer properties, feature analysis, customer satisfaction analysis, and customer purchase trend prediction.

    +

    + +

    Clustering

    Clustering involves grouping a set of objects in such a way that objects in the same group are more similar to each other than to those in other groups. Clustering can be used for customer segmentation, customer characteristic analysis, customer purchase trend prediction, and market segmentation.

    +

    +

    Clustering analyzes data objects and produces class labels. Objects are grouped based on the maximized and minimized similarities to form clusters. In this way, objects in the same cluster are more similar to each other than to those in other clusters.

    + + + + +Parent topic: Basic Knowledge + + + diff --git a/modelarts/umn/temp/basic_knowledge.tmp b/modelarts/umn/temp/basic_knowledge.tmp new file mode 100644 index 000000000..8b70f4317 --- /dev/null +++ b/modelarts/umn/temp/basic_knowledge.tmp @@ -0,0 +1,29 @@ + + +

    Basic Knowledge

    + + + + + +Parent topic: Service Overview + + + diff --git a/modelarts/umn/temp/batch_services.tmp b/modelarts/umn/temp/batch_services.tmp new file mode 100644 index 000000000..b522052fb --- /dev/null +++ b/modelarts/umn/temp/batch_services.tmp @@ -0,0 +1,17 @@ + + +

    Batch Services

    + + + + + +Parent topic: Model Deployment + + + diff --git a/modelarts/umn/temp/built-in_image_processing_mode.tmp b/modelarts/umn/temp/built-in_image_processing_mode.tmp new file mode 100644 index 000000000..a3a26f963 --- /dev/null +++ b/modelarts/umn/temp/built-in_image_processing_mode.tmp @@ -0,0 +1,18 @@ + + +

    Built-in Image Processing Mode

    +

    Input

    The built-in image processing input and output mode can be applied to models such as image classification, object detection, and image semantic segmentation. The prediction request path is /, the request protocol is HTTPS, the request method is POST, Content-Type is multipart/form-data, key is images, and type is file. Before selecting this mode, ensure that your model can process the input data whose key is images.

    + +

    Output

    The inference result is returned in JSON format. The specific fields are determined by the model.

    + +

    Sample Request

    In this mode, input an image to be processed in the inference request. The response in JSON format varies according to the model. The following are examples:

    +
    • Performing prediction on the console
    • Using Postman to call a RESTful API for prediction

      After a model is deployed as a service, you can obtain the API URL on the Usage Guides tab page of the service details page. On the Body tab page, set the request body. Set key to images, select File, select the image to be processed, and click send to send your prediction request.

      +
    + + + + +Parent topic: Input and Output Modes + + + diff --git a/modelarts/umn/temp/built-in_object_detection_mode.tmp b/modelarts/umn/temp/built-in_object_detection_mode.tmp new file mode 100644 index 000000000..575044183 --- /dev/null +++ b/modelarts/umn/temp/built-in_object_detection_mode.tmp @@ -0,0 +1,85 @@ + + +

    Built-in Object Detection Mode

    +

    Input

    This is a built-in input and output mode for object detection. The models using this mode are identified as object detection models. The prediction request path is /, the request protocol is HTTP, the request method is POST, Content-Type is multipart/form-data, key is images, and type is file. Before selecting this mode, ensure that your model can process the input data whose key is images.

    + +

    Output

    The inference result is returned in JSON format. For details about the fields, see Table 1.

    + +.. _modelarts_23_0100__en-us_topic_0172873542_table101531747125712: + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters

    Field

    +

    Type

    +

    Description

    +

    detection_classes

    +

    String array

    +

    List of detected objects, for example, ["flowers","cat"]

    +

    detection_boxes

    +

    Float array

    +

    Coordinates of the bounding box, in the format of

    +

    detection_scores

    +

    Float array

    +

    Confidence scores of detected objects, which are used to measure the detection accuracy

    +
    + +

    The JSON Schema of the inference result is as follows:

    +
    {
    +	"type": "object",
    +	"properties": {
    +		"detection_classes": {
    +			"items": {
    +				"type": "string"
    +			},
    +			"type": "array"
    +		},
    +		"detection_boxes": {
    +			"items": {
    +				"minItems": 4,
    +				"items": {
    +					"type": "number"
    +				},
    +				"type": "array",
    +				"maxItems": 4
    +			},
    +			"type": "array"
    +		},
    +		"detection_scores": {
    +			"items": {
    +				"type": "string"
    +			},
    +			"type": "array"
    +		}
    +	}
    +}
    + +

    Sample Request

    In this mode, input an image to be processed in the inference request. The inference result is returned in JSON format. The following are examples:
    • Performing prediction on the console

      On the Prediction tab page of the service details page, upload an image and click Predict to obtain the prediction result.

      +
    • Using Postman to call a RESTful API for prediction

      After a model is deployed as a service, you can obtain the API URL on the Usage Guides tab page of the service details page.

      +
      • On the Headers tab page, set Content-Type to multipart/form-data and X-Auth-Token to the actual token obtained.
      +
      • On the Body tab page, set the request body. Set key to images, select File, select the image to be processed, and click send to send your prediction request.
      +
    + + + + + +Parent topic: Input and Output Modes + + + diff --git a/modelarts/umn/temp/built-in_predictive_analytics_mode.tmp b/modelarts/umn/temp/built-in_predictive_analytics_mode.tmp new file mode 100644 index 000000000..663b75892 --- /dev/null +++ b/modelarts/umn/temp/built-in_predictive_analytics_mode.tmp @@ -0,0 +1,142 @@ + + +

    Built-in Predictive Analytics Mode

    +

    Input

    This is a built-in input and output mode for predictive analytics. The models using this mode are identified as predictive analytics models. The prediction request path is /, the request protocol is HTTP, the request method is POST, and Content-Type is application/json. The request body is in JSON format. For details about the JSON fields, see Table 1. Before selecting this mode, ensure that your model can process the input data in JSON Schema format.

    + +.. _modelarts_23_0102__en-us_topic_0172873544_table101531747125712: + + + + + + + + + + + +
    Table 1 JSON field description

    Field

    +

    Type

    +

    Description

    +

    data

    +

    Data structure

    +

    Inference data. For details, see Table 2.

    +
    + + +.. _modelarts_23_0102__en-us_topic_0172873544_table159187574436: + + + + + + + + + + + +
    Table 2 Data description

    Field

    +

    Type

    +

    Description

    +

    req_data

    +

    ReqData array

    +

    List of inference data

    +
    + +

    ReqData is of the Object type and indicates the inference data. The data structure is determined by the application scenario. For models using this mode, the preprocessing logic in the custom model inference code should be able to correctly process the data inputted in the format defined by the mode.

    +

    The JSON Schema of a prediction request is as follows:

    +
    {
    +	"type": "object",
    +	"properties": {
    +		"data": {
    +			"type": "object",
    +			"properties": {
    +				"req_data": {
    +					"items": [{
    +						"type": "object",
    +						"properties": {}
    +					}],
    +					"type": "array"
    +				}
    +			}
    +		}
    +	}
    +}
    + +

    Output

    The inference result is returned in JSON format. For details about the JSON fields, see Table 3.

    + +.. _modelarts_23_0102__en-us_topic_0172873544_table49621346461: + + + + + + + + + + + +
    Table 3 JSON field description

    Field

    +

    Type

    +

    Description

    +

    data

    +

    Data structure

    +

    Inference data. For details, see Table 4.

    +
    + + +.. _modelarts_23_0102__en-us_topic_0172873544_table196311344469: + + + + + + + + + + + +
    Table 4 Data description

    Field

    +

    Type

    +

    Description

    +

    resp_data

    +

    RespData array

    +

    List of prediction results

    +
    + +

    Similar to ReqData, RespData is also of the Object type and indicates the prediction result. Its structure is determined by the application scenario. For models using this mode, the postprocessing logic in the custom model inference code should be able to correctly output data in the format defined by the mode.

    +

    The JSON Schema of a prediction result is as follows:

    +
    {
    +	"type": "object",
    +	"properties": {
    +		"data": {
    +			"type": "object",
    +			"properties": {
    +				"resp_data": {
    +					"type": "array",
    +					"items": [{
    +						"type": "object",
    +						"properties": {}
    +					}]
    +				}
    +			}
    +		}
    +	}
    +}
    + +

    Sample Request

    In this mode, input the data to be predicted in JSON format. The prediction result is returned in JSON format. The following are examples:

    +
    • Performing prediction on the console

      On the Prediction tab page of the service details page, enter inference code and click Predict to obtain the prediction result.

      +
    • Using Postman to call a RESTful API for prediction

      After a model is deployed as a service, you can obtain the API URL on the Usage Guides tab page of the service details page.

      +
      • On the Headers tab page, set Content-Type to application/json and X-Auth-Token to the actual token obtained.
      • On the Body tab page, edit the data to be predicted and click send to send your prediction request.
      +
    + + + + +Parent topic: Input and Output Modes + + + diff --git a/modelarts/umn/temp/caffe-cpu-py36_general_template.tmp b/modelarts/umn/temp/caffe-cpu-py36_general_template.tmp new file mode 100644 index 000000000..ccfcb622f --- /dev/null +++ b/modelarts/umn/temp/caffe-cpu-py36_general_template.tmp @@ -0,0 +1,33 @@ + + +

    Caffe-CPU-py36 General Template

    +

    Introduction

    AI engine: CPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    + +

    Template Input

    The template input is the Caffe-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    + +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    + +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    + +

    Model Package Example

    Structure of the Caffe-based model package

    +When publishing the model, you only need to specify the model directory.
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    |── <<Custom Python package>>      (Optional) User's Python package, which can be directly referenced in the model inference code
    +    |── deploy.prototxt         (Mandatory) Caffe model file, which contains information such as the model network structure
    +    |── resnet.caffemodel       (Mandatory) Caffe model file, which contains variable and weight information
    +   |── customize_service.py    (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    + + + + + +Parent topic: Template Description + + + diff --git a/modelarts/umn/temp/caffe-gpu-py36_general_template.tmp b/modelarts/umn/temp/caffe-gpu-py36_general_template.tmp new file mode 100644 index 000000000..bcfba4359 --- /dev/null +++ b/modelarts/umn/temp/caffe-gpu-py36_general_template.tmp @@ -0,0 +1,33 @@ + + +

    Caffe-GPU-py36 General Template

    +

    Introduction

    AI engine: GPU-based Caffe 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    + +

    Template Input

    The template input is the Caffe-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    + +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    + +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    + +

    Model Package Example

    Structure of the Caffe-based model package

    +When publishing the model, you only need to specify the model directory.
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    |── <<Custom Python package>>      (Optional) User's Python package, which can be directly referenced in the model inference code
    +    |── deploy.prototxt         (Mandatory) Caffe model file, which contains information such as the model network structure
    +    |── resnet.caffemodel       (Mandatory) Caffe model file, which contains variable and weight information
    +   |── customize_service.py    (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    + + + + + +Parent topic: Template Description + + + diff --git a/modelarts/umn/temp/caffe.tmp b/modelarts/umn/temp/caffe.tmp new file mode 100644 index 000000000..fd4c431b1 --- /dev/null +++ b/modelarts/umn/temp/caffe.tmp @@ -0,0 +1,763 @@ + + +

    Caffe

    +

    Training and Saving a Model

    lenet_train_test.prototxt file

    +
      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    name: "LeNet"
    +layer {
    +  name: "mnist"
    +  type: "Data"
    +  top: "data"
    +  top: "label"
    +  include {
    +    phase: TRAIN
    +  }
    +  transform_param {
    +    scale: 0.00390625
    +  }
    +  data_param {
    +    source: "examples/mnist/mnist_train_lmdb"
    +    batch_size: 64
    +    backend: LMDB
    +  }
    +}
    +layer {
    +  name: "mnist"
    +  type: "Data"
    +  top: "data"
    +  top: "label"
    +  include {
    +    phase: TEST
    +  }
    +  transform_param {
    +    scale: 0.00390625
    +  }
    +  data_param {
    +    source: "examples/mnist/mnist_test_lmdb"
    +    batch_size: 100
    +    backend: LMDB
    +  }
    +}
    +layer {
    +  name: "conv1"
    +  type: "Convolution"
    +  bottom: "data"
    +  top: "conv1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 20
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool1"
    +  type: "Pooling"
    +  bottom: "conv1"
    +  top: "pool1"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "conv2"
    +  type: "Convolution"
    +  bottom: "pool1"
    +  top: "conv2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 50
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool2"
    +  type: "Pooling"
    +  bottom: "conv2"
    +  top: "pool2"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "ip1"
    +  type: "InnerProduct"
    +  bottom: "pool2"
    +  top: "ip1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 500
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "relu1"
    +  type: "ReLU"
    +  bottom: "ip1"
    +  top: "ip1"
    +}
    +layer {
    +  name: "ip2"
    +  type: "InnerProduct"
    +  bottom: "ip1"
    +  top: "ip2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 10
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "accuracy"
    +  type: "Accuracy"
    +  bottom: "ip2"
    +  bottom: "label"
    +  top: "accuracy"
    +  include {
    +    phase: TEST
    +  }
    +}
    +layer {
    +  name: "loss"
    +  type: "SoftmaxWithLoss"
    +  bottom: "ip2"
    +  bottom: "label"
    +  top: "loss"
    +}
    +
    +
    +

    lenet_solver.prototxt file

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    # The train/test net protocol buffer definition
    +net: "examples/mnist/lenet_train_test.prototxt"
    +# test_iter specifies how many forward passes the test should carry out.
    +# In the case of MNIST, we have test batch size 100 and 100 test iterations,
    +# covering the full 10,000 testing images.
    +test_iter: 100
    +# Carry out testing every 500 training iterations.
    +test_interval: 500
    +# The base learning rate, momentum and the weight decay of the network.
    +base_lr: 0.01
    +momentum: 0.9
    +weight_decay: 0.0005
    +# The learning rate policy
    +lr_policy: "inv"
    +gamma: 0.0001
    +power: 0.75
    +# Display every 100 iterations
    +display: 100
    +# The maximum number of iterations
    +max_iter: 1000
    +# snapshot intermediate results
    +snapshot: 5000
    +snapshot_prefix: "examples/mnist/lenet"
    +# solver mode: CPU or GPU
    +solver_mode: CPU
    +
    +
    +

    Train the model.

    +
    ./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
    +

    The caffemodel file is generated after model training. Rewrite the lenet_train_test.prototxt file to the lenet_deploy.prototxt file used for deployment by modifying input and output layers.

    +
      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    name: "LeNet"
    +layer {
    +  name: "data"
    +  type: "Input"
    +  top: "data"
    +  input_param { shape: { dim: 1 dim: 1  dim: 28 dim: 28 } } 
    +}
    +layer {
    +  name: "conv1"
    +  type: "Convolution"
    +  bottom: "data"
    +  top: "conv1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 20
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool1"
    +  type: "Pooling"
    +  bottom: "conv1"
    +  top: "pool1"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "conv2"
    +  type: "Convolution"
    +  bottom: "pool1"
    +  top: "conv2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  convolution_param {
    +    num_output: 50
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "pool2"
    +  type: "Pooling"
    +  bottom: "conv2"
    +  top: "pool2"
    +  pooling_param {
    +    pool: MAX
    +    kernel_size: 2
    +    stride: 2
    +  }
    +}
    +layer {
    +  name: "ip1"
    +  type: "InnerProduct"
    +  bottom: "pool2"
    +  top: "ip1"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 500
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "relu1"
    +  type: "ReLU"
    +  bottom: "ip1"
    +  top: "ip1"
    +}
    +layer {
    +  name: "ip2"
    +  type: "InnerProduct"
    +  bottom: "ip1"
    +  top: "ip2"
    +  param {
    +    lr_mult: 1
    +  }
    +  param {
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 10
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +}
    +layer {
    +  name: "prob"
    +  type: "Softmax"
    +  bottom: "ip2"
    +  top: "prob"
    +}
    +
    +
    + +

    Inference Code

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    from model_service.caffe_model_service import CaffeBaseService
    +
    +import numpy as np
    +
    +import os, json
    +
    +import caffe
    +
    +from PIL import Image
    +
    +
    +class LenetService(CaffeBaseService):
    +
    +    def __init__(self, model_name, model_path):
    +        # Call the inference method of the parent class.
    +        super(LenetService, self).__init__(model_name, model_path)
    +
    +        # Configure preprocessing information.
    +        transformer = caffe.io.Transformer({'data': self.net.blobs['data'].data.shape})
    +        # Transform to NCHW.
    +        transformer.set_transpose('data', (2, 0, 1)) 
    +        # Perform normalization.
    +        transformer.set_raw_scale('data', 255.0)
    +
    +        # If the batch size is set to 1, inference is supported for only one image.
    +        self.net.blobs['data'].reshape(1, 1, 28, 28)
    +        self.transformer = transformer
    +
    +       # Define the class labels.
    +        self.label = [0,1,2,3,4,5,6,7,8,9]
    +
    +
    +    def _preprocess(self, data):
    +
    +        for k, v in data.items():
    +            for file_name, file_content in v.items():
    +                im = caffe.io.load_image(file_content, color=False)
    +               # Pre-process the images.
    +                self.net.blobs['data'].data[...] = self.transformer.preprocess('data', im)
    +
    +                return
    +
    +    def _postprocess(self, data):
    +
    +        data = data['prob'][0, :]
    +        predicted = np.argmax(data)
    +        predicted = {"predicted" : str(predicted) }
    +
    +        return predicted
    +
    +
    + + + + +Parent topic: Examples of Custom Scripts + + + diff --git a/modelarts/umn/temp/can_i_add_multiple_labels_to_an_image_for_an_object_detection_project.tmp b/modelarts/umn/temp/can_i_add_multiple_labels_to_an_image_for_an_object_detection_project.tmp new file mode 100644 index 000000000..2056d5b7e --- /dev/null +++ b/modelarts/umn/temp/can_i_add_multiple_labels_to_an_image_for_an_object_detection_project.tmp @@ -0,0 +1,11 @@ + + +

    Can I Add Multiple Labels to an Image for an Object Detection Project?

    +

    Yes. You can add multiple labels to an image.

    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/change_history.tmp b/modelarts/umn/temp/change_history.tmp new file mode 100644 index 000000000..32ee41e6f --- /dev/null +++ b/modelarts/umn/temp/change_history.tmp @@ -0,0 +1,22 @@ + + +

    Change History

    + +.. _modelarts_04_0099__en-us_topic_0135264638_en-us_topic_0135264638_table4331195115321: + + + + + + + + + +

    Released On

    +

    Description

    +

    2021-04-30

    +

    This is the first official release.

    +
    + + + diff --git a/modelarts/umn/temp/common_concepts_of_modelarts.tmp b/modelarts/umn/temp/common_concepts_of_modelarts.tmp new file mode 100644 index 000000000..2189b2569 --- /dev/null +++ b/modelarts/umn/temp/common_concepts_of_modelarts.tmp @@ -0,0 +1,20 @@ + + +

    Common Concepts of ModelArts

    +

    ExeML

    ExeML is the process of automating model design, parameter tuning, and model training, model compression, and model deployment with the labeled data. The process is code-free and does not require developers to have experience in model development. A model can be built in three steps: labeling data, training a model, and deploying the model.

    + +

    Inference

    Inference is the process of deriving a new judgment from a known judgment according to a certain strategy. In AI, machines simulate human intelligence, and complete inference based on neural networks.

    + +

    Real-Time Inference

    Real-time inference specifies a web service that provides an inference result for each inference request.

    + +

    Batch Inference

    Batch inference specifies a batch job that processes batch data for inference.

    + +

    Resource Pool

    ModelArts provides large-scale computing clusters for model development, training, and deployment. There are two types of resource pools: public resource pool and dedicated resource pool. The public resource pool is provided by default. Dedicated resource pools are created separately and used exclusively.

    + + + + +Parent topic: Basic Knowledge + + + diff --git a/modelarts/umn/temp/common_operations_on_jupyter_notebook.tmp b/modelarts/umn/temp/common_operations_on_jupyter_notebook.tmp new file mode 100644 index 000000000..d97be3116 --- /dev/null +++ b/modelarts/umn/temp/common_operations_on_jupyter_notebook.tmp @@ -0,0 +1,82 @@ + + +

    Common Operations on Jupyter Notebook

    +

    This section describes common operations on Jupyter Notebook.

    +

    Opening Jupyter Notebook

    In the notebook instance list, locate the row where the target notebook instance resides and click Open in the Operation column to switch to the Jupyter Notebook page.

    +

    Two tab pages are available on the Jupyter Notebook page: Files and Running.

    +Figure 1 Jupyter Notebook
    + +

    Selecting Different AI Engines to Create Files

    Open a notebook instance and go to the Jupyter Notebook page. On the Files tab page, click New in the upper right corner, select the required AI engine, and create a file for encoding.

    +Figure 2 Selecting different AI engines
    + +

    Uploading a File

    Open a notebook instance and go to the Jupyter Notebook page. On the Files tab page, click Upload in the upper right corner to select a file from the local PC and upload it.

    +Figure 3 Uploading a file
    + +

    Compiling a File

    After a file is created, click the file name to go to the file compilation page.

    +Figure 4 Compiling a file
    + +.. _modelarts_23_0120__en-us_topic_0188347008_table9727162374411: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Introduction to the file compilation page

    No.

    +

    Area

    +

    Description

    +

    1

    +

    File name

    +

    You can enter a user-defined file name in this area. After the file name is changed and saved, the new file name is updated to the file list accordingly.

    +

    2

    +

    Menu bar

    +

    The menu bar provides rich functions such as File, Edit, View, Insert, Cell, Kernel, and Help. For details, see Jupyter Notebook Documentation. The following toolbar provides common functions for compiling common Python running files.

    +

    3

    +

    Toolbar

    +

    The toolbar lists the common shortcut operations. From left to right, the shortcut operations are as follows: saving a file, adding a new cell, cutting a selected cell, copying a selected cell, pasting a selected cell, moving a selected cell upwards, moving a selected cell downwards, running a selected cell, terminating the kernel, restarting the kernel, and restarting the kernel and running all cells again.

    +

    The Code drop-down list contains the following options:

    +
    • Code: Write Python code.
    • MarkDown: Write MarkDown code, which is usually used for comments.
    • Raw NBConvert: conversion tool.
    • Heading: Quickly add a MarkDown title.
    +

    4

    +

    AI engine and Python version

    +

    Displays the AI engine and Python version corresponding to the current file. For details about all AI engines and Python versions supported by ModelArts, see Supported AI Engines.

    +

    5

    +

    Code cell

    +

    Each cell has two modes: command mode and editing mode.

    +

    The blue bar on the left indicates the command mode, and the green bar indicates the editing mode (in this mode, the cursor exists in the cell and you can write code). In command mode, you can press Enter or click the code box to enter the editing mode. In editing mode, you can press ESC or click the left area of the code box to enter the command mode.

    +

    +
    + + +

    Deleting a File or Folder

    To delete a file or folder from Jupyter Notebook, select the file or folder in the Files list and click the Delete button.

    +

    After the file or folder is deleted, click the Refresh button in the upper right corner to refresh the Jupyter page and clear the cache.

    + +Figure 5 Jupyter page
    + + + + +Parent topic: Using Jupyter Notebook + + + diff --git a/modelarts/umn/temp/compressing_and_converting_models.tmp b/modelarts/umn/temp/compressing_and_converting_models.tmp new file mode 100644 index 000000000..ea3f5bc38 --- /dev/null +++ b/modelarts/umn/temp/compressing_and_converting_models.tmp @@ -0,0 +1,23 @@ + + +

    Compressing and Converting Models

    +

    To obtain higher computing power, you can deploy the models created on ModelArts or a local PC on the Ascend chip, Arm, or GPU. In this case, you need to compress or convert the models to the required formats before deploying them.

    +

    ModelArts supports model conversion, allowing you to convert a model to a required format before deploying the model on a chip with higher computing power and performance.

    +

    Model conversion applies to the following scenarios:

    +
    • If you use the TensorFlow framework (in frozen_graph or saved_model format) to train a model, you can convert the model to the .om format. The converted model can be deployed and run on Ascend chips.
    +

    Constraints

    • Only Ascend chips are supported for model conversion.
    • Only Caffe and TensorFlow models can be converted. For a TensorFlow model, the input data type is of the INT32, BOOL, UINT8, or FLOAT type.
    • ModelArts provides conversion templates for you to choose. For details about the supported templates, see Conversion Templates.
    • The .tflite and TensorRT formats support fewer operators and quantization operators. Therefore, some models may fail to be converted. If the conversion fails, view the log dialog box or check error logs in the conversion output directory.
    • An OBS directory must be specified in compression/conversion tasks. Ensure that the OBS directory you use and ModelArts are in the same region.
    • When importing the converted model to ModelArts, you need to use the model template.
    • For a TensorFlow model, the FrozenGraphDef and SavedModel formats are supported. If a model is in the SavedModel format, the model is converted to the FrozenGraphDef format and then to the OM format.
    • Inputs with dynamic shapes are not supported, for example, NHWC = [?,?,?,3]. A fixed value needs to be specified during model conversion.
    • The input can be up to 4-dimensional. Operators involving dimension changes (such as reshape and expanddim) cannot output five dimensions.
    • Except the const operator, the input and output at all layers in a model must meet the condition dim!=0.
    • Model conversion does not support models that contain training operators.
    • A UINT8 quantized model cannot be converted.
    • Model operators support only 2D convolution but do not support 3D convolution. The batch_normalization_1 and FusedBatchNorm operators cannot be converted in batches.
    + +

    Deleting a Model Compression/Conversion Task

    You can delete unnecessary conversion tasks. However, tasks in the Running or Initializing status cannot be deleted.

    +

    Deleted tasks cannot be recovered. Exercise caution when performing this operation.

    + +
    • Deleting a single task:

      On the Compression/Conversion page, click Delete in the Operation column of the target task.

      +
    • Deleting a batch of tasks:

      On the Compression/Conversion page, select multiple tasks to be deleted and click Delete in the upper left corner.

      +
    + + + + +Parent topic: Model Compression and Conversion + + + diff --git a/modelarts/umn/temp/configuring_access_authorization_(global_configuration).tmp b/modelarts/umn/temp/configuring_access_authorization_(global_configuration).tmp new file mode 100644 index 000000000..a853b222a --- /dev/null +++ b/modelarts/umn/temp/configuring_access_authorization_(global_configuration).tmp @@ -0,0 +1,20 @@ + + +

    Configuring Access Authorization (Global Configuration)

    +

    + + + + + +Parent topic: Preparations + + + diff --git a/modelarts/umn/temp/configuring_access_key_authorization.tmp b/modelarts/umn/temp/configuring_access_key_authorization.tmp new file mode 100644 index 000000000..1fc2d0cdd --- /dev/null +++ b/modelarts/umn/temp/configuring_access_key_authorization.tmp @@ -0,0 +1,17 @@ + + +

    Configuring Access Key Authorization

    +

    To use an access key pair for authorization, you need to obtain the access key pair first and then add the access key pair on the ModelArts management console. If your access key pair changes, you need to add a new one.

    +

    Obtaining an Access Key

    1. On the ModelArts management console, hover over the username in the upper right corner and choose My Credentials from the drop-down list.
    2. On the My Credentials page, choose Access Keys > Create Access Key.
    3. In the Create Access Key dialog box that is displayed, enter the verification code received by SMS or email.
    4. Click OK and save the access key file as prompted. The access key file is saved in the default download folder of the browser. Open the credentials.csv file to view the access key (Access Key Id and Secret Access Key).
    + +

    Adding an Access Key

    1. Log in to the ModelArts management console. In the navigation pane, choose Settings. The Settings page is displayed.
    2. Click Add Authorization.
    3. In the Add Authorization dialog box that is displayed, set Authorization Method to AK/SK. The username is fixed. Enter the obtained access key pair.
      • AK: Enter the value of the Access Key Id field in the key file.
      • SK: Enter the value of the Secret Access Key field in the key file.
      +
    4. Select I have read and agree to the ModelArts Service Statement and click Agree.

      After the configuration is complete, you can view the access key configurations of an account or IAM user on the Settings page.

      +
    + + + + +Parent topic: Configuring Access Authorization (Global Configuration) + + + diff --git a/modelarts/umn/temp/configuring_agency_authorization_(recommended).tmp b/modelarts/umn/temp/configuring_agency_authorization_(recommended).tmp new file mode 100644 index 000000000..590b11bf0 --- /dev/null +++ b/modelarts/umn/temp/configuring_agency_authorization_(recommended).tmp @@ -0,0 +1,55 @@ + + +

    Configuring Agency Authorization (Recommended)

    +

    An agency is used to delegate ModelArts the operation permissions for dependent services such as OBS and SWR. Before using ModelArts, you need to complete agency authorization.

    +

    If you have used ModelArts before, click Delete Authorization in the global configurations area and then create an agency.

    + +

    Before You Start

    • account
      • Only a cloud account can perform agency authorization to authorize the current account or all IAM users under the current account.
      • Multiple IAM users or accounts can use the same agency.
      • A maximum of 50 agencies can be created under an account.
      +
    • IAM user
      • If the agency has been authorized, you can view the authorization information on the Settings page.
      • If an IAM user has not obtained the authorization, ModelArts will display a message indicating that the user has not been authorized when the user accesses the Add Authorization page. In this case, contact the administrator of the IAM user to add authorization. Alternatively, you can use access keys for authorization.
      +
    • When configuring an agency, you can use an automatically created agency. For details, see Automatically Creating an IAM Agency. You can also configure an agency. For example, you can configure an IAM user with the agency valid for only one day.
    + +

    Configuring Authorization

    1. Log in to the ModelArts management console. In the left navigation pane, click Settings. The Settings page is displayed.
    2. Click Add Authorization.
    3. In the Add Authorization dialog box that is displayed, set Authorization Method to Agency, and select the username and agency to be authorized. +.. _modelarts_08_0007__en-us_topic_0284258827_en-us_topic_0256240291_table11954142119154: + + + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Authorization Method

      +

      Select Agency.

      +

      Username

      +

      Select an account from the drop-down list on the right. By default, All IAM users (including logged-in account) is selected, which indicates that authorization will be performed for the logged-in account and all IAM users under the account. All IAM users under the logged-in account are displayed in the drop-down list. You can configure an agency for an IAM user.

      +

      Agency

      +
      • Auto Create (recommended): When you use ModelArts Settings for the first time, no agency is available. In this case, you can click Auto Create to automatically create an agency for the user selected in Username. For details about the automatically created agency, see Automatically Creating an IAM Agency.
      • Select an existing agency: If you have created agencies in IAM, you can select an available agency from the drop-down list to authorize the selected user.
      • Create on IAM: If the automatically created agency cannot meet your requirements, you can click Create on IAM to manually create an agency on the IAM management console. If you choose Create on IAM, configure at least the ModelArts CommonOperation and OBS Operate Access permissions. Otherwise, the basic functions of ModelArts will be unavailable.
      +
      + +
    4. After configuring the username and agency, select I have read and agree to the ModelArts Service Statement and click Agree.

      After the configuration is complete, you can view the agency configurations of an account or IAM user on the Settings page.

      +
    + +

    Automatically Creating an IAM Agency

    The following provides the details about the agency automatically created by ModelArts.

    +
    • Agency Name: For a cloud account, the agency name is modelarts_agency. For an IAM user, the agency name is ma_agency_<IAM username>.
    • Agency Type: Select Cloud service.
    • Cloud Service: Select ModelArts.
    • Validity Period: Select Unlimited.
    • Permissions: The ModelArts CommonOperations, OBS OperateAccess, and Tenant Administrator (required for using other dependent services) permissions are automatically added for this agency to use all ModelArts functions.
    + +

    Deleting Authorizations

    To better manage your authorization, you can delete the authorization of an IAM user or delete the authorizations of all users in batches.

    +
    • Deleting the authorization of a user

      On the Settings page, the authorizations configured for IAM users under the current account are displayed. You can click Delete in the Operation column to delete the authorization of a user. After the deletion takes effect, the user cannot use ModelArts functions.

      +
    • Deleting authorizations in batches

      On the Settings page, click Delete Authorization above the authorization list to delete all authorizations of the current account. After the deletion, the account and all IAM users under the account cannot use ModelArts functions.

      +
    + + + + +Parent topic: Configuring Access Authorization (Global Configuration) + + + diff --git a/modelarts/umn/temp/configuring_the_jupyter_notebook_environment.tmp b/modelarts/umn/temp/configuring_the_jupyter_notebook_environment.tmp new file mode 100644 index 000000000..a8a78b1db --- /dev/null +++ b/modelarts/umn/temp/configuring_the_jupyter_notebook_environment.tmp @@ -0,0 +1,23 @@ + + + +

    Configuring the Jupyter Notebook Environment

    + +

    + + + + + + +Parent topic: Using Jupyter Notebook + + + diff --git a/modelarts/umn/temp/conversion_templates.tmp b/modelarts/umn/temp/conversion_templates.tmp new file mode 100644 index 000000000..f6222cbe4 --- /dev/null +++ b/modelarts/umn/temp/conversion_templates.tmp @@ -0,0 +1,100 @@ + + +

    Conversion Templates

    +

    ModelArts provides the following conversion templates based on different AI frameworks:

    + +

    TF-FrozenGraph-To-Ascend-C32

    Convert the model trained by the TensorFlow framework and saved in frozen_graph format. The converted model can run on the Ascend. The custom operators (TBE operators) developed based on Tensor Based Engine (TBE) can be used for conversion.

    + +.. _modelarts_23_0110__en-us_topic_0177612243_table397415449135: + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Advanced settings of the custom operator conversion template

    Parameter

    +

    Description

    +

    input_shape

    +

    Enter the shape of the input data of the model, for example, input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2. input_name must be the node name in the network model before model conversion. This parameter is mandatory when the model has dynamic shape input. For example, in input_name1:? ,h,w,c, the question mark (?) indicates the batch size, that is, the number of images processed at a time. It is used to convert the original model with a dynamic shape into an offline model with a fixed shape. The batch feature is not supported. The batch value of the input_shape can only be 1. During the conversion, the system parses the input model to obtain the input tensor and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    input_format

    +

    NCHW and NHWC are supported. The default format is NHWC. For the TensorFlow framework, the default value is NHWC. To use the NCHW format, you need to specify NCHW. For the Caffe framework, only the NCHW format is supported.

    +

    out_nodes

    +

    Specifies the output node, for example, node_name1:0;node_name1:1;node_name2:0. node_name must be the node name in the network model before model conversion. The digit after each colon (:) indicates the sequence number of the output. For example, node_name1:0 indicates the 0th output of node_name1. If the output node is not specified, the output of the last operator layer serves as the model output by default. To check the parameters of a specific operator layer, specify the operator layer by using this parameter. During the conversion, the system parses the input model to obtain the output node and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    net_format

    +

    Specifies the preferred data format for network operators. Possible values are ND (N cannot be more than 4) and 5D. This parameter only takes effect if the input data of operators on the network supports both ND and 5D formats. ND indicates that operators in the model are converted into the NCHW format. 5D indicates that operators in the model are converted into the 5D format. 5D is the default value.

    +

    fp16_high_prec

    +

    Specifies whether to generate a high-precision FP16 Davinci model. 0 is the default value, indicating that a common FP16 Da Vinci model with better inference performance is generated. The value 1 indicates that a high-precision FP16 Da Vinci model with better inference precision is generated. High-precision models support only Caffe operators (Convolution, Pooling, and FullConnection) and TensorFlow operators (tf.nn.conv2d and tf.nn.max_poo).

    +

    output_type

    +

    FP32 is the default value and is recommended for classification and detection networks. For image super-resolution networks, UINT8 is recommended for better inference performance.

    +
    + + +

    TF-SavedModel-To-Ascend-C32

    Convert the model trained by the TensorFlow framework and saved in saved_model format. The converted model can run on the Ascend. The custom operators (TE operators) developed based on TE can be used for conversion.

    + +.. _modelarts_23_0110__en-us_topic_0177612243_table17573123151414: + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Advanced settings of the custom operator conversion template

    Parameter

    +

    Description

    +

    input_shape

    +

    Enter the shape of the input data of the model, for example, input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2. input_name must be the node name in the network model before model conversion. This parameter is mandatory when the model has dynamic shape input. For example, in input_name1:? ,h,w,c, the question mark (?) indicates the batch size, that is, the number of images processed at a time. It is used to convert the original model with a dynamic shape into an offline model with a fixed shape. The batch feature is not supported. The batch value of the input_shape can only be 1. During the conversion, the system parses the input model to obtain the input tensor and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    input_format

    +

    NCHW and NHWC are supported. The default format is NHWC. For the TensorFlow framework, the default value is NHWC. To use the NCHW format, you need to specify NCHW. For the Caffe framework, only the NCHW format is supported.

    +

    out_nodes

    +

    Specifies the output node, for example, node_name1:0;node_name1:1;node_name2:0. node_name must be the node name in the network model before model conversion. The digit after each colon (:) indicates the sequence number of the output. For example, node_name1:0 indicates the 0th output of node_name1. If the output node is not specified, the output of the last operator layer serves as the model output by default. To check the parameters of a specific operator layer, specify the operator layer by using this parameter. During the conversion, the system parses the input model to obtain the output node and prints it in the log. If you do not know the input tensor of the used model, refer to the parsing result in the log.

    +

    net_format

    +

    Specifies the preferred data format for network operators. Possible values are ND (N cannot be more than 4) and 5D. This parameter only takes effect if the input data of operators on the network supports both ND and 5D formats. ND indicates that operators in the model are converted into the NCHW format. 5D indicates that operators in the model are converted into the 5D format. 5D is the default value.

    +

    fp16_high_prec

    +

    Specifies whether to generate a high-precision FP16 Davinci model. 0 is the default value, indicating that a common FP16 Da Vinci model with better inference performance is generated. The value 1 indicates that a high-precision FP16 Da Vinci model with better inference precision is generated. High-precision models support only Caffe operators (Convolution, Pooling, and FullConnection) and TensorFlow operators (tf.nn.conv2d and tf.nn.max_poo).

    +

    output_type

    +

    FP32 is the default value and is recommended for classification and detection networks. For image super-resolution networks, UINT8 is recommended for better inference performance.

    +
    + + + + + +Parent topic: Model Compression and Conversion + + + diff --git a/modelarts/umn/temp/creating_a_custom_policy.tmp b/modelarts/umn/temp/creating_a_custom_policy.tmp new file mode 100644 index 000000000..f5c21058d --- /dev/null +++ b/modelarts/umn/temp/creating_a_custom_policy.tmp @@ -0,0 +1,76 @@ + + +

    Creating a Custom Policy

    +

    If default policies cannot meet the requirements on fine-grained access control, you can create custom policies and assign the policies to the user group.

    +

    You can create custom policies in either of the following ways:

    +
    • Visual editor: Select cloud services, actions, resources, and request conditions. This does not require knowledge of policy syntax.
    • JSON: Edit JSON policies from scratch or based on an existing policy.
    +

    For details about how to create a custom policy, see section "Creating a Custom Policy" in the Identity and Access Management User Guide. This section describes example custom policies of OBS (a dependent service of ModelArts) and ModelArts.

    +

    Precautions

    • The permissions to use ModelArts depend on OBS authorization. Therefore, you need to grant OBS system permissions to users.
    • A custom policy can contain actions of multiple services that are globally accessible or accessible through region-specific projects.
    • To define permissions required to access both global and project-level services, create two custom policies and specify the scope as Global services and Project-level services. Then grant the two policies to the users.
    + +

    Example Custom Policies of OBS

    ModelArts is a project-level service, and OBS is a global service. Therefore, you need to create custom policies for the two services respectively and grant them to users. The permissions to use ModelArts depend on OBS authorization. The following example shows the minimum permissions for OBS, including the permissions for OBS buckets and objects. After being granted the minimum permissions for OBS, users can access OBS from ModelArts without restrictions.

    +
    {
    +    "Version": "1.1",
    +    "Statement": [
    +        {
    +            "Action": [
    +                "obs:bucket:ListAllMybuckets",
    +                "obs:bucket:HeadBucket",
    +                "obs:bucket:ListBucket",
    +                "obs:bucket:GetBucketLocation",
    +                "obs:object:GetObject",
    +                "obs:object:GetObjectVersion",
    +                "obs:object:PutObject",
    +                "obs:object:DeleteObject",
    +                "obs:object:DeleteObjectVersion",
    +                "obs:object:ListMultipartUploadParts",
    +                "obs:object:AbortMultipartUpload",
    +                "obs:object:GetObjectAcl",
    +                "obs:object:GetObjectVersionAcl",
    +                "obs:bucket:PutBucketAcl"
    +            ],
    +            "Effect": "Allow"
    +        }
    +    ]
    +}
    + +

    Example Custom Policies of ModelArts

    • Example: Denying ExeML project deletion

      A deny policy must be used in conjunction with other policies to take effect. If the permissions assigned to a user contain both Allow and Deny actions, the Deny actions take precedence over the Allow actions.

      +

      The following method can be used if you need to assign permissions of the ModelArts FullAccess policy to a user but also forbid the user from deleting ExeML projects. Create a custom policy for denying ExeML project deletion, and assign both policies to the group the user belongs to. Then the user can perform all operations on ModelArts except deleting ExeML projects. The following is an example deny policy:

      +
      { 
      +      "Version": "1.1", 
      +      "Statement": [ 
      +            { 
      +		  "Effect": "Deny", 
      +                  "Action": [ 
      +                        "modelarts:exemlProject:delete" 
      +                  ] 
      +            } 
      +      ] 
      +}
      +
    • Example: Allowing users to use only development environments

      The following is a policy configuration example for this user:

      +
      { 
      +    "Version": "1.1", 
      +    "Statement": [ 
      +
      +        { 
      +            "Effect": "Allow", 
      +            "Action": [ 
      +                "modelarts:notebook:list", 
      +                "modelarts:notebook:create" ,
      +                "modelarts:notebook:get" ,
      +                "modelarts:notebook:update" ,
      +                "modelarts:notebook:delete" ,
      +                "modelarts:notebook:action" ,
      +                "modelarts:notebook:access" 
      +            ] 
      +        } 
      +    ] 
      +}
      +
    + + + + +Parent topic: Permissions Management + + + diff --git a/modelarts/umn/temp/creating_a_dataset.tmp b/modelarts/umn/temp/creating_a_dataset.tmp new file mode 100644 index 000000000..e88654078 --- /dev/null +++ b/modelarts/umn/temp/creating_a_dataset.tmp @@ -0,0 +1,369 @@ + + +

    Creating a Dataset

    +

    To manage data using ModelArts, create a dataset. Then you can perform operations on the dataset, such as labeling data, importing data, and publishing the dataset.

    +

    Prerequisites

    • Before using the data management function, you need permissions to access OBS. This function cannot be used if you are not authorized to access OBS. Before using the data management function, go to the Settings page and complete access authorization using an agency.
    • You have created OBS buckets and folders for storing data. In addition, the OBS buckets and ModelArts are in the same region.
    • You have uploaded data to be used to OBS.
    + +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. Click Create Dataset. On the Create Dataset page, create datasets of different types based on the data type and data labeling requirements.
      1. Set the basic information, the name and description of the dataset.Figure 1 Basic information about a dataset
        +
      2. Select a labeling scene and type as required. For details about the types supported by ModelArts, see Dataset Types.Figure 2 Selecting a labeling scene and type
        +
      3. Set the parameters based on the dataset type. For details, see the parameters of the following dataset types: +
      4. Click Create in the lower right corner of the page.

        After the dataset is created, the dataset management page is displayed. You can perform the following operations on the dataset: label data, publish dataset versions, manage dataset versions, modify the dataset, import data, and delete the dataset. For details about the operations supported by different types of datasets, see .

        +
      +
    + +

    Images (Image Classification, Object Detection, and Image Segmentation)

    Figure 3 Parameters of datasets for image classification and object detection
    + +.. _modelarts_23_0004__en-us_topic_0170886809_table169611557277: + + + + + + + + + + + + + + + + + + +
    Table 1 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    + NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    + +

    Label Set

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    • Setting a label color: This function is available only for datasets of the object detection type. Select a color from the color palette on the right of a label, or enter the hexadecimal color code to set the color.

      +
    • Setting label attributes: For an object detection dataset, you can click the plus sign (+) on the right to add label attributes after setting a label color. Label attributes are used to distinguish different attributes of the objects with the same label. For example, yellow kittens and black kittens have the same label cat and their label attribute is color.
    +

    Team Labeling

    +

    Enable or disable team labeling. Image segmentation does not support team labeling. Therefore, this parameter is unavailable when you use image segmentation.

    +

    After enabling team labeling, enter the name and type of the team labeling task, and select the labeling team and team members. For details about the parameter settings, see Creating Team Labeling Tasks.

    +

    Before enabling team labeling, ensure that you have added a team and members on the Labeling Teams page. If no labeling team is available, click the link on the page to go to the Labeling Teams page, and add your team and members. For details, see Introduction to Team Labeling.

    +

    After a dataset is created with team labeling enabled, you can view the Team Labeling mark in Labeling Type.

    +
    + + +

    Audio (Sound Classification, Speech Labeling, and Speech Paragraph Labeling)

    Figure 4 Parameters of datasets for sound classification, speech labeling, and speech paragraph labeling
    + +.. _modelarts_23_0004__en-us_topic_0170886809_table46851641358: + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    + NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    + +

    Label Set (Sound Classification)

    +

    Set labels only for datasets of the sound classification type.

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    +

    Label Management (Speech Paragraph Labeling)

    +

    Only datasets for speech paragraph labeling support multiple labels.

    +
    • Single LabelA single label is used to label a piece of audio that has only one class.
      • Label Name: Enter a label name. The label name can contain contains 1 to 32 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.
      • Label Color: Set the label color in the Label Color column. You can select a color from the color palette or enter a hexadecimal color code to set the color.
      + +
    • Multiple LabelsMultiple labels are suitable for multi-dimensional labeling. For example, you can label a piece of audio as both noise and speech. For speech, you can label the audio with different speakers. You can click Add Label Class to add multiple label classes. A label class can contain multiple labels. The label class and name can contain contains 1 to 32 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.
      • Label Class: Set a label class.
      • Label Name: Enter a label name.
      • Add Label: Click Add Label to add more labels.
      + +
    +

    Speech Labeling (Speech Paragraph Labeling)

    +

    Only datasets for speech paragraph labeling support speech labeling. By default, speech labeling is disabled. If this function is enabled, you can label speech content.

    +

    Team Labeling

    +

    Only datasets of speech paragraph labeling support team labeling.

    +

    After enabling team labeling, set the name and type of the team labeling task, and select the team and team members. For details about the parameter settings, see Creating Team Labeling Tasks.

    +

    Before enabling team labeling, ensure that you have added a team and members on the Labeling Teams page. If no labeling team is available, click the link on the page to go to the Labeling Teams page, and add your team and members. For details, see Introduction to Team Labeling.

    +

    After a dataset is created with team labeling enabled, you can view the Team Labeling mark in Labeling Type.

    +
    + + +

    Text (Text Classification, Named Entity Recognition, and Text Triplet)

    Figure 5 Parameters of datasets for text classification, named entity recognition, and text triplet
    + +.. _modelarts_23_0004__en-us_topic_0170886809_table8639141818387: + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    + NOTE:

    Labeled text classification data can be identified only when you import data. When creating a dataset, set an empty OBS directory. After the dataset is created, import the labeled data into it. For details about the format of the data to be imported, see Specifications for Importing Data from an OBS Directory.

    + +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    + NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    + +

    Label Set (for text classification and named entity recognition)

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    • Setting a label color: Select a color from the color palette or enter the hexadecimal color code to set the color.

      +
    +

    Label Set (for text triplet)

    +

    For datasets of the text triplet type, set entity labels and relationship labels.

    +
    • Entity Label: Set the label name and label color. You can click the plus sign (+) on the right of the color area to add multiple labels.
    • Relationship Label: a relationship between two entities. Set the source entity and target entity. Therefore, add at least two entity labels before adding a relationship label.
    +

    +

    Team Labeling

    +

    Enable or disable team labeling.

    +

    After enabling team labeling, enter the name and type of the team labeling task, and select the labeling team and team members. For details about the parameter settings, see Creating Team Labeling Tasks.

    +

    Before enabling team labeling, ensure that you have added a team and members on the Labeling Teams page. If no labeling team is available, click the link on the page to go to the Labeling Teams page, and add your team and members. For details, see Introduction to Team Labeling.

    +

    After a dataset is created with team labeling enabled, you can view the Team Labeling mark in Labeling Type.

    +
    + + +

    Table

    When using a CSV file, pay attention to the following:

    +
    • When the data type is set to String, the data in the double quotation marks is regarded as one record by default. Ensure that the double quotation marks in the same row are closed. Otherwise, the data will be too large to display.
    • If the number of columns in a row of the CSV file is different from that defined in the schema, the row will be ignored.
    + + +.. _modelarts_23_0004__en-us_topic_0170886809_table23707015477: + + + + + + + + + + + + + + + + + + +
    Table 3 Dataset parameters

    Parameter

    +

    Description

    +

    Storage Path

    +

    Select the OBS path for storing table data. The data imported from the data source is stored in this path. The path cannot be the same as or a subdirectory of the file path in the OBS data source.

    +

    After a table dataset is created, the following four directories are automatically generated in the storage path:

    +
    • annotation: version publishing directory. Each time a version is published, a subdirectory with the same name as the version is generated in this directory.
    • data: data storage directory. Imported data is stored in this directory.
    • logs: directory for storing logs
    • temp: temporary working directory
    +

    Import

    +

    If you have stored table data on other cloud services, you can enable this function to import data stored on OBS, DLI, or MRS.

    +

    Data Source (OBS)

    +
    • File Path: Browse all OBS buckets of the account and select the directory where the data file to be imported is located.
    • Contain Table Header: If this parameter is enabled, the imported file contains table headers. In this case, the first row of the imported file is used as the column name. Otherwise, the default column name is added and automatically filled in the schema information.
    +

    For details about OBS functions, see Object Storage Service Console Operation Guide.

    +

    Schema

    +

    Names and types of table columns, which must be the same as those of the imported data. Set the column name based on the imported data and select the column type. For details about the supported types, see Table 4.

    +

    Click Add Schema to add a new record. When creating a dataset, you must specify a schema. Once created, the schema cannot be modified.

    +

    When data is imported from OBS, the schema of the CSV file in the file path is automatically obtained. If the schemas of multiple CSV files are inconsistent, an error is reported.

    +
    + + +.. _modelarts_23_0004__en-us_topic_0170886809_table1916832104917: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 Migration data types

    Type

    +

    Description

    +

    Storage Space

    +

    Range

    +

    String

    +

    String

    +

    -

    +

    -

    +

    Short

    +

    Signed integer

    +

    2 bytes

    +

    -32768 to 32767

    +

    Int

    +

    Signed integer

    +

    4 bytes

    +

    –2147483648 to 2147483647

    +

    Long

    +

    Signed integer

    +

    8 bytes

    +

    –9223372036854775808 to 9223372036854775807

    +

    Double

    +

    Double-precision floating point

    +

    8 bytes

    +

    -

    +

    Float

    +

    Single-precision floating point

    +

    4 bytes

    +

    -

    +

    Byte

    +

    Signed integer

    +

    1 byte

    +

    -128 to 127

    +

    Date

    +

    Date type in the format of yyyy-MM-dd, for example, 2014-05-29

    +

    -

    +

    -

    +

    Timestamp

    +

    Timestamp that represents date and time. Format: yyyy-MM-dd HH:mm:ss

    +

    -

    +

    -

    +

    Boolean

    +

    Boolean

    +

    1 byte

    +

    TRUE or FALSE

    +
    + + +

    Video

    Figure 6 Parameters of datasets of the video type
    + +.. _modelarts_23_0004__en-us_topic_0170886809_table623753175616: + + + + + + + + + + + + + + + +
    Table 5 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    + NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    + +

    Label Set

    +
    • Label Name: Enter a label name. The label name can contain only letters, digits, underscores (_), and hyphens (-). The name contains 1 to 32 characters.
    • Add Label: Click Add Label to add more labels.
    • Setting a label color: Select a color from the color palette or enter the hexadecimal color code to set the color.

      +
    +
    + + +

    Other (Free Format)

    Figure 7 Parameters of datasets of the free format type
    + +.. _modelarts_23_0004__en-us_topic_0170886809_table115315465714: + + + + + + + + + + + + +
    Table 6 Dataset parameters

    Parameter

    +

    Description

    +

    Input Dataset Path

    +

    Select the OBS path to the input dataset.

    +

    Output Dataset Path

    +

    Select the OBS path to the output dataset.

    + NOTE:

    The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. Select an empty directory as the Output Dataset Path.

    + +
    + + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/creating_a_notebook_instance.tmp b/modelarts/umn/temp/creating_a_notebook_instance.tmp new file mode 100644 index 000000000..7f59c76bc --- /dev/null +++ b/modelarts/umn/temp/creating_a_notebook_instance.tmp @@ -0,0 +1,91 @@ + + +

    Creating a Notebook Instance

    +

    Before developing a model, create a notebook instance, open it, and perform encoding.

    +

    Background

    • Only notebook instances in the Running state can be started.
    • A maximum of 10 notebook instances can be created for an account. By default, the notebook instances created by the current user are displayed. If Display Only My Instances is disabled, all notebook instances created by the current account and its IAM users are displayed.
    • If OBS storage is used, ensure that the OBS directory you use and ModelArts are in the same region.
    • Before creating a notebook instance, learn about the AI engines supported by ModelArts and their versions.
    + +

    Creating a Notebook Instance

    1. Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page.
    2. Click Create. On the displayed page, set the required parameters.
      1. Enter the basic information about the notebook instance, including the name, description, and whether to automatically stop the notebook instance. For details about the parameters, see Table 1.Figure 1 Basic information about a notebook instance
        + +.. _modelarts_23_0034__en-us_topic_0162690358_table1669535791517: + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic information

        Parameter

        +

        Description

        +

        Name

        +

        Name of a notebook instance, which contains a maximum of 64 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. This parameter is mandatory.

        +

        Description

        +

        Brief description of a notebook instance.

        +

        Auto Stop

        +

        This function is enabled by default. The default value is 1 hour later, indicating that the notebook instance automatically stops after running for 1 hour and its billing stops.

        +

        The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. You can select Custom to specify any integer from 1 to 24 hours.

        +
        + +
      2. Set notebook parameters, such as the work environment and instance flavor. For details, see Table 2. +.. _modelarts_23_0034__en-us_topic_0162690358_table4606194015227: + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Notebook instance parameters

        Parameter

        +

        Description

        +

        Work Environment

        +

        Only public images, which are the AI frameworks built in ModelArts are supported.

        +

        All supported AI engines can be used in the same notebook instance. Different engines can be switched quickly and conveniently, and run in independent development environments. After the notebook instance is created, go to the Jupyter page to create the development environment with the desired AI engine. The AI engine varies depending on the operating environment. For details, see Supported AI Engines.

        +

        Resource Pool

        +

        Select Public resource pools or Dedicated resource pools. For details about the dedicated resource pools and how to buy them, see Resource Pools.

        +

        Public resource pools are available immediately after being provisioned. Dedicated resource pools are queue-free. When a large number of users use the public resource pool, they may queue for resources. Purchase a dedicated resource pool to improve development efficiency.

        +

        Type

        +

        The CPU and GPU types are supported.

        +

        Instance Flavor

        +

        If you select a public resource pool, available flavors vary depending on the selected type.

        +
        • If you select CPU for Type, available options include 2 vCPUs | 8 GiB and 8 vCPUs | 32 GiB.
        • If you select GPU for Type, the available option is GPU: 1 x v100NV32 CPU: 8 vCPUs | 64 GiB.
        • If you select Ascend for Type, available options include Ascend: 1 x Ascend 910 CPU: 24 vCPUs | 96 GiB and Ascend: 8 x Ascend 910 CPU: 192 vCPUs | 720 GiB.
        +

        Storage

        +

        The EVS and OBS options are available.

        +
        • Selecting EVS

          Set Disk Space based on the actual usage. The default value of Disk Space is 5 GB. ModelArts provides 5 GB disk space for you to use for free. If the disk space exceeds 5 GB, the additional space is billed by GB according to pricing of ultra-high I/O disks. The value of Disk Space ranges from 5 to 4096.

          +

          If you select this storage mode, all read and write operations on files on the notebook instances take effect on the data stored in your notebook instances. There is no data loss after you restart notebook instances.

          +
        • Selecting OBS

          Click Select next to the Storage Path text box to set the OBS path for storing notebook instance data. If you want to use existing files or data, upload the files or data to the corresponding OBS path in advance. Storage Path must be set to a specific directory in an OBS bucket rather than the root directory of the OBS bucket.

          +

          If you select this storage mode, all read and write operations on files on the notebook instances take effect on the data stored in your selected OBS path. To synchronize data in a file stored in OBS to a notebook instance, select the file and click Sync OBS. For details, see Synchronizing Files with OBS. There is no data loss after you restart this notebook instance.

          +
        +
        + +
      +
    3. Click Next.
    4. After confirming the parameter configurations, click Submit.

      Switch to the notebook instance list. Status of the notebook instance being created is Starting. If Status of the notebook instance changes to Running, the notebook instance has been created.

      +
    + + + + +Parent topic: Managing Notebook Instances + + + diff --git a/modelarts/umn/temp/creating_a_project.tmp b/modelarts/umn/temp/creating_a_project.tmp new file mode 100644 index 000000000..a81cc7c57 --- /dev/null +++ b/modelarts/umn/temp/creating_a_project.tmp @@ -0,0 +1,66 @@ + + +

    Creating a Project

    +

    ModelArts ExeML supports image classification and object detection projects. You can create any of them based on your needs. Perform the following operations to create an ExeML project.

    +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose ExeML. The ExeML page is displayed.
    2. Click Create Project in the box of your desired project. The page for creating an ExeML project is displayed.
    3. On the displayed page, set the parameters by referring to Table 1. +.. _modelarts_21_0010__en-us_topic_0284258839_en-us_topic_0169446159_en-us_topic_0169446153_table14961618163816: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Name

      +

      Name of an ExeML project

      +
      • Enter a maximum of 20 characters. Only digits, letters, underscores (_), and hyphens (-) are allowed. This parameter is mandatory.
      • The name must start with a letter.
      +

      Description

      +

      Brief description of a project

      +

      Dataset Source

      +

      You can create a dataset or specify an existing dataset.

      +
      • Create: Configure parameters such as Dataset Name, Input Dataset Path, Output Dataset Path, and Label Set.
      • Specify: Select a dataset of the same type from ModelArts Data Management to create an ExeML project. Only datasets of the same type are displayed in the Dataset Name drop-down list.
      +

      Dataset Name

      +

      If you select Create for Dataset Source, enter a dataset name based on required rules in the text box on the right. If you select Specify for Dataset Source, select one from available datasets of the same type under the current account displayed in the drop-down list.

      +

      Input Dataset Path

      +

      Select the OBS path to the input dataset. For details about dataset input specifications, see Preparing Data.

      +
      • Except the files and folders described in Preparing Data > Requirements for Files Uploaded to OBS, no other files or folders can be saved in the training data path. Otherwise, an error will be reported.
      • Do not modify the files in the training data path.
      +

      Output Dataset Path

      +

      Select the OBS path for storing the output dataset.

      + NOTE:

      The output dataset path cannot be the same as the input dataset path or cannot be the subdirectory of the input dataset path. It is a good practice to select an empty directory in Output Dataset Path.

      + +

      Label Set

      +
      • Label Name: Enter a label name. The label name can contain only Chinese characters, letters, digits, underscores (_), and hyphens (-), which contains 1 to 32 characters.
      • Add Label: Click Add Label to add one or more labels.
      • Set the label color: You need to set label colors for object detection datasets, but you do not need to set label colors for image classification datasets. Select a color from the color palette on the right of a label, or enter the hexadecimal color code to set the color.

        +
      +
      + +
    4. Click Create Project. The system displays a message indicating that the project has been created. Then, the Label Data tab page is displayed. Alternatively, view the created project on the ExeML page and click the project name to go to the Label Data page.
    + + + + +Parent topic: Object Detection + + + diff --git a/modelarts/umn/temp/creating_a_training_job.tmp b/modelarts/umn/temp/creating_a_training_job.tmp new file mode 100644 index 000000000..21f741a31 --- /dev/null +++ b/modelarts/umn/temp/creating_a_training_job.tmp @@ -0,0 +1,19 @@ + + +

    Creating a Training Job

    + + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/creating_a_training_job_using_a_custom_image_(gpu).tmp b/modelarts/umn/temp/creating_a_training_job_using_a_custom_image_(gpu).tmp new file mode 100644 index 000000000..63c56d974 --- /dev/null +++ b/modelarts/umn/temp/creating_a_training_job_using_a_custom_image_(gpu).tmp @@ -0,0 +1,81 @@ + + +

    Creating a Training Job Using a Custom Image (GPU)

    +

    After creating and uploading a custom image to SWR, you can use the image to create a training job on the ModelArts management console to complete model training.

    +

    Prerequisites

    + +

    Creating a Training Job

    Log in to the ModelArts management console and create a training job according to Creating a Training Job. When using a custom image to create a job, pay attention to the settings of Algorithm Source, Environment Variable, and Resource Pool.

    +
    • Algorithm Source

      Select Custom.

      +
      • Image Path: SWR URL after the image is uploaded to SWRFigure 1 SWR image address
        +
      • Code Directory: OBS path for storing the training code file.
      • Boot Command: boot command after the image is started. The basic format is as follows:

        bash /home/work/run_train.sh {UserCommand}

        +

        bash /home/work/run_train.sh [python/bash/..] {file_location} {file_parameter}

        +

        run_train.sh is the training boot script. After this script is executed, ModelArts recursively downloads all content in the code directory to the local path of the container. The local path is in the format of /home/work/user-job-dir/${Name of the last level in the code directory}/.

        +

        For example, if the OBS path of the training code file is obs://obs-bucket/new/train.py and the code directory is obs://obs-bucket/new/, the local path of the container is /home/work/user-job-dir/new/. The local training code path of the container is /home/work/user-job-dir/new/train.py. Then, you can set the boot command to the following: bash /home/work/run_train.sh python /home/work/user-job-dir/new/train.py {python_file_parameter}

        +

        If you create a training job using a custom image, ModelArts allows you to customize the boot command. The following are two basic formats for the boot command:

        +

        bash /home/work/run_train.sh {UserCommand}

        +

        bash /home/work/run_train.sh [python/bash/..] {file_location} {file_parameter}

        +

        run_train.sh is the training boot script. When creating a custom image, you can implement the training boot script or place the training code in the custom image environment in advance to customize the boot command (in the basic formats or any other formats).

        + +
      +
    • Environment Variable

      After the container is started, besides the environment variables added by configuring Environment Variable during training job creation, Table 1 lists other environment variables to be loaded. You can determine whether to use these environment variables in your own Python training script, or run the {python_file_parameter} command to pass the required parameters.

      + +.. _modelarts_23_0087__en-us_topic_0171858299_table341782301619: + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Optional environment variables

      Environment Variable

      +

      Description

      +

      DLS_TASK_INDEX

      +

      Container index, starting from 0.

      +

      DLS_TASK_NUMBER

      +

      Number of containers, corresponding to Compute Nodes

      +

      DLS_APP_URL

      +

      Code directory, corresponding to Code Dir with the protocol name added. For example, you can use $DLS_APP_URL/*.py to read files in OBS.

      +

      DLS_DATA_URL

      +

      Dataset path, corresponding to Data Source with the protocol name added

      +

      DLS_TRAIN_URL

      +

      Training output path, corresponding to Training Output Path with the protocol name added

      +

      BATCH_{jobName}.0_HOSTS (standalone)

      +

      For standalone training, that is, when the number of compute nodes is 1, the environment variable is BATCH_{jobName}.0_HOSTS.

      +

      The format of the HOSTS environment variable is hostname:port. A container can view the HOSTS of all containers in the same job, such as BATCH_CUSTOM0_HOSTS and BATCH_CUSTOM1_HOSTS, varying according to the indexes. If the resource pool is a dedicated resource pool with the 8GPU specifications, the network type of the container is a host network, and the host IB network can be used to accelerate communications. If other resource pools are used, the network is a container network.

      + NOTE:

      When the host IB network is used for communication acceleration, the ip_mapper.py tool is required to obtain the IP address of the ib0 NIC for using the IPoIB feature.

      + +
      + +
    + +
    • Resource Pool

      If you select a resource pool of the GPU type, ModelArts mounts NVME SSDs to the /cache directory. You can use this directory to store temporary files.

      +
    +

    Running a Training Job Created Using a Custom Image

    After a custom image is uploaded to SWR, ModelArts is authorized to obtain and run the image by default when you create a training job using the custom image. When a custom image is run for the first time, the image is checked first. For details about the check, see Specifications for Custom Images Used for Training Jobs. The check failure cause is outputted in the log, and you can modify the image based on the log.

    +

    After the image is checked, the backend starts the custom image container to run the training job. You can view the training status based on the log.

    +

    After an image is reviewed, the image does not need to be reviewed again when being used to create training jobs again.

    + + + + + +Parent topic: For Training Models + + + diff --git a/modelarts/umn/temp/creating_a_user_and_granting_permissions.tmp b/modelarts/umn/temp/creating_a_user_and_granting_permissions.tmp new file mode 100644 index 000000000..40a250338 --- /dev/null +++ b/modelarts/umn/temp/creating_a_user_and_granting_permissions.tmp @@ -0,0 +1,53 @@ + + +

    Creating a User and Granting Permissions

    +

    Policy Content

    A fine-grained policy consists of the policy version (the Version field) and statement (the Statement field).

    +
    • Version: Distinguishes between role-based access control (RBAC) and fine-grained policies.
      • 1.0: RBAC policies, which are preset in the system and used to grant permissions of each service as a whole. After such a policy is granted to a user, the user has all permissions of the corresponding service.
      • 1.1: Fine-grained policies. A fine-grained policy consists of API-based permissions for operations on specific resource types. Fine-grained policies, as the name suggests, allow for more fine-grained control than RBAC policies. Users granted permissions of such a policy can only perform specific operations on the corresponding service. Fine-grained policies are classified into default and custom policies.
        • Default policies: Preset common permission sets to control read and administrator permissions of different services.
        • Custom policies: Permission sets created and managed by users as an extension and supplement to system-defined policies. For example, a custom policy can be created to allow users only to modify ECS specifications.
        +
      +
    + +
    • Statement: Detailed information about a policy, containing the Effect and Action elements.
      • Effect

        Valid values for Effect include Allow and Deny. In a custom policy that contains both Allow and Deny statements, the Deny statements take precedence.

        +
      • Action

        The value can be one or more resource operations.

        +The value format is Service name:Resource type:Action, for example, modelarts:exemlProject:create.
        • Service name: service name. Only lowercase letters are supported, for example, modelarts.
        • Resource type and Action: The values are case-insensitive, and the wildcard (*) are allowed. A wildcard (*) can represent all or part of information about resource types and actions for the specific service.
        + + +
      +
    +

    Example Policies

    • A policy can define a single permission, such as the permission to deny ExeML project deletion.
      { 
      +      "Version": "1.1", 
      +      "Statement": [ 
      +            { 
      +		  "Effect": "Deny", 
      +                  "Action": [ 
      +                        "modelarts:exemlProject:delete" 
      +                  ] 
      +            } 
      +      ] 
      +}
      +
    • A policy can define multiple permissions, such as the permissions to delete an ExeML version and an ExeML project.
      { 
      +    "Version": "1.1", 
      +    "Statement": [ 
      +        { 
      +            "Effect": "Allow", 
      +            "Action": [ 
      +                "modelarts:exemlProjectVersion:delete", 
      +                "modelarts:exemlProject:delete" 
      +            ] 
      +        } 
      +    ] 
      +}
      +
    + +

    Authentication Logic

    IAM authenticates users according to the permissions that the users have been granted. The authentication logic is as follows:

    +Figure 1 Authentication logic
    +

    The actions in each policy bear the OR relationship.

    + +
    1. A user accesses the system and makes an operation request.
    2. The system evaluates all the permissions policies assigned to the user.
    3. In these policies, the system looks for explicit deny permissions. If the system finds an explicit deny that applies, it returns a decision of Deny, and the authentication ends.
    4. If no explicit deny is found, the system looks for allow permissions that would apply to the request. If the system finds an explicit allow permission that applies, it returns a decision of Allow, and the authentication ends.
    5. If no explicit allow permission is found, the system returns a decision of Deny, and the authentication ends.
    + + + + +Parent topic: Permissions Management + + + diff --git a/modelarts/umn/temp/creating_an_obs_bucket.tmp b/modelarts/umn/temp/creating_an_obs_bucket.tmp new file mode 100644 index 000000000..5c4126a90 --- /dev/null +++ b/modelarts/umn/temp/creating_an_obs_bucket.tmp @@ -0,0 +1,15 @@ + + +

    Creating an OBS Bucket

    +

    ModelArts uses OBS to store data and model backups and snapshots, achieving secure, reliable, and low-cost storage. Therefore, before using ModelArts, create an OBS bucket and folders for storing data.

    +

    Procedure

    1. Log in to OBS Console and create an OBS bucket. For details, see "Creating a Bucket". For example, create an OBS bucket named c-flowers.

      The created OBS bucket and ModelArts are in the same region.

      + +
    2. Create a folder for storing data. For details, see "Creating a Folder". For example, create a folder named flowers in the created c-flowers OBS bucket.
    + + + + +Parent topic: Preparations + + + diff --git a/modelarts/umn/temp/creating_and_uploading_a_custom_image.tmp b/modelarts/umn/temp/creating_and_uploading_a_custom_image.tmp new file mode 100644 index 000000000..03531e2b0 --- /dev/null +++ b/modelarts/umn/temp/creating_and_uploading_a_custom_image.tmp @@ -0,0 +1,18 @@ + + +

    Creating and Uploading a Custom Image

    +

    ModelArts allows you to use custom images to create training jobs and import models. Before creating and uploading a custom image, understand the following information:

    +
    • Software Repository for Container (SWR)

      SWR provides easy, secure, and reliable management over Docker container images throughout their lifecycle, facilitating the deployment of containerized applications. You can push, pull, and manage container images through SWR console, SWR APIs, or community Command Line Interface (CLI).

      +

      Obtain the custom images used by ModelArts for model training and import from the SWR service management list. Upload the custom images you create to SWR.

      +
    • Specifications for custom images. For details about how to use a custom image for a training job, see Specifications for Custom Images Used for Training Jobs. For details about how to use a custom image for model import, see Specifications for Custom Images Used for Importing Models.
    +

    +

    Creating and Uploading a Custom Image

    1. Purchase a cloud server or use a local host to set up the Docker environment.
    2. Obtain the basic image from the local environment.
    3. Compile a Dockerfile based on your requirements to build a custom image. For details about how to efficiently compile a Dockerfile, see SoftWare Repository for Container Best Practices.
    1. After customizing an image, upload the image to SWR by referring to "Uploading an Image Through a Docker Client" in Software Repository for Container User Guide.
    +

    + + + + +Parent topic: Custom Images + + + diff --git a/modelarts/umn/temp/custom_images.tmp b/modelarts/umn/temp/custom_images.tmp new file mode 100644 index 000000000..f75b2dcec --- /dev/null +++ b/modelarts/umn/temp/custom_images.tmp @@ -0,0 +1,18 @@ + + +

    Custom Images

    +

    + + + + + diff --git a/modelarts/umn/temp/data_management.tmp b/modelarts/umn/temp/data_management.tmp new file mode 100644 index 000000000..be8053b47 --- /dev/null +++ b/modelarts/umn/temp/data_management.tmp @@ -0,0 +1,29 @@ + + +

    Data Management

    + + + + + diff --git a/modelarts/umn/temp/deleting_a_dataset.tmp b/modelarts/umn/temp/deleting_a_dataset.tmp new file mode 100644 index 000000000..9980e1dde --- /dev/null +++ b/modelarts/umn/temp/deleting_a_dataset.tmp @@ -0,0 +1,17 @@ + + +

    Deleting a Dataset

    +

    If a dataset is no longer in use, you can delete it to release resources.

    +

    After a dataset is deleted, if you need to delete the data in the dataset input and output paths in OBS to release resources, delete the data and the OBS folders on the OBS Console.

    + +

    Procedure

    1. In the left navigation pane, choose Data Management > Datasets. On the Datasets page, choose More > Delete in the Operation column of the dataset.
    2. In the displayed dialog box, click OK.

      After a dataset is deleted, some functions such as dataset version management become unavailable. Exercise caution when performing this operation. However, the original data and labeling data of the dataset are still stored in OBS.

      + +
    + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/deleting_a_notebook_instance.tmp b/modelarts/umn/temp/deleting_a_notebook_instance.tmp new file mode 100644 index 000000000..74dd7a35a --- /dev/null +++ b/modelarts/umn/temp/deleting_a_notebook_instance.tmp @@ -0,0 +1,15 @@ + + +

    Deleting a Notebook Instance

    +

    You can delete notebook instances that are no longer used to release resources.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page.
    2. In the notebook instance list, locate the row where the target notebook instance resides and click Delete in the Operation column. In the dialog box that is displayed, click OK.

      +

      Deleted notebook instances cannot be recovered. Therefore, exercise caution when performing this operation. However, the files created in notebook instances are still stored in OBS specified during creation of the notebook instances.

      + +
    + + + +Parent topic: Managing Notebook Instances + + + diff --git a/modelarts/umn/temp/deleting_a_service.tmp b/modelarts/umn/temp/deleting_a_service.tmp new file mode 100644 index 000000000..017bd748b --- /dev/null +++ b/modelarts/umn/temp/deleting_a_service.tmp @@ -0,0 +1,15 @@ + + +

    Deleting a Service

    +

    If a service is no longer in use, you can delete it to release resources.

    +
    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service.
      1. For a real-time service, choose More > Delete in the Operation column to delete it.
      2. For a batch service, click Delete in the Operation column to delete it.
      +

      A deleted service cannot be recovered. Exercise caution when performing this operation.

      + +
    + + + +Parent topic: Model Deployment + + + diff --git a/modelarts/umn/temp/deploying_a_model_as_a_batch_service.tmp b/modelarts/umn/temp/deploying_a_model_as_a_batch_service.tmp new file mode 100644 index 000000000..f2c7159cd --- /dev/null +++ b/modelarts/umn/temp/deploying_a_model_as_a_batch_service.tmp @@ -0,0 +1,232 @@ + + +

    Deploying a Model as a Batch Service

    +

    After a model is prepared, you can deploy it as a batch service. The Service Deployment > Batch Services page lists all batch services. You can enter a service name in the search box in the upper right corner and click to query the service.

    +

    Prerequisites

    • Data has been prepared. Specifically, you have created a model in the Normal state in ModelArts.
    • Data to be batch processed is ready and has been upload to an OBS directory.
    • At least one empty folder has been created on OBS for storing the output.
    + +

    Background

    • A maximum of 1,000 batch services can be created.
    • Based on the input request (JSON or other file) defined by the model, different parameter are entered. If the model input is a JSON file, a configuration file is required to generate a mapping file. If the model input is other file, no mapping file is required.
    • Batch services can only be deployed in a public resource pool, but not a dedicated resource pool.
    + +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose Service Deployment > Batch Services. By default, the Batch Services page is displayed.
    2. In the batch service list, click Deploy in the upper left corner. The Deploy page is displayed.
    3. Set parameters for a batch service.
      1. Set the basic information, including Name and Description. The name is generated by default, for example, service-bc0d. You can specify Name and Description according to actual requirements.
      2. Set other parameters, including model configurations. For details, see Table 1. +.. _modelarts_23_0066__en-us_topic_0171858292_table1029041641314: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 Parameters

        Parameter

        +

        Description

        +

        Model and Version

        +

        Select the model and version that are in the Normal state.

        +

        Input Path

        +

        Select the OBS directory where the data is to be uploaded. Select a folder or a .manifest file. For details about the specifications of the .manifest file, see Manifest File Specifications.

        + NOTE:
        • If the input data is an image, ensure that the size of a single image is less than 10 MB.
        • If the input data is in CSV format, ensure that no Chinese character is included. To use Chinese, set the file encoding format to UTF-8.
        + +

        Request Path

        +

        API URI of a batch service.

        +

        Mapping Relationship

        +

        If the model input is in JSON format, the system automatically generates the mapping based on the configuration file corresponding to the model. If the model input is other file, mapping is not required.

        +

        Automatically generated mapping file. Enter the field index corresponding to each parameter in the CSV file. The index starts from 0.

        +

        Mapping rule: The mapping rule comes from the input parameter (request) in the model configuration file config.json. When type is set to string/number/integer/boolean, you are required to set the index parameter. For details about the mapping rule, see Example Mapping.

        +

        The index must be a positive integer starting from 0. If the value of index does not comply with the rule, this parameter is ignored in the request. After the mapping rule is configured, the corresponding CSV data must be separated by commas (,).

        +

        Output Path

        +

        Select the path for saving the batch prediction result. You can select the empty folder that you create.

        +

        Specifications

        +

        Select available specifications based on the list displayed on the console. The specifications in gray cannot be used at the current site.

        +

        Compute Nodes

        +

        Set the number of instances for the current model version. If you set Instances to 1, the standalone computing mode is used. If you set Instances to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +

        Environment Variable

        +

        Set environment variables and inject them to the container instance. To ensure data security, do not enter sensitive information, such as plaintext passwords, in environment variables.

        +
        + +
      +
    4. After setting the parameters, deploy the model as a batch service as prompted. Generally, service deployment jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      You can go to the batch service list to view the basic information about the batch service. In the batch service list, after the status of the newly deployed service changes from Deploying to Running, the service is deployed successfully.

      +
    + +

    Manifest File Specifications

    Batch services of the inference platform support the manifest file. The manifest file describes the input and output of data.

    + +Example input manifest file
    • File name: test.manifest
    • File content:
      {"source": "<obs path>/test/data/1.jpg"}
      +{"source": "https://infers-data.obs.xxx.com:443/xgboosterdata/data.csv?AccessKeyId=2Q0V0TQ461N26DDL18RB&Expires=1550611914&Signature=wZBttZj5QZrReDhz1uDzwve8GpY%3D&x-obs-security-token=gQpzb3V0aGNoaW5hixvY8V9a1SnsxmGoHYmB1SArYMyqnQT-ZaMSxHvl68kKLAy5feYvLDM..."}
      +
    • File requirements:
      1. The file name extension must be .manifest.
      2. The file content is in JSON format. Each row describes a piece of input data, which must be accurate to a file instead of a folder.
      +
    + +

    Example output manifest file

    +If you use an input manifest file, the output directory will contain an output manifest file.
    • Assume that the output path is //test-bucket/test/. The result is stored in the following path:
      OBS bucket/directory name
      +├── test-bucket
      +│   ├── test
      +│   │   ├── infer-result-0.manifest
      +│   │   ├── infer-result
      +│   │   │ ├── 1.jpg_result.txt
      +│   │   │ ├── 2.jpg_result.txt
      +
    • Content of the infer-result-0.manifest file:
      {"source": "<obs path>/obs-data-bucket/test/data/1.jpg",  "inference-loc": "<obs path>/test-bucket/test/infer-result/1.jpg_result.txt"}
      +{"source ": "https://infers-data.obs.xxx.com:443/xgboosterdata/2.jpg?AccessKeyId=2Q0V0TQ461N26DDL18RB&Expires=1550611914&Signature=wZBttZj5QZrReDhz1uDzwve8GpY%3D&x-obs-security-token=gQpzb3V0aGNoaW5hixvY8V9a1SnsxmGoHYmB1SArYMyqnQT-ZaMSxHvl68kKLAy5feYvLDMNZWxzhBZ6Q-3HcoZMh9gISwQOVBwm4ZytB_m8sg1fL6isU7T3CnoL9jmvDGgT9VBC7dC1EyfSJrUcqfB...",  "inference-loc": "obs://test-bucket/test/infer-result/2.jpg_result.txt"}
      +
    + +
    • File format:
      1. The file name is infer-result-{{index}}.manifest, where index is the instance ID. Each running instance of a batch service generates a manifest file.
      2. The infer-result directory is created in the manifest directory to store the result.
      3. The file content is in JSON format. Each row describes the output result of a piece of input data.
      4. The content contains two fields:
        1. source: input data description, which is the same as that of the input manifest file
        2. inference-loc: output result path in the format of <obs path>/{{Bucket name}}/{{Object name}}
        +
      +
    +

    Example Mapping

    The following example shows the relationship between the configuration file, mapping rule, CSV data, and inference request.

    +

    Assume that the apis parameter in the configuration file used by your model is as follows:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    [
    +    {
    +        "protocol": "http",
    +        "method": "post",
    +        "url": "/",
    +        "request": {
    +            "type": "object",
    +            "properties": {
    +                "data": {
    +                    "type": "object",
    +                    "properties": {
    +                        "req_data": {
    +                            "type": "array",
    +                            "items": [
    +                                {
    +                                    "type": "object",
    +                                    "properties": {
    +                                        "input_1": {
    +                                            "type": "number"
    +                                        },
    +                                        "input_2": {
    +                                            "type": "number"
    +                                        },
    +                                        "input_3": {
    +                                            "type": "number"
    +                                        },
    +                                        "input_4": {
    +                                            "type": "number"
    +                                        }
    +                                    }
    +                                }
    +                            ]
    +                        }
    +                    }
    +                }
    +            }
    +        }
    +    }
    +]
    +
    +
    +

    At this point, the corresponding mapping relationship is shown below. The ModelArts management console automatically resolves the mapping relationship from the configuration file. When calling a ModelArts API, write the mapping relationship by yourself according to the rule.

    +
    {
    +    "type": "object",
    +    "properties": {
    +        "data": {
    +            "type": "object",
    +            "properties": {
    +                "req_data": {
    +                    "type": "array",
    +                    "items": [
    +                        {
    +                            "type": "object",
    +                            "properties": {
    +                                "input_1": {
    +                                    "type": "number",
    +                                    "index": 0
    +                                },
    +                                "input_2": {
    +                                    "type": "number",
    +                                    "index": 1
    +                                },
    +                                "input_3": {
    +                                    "type": "number",
    +                                    "index": 2
    +                                },
    +                                "input_4": {
    +                                    "type": "number",
    +                                    "index": 3
    +                                }
    +                            }
    +                        }
    +                    ]
    +                }
    +            }
    +        }
    +    }
    +}
    +

    The data for inference, that is, the CSV data, is in the following format. The data must be separated by commas (,).

    +
    5.1,3.5,1.4,0.2
    +4.9,3.0,1.4,0.2
    +4.7,3.2,1.3,0.2
    +

    Depending on the defined mapping relationship, the inference request is shown below. The format is similar to the format used by the real-time service.

    +
    {
    +	"data": {
    +		"req_data": [{
    +			"input_1": 5.1,
    +			"input_2": 3.5,
    +			"input_3": 1.4,
    +			"input_4": 0.2
    +		}]
    +	}
    +}
    + + + + +Parent topic: Batch Services + + + diff --git a/modelarts/umn/temp/deploying_a_model_as_a_real-time_service.tmp b/modelarts/umn/temp/deploying_a_model_as_a_real-time_service.tmp new file mode 100644 index 000000000..43f966251 --- /dev/null +++ b/modelarts/umn/temp/deploying_a_model_as_a_real-time_service.tmp @@ -0,0 +1,172 @@ + + +

    Deploying a Model as a Real-Time Service

    +

    After a model is prepared, you can deploy the model as a real-time service and predict and call the service.

    +

    A maximum of 20 real-time services can be deployed by a user.

    + +

    Prerequisites

    • Data has been prepared. Specifically, you have created a model in the Normal state in ModelArts.
    + +

    Procedure

    1. Log in to the ModelArts management console. In the left navigation pane, choose Service Deployment > Real-Time Services. By default, the system switches to the Real-Time Services page.
    2. In the real-time service list, click Deploy in the upper left corner. The Deploy page is displayed.
    3. Set parameters for a real-time service.
      1. Set basic information about model deployment. For details about the parameters, see Table 1. +.. _modelarts_23_0060__en-us_topic_0165025304_table16373156155613: + + + + + + + + + + + + + + + +
        Table 1 Basic parameters of model deployment

        Parameter

        +

        Description

        +

        Name

        +

        Name of the real-time service. Set this parameter as prompted.

        +

        Auto Stop

        +

        After this parameter is enabled and the auto stop time is set, a service automatically stops at the specified time. The auto stop function is enabled by default, and the default value is 1 hour later.

        +

        The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer from 1 to 24 hours in the textbox on the right.

        +

        Description

        +

        Brief description of the real-time service.

        +
        + +
      2. Enter key information including the resource pool and model configurations. For details, see Table 2. +.. _modelarts_23_0060__en-us_topic_0165025304_table10352134481117: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters

        Parameter

        +

        Sub-Parameter

        +

        Description

        +

        Resource Pool

        +

        Public resource pools

        +

        Instances in the public resource pool can be of the CPU or GPU type.

        +

        Resource Pool

        +

        Dedicated resource pools

        +

        For details about how to create a dedicated resource pool, see Creating a Dedicated Resource Pool. You can select a specification from the resource pool specifications.

        +

        Model and Configuration

        +

        Model Source

        +

        You can select My Models or My Subscriptions based on site requirements. The models that match the model sources are displayed.

        +

        Model

        +

        The system automatically associates with the list of available models. Select a model in the Normal status and its version.

        +

        Traffic Ratio (%)

        +

        Set the traffic proportion of the current instance node. Service calling requests are allocated to the current version based on this proportion.

        +

        If you deploy only one version of a model, set this parameter to 100%. If you select multiple versions for gated launch, ensure that the sum of the traffic ratios of multiple versions is 100%.

        +

        Specifications

        +

        If you select Public resource pools, you can select the CPU or GPU resources based on site requirements. For details, see Table 3.

        +

        Compute Nodes

        +

        Set the number of instances for the current model version. If you set Instances to 1, the standalone computing mode is used. If you set Instances to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +

        Environment Variable

        +

        Set environment variables and inject them to the container instance. To ensure data security, do not enter sensitive information, such as plaintext passwords, in environment variables.

        +

        Add Model and Configuration

        +

        ModelArts supports multiple model versions and flexible traffic policies. You can use gated launch to smoothly upgrade the model version.

        + NOTE:

        If the selected model has only one version, the system does not display Add Model Version and Configuration.

        + +

        Traffic Limit

        +

        N/A

        +

        Maximum number of times a service can be accessed within a second. You can set this parameter as needed.

        +
        + + +.. _modelarts_23_0060__en-us_topic_0165025304_table117211414482: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 3 Supported specifications

        Specifications

        +

        Description

        +

        ExeML specifications (CPU)

        +

        ExeML specifications (GPU)

        +

        Only be used by models trained in ExeML projects.

        +

        CPU: 2 vCPUs | 8 GiB

        +

        Suitable for models with only CPU loads.

        +

        CPU: 8 vCPUs | 64 GiB GPU: 1 x V100

        +

        Suitable for running GPU models.

        +

        CPU: 8 vCPUs | 32 GiB GPU: 1 x T4

        +

        Suitable for models requiring CPU and GPU (NVIDIA T4) resources.

        +

        Arm: 3 vCPUs | 6 GiB Ascend: 1 x Ascend 310

        +

        Carrying one Ascend 310 chip, suitable for models requiring Ascend 310 chip resources.

        +

        Ascend: 1 x Ascend 910 CPU: 24 vCPUs | 96 GiB

        +

        Carrying one Ascend 910 chip, suitable for models requiring Ascend 910 chip resources.

        +

        Ascend: 8 Ascend 910 CPU: 192 vCPUs | 720 GiB

        +

        Carrying eight Ascend 910 chips, suitable for models requiring Ascend 910 chip resources.

        +
        + +
      +
    4. After confirming the entered information, complete service deployment as prompted. Generally, service deployment jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      After a real-time service is deployed, it is started immediately.

      + +

      You can go to the real-time service list to view the basic information about the real-time service. In the real-time service list, after the status of the newly deployed service changes from Deploying to Running, the service is deployed successfully.

      +
    + + + + +Parent topic: Real-Time Services + + + diff --git a/modelarts/umn/temp/deploying_a_model_as_a_service.tmp b/modelarts/umn/temp/deploying_a_model_as_a_service.tmp new file mode 100644 index 000000000..21cf885e4 --- /dev/null +++ b/modelarts/umn/temp/deploying_a_model_as_a_service.tmp @@ -0,0 +1,46 @@ + + +

    Deploying a Model as a Service

    +

    Deploying a Model

    You can deploy a model as a real-time service that provides a real-time test UI and monitoring capabilities. After model training is complete, you can deploy a version with the ideal accuracy and in the Successful status as a service. The procedure is as follows:

    +
    1. On the Train Model tab page, wait until the training status changes to Successful. Click Deploy in the Version Manager pane to deploy the model as a real-time service.
    2. In the Deploy dialog box, select resource flavor, set the Auto Stop function, and click OK to start the deployment.
      • Specifications: The GPU specifications are better, and the CPU specifications are more cost-effective.
      • Compute Nodes: The default value is 1 and cannot be changed.
      • Auto Stop: After this function is enabled and the auto stop time is set, a service automatically stops at the specified time.
      +

      The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer from 1 to 24 hours in the text box on the right.

      +
    3. After the model deployment is started, view the deployment status on the Service Deployment page.

      It takes a certain period of time to deploy a model. When the status in the Version Manager pane changes from Deploying to Running, the deployment is complete.

      +

      On the ExeML page, trained models can only be deployed as real-time services. For details about how to deploy them as batch services, see Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?

      + +
    + +

    Testing a Service

    • On the Service Deployment page, select a service type. For example, on the ExeML page, the image classification model is deployed as a real-time service by default. On the Real-Time Services page, click Prediction in the Operation column of the target service to perform a service test. For details, see "Testing a Service".
    • You can also use code to test a service. For details, see "Accessing a Real-Time Service".
    • The following describes the procedure for performing a service test after the image classification model is deployed as a service on the ExeML page.
      1. After the model is deployed, test the service using an image. On the ExeML page, click the target project, go to the Deploy Service tab page, select the service version in the Running status, click Upload in the service test area, and upload a local image to perform the test.
      2. Click Prediction to conduct the test. After the prediction is complete, label sunflowers and its detection score are displayed in the prediction result area on the right. If the model accuracy does not meet your expectation, add images on the Label Data tab page, label the images, and train and deploy the model again. Table 1 describes the parameters in the prediction result. If you are satisfied with the model prediction result, call the API to access the real-time service as prompted. For details, see Accessing a Real-Time Service.

        Currently, only JPG, JPEG, BMP, and PNG images are supported.

        + +.. _modelarts_21_0007__en-us_topic_0284258836_en-us_topic_0169446156_table27341946101510: + + + + + + + + + + + + +
        Table 1 Parameters in the prediction result

        Parameter

        +

        Description

        +

        predict_label

        +

        Image prediction label

        +

        scores

        +

        Prediction confidence of top 5 labels

        +
        + +

        A running real-time service keeps consuming resources. If you do not need to use the real-time service, click Stop in the Version Manager pane to stop the service. If you want to use the service again, click Start.

        + +
      +
    + + + + +Parent topic: Image Classification + + + diff --git a/modelarts/umn/temp/development_environment.tmp b/modelarts/umn/temp/development_environment.tmp new file mode 100644 index 000000000..3f517773b --- /dev/null +++ b/modelarts/umn/temp/development_environment.tmp @@ -0,0 +1,15 @@ + + +

    Development Environment

    + + + + + +Parent topic: FAQs + + + diff --git a/modelarts/umn/temp/devenviron.tmp b/modelarts/umn/temp/devenviron.tmp new file mode 100644 index 000000000..13245ac82 --- /dev/null +++ b/modelarts/umn/temp/devenviron.tmp @@ -0,0 +1,14 @@ + + +

    DevEnviron

    +

    It is challenging to set up a development environment, select an AI algorithm framework and algorithm, debug code, install software, and accelerate hardware. To address these challenges, ModelArts provides DevEnviron to simplify the entire development process.

    +
    • Mainstream AI algorithm frameworks supported

      In the machine learning and deep learning fields, popular open-source training and inference frameworks include TensorFlow, PyTorch, MXNet, and MindSpore. ModelArts supports all popular AI computing frameworks and provides a user-friendly development and debugging environment. It supports traditional machine learning algorithms, such as logistic regression, decision tree, and clustering, as well as multiple types of deep learning algorithms, such as the convolutional neural network (CNN), recurrent neural network (RNN), and long short-term memory (LSTM).

      +
    • Simplified algorithm development for distributed training

      Deep learning generally requires large-scale GPU clusters for distributed acceleration. For existing open-source frameworks, algorithm developers need to write a large amount of code for distributed training on different hardware, and the acceleration code varies depending on the framework. To resolve these issues, a distributed lightweight framework or SDK is required. The framework or SDK is built on deep learning engines such as TensorFlow, PyTorch, MXNet, and MindSpore to improve the distributed performance and usability of these engines. ModelArts MoXing perfectly suits the needs. The easy-to-use MoXing API/SDK enables you to develop deep learning at low costs.

      +
    + + + +Parent topic: Basic Knowledge + + + diff --git a/modelarts/umn/temp/devenviron_(notebook).tmp b/modelarts/umn/temp/devenviron_(notebook).tmp new file mode 100644 index 000000000..4c8cd422d --- /dev/null +++ b/modelarts/umn/temp/devenviron_(notebook).tmp @@ -0,0 +1,17 @@ + + +

    DevEnviron (Notebook)

    + + + + + diff --git a/modelarts/umn/temp/do_files_in__cache_still_exist_after_a_notebook_instance_is_stopped_or_restarted_how_do_i_avoid_a_restart.tmp b/modelarts/umn/temp/do_files_in__cache_still_exist_after_a_notebook_instance_is_stopped_or_restarted_how_do_i_avoid_a_restart.tmp new file mode 100644 index 000000000..a9a04456c --- /dev/null +++ b/modelarts/umn/temp/do_files_in__cache_still_exist_after_a_notebook_instance_is_stopped_or_restarted_how_do_i_avoid_a_restart.tmp @@ -0,0 +1,12 @@ + + +

    Do Files in /cache Still Exist After a Notebook Instance is Stopped or Restarted? How Do I Avoid a Restart?

    +

    /cache is a temporary directory and will not be saved. After an instance using OBS storage is stopped, data in the ~work directory will be deleted. After a notebook instance is restarted, all cached data except the data in the OBS bucket is lost, and your model or code is unavailable.

    +

    To avoid a restart, do not train heavy-load jobs that consume large amounts of CPU, GPU, or memory resources in DevEnviron.

    + + + +Parent topic: Notebook + + + diff --git a/modelarts/umn/temp/downloading_a_file_from_jupyterlab.tmp b/modelarts/umn/temp/downloading_a_file_from_jupyterlab.tmp new file mode 100644 index 000000000..009d84036 --- /dev/null +++ b/modelarts/umn/temp/downloading_a_file_from_jupyterlab.tmp @@ -0,0 +1,23 @@ + + +

    Downloading a File from JupyterLab

    +

    Only files within 100 MB in JupyterLab can be downloaded to a local PC. You can perform operations in different scenarios based on the storage location selected when creating a notebook instance.

    +

    Notebook Instances with EVS Attached

    For notebook instances with EVS attached, you can perform the following operations to download large files to the local PC:

    +
    1. In the notebook instance, create an ipynb file. Use MoXing to upload the large files from notebook instances to OBS. The sample code is as follows:
      1
      +2
      import moxing as mox
      +mox.file.copy('/home/ma-user/work/obs_file.txt', 'obs://bucket_name/obs_file.txt')
      +
      +
      +

      In the preceding code, /home/ma-user/work/obs_file.txt indicates a file storage path in a notebook instance, and obs://bucket_name/obs_file.txt indicates a file storage path on OBS.

      +
    2. Use OBS or the ModelArts SDKs to download the files from OBS to the local PC.
    + +

    Notebook Instances Using OBS Storage

    For notebook instances that use OBS storage, you can use OBS or the ModelArts SDK to download files from OBS to a local PC.

    +

    Use OBS for download.

    + + + + +Parent topic: Uploading and Downloading Data + + + diff --git "a/modelarts/umn/temp/error_message_\"no_such_file_or_directory\"_displayed_in_training_job_logs.tmp" "b/modelarts/umn/temp/error_message_\"no_such_file_or_directory\"_displayed_in_training_job_logs.tmp" new file mode 100644 index 000000000..d9011a3f2 --- /dev/null +++ "b/modelarts/umn/temp/error_message_\"no_such_file_or_directory\"_displayed_in_training_job_logs.tmp" @@ -0,0 +1,23 @@ + + +

    Error Message "No such file or directory" Displayed in Training Job Logs

    +

    Issue Analysis

    When you use ModelArts, your data is stored in the OBS bucket. The data has a corresponding OBS path, for example, bucket_name/dir/image.jpg. ModelArts training jobs run in containers, and if they need to access OBS data, they need to know what path to access it from. If ModelArts cannot find the configured path, it is possible that the selected data storage path was configured incorrectly when the training job was created or that the OBS path in the code file is incorrect.

    + +

    Solution

    1. Confirm that the OBS path in the log exists.

      Locate the incorrect OBS path in the log, for example, obs-test/ModelArts/examples/. There are two methods to check whether it exists.

      +
      • On OBS Console, check whether the OBS path exists.

        Log in to OBS console using the current account, and check whether the OBS buckets, folders, and files exist in the OBS path displayed in the log. For example, you can confirm that a given bucket is there and then check if that bucket contains the folder you are looking for based on the configured path.

        +
        • If the file path exists, go to 2.
        • If it does not exist, change the path configured for the training job to an OBS bucket path that is actually there.
        +
      • Create a notebook instance, and use an API to check whether the directory exists. In an existing notebook instance or after creating a new notebook instance, run the following command to check whether the directory exists:
        import moxing as mox
        +mox.file.exists('obs://obs-test/ModelArts/examples/')
        +
        • If it exists, go to 2.
        • If it does not exist, change it to an available OBS bucket path in the training job.
        +
      +
    2. After confirming that the path exists, check whether OBS and ModelArts are in the same region and whether the OBS bucket belongs to another account.

      Log in to the ModelArts console and view the region where ModelArts resides. Log in to the OBS console and view the region where the OBS bucket resides. Check whether they reside in the same region and whether the OBS bucket belongs to another account.

      +
      • If they are in the same region and the OBS bucket does not belong to another account, go to 3.
      • If they are not in the same region or the OBS bucket belongs to another account, create a bucket and a folder in OBS that is in the same region as ModelArts using the same account, and upload data to the bucket.
      +
    3. In the script of the training job, check whether the API for reading the OBS path in the code file is correct.
    + + + + +Parent topic: Training Jobs + + + diff --git a/modelarts/umn/temp/examples_of_custom_scripts.tmp b/modelarts/umn/temp/examples_of_custom_scripts.tmp new file mode 100644 index 000000000..613969497 --- /dev/null +++ b/modelarts/umn/temp/examples_of_custom_scripts.tmp @@ -0,0 +1,25 @@ + + + +

    Examples of Custom Scripts

    + +

    + + + + + + diff --git a/modelarts/umn/temp/exeml.tmp b/modelarts/umn/temp/exeml.tmp new file mode 100644 index 000000000..162bc9c79 --- /dev/null +++ b/modelarts/umn/temp/exeml.tmp @@ -0,0 +1,21 @@ + + + +

    ExeML

    + +

    + + + + + + diff --git a/modelarts/umn/temp/exporting_data.tmp b/modelarts/umn/temp/exporting_data.tmp new file mode 100644 index 000000000..be08b5c57 --- /dev/null +++ b/modelarts/umn/temp/exporting_data.tmp @@ -0,0 +1,33 @@ + + +

    Exporting Data

    +

    A dataset includes labeled and unlabeled data. You can select images or filter data based on the filter criteria and export to a new dataset or the specified OBS directory. In addition, you can view the task history to learn about the export records.

    +

    Only datasets of image classification, object detection, image segmentation, and free format types can be exported.

    +
    • For image classification datasets, only the label files in TXT format can be exported.
    • For object detection datasets, only XML label files in Pascal VOC format can be exported.
    • For image segmentation datasets, only XML label files in Pascal VOC format and mask images can be exported.
    • For free format datasets, all files of the datasets can be exported.
    + +

    Exporting Data to a New Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset of the object detection or image classification type and click the dataset name to go to the Dashboard tab page of the dataset.

      For a dataset of the free format type, you can click the dataset name to directly access the dataset details page and go to 4.

      + +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed.
    4. On the dataset details page, select or filter data to be exported. Click Export To and choose New Dataset from the drop-down list.
    5. In the displayed Export to New Dataset dialog box, enter the related information and click OK.

      Name: name of the new dataset

      +

      Storage Path: input path of the new dataset, that is, the OBS path where the data to be exported is stored

      +

      Output Path: output path of the new dataset, that is, the output path after labeling is complete. The output path cannot be the same as the storage path, and the output path cannot be a subdirectory of the storage path.

      +

      Export Content: The options are Export the selected samples and Export all samples meeting filtering criteria.

      +
    6. After the data is exported, you can view the new dataset in the dataset list.
    + +

    Exporting Data to OBS

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset of the object detection or image classification type and click the dataset name to go to the Dashboard tab page of the dataset.

      For a dataset of the free format type, you can click the dataset name to directly access the dataset details page and go to 4.

      + +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed.
    4. On the dataset details page, select or filter data to be exported. Click Export To and choose OBS from the drop-down list.
    5. In the displayed Export to OBS dialog box, enter the related information and click OK.

      Storage Path: path where the data to be exported is stored. You are advised not to save data to the input or output path of the current dataset.

      +

      Export Content: The options are Export the selected samples and Export all samples meeting filtering criteria.

      +
    6. After the data is exported, you can view it in the specified path.
    + +

    Viewing the Task History

    When you export data to a new dataset or OBS, you can view the export task details in the View Task History dialog box.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset of the object detection or image classification type and click the dataset name to go to the Dashboard tab page of the dataset.

      For a dataset of the free format type, you can click the dataset name to directly access the dataset details page and go to 4.

      + +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed.
    4. On the dataset details page, select or filter data to be exported. Click Export To and choose View Task History from the drop-down list.
    5. In the View Task History dialog box, view the export task history of the current dataset. Information about Task ID, Created, Type, Path, Total, and Status is included.
    + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/faqs.tmp b/modelarts/umn/temp/faqs.tmp new file mode 100644 index 000000000..2c9257236 --- /dev/null +++ b/modelarts/umn/temp/faqs.tmp @@ -0,0 +1,27 @@ + + + +

    FAQs

    + +

    + + + + + + diff --git a/modelarts/umn/temp/for_importing_models.tmp b/modelarts/umn/temp/for_importing_models.tmp new file mode 100644 index 000000000..8705cad3f --- /dev/null +++ b/modelarts/umn/temp/for_importing_models.tmp @@ -0,0 +1,18 @@ + + +

    For Importing Models

    +

    + + + + + +Parent topic: Custom Images + + + diff --git a/modelarts/umn/temp/for_training_models.tmp b/modelarts/umn/temp/for_training_models.tmp new file mode 100644 index 000000000..a1d8be469 --- /dev/null +++ b/modelarts/umn/temp/for_training_models.tmp @@ -0,0 +1,17 @@ + + +

    For Training Models

    + + + + + +Parent topic: Custom Images + + + diff --git a/modelarts/umn/temp/functions.tmp b/modelarts/umn/temp/functions.tmp new file mode 100644 index 000000000..daea758a1 --- /dev/null +++ b/modelarts/umn/temp/functions.tmp @@ -0,0 +1,19 @@ + + +

    Functions

    +

    AI engineers face challenges in the installation and configuration of various AI tools, data preparation, and model training. To address these challenges, the one-stop AI development platform ModelArts is provided. The platform integrates data preparation, algorithm development, model training, and model deployment into the production environment, allowing AI engineers to perform one-stop AI development.

    +Figure 1 Function overview
    +

    ModelArts has the following features:

    +
    • Data governance

      Manages data preparation, such as data filtering and labeling, and dataset versions.

      +
    • Rapid and simplified model training

      Enables high-performance distributed training and simplifies coding with the self-developed MoXing deep learning framework.

      +
    • Multi-scenario deployment

      Deploys models in various production environments, and supports real-time and batch inference.

      +
    • Auto learning

      Enables model building without coding and supports image classification, object detection, and predictive analytics.

      +
    + + + + +Parent topic: Service Overview + + + diff --git a/modelarts/umn/temp/general_issues.tmp b/modelarts/umn/temp/general_issues.tmp new file mode 100644 index 000000000..f5adee4f4 --- /dev/null +++ b/modelarts/umn/temp/general_issues.tmp @@ -0,0 +1,23 @@ + + +

    General Issues

    + + + + + +Parent topic: FAQs + + + diff --git a/modelarts/umn/temp/how_do_i_create_a_training_job_when_a_dependency_package_is_referenced_in_a_model.tmp b/modelarts/umn/temp/how_do_i_create_a_training_job_when_a_dependency_package_is_referenced_in_a_model.tmp new file mode 100644 index 000000000..3fae1dcdd --- /dev/null +++ b/modelarts/umn/temp/how_do_i_create_a_training_job_when_a_dependency_package_is_referenced_in_a_model.tmp @@ -0,0 +1,32 @@ + + +

    How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?

    +

    When a model references a dependency package, select a frequently-used framework to create training jobs. In addition, place the required file or installation package in the code directory. The requirements vary based on the dependency package that you use.

    +
    • Open-source installation package

      It is not allowed to install the package using the GitHub source code.

      + +

      Create a file named pip-requirements.txt in the code directory. In this file, specify the name and version of the dependency package in the format of Package name==Version.

      +

      For example, the OBS path specified by Code Directory contains model files and the pip-requirements.txt file. The following shows the code directory structure:

      +
      |---OBS path to the model boot file
      +     |---model.py               #Model boot file
      +     |---pip-requirements.txt   #Customized configuration file, which specifies the name and version of the dependency package
      +

      The following shows the content of the pip-requirements.txt file:

      +
      alembic==0.8.6
      +bleach==1.4.3
      +click==6.6
      +
    • Customized WHL file

      When you use a customized .whl file, the system cannot automatically download and install the file. Place the .whl file in the code directory, create a file named pip-requirements.txt, and specify the name of the .whl file in the created file. The dependency package must be a .whl file.

      +

      For example, the OBS path specified by Code Directory contains model files, .whl file, and pip-requirements.txt file. The following shows the code directory structure:

      +
      |---OBS path to the model boot file
      +     |---model.py               #Model boot file
      +     |---XXX.whl                #Dependency package. If multiple dependencies are required, place all of them here.
      +     |---pip-requirements.txt   #Customized configuration file, which specifies the name of the dependency package
      +

      The following shows the content of the pip-requirements.txt file:

      +
      numpy-1.15.4-cp36-cp36m-manylinux1_x86_64.whl
      +tensorflow-1.8.0-cp36-cp36m-manylinux1_x86_64.whl
      +
    + + + +Parent topic: Training Jobs + + + diff --git a/modelarts/umn/temp/how_do_i_describe_the_dependencies_between_installation_packages_and_model_configuration_files_when_a_model_is_imported.tmp b/modelarts/umn/temp/how_do_i_describe_the_dependencies_between_installation_packages_and_model_configuration_files_when_a_model_is_imported.tmp new file mode 100644 index 000000000..bd544f584 --- /dev/null +++ b/modelarts/umn/temp/how_do_i_describe_the_dependencies_between_installation_packages_and_model_configuration_files_when_a_model_is_imported.tmp @@ -0,0 +1,57 @@ + + +

    How Do I Describe the Dependencies Between Installation Packages and Model Configuration Files When a Model Is Imported?

    +

    Symptom

    When importing a model from OBS or a container image, compile a model configuration file. The model configuration file describes the model usage, computing framework, precision, inference code dependency package, and model API. The configuration file must be in JSON format. In the configuration file, dependencies indicates the packages that the model inference code depends on. Model developers need to provide the package name, installation mode, and version constraints. For details about the parameters, see . The dependency structure array needs to be set for the dependencies parameter.

    + +

    Solution

    When the installation package has dependency relationships, the dependencies parameter in the model configuration file supports multiple dependency structure arrays, which are entered in list format.

    +

    The dependencies in list format must be installed in sequence. For example, install Cython, pytest-runner, and pytest before installing mmcv-full. When entering the installation packages in list format in the configuration file, write Cython, pytest-runner, and pytest in front of the mmcv-full structure array.

    +

    Example:

    +
    "dependencies": [
    +    {
    +    "installer": "pip",
    +    "packages": [
    +        {
    +            "package_name": "Cython"
    +        },
    +        {
    +            "package_name": "pytest-runner"
    +        },
    +        {
    +            "package_name": "pytest"
    +        }]
    +    },
    +
    +    {
    +    "installer": "pip",
    +    "packages": [
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "5.0.0",
    +            "package_name": "Pillow"
    +        },
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "1.4.0",
    +            "package_name": "torch"
    +        },
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "1.19.1",
    +            "package_name": "numpy"
    +        },
    +        {
    +            "restraint": "ATLEAST",
    +            "package_version": "1.2.0",
    +            "package_name": "mmcv-full"
    +        }]
    +    }
    +]
    + +

    + + + +Parent topic: Service Deployment + + + diff --git a/modelarts/umn/temp/how_do_i_enable_the_terminal_function_in_devenviron_of_modelarts.tmp b/modelarts/umn/temp/how_do_i_enable_the_terminal_function_in_devenviron_of_modelarts.tmp new file mode 100644 index 000000000..54ee526d2 --- /dev/null +++ b/modelarts/umn/temp/how_do_i_enable_the_terminal_function_in_devenviron_of_modelarts.tmp @@ -0,0 +1,12 @@ + + +

    How Do I Enable the Terminal Function in DevEnviron of ModelArts?

    +
    1. Log in to the ModelArts management console, and choose DevEnviron > Notebooks.
    2. In the notebook list, click Open in the Operation column of the target notebook instance to go to the Jupyter page.
    3. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.Figure 1 Going to the Terminal page
      +
    + + + +Parent topic: Notebook + + + diff --git a/modelarts/umn/temp/how_do_i_import_a_model_downloaded_from_obs_to_modelarts.tmp b/modelarts/umn/temp/how_do_i_import_a_model_downloaded_from_obs_to_modelarts.tmp new file mode 100644 index 000000000..0153e6aa9 --- /dev/null +++ b/modelarts/umn/temp/how_do_i_import_a_model_downloaded_from_obs_to_modelarts.tmp @@ -0,0 +1,12 @@ + + +

    How Do I Import a Model Downloaded from OBS to ModelArts?

    +

    ModelArts allows you to upload local models to OBS or import models stored in OBS directly into ModelArts.

    +

    For details about how to import a model from OBS, see Importing a Meta Model from OBS.

    + + + +Parent topic: Model Management + + + diff --git a/modelarts/umn/temp/how_do_i_obtain_access_keys.tmp b/modelarts/umn/temp/how_do_i_obtain_access_keys.tmp new file mode 100644 index 000000000..b2ac71c8b --- /dev/null +++ b/modelarts/umn/temp/how_do_i_obtain_access_keys.tmp @@ -0,0 +1,12 @@ + + +

    How Do I Obtain Access Keys?

    +

    Obtaining an Access Key

    1. Log in to the console, enter the My Credentials page, and choose Access Keys > Create Access Key.
    2. In the Create Access Key dialog box that is displayed, use the login password for verification.
    3. Click OK, open the credentials.csv file, and save the key file as prompted. The access key file is saved in the default download folder of the browser. Then, the access key (Access Key Id and Secret Access Key) is obtained.
    + + + + +Parent topic: General Issues + + + diff --git a/modelarts/umn/temp/how_do_i_perform_incremental_training_in_an_exeml_project.tmp b/modelarts/umn/temp/how_do_i_perform_incremental_training_in_an_exeml_project.tmp new file mode 100644 index 000000000..550aade55 --- /dev/null +++ b/modelarts/umn/temp/how_do_i_perform_incremental_training_in_an_exeml_project.tmp @@ -0,0 +1,17 @@ + + +

    How Do I Perform Incremental Training in an ExeML Project?

    +

    Each round of training generates a training version in an ExeML project. If a training result is unsatisfactory (for example, if the precision is not good enough), you can add high-quality data or add or delete labels, and perform training again.

    +
    • For better training results, use high-quality data for incremental training to improve data labeling performance.
    + +

    Incremental Training Procedure

    1. Log in to the ModelArts console, and click ExeML in the left navigation pane.
    2. On the ExeML page, click a project name. The ExeML details page of the project is displayed.
    3. On the Label Data page, click the Unlabeled tab. On the Unlabeled tab page, you can add images or add or delete labels.

      If you add images, label the added images again. If you add or delete labels, check all images and label them again. You also need to check whether new labels need to be added for the labeled data.

      +
    4. After all images are labeled, click Train in the upper right corner. In the Training Configuration dialog box that is displayed, set Incremental Training Version to the training version that has been completed to perform incremental training based on this version. Set other parameters as prompted.

      After the settings are complete, click Yes to start incremental training. The system automatically switches to the Train Model page. After the training is complete, you can view the training details, such as training precision, evaluation result, and training parameters.

      +
    + + + + +Parent topic: Tips + + + diff --git a/modelarts/umn/temp/how_do_i_quickly_create_an_obs_bucket_and_a_folder_when_creating_a_project.tmp b/modelarts/umn/temp/how_do_i_quickly_create_an_obs_bucket_and_a_folder_when_creating_a_project.tmp new file mode 100644 index 000000000..45a7e065a --- /dev/null +++ b/modelarts/umn/temp/how_do_i_quickly_create_an_obs_bucket_and_a_folder_when_creating_a_project.tmp @@ -0,0 +1,14 @@ + + +

    How Do I Quickly Create an OBS Bucket and a Folder When Creating a Project?

    +

    When creating a project, select a training data path. This section describes how to quickly create an OBS bucket and folder when you select the training data path.

    +
    1. On the page for creating an ExeML project, click on the right of Input Dataset Path. The Input Dataset Path dialog box is displayed.
    2. Click Create Bucket. The Create Bucket page is displayed. For details about how to create a bucket, see Creating a Bucket in the Object Storage Service Console Operation Guide.Figure 1 Creating an OBS bucket
      +
    3. Select the bucket, and click Create Folder. In the dialog box that is displayed, enter the folder name and click OK.
      • The name cannot contain the following special characters: \/:*?"<>|
      • The name cannot start or end with a period (.) or slash (/).
      • The absolute path of a folder cannot exceed 1,023 characters.
      • Any single slash (/) separates and creates multiple levels of folders at once.
      +
    + + + +Parent topic: Tips + + + diff --git a/modelarts/umn/temp/how_do_i_upload_data_to_obs.tmp b/modelarts/umn/temp/how_do_i_upload_data_to_obs.tmp new file mode 100644 index 000000000..c2d829188 --- /dev/null +++ b/modelarts/umn/temp/how_do_i_upload_data_to_obs.tmp @@ -0,0 +1,11 @@ + + +

    How Do I Upload Data to OBS?

    +

    Before using ModelArts to develop AI models, data needs to be uploaded to an OBS bucket. You can log in to the OBS console to create an OBS bucket, create a folder, and upload data. For details about how to upload data, see Object Storage Service Getting Started.

    + + + +Parent topic: General Issues + + + diff --git a/modelarts/umn/temp/how_do_i_view_the_added_data_in_an_exeml_project.tmp b/modelarts/umn/temp/how_do_i_view_the_added_data_in_an_exeml_project.tmp new file mode 100644 index 000000000..365d660e6 --- /dev/null +++ b/modelarts/umn/temp/how_do_i_view_the_added_data_in_an_exeml_project.tmp @@ -0,0 +1,19 @@ + + +

    How Do I View the Added Data in an ExeML Project?

    +

    To add data for an existing project, perform the following operations. The operations described in this section apply only to object detection and image classification projects.

    +

    Obtaining the Data Source of an ExeML Project

    1. Log in to the ModelArts management console and choose ExeML from the left navigation pane.
    2. In the ExeML project list, you can view the data source corresponding to the project in the Data Source column. Click your desired data source link to go to the dataset selected or created during project creation.
    + +

    Uploading New Data to OBS

    Log in to OBS Console, access the data storage path, and upload new data to OBS.

    +

    For details about how to upload files to OBS, see Uploading an Object.

    + +

    Synchronizing Data to ModelArts

    1. After data is uploaded to OBS, go to the ExeML page on the ModelArts management console.
    2. In the ExeML project list, select the project to which data is to be added and click the project name. The Label Data page is displayed.
    3. On the Label Data page, click Synchronize Data Source.

      It takes several minutes to complete data synchronization. After the synchronization is complete, the new data is synchronized to the Unlabeled or Labeled tab page.

      +
    + + + + +Parent topic: Tips + + + diff --git a/modelarts/umn/temp/image_classification.tmp b/modelarts/umn/temp/image_classification.tmp new file mode 100644 index 000000000..fdbc73253 --- /dev/null +++ b/modelarts/umn/temp/image_classification.tmp @@ -0,0 +1,24 @@ + + +

    Image Classification

    +

    + + + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/image_segmentation.tmp b/modelarts/umn/temp/image_segmentation.tmp new file mode 100644 index 000000000..3d7b66390 --- /dev/null +++ b/modelarts/umn/temp/image_segmentation.tmp @@ -0,0 +1,137 @@ + + +

    Image Segmentation

    +

    Training a model uses a large number of labeled images. Therefore, label images before the model training. You can label images on the ModelArts management console. Alternatively, modify labels, or delete them and label them again.

    +

    Before labeling an image in image segmentation scenarios, you need to understand the following:

    +
    • All objects whose contours need to be extracted from the image must be labeled.
    • Polygons and points can be used for labeling.
      • In polygon labeling, draw a polygon based on the outline of the target object.
      • In point labeling, label the top, bottom, leftmost, and rightmost points on the object contour. The system will infer the outline of the object based on the labeled points. For images with complex backgrounds, it is a good practice to use polygons for labeling.
      +
    • When labeling an image, ensure that the polygons or points are within the image. Otherwise, an error will occur in subsequent operations.
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +
    • For an image classification dataset, the .txt file with the same name in the same directory as the data source is used as the label of the target image.
    • For an object detection dataset or image segmentation dataset, the .xml file with the same name in the same directory is used as the label of the target image.
    +

    To quickly obtain the latest data in the OBS bucket, on the All or Unlabeled tab page of the dataset details page, click Synchronize Data Source to add data from OBS to the dataset.

    + +

    Filtering Data

    On the Dashboard tab page of the dataset, the summary of the dataset is displayed by default. In the upper right corner of the page, click Label. The dataset details page is displayed, showing all data in the dataset by default. On the All, Unlabeled, or Labeled tab page, you can add filter criteria in the filter criteria area to quickly filter the data you want to view.

    +

    The following filter criteria are supported. You can set one or more filter criteria.

    +
    • Label: Select All or one or more labels you specified.
    • Sample Creation Time: Select Within 1 month, Within 1 day, or Custom to customize a time range.
    • File Name or Path: Filter files by file name or file storage path.
    • Labeled By: Select the name of the user who labeled the image.
    + +

    + +

    Manually Labeling Images

    The dataset details page provides the Labeled and Unlabeled tabs. The All tab page is displayed by default.

    +
    1. On the Unlabeled tab page, click an image. The system automatically directs you to the page for labeling the image. For details about how to use common buttons on this page, see Table 2.
    2. Select a labeling method.On the labeling page, common labeling methods and buttons are provided in the toolbar. By default, polygon labeling is selected. Use polygon or point labeling as needed.

      After you select a method to label the first image, the labeling method automatically applies to subsequent images.

      + +Figure 1 Toolbar
      + +.. _modelarts_23_0345__en-us_topic_0000001126398947_table165201739119: + + + + + + + + + + + + +
      Table 1 Labeling methods

      Icon

      +

      Description

      +

      +

      Polygon labeling. In the area where the object to be labeled is located, click to label a point, move the mouse and click multiple points along the edge of the object, and then click the first point again. All the points form a polygon. In this way, the object to be labeled is within the bounding box.

      +

      +

      Point labeling. Label the top, bottom, leftmost, and rightmost points on the object contour. The system will infer the outline of the object based on the labeled points.

      +
      + + +.. _modelarts_23_0345__en-us_topic_0000001126398947_table194471512463: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Toolbar buttons

      Icon

      +

      Description

      +

      +

      Cancel the previous operation.

      +

      +

      Redo the previous operation.

      +

      +

      Zoom in an image.

      +

      +

      Zoom out an image.

      +

      +

      Delete all bounding boxes on the current image.

      +

      +

      Display or hide a bounding box. This operation can be performed only on a labeled image.

      +

      +

      Drag a bounding box to another position or drag the edge of the bounding box to resize it.

      +

      +

      Reset a bounding box. After dragging a bounding box, you can click this button to quickly restore the bounding box to its original shape and position.

      +

      +

      Display the labeled image in full screen.

      +
      + + +
    3. Label an object.

      This section uses point labeling as an example. Identify an object in an image. Click to label the top, bottom, leftmost, and rightmost points on the object contour. In the dialog box that is displayed, set the label name and click Add. Then, the system automatically infers the object contour.

      +

      After labeling an image, click an image that has not been labeled in the image list below to label the new image.

      +Figure 2 Labeling an object outline
      +
    4. Click Back to Data Labeling Preview in the upper left part of the page to view the labeling information. In the dialog box that is displayed, click OK to save the labeling settings.

      The selected image is automatically moved to the Labeled tab page. On the Unlabeled and All tab pages, the labeling information is updated along with the labeling process, including the added label names and the number of images for each label.

      +
    + +

    Viewing Labeled Images

    On the dataset details page, click the Labeled tab to view the list of labeled images. Click an image to view its labeling information in the File Labels area on the right.

    + +

    Modifying a Label

    After labeling an object, you can modify labeled data on the Labeled tab page.

    +

    On the dataset details page, click the Labeled tab and then the image to be modified. On the labeling page that is displayed, modify the labeling information in the File Labels area on the right.

    +
    • Modifying a label: In the Labeling area, click the edit icon, set the target label name or color in the displayed dialog box, and click the save icon to save the modification. Alternatively, click a label to be modified. In the image labeling area, adjust the position and size of the bounding box. After the adjustment is complete, click another label to save the modification.
    • Modifying image labeling information: In the area for displaying images, click the target bounding box. Then, blue points on the bounding box are displayed. Drag a blue point and adjust the bounding box to the edge of the object.
    • Deleting a label: In the Labeling area, click the deletion icon to delete a label from the image. After all labels of an image are deleted, the image is displayed on the Unlabeled tab page.
    +After the labeling information is modified, click Back to Data Labeling Preview in the upper left part of the page to exit the labeling page. In the dialog box that is displayed, click OK to save the modification.Figure 3 Editing image labeling information
    + + +

    Adding Images

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add images on ModelArts for data labeling.

    +
    1. On the dataset details page, click the All or Unlabeled tab. Then click Add.
    2. On the Add page that is displayed, click Add Image.

      Select one or more images to be uploaded in the local environment. Images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.

      +

      After the images are selected, their thumbnails and sizes are displayed on the Add page.

      +
    3. On the Add page, click OK.

      The images you have added will be automatically displayed in the image list on the Unlabeled tab page. In addition, the images are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    + +

    Deleting Images

    You can quickly delete the images you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the images to be deleted or click Select Images on Current Page to select all images on the page, and click Delete in the upper left corner to delete the images. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the images.

    +

    If a tick is displayed in the upper left corner of an image, the image is selected. If no image is selected on the page, the Delete button is unavailable.

    +

    If you select Delete source files, images stored in the corresponding OBS directory will be deleted when you delete the selected images. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    + + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/import_operation.tmp b/modelarts/umn/temp/import_operation.tmp new file mode 100644 index 000000000..c10f3ced1 --- /dev/null +++ b/modelarts/umn/temp/import_operation.tmp @@ -0,0 +1,143 @@ + + +

    Import Operation

    +

    After a dataset is created, you can directly synchronize data from the dataset. Alternatively, you can import more data by importing the dataset. Data can be imported from an OBS directory or the manifest file.

    +

    Prerequisites

    • You have created a dataset.
    • You have stored the data to be imported in OBS. You have stored the manifest file in OBS.
    • The OBS buckets and ModelArts are in the same region.
    + +

    Import Modes

    There are two import modes: OBS path and Manifest file.

    +
    • OBS path: indicates that the dataset to be imported has been stored in an OBS directory in advance. In this case, you need to select an OBS path that you can access. In addition, the directory structure in the OBS path must comply with the specifications. For details, see Specifications for Importing Data from an OBS Directory. Only the following types of dataset support the OBS path import mode: Image classification, Object detection, Text classification, Table, and Sound classification.
    • Manifest file: indicates that the dataset file is in the manifest format and data is imported from the manifest file. The manifest file defines the mapping between labeling objects and content. In addition, the manifest file has been uploaded to OBS. For details about the specifications of the manifest file, see Specifications for Importing the Manifest File.
    +

    Before importing an object detection dataset, ensure that the labeling range of the labeling file does not exceed the size of the original image. Otherwise, the import may fail.

    + + +.. _modelarts_23_0006__en-us_topic_0171025430_table11677122420123: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Import modes supported by datasets

    Dataset Type

    +

    Importing Data from an OBS Path

    +

    Importing Data from a Manifest File

    +

    Image classification

    +

    Supported

    +

    Follow the format specifications described in Image Classification.

    +

    Supported

    +

    Follow the format specifications described in Image Classification.

    +

    Object detection

    +

    Supported

    +

    Follow the format specifications described in Object Detection.

    +

    Supported

    +

    Follow the format specifications described in Object Detection.

    +

    Image segmentation

    +

    Supported

    +

    Follow the format specifications described in Image Segmentation.

    +

    Supported

    +

    Follow the format specifications described in Image Segmentation.

    +

    Sound classification

    +

    Supported

    +

    Follow the format specifications described in Sound Classification.

    +

    Supported

    +

    Follow the format specifications described in Sound Classification.

    +

    Speech labeling

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Speech Paragraph Labeling.

    +

    Speech paragraph labeling

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Speech Labeling.

    +

    Text classification

    +

    Supported

    +

    Follow the format specifications described in Text Classification.

    +

    Supported

    +

    Follow the format specifications described in Text Classification.

    +

    Named entity recognition

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Named Entity Recognition.

    +

    Text triplet

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Text Triplet.

    +

    Table

    +

    Supported

    +

    Follow the format specifications described in Table.

    +

    N/A

    +

    Video

    +

    N/A

    +

    Supported

    +

    Follow the format specifications described in Video Labeling.

    +

    Free format

    +

    N/A

    +

    N/A

    +
    + + +

    Importing Data from an OBS Path

    The parameters on the GUI for data import vary according to the dataset type. The following uses a dataset of the image classification type as an example.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. Locate the row that contains the desired dataset and choose More > Import in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Import in the upper right corner.

      +
    3. In the Import dialog box, set Import Mode to OBS path and set OBS path to the path for storing data. Then click OK.

      After the data import is successful, the data is automatically synchronized to the dataset. On the Datasets page, you can click the dataset name to view its details and label the data.

      +
    + +

    Importing Data from a Manifest File

    The parameters on the GUI for data import vary according to the dataset type. The following uses a dataset of the object detection type as an example. Datasets of the table type cannot be imported from the manifest file.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. Locate the row that contains the desired dataset and choose More > Import in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Import in the upper right corner.

      +
    3. In the Import dialog box, set the parameters as follows and click OK.
      • Import Mode: Select Manifest file.
      • Manifest file: Select the OBS path for storing the manifest file.
      • Import by Label: The system automatically obtains the labels of the dataset. You can click Add Label to add a label or click the deletion icon on the right to delete a label. This field is optional. After importing a dataset, you can add or delete labels during data labeling.
      • Import labels: If this parameter is selected, the labels defined in the manifest file are imported to the ModelArts dataset.
      +

      After the data import is successful, the data is automatically synchronized to the dataset. On the Datasets page, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Label in the upper right corner. On the displayed dataset details page, view detailed data and label data.

      +
    + + + + +Parent topic: Importing Data + + + diff --git a/modelarts/umn/temp/importing_a_meta_model_from_a_container_image.tmp b/modelarts/umn/temp/importing_a_meta_model_from_a_container_image.tmp new file mode 100644 index 000000000..398b8821d --- /dev/null +++ b/modelarts/umn/temp/importing_a_meta_model_from_a_container_image.tmp @@ -0,0 +1,87 @@ + + +

    Importing a Meta Model from a Container Image

    +

    For AI engines that are not supported by ModelArts, you can import the model you compile to ModelArts from custom images.

    +

    Prerequisites

    • For details about the specifications and description of custom images, see Importing a Model Using a Custom Image.
    • The configuration must be provided for a model that you have developed and trained. The file must comply with ModelArts specifications. For details about the specifications, see Specifications for Compiling the Model Configuration File. After the compilation is complete, upload the file to the specified OBS directory.
    • The OBS directory you use and ModelArts are in the same region.
    + +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 1. +.. _modelarts_23_0206__en-us_topic_0207629477_table19428112584211: + + + + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        + +
      2. Select the meta model source and set related parameters. Meta Model Source has four options based on the scenario. For details, see Methods of Importing a Model. Set Meta Model Source to Container image. For details about the parameters, see Table 2. +.. _modelarts_23_0206__en-us_topic_0207629477_table104931647171713: + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Container Image Path

        +

        Click to import the model image from the container image. The model is of the Image type, and you do not need to use swr_location in the configuration file to specify the image location.

        +

        For details about how to create a custom image, see Introduction to Custom Images.

        + NOTE:

        The model image you select will be shared with the administrator, so ensure you have the permission to share the image (images shared with other accounts are unsupported). When you deploy a service, ModelArts deploys the image as an inference service. Ensure that your image can be properly started and provide an inference interface.

        + +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +

        Configuration File

        +

        The Import from OBS and Edit online methods are available. The configuration file must comply with certain specifications in Model Package Specifications. If you select Import from OBS, you need to specify the OBS path for storing the configuration file. You can enable View Configuration File to view or edit the configuration file online.

        +

        Parameter Configuration

        +

        Click on the right to view the input and output parameters of the model.

        +
        + +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    + +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    + + + + +Parent topic: Importing a Model + + + diff --git a/modelarts/umn/temp/importing_a_meta_model_from_a_template.tmp b/modelarts/umn/temp/importing_a_meta_model_from_a_template.tmp new file mode 100644 index 000000000..451dee139 --- /dev/null +++ b/modelarts/umn/temp/importing_a_meta_model_from_a_template.tmp @@ -0,0 +1,88 @@ + + +

    Importing a Meta Model from a Template

    +

    Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import models without compiling the config.json configuration file.

    +

    Background

    • Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import the model. For details about the template, see Introduction to Model Templates.
    • For details about the supported templates, see Supported Templates. For details about the input and output modes of each template, see Supported Input and Output Modes.
    • Ensure that you have uploaded the model to OBS based on the model package specifications of the corresponding template.
    • The OBS directory you use and ModelArts are in the same region.
    + +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 1. +.. _modelarts_23_0205__en-us_topic_0207629476_table83985217130: + + + + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        + +
      2. Select the meta model source and set related parameters. Set Meta Model Source based on your application scenario. For details, see Methods of Importing a Model.If Meta Model Source is set to Template, set other parameters by referring to Table 2. +.. _modelarts_23_0205__en-us_topic_0207629476_table104931647171713: + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Model Template

        +

        Select a template from the existing ModelArts template list .

        +

        ModelArts also provides three filter criteria: Type, Engine, and Environment, helping you quickly find the desired template. If the three filter criteria cannot meet your requirements, you can enter keywords to search for the target template. For details about the supported templates, see Supported Templates.

        +

        Model Directory

        +

        OBS path where a model is saved. Select an OBS path for storing the model based on the input requirements of the selected model template.

        + NOTE:

        If a training job is executed for multiple times, different version directories are generated, such as V001 and V002, and the generated models are stored in the model folder in different version directories. When selecting model files, specify the model folder in the corresponding version directory.

        + +

        Input and Output Mode

        +

        If the default input and output mode of the selected template can be overwritten, you can select an input and output mode based on the model function or application scenario. Input and Output Mode is an abstract of the API (apis) in config.json. It describes the interface provided by the model for external inference. An input and output mode describes one or more APIs, and corresponds to a template.

        +

        For details about the supported input and output modes, see Supported Input and Output Modes.

        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +
        + +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    + +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    + + + + +Parent topic: Importing a Model + + + diff --git a/modelarts/umn/temp/importing_a_meta_model_from_a_training_job.tmp b/modelarts/umn/temp/importing_a_meta_model_from_a_training_job.tmp new file mode 100644 index 000000000..ff79b88d5 --- /dev/null +++ b/modelarts/umn/temp/importing_a_meta_model_from_a_training_job.tmp @@ -0,0 +1,89 @@ + + +

    Importing a Meta Model from a Training Job

    +

    You can create a training job on ModelArts and perform training to obtain a satisfactory model. Then import the model to Model Management for unified management. In addition, you can quickly deploy the model as a service.

    +

    Background

    • If a model generated by the ModelArts training job is used, ensure that the training job has been successfully executed and the model has been stored in the corresponding OBS directory.
    • If a model is generated from a training job that uses built-in algorithms, the model can be directly imported to ModelArts without using the inference code and configuration file.
    • If a model is generated from a training job that uses a frequently-used framework or custom image, upload the inference code and configuration file to the storage directory of the model by referring to Model Package Specifications.
    • The OBS directory you use and ModelArts are in the same region.
    • ModelArts of the Arm version does not support model import from training.
    + +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 1. +.. _modelarts_23_0054__en-us_topic_0207629475_table19428112584211: + + + + + + + + + + + + + + + + + + +
        Table 1 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        + +
      2. Select the meta model source and set related parameters. Set Meta Model Source based on your application scenario. For details, see Methods of Importing a Model. If Meta Model Source is set to Training job, set other parameters by referring to Table 2. +.. _modelarts_23_0054__en-us_topic_0207629475_table104931647171713: + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Meta Model Source

        +

        Select Training job, and select a specified training job that has completed training under the current account and its version from the drop-down lists on the right of Training Job and Version respectively.

        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +

        Inference Code

        +

        Display the model inference code URL. You can copy this URL directly.

        +

        Parameter Configuration

        +

        Click on the right to view the input and output parameters of the model.

        +

        Runtime Dependency

        +

        List the dependencies of the selected model on the environment.

        +
        + +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    + +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    + + + + +Parent topic: Importing a Model + + + diff --git a/modelarts/umn/temp/importing_a_meta_model_from_obs.tmp b/modelarts/umn/temp/importing_a_meta_model_from_obs.tmp new file mode 100644 index 000000000..e66149311 --- /dev/null +++ b/modelarts/umn/temp/importing_a_meta_model_from_obs.tmp @@ -0,0 +1,182 @@ + + +

    Importing a Meta Model from OBS

    +

    In scenarios where frequently-used frameworks are used for model development and training, you can import the model to ModelArts for unified management.

    +

    Prerequisites

    • The model has been developed and trained, and the type and version of the AI engine it uses is supported by ModelArts. Common engines supported by ModelArts and their runtime ranges are described as follows: +.. _modelarts_23_0207__en-us_topic_0207629478_table108792813184: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Supported AI engines and their runtime

      Engine

      +

      Runtime

      +

      Precautions

      +

      TensorFlow

      +

      python3.6

      +

      python2.7

      +

      tf1.13-python2.7-gpu

      +

      tf1.13-python2.7-cpu

      +

      tf1.13-python3.6-gpu

      +

      tf1.13-python3.6-cpu

      +

      tf1.13-python3.7-cpu

      +

      tf1.13-python3.7-gpu

      +

      tf2.1-python3.7

      +

      tf1.15-aarch64-c76-d910

      +
      • TensorFlow 1.8.0 is used in python2.7 and python3.6.
      • python3.6, python2.7, and tf2.1-python3.7 indicate that the model can run on both CPUs and GPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs.
      • The default runtime is python2.7.
      +

      MXNet

      +

      python3.7

      +

      python3.6

      +
      • MXNet 1.2.1 is used in python3.6 and python3.7.
      • python3.6 and python3.7 indicate that the model can run on both CPUs and GPUs.
      • The default runtime is python3.6.
      +

      Caffe

      +

      python3.6

      +

      python3.7

      +

      python3.6-gpu

      +

      python3.7-gpu

      +

      python3.6-cpu

      +

      python3.7-cpu

      +
      • Caffe 1.0.0 is used in python3.6, python3.7, python3.6-gpu, python3.7-gpu, python3.6-cpu, and python3.7-cpu.
      • python 3.6 and python3.7 can only be used to run models on CPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs. Use the runtime of python3.6-gpu, python3.7-gpu, python3.6-cpu, or python3.7-cpu.
      • The default runtime is python3.6.
      +

      Spark_MLlib

      +

      python3.6

      +
      • Spark_MLlib 2.3.2 is used in python3.6.
      • python 3.6 can only be used to run models on CPUs.
      +

      Scikit_Learn

      +

      python3.6

      +
      • Scikit_Learn 0.18.1 is used in python3.6.
      • python 3.6 can only be used to run models on CPUs.
      +

      XGBoost

      +

      python3.6

      +
      • XGBoost 0.80 is used in python3.6.
      • python 3.6 can only be used to run models on CPUs.
      +

      PyTorch

      +

      python3.6

      +

      python3.7

      +

      pytorch1.4-python3.7

      +
      • PyTorch 1.0 is used in python3.6 and python3.7.
      • python3.6, python3.7, and pytorch1.4-python3.7 indicate that the model can run on both CPUs and GPUs.
      • The default runtime is python3.6.
      +

      MindSpore

      +

      ms1.1-python3.7-c76

      +

      MindSpore 1.1.1 is used.

      +
      + +
    • The imported model, inference code, and configuration file must comply with the requirements of ModelArts. For details, see Model Package Specifications, Specifications for Compiling the Model Configuration File, and Specifications for Compiling Model Inference Code.
    • The model package that has completed training, inference code, and configuration file have been uploaded to the OBS directory.
    • The OBS directory you use and ModelArts are in the same region.
    • ModelArts of the Arm version does not support model import from OBS.
    + +

    Procedure

    1. Log in to the ModelArts management console, and choose Model Management > Models in the left navigation pane. The Models page is displayed.
    2. Click Import in the upper left corner. The Import page is displayed.
    3. On the Import page, set related parameters.
      1. Set basic information about the model. For details about the parameters, see Table 2. +.. _modelarts_23_0207__en-us_topic_0207629478_table19428112584211: + + + + + + + + + + + + + + + + + + +
        Table 2 Parameters of basic model information

        Parameter

        +

        Description

        +

        Name

        +

        Model name. The value can contain 1 to 64 visible characters, including Chinese characters. Only letters, Chinese characters, digits, hyphens (-), and underscores (_) are allowed.

        +

        Version

        +

        Version of the model to be created. For the first import, the default value is 0.0.1.

        +

        Label

        +

        Model label. A maximum of five model labels are supported.

        +

        Description

        +

        Brief description of the model

        +
        + +
      2. Select the meta model source and set related parameters. Meta Model Source has four options based on the scenario. For details, see Methods of Importing a Model. Set Meta Model Source to OBS. For details about the parameters, see Table 3.

        For the meta model imported from OBS, you need to compile the inference code and configuration file by referring to Model Package Specifications and place the inference code and configuration files in the model folder storing the meta model. If the selected directory does not contain the corresponding inference code and configuration files, the model cannot be imported.

        + +.. _modelarts_23_0207__en-us_topic_0207629478_table1631162916535: + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 3 Parameters of the meta model source

        Parameter

        +

        Description

        +

        Meta Model

        +

        Select the model storage path. This path is the training output path specified in the training job.

        +

        AI Engine

        +

        The corresponding AI engine is automatically associated based on the selected meta model storage path.

        +

        Deployment Type

        +

        After the model is imported, select the service type that the model is deployed. When deploying a service, you can only deploy the service type selected here. For example, if you only select Real-time services here, you can only deploy real-time services after importing the model.

        +

        Configuration File

        +

        By default, the system associates the configuration file stored in OBS. Enable the function to view, edit, or import the model configuration file from OBS.

        +

        Parameter Configuration

        +

        Click on the right to view the input and output parameters of the model.

        +

        Runtime Dependency

        +

        List the dependencies of the selected model on the environment.

        +
        + +
      3. Set the inference specifications and model description.
        • Min. Inference Specs: If your model requires certain resources to complete inference, you can configure this parameter to set the minimum specifications required for normal inference after the model is deployed as a service. In later versions, the system will allocate resources based on the inference specifications in service deployment. You can also modify the specifications as required during deployment. Note that the specifications configured here are valid only when real-time services are deployed and the dedicated resource pool is used.
        • Model Description: To help other model developers better understand and use your models, provide model descriptions. Click Add Model Description and then set the document name and URL. A maximum of three model descriptions are supported.
        +
      4. Check the information and click Next. The model is imported.

        In the model list, you can view the imported model and its version. When the model status changes to Normal, the model is successfully imported. On this page, you can create new versions, quickly deploy models, publish models to the market, and perform other operations.

        +
      +
    + +

    Follow-Up Procedure

    • Model Deployment: On the Models page, click the triangle next to a model name to view all versions of the model. Locate the row that contains the target version, click Deploy in the Operation column, and select the deployment type configured when importing the model from the drop-down list. On the Deploy page, set parameters by referring to Introduction to Model Deployment.
    + + + + +Parent topic: Importing a Model + + + diff --git a/modelarts/umn/temp/importing_a_model.tmp b/modelarts/umn/temp/importing_a_model.tmp new file mode 100644 index 000000000..b798db051 --- /dev/null +++ b/modelarts/umn/temp/importing_a_model.tmp @@ -0,0 +1,21 @@ + + +

    Importing a Model

    + + + + + +Parent topic: Model Management + + + diff --git a/modelarts/umn/temp/importing_a_model_using_a_custom_image.tmp b/modelarts/umn/temp/importing_a_model_using_a_custom_image.tmp new file mode 100644 index 000000000..0787173c9 --- /dev/null +++ b/modelarts/umn/temp/importing_a_model_using_a_custom_image.tmp @@ -0,0 +1,21 @@ + + +

    Importing a Model Using a Custom Image

    +

    After creating and uploading a custom image to SWR, you can use the image to import a model and deploy the model as a service on the ModelArts management console.

    +

    Prerequisites

    + +

    Importing a Model

    Set basic parameters for importing a model according to Importing a Meta Model from a Container Image. When importing a model using a custom image, pay attention to the settings of Meta Model Source and Configuration File.

    +
    • Meta Model Source

      Select Container Image. Click in the edit box of Container Image Path to select an image. The system automatically lists all images uploaded to SWR. Select an image based on the site requirements.

      +
    • Configuration File

      The model configuration file needs to be compiled independently. For details about how to compile the model configuration file, see Specifications for Compiling the Model Configuration File. For details about the configuration file examples of a custom image, see Example of the Custom Image Model Configuration File. After editing the model configuration file based on the ModelArts specifications, upload it to OBS or use Edit online on the Import Model page.

      +
    + +

    Deploying a Service

    After a model is successfully imported using a custom image, that is, the model status is normal, you can deploy the model as a service. On the Models page, click Deploy in the Operation column and select a service type, for example, Real-time Service.

    +

    You can deploy models as real-time or batch services based on the business logic of your custom image. The procedure for deploying a model imported using other methods is the same as that for deploying a model imported using a custom image. For details, see Introduction to Model Deployment.

    + + + + +Parent topic: For Importing Models + + + diff --git a/modelarts/umn/temp/importing_data.tmp b/modelarts/umn/temp/importing_data.tmp new file mode 100644 index 000000000..2bb108651 --- /dev/null +++ b/modelarts/umn/temp/importing_data.tmp @@ -0,0 +1,20 @@ + + +

    Importing Data

    +

    + + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/input_and_output_modes.tmp b/modelarts/umn/temp/input_and_output_modes.tmp new file mode 100644 index 000000000..6b89bd013 --- /dev/null +++ b/modelarts/umn/temp/input_and_output_modes.tmp @@ -0,0 +1,21 @@ + + +

    Input and Output Modes

    + + + + + +Parent topic: Model Templates + + + diff --git a/modelarts/umn/temp/installing_external_libraries_and_kernels_in_notebook_instances.tmp b/modelarts/umn/temp/installing_external_libraries_and_kernels_in_notebook_instances.tmp new file mode 100644 index 000000000..28451a674 --- /dev/null +++ b/modelarts/umn/temp/installing_external_libraries_and_kernels_in_notebook_instances.tmp @@ -0,0 +1,26 @@ + + +

    Installing External Libraries and Kernels in Notebook Instances

    +

    Multiple environments have been installed in ModelArts notebook instances, including TensorFlow. You can use pip install to install external libraries from a Jupyter notebook or terminal to facilitate use.

    +

    Installing an External Library from a Jupyter Notebook

    Assume that you want to install Shapely from a notebook instance. Follow the following instructions:

    +
    1. In the left navigation pane of the ModelArts management console, choose DevEnviron > Notebooks. Open a notebook instance in the displayed notebook instance list.
    2. In the Jupyter Notebook page that is displayed, click New and select the required AI engine from the drop-down list.
    3. In the displayed window, type the following command in the code input bar to install Shapely:

      pip install shapely

      +
    + +

    Installing an External Library from a Terminal

    Assume that you want to install Shapely from the terminal of a notebook instance by using pip. Follow the following instructions:

    +
    1. In the left navigation pane of the ModelArts management console, choose DevEnviron > Notebooks. Open a notebook instance in the displayed notebook instance list.
    2. In the displayed Jupyter dashboard, click New and choose Terminal from the shortcut menu.
    3. For a notebook instance that does not use the AI engine of the Multi-Engine type, enter the following command in the code input bar to install Shapely:

      /opt/conda/envs/python27_tf/bin/pip install Shapely

      +
    4. The Multi-Engine notebook instance can use multiple engines. By referring to the README file in the /home/ma-user/ path, switch to the installation package of the corresponding engine environment and install Shapely. For example, you can install Shapely from TensorFlow-1.13.1 with the following code:
      source /home/ma-user/anaconda3/bin/activate TensorFlow-1.13.1
      +pip install shapely
      +
    +

    When you create a ModelArts training job, a new independent running environment is started, which is not associated with the packages installed in the Notebook environment. Therefore, add os.system('pip install xxx') to the startup code before importing the installation package.

    +

    For example, if you need to use the Shapely dependency in the training job, add the following code to the startup code:

    +
    os.system('pip install Shapely')
    +import Shapely
    + + + + + +Parent topic: Configuring the Jupyter Notebook Environment + + + diff --git a/modelarts/umn/temp/introduction_to_custom_images.tmp b/modelarts/umn/temp/introduction_to_custom_images.tmp new file mode 100644 index 000000000..0f24599b3 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_custom_images.tmp @@ -0,0 +1,17 @@ + + +

    Introduction to Custom Images

    +

    ModelArts provides multiple frequently-used built-in engines. However, when users have special requirements for the deep learning engine and development library, the built-in AI engines cannot meet user requirements. ModelArts provides the custom image function to allow users to customize engines.

    +

    The bottom layer of ModelArts uses the container technology. Custom images refer to that users create container images and run them on ModelArts. The custom image function supports command line parameters and environment variables in free-text format. The custom images are highly flexible and support the job boot requirements of any computing engine.

    +

    The following services are also required for creating a custom image: Software Repository for Container (SWR), OBS, and Elastic Cloud Server (ECS)

    +

    Application Scenarios of Custom Images

    • For Training Models

      If you have developed a model or training script locally and the AI engine you use is not supported by ModelArts, you can create a custom image based on the basic image packages provided by ModelArts and upload the custom image to SWR. Then, you can use the custom image to create a training job on ModelArts and use the resources provided by ModelArts to train models.

      +
    • For Importing Models

      If you use an AI engine that is not supported by ModelArts to develop a model, you can create a custom image, import the image to ModelArts for unified management, and deploy the model as a service.

      +
    + + + + +Parent topic: Custom Images + + + diff --git a/modelarts/umn/temp/introduction_to_data_management.tmp b/modelarts/umn/temp/introduction_to_data_management.tmp new file mode 100644 index 000000000..d9d9570b7 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_data_management.tmp @@ -0,0 +1,87 @@ + + +

    Introduction to Data Management

    +

    In ModelArts, you can import and label data on the Data Management page to prepare for model building. ModelArts uses datasets as the basis for model development or training.

    +

    Dataset Types

    ModelArts supports datasets of images, audio, text, tables, videos, and other types for the following purposes:

    +
    • Images
      • Image classification: identifies a class of objects in images.
      • Object detection: identifies the position and class of each object in an image.
      • Image segmentation: identifies the outline of each object in an image.
      +
    • Audio
      • Sound classification: classifies and identifies different sounds.
      • Speech labeling: labels speech content.
      • Speech paragraph labeling: segments and labels speech content.
      +
    • Text
      • Text classification: assigns labels to text according to its content.
      • Named entity recognition: assigns labels to named entities in text, such as time and locations.
      • Text triplet: assigns labels to entity segments and entity relationships in the text.
      +
    • Tables
      • Table: applies to structured data processing such as tables. The file format can be CSV. You can preview a maximum of 100 records in a table.
      +
    • Videos
      • Video labeling: identifies the position and class of each object in a video. Only the MP4 format is supported.
      +
    • Others
      • Free format: manages data in any format. Labeling is not available for data of the free format type. The free format type is applicable to scenarios where labeling is not required or developers customize labeling. If your dataset needs to contain data in multiple formats or your data format does not meet the requirements of other types of datasets, you can select a dataset in free format.Figure 1 Example of a dataset in free format
        +
      +
    + +

    Dataset Management Process and Functions

    +.. _modelarts_23_0003__en-us_topic_0171496996_table145501032184813: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Function description

    Function

    +

    Description

    +

    Creating a Dataset

    +

    Create a dataset.

    +

    Image Classification

    +

    Object Detection

    +

    Text Classification

    +

    Named Entity Recognition

    +

    Text Triplet

    +

    Sound Classification

    +

    Speech Labeling

    +

    Speech Paragraph Labeling

    +

    Video Labeling

    +

    Label data based on the types of datasets. Data labeling is not supported for datasets in free format or table format.

    +

    Import Operation

    +

    Import the local manifest file or data stored in OBS to the dataset.

    +

    Exporting Data

    +

    Export part of the data as a new dataset or to OBS. Historical tasks can be viewed and managed.

    +

    Modifying a Dataset

    +

    Modify the basic information about a dataset, such as the dataset name, description, and labels.

    +

    Publishing a Dataset

    +

    Publish the labeled dataset as a new version for model building.

    +

    Managing Dataset Versions

    +

    View data version updates.

    +

    Introduction to Team Labeling

    +

    Allow multiple users to label the same dataset and enable the dataset creator to manage labeling tasks in a unified manner. Add a team and its members to participate in labeling datasets.

    +

    Deleting a Dataset

    +

    Delete a dataset to release resources.

    +
    + + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/introduction_to_exeml.tmp b/modelarts/umn/temp/introduction_to_exeml.tmp new file mode 100644 index 000000000..d92872e9c --- /dev/null +++ b/modelarts/umn/temp/introduction_to_exeml.tmp @@ -0,0 +1,22 @@ + + +

    Introduction to ExeML

    +

    ExeML

    ModelArts ExeML is a customized code-free model development tool that helps users start AI application development from scratch with high flexibility. ExeML automates model design, parameter tuning and training, and model compression and deployment with the labeled data. Developers do not need to develop basic and encoding capabilities, but only to upload data and complete model training and deployment as prompted by ExeML.

    +

    Currently, you can use ExeML to quickly create image classification, and object detection models. It can be widely used in industrial, retail, and security fields.

    +
    • Image classification classifies and identifies objects in images.
    • Object detection identifies the position and class of each object in images.
    + +

    ExeML Usage Process

    With ModelArts ExeML, you can develop AI models without coding. You only need to upload data, create a project, label the data, publish training, and deploy the trained model. Up to 100 ExeML projects can be created. For details, see Figure 1.

    +Figure 1 Usage process of ExeML
    + +

    ExeML Projects

    • Image Classification

      An image classification project aims to classify images. You only need to add images and label the images. After the images are labeled, an image classification model can be quickly generated. It can automatically classify offerings, vehicle types, and defective goods. For example, in the quality check scenario, you can upload a product image, label the image as qualified or unqualified, and train and deploy a model to inspect product quality.

      +
    + +
    • Object Detection

      An object detection project aims to identify the class and location of objects in images. You only need to add images and label objects in the images with proper bounding boxes. The labled images will be used as the training set for creating a model. The model can identify multiple objects and count the number of objects in a single image, as well as inspect employees' dress code and perform unattended inspection of article placement.

      +
    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/introduction_to_jupyter_notebook.tmp b/modelarts/umn/temp/introduction_to_jupyter_notebook.tmp new file mode 100644 index 000000000..62a192684 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_jupyter_notebook.tmp @@ -0,0 +1,16 @@ + + +

    Introduction to Jupyter Notebook

    +

    Jupyter Notebook is a web-based application for interactive computing. It can be applied to full-process computing: development, documentation, running code, and presenting results.

    +

    ModelArts integrates the open-source Jupyter Notebook. After creating a notebook instance, you can open the instance for development without the need for installation and configuration.

    +

    Notebook Kernel

    • A notebook kernel is an independent code execution environment. ModelArts Notebook supports multiple kernel types, such as TensorFlow 1.13.1 and PyTorch 1.0. A code execution environment contains the pre-installed and commissioned AI engines and dependencies.
    • When a kernel is selected to open a notebook instance, an IPython process is started at the backend of the notebook instance as the running environment to execute the code and command input on the page.
    • Each kernel type contains an independent Conda running environment to ensure that the AI engines are independent of each other. For example, if the Keras library is updated in a kernel of the TensorFlow type, the kernel of the MindSpore type will not be affected.
    + +

    Differences Between Notebook Kernels and Common Interactive Python Interpreters

    A notebook kernel is an IPython running environment, which can be considered as an enhanced Python shell. Compared with a Python interpreter, a notebook kernel can execute shell scripts and integrate more visualized tools and magic commands. For details, see IPython Documentation.

    + + + + +Parent topic: Using Jupyter Notebook + + + diff --git a/modelarts/umn/temp/introduction_to_jupyterlab_and_common_operations.tmp b/modelarts/umn/temp/introduction_to_jupyterlab_and_common_operations.tmp new file mode 100644 index 000000000..ed5e8ff58 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_jupyterlab_and_common_operations.tmp @@ -0,0 +1,120 @@ + + +

    Introduction to JupyterLab and Common Operations

    +

    JupyterLab is an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals, edit MarkDown text, open interaction modes, and view CSV files and images.

    +

    JupyterLab will be a mainstream development environment for developers. JupyterLab supports more flexible and powerful project operations, but has the same components as Jupyter Notebook.

    +

    ModelArts supports Jupyter Notebook and JupyterLab. You can use different tools to develop code in the same notebook instance.

    +

    Opening JupyterLab

    1. Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page.
    2. Select a notebook instance in the Running state and click Open in the Operation column to access the notebook instance.
    3. On the Jupyter page, click Open JupyterLab in the upper right corner to access the JupyterLab page of the notebook instance.
    4. The Launcher page is automatically displayed. You can use all open-source functions. For details, see JupyterLab Documentation.Figure 1 JupyterLab homepage
      +
    + +

    Creating and Opening a Notebook Instance

    On the JupyterLab homepage, click an applicable AI engine in the Notebook area to create a notebook file with the selected framework.

    +

    The AI framework supported by each notebook instance varies according to the working environment. The following figure is only an example. Select an AI framework based on the site requirements. For details about all framework versions and Python versions supported by ModelArts, see Supported AI Engines.

    +Figure 2 Selecting an AI engine and creating a notebook instance
    +

    The created notebook file is displayed in the navigation pane on the left.

    +Figure 3 Creating a notebook file
    + +

    Creating a Notebook File and Opening the Console

    A console is essentially a Python terminal, which is similar to the native IDE of Python, displaying the output after a statement is entered.

    +

    On the JupyterLab homepage, click an applicable AI engine in the Console area to create a notebook file with the selected framework.

    +

    The AI framework supported by each notebook instance varies according to the working environment. The following figure is only an example. Select an AI framework based on the site requirements.

    +Figure 4 Selecting an AI engine and creating a console
    +

    After the file is created, the console page is displayed.

    +Figure 5 Creating a notebook file (console)
    + +

    Uploading a File

    On the JupyterLab page, you can click Upload File in the upper left corner and select a local file to upload.

    +

    The size of the file to be uploaded using this method is limited. If the file size exceeds the limit, use other methods to upload the file. For details, see Uploading Data to JupyterLab.

    +Figure 6 Uploading a file
    + +

    Editing a File

    JupyterLab allows you to open multiple notebook instances or files (such as HTML, TXT, and Markdown files) in the same window and displays them on different tab pages.

    +

    Using JupyterLab, you can customize the display of multiple files. In the file display area on the right, you can drag a file to adjust its position. Multiple files can be concurrently displayed.

    +Figure 7 Customized display of multiple files
    +

    When writing code in a notebook instance, you can create multiple views of a file to synchronously edit the file and view the execution result in real time.

    +

    To open multiple views, open the file and choose File > New View for Notebook.

    +Figure 8 Multiple views of a file
    + +

    Downloading a File to a Local Computer

    Files created in JupyterLab can be directly downloaded to a local computer. The size of the file to be downloaded using this method is limited. If the file size exceeds the limit, use other methods to download the file. For details, see Downloading a File from JupyterLab.

    +

    In the JupyterLab file list, right-click the file to be downloaded and choose Download from the shortcut menu. The file is downloaded to the directory set for your browser.

    +Figure 9 Downloading a file
    + +

    Common Icons and Plug-ins of JupyterLab

    Figure 10 Common icons and plug-ins of JupyterLab
    + +.. _modelarts_23_0209__en-us_topic_0208766071_table17325391430: + + + + + + + + + + + + + + + + + + +
    Table 1 Icon description

    Icon

    +

    Description

    +

    +

    Opens the Launcher page. Then you can quickly create notebook instances, consoles, or other files.

    +

    +

    Creates a folder.

    +

    +

    Uploads a file. For details, see Uploading a File.

    +

    +

    Updates a folder.

    +
    + + +.. _modelarts_23_0209__en-us_topic_0208766071_table8147032134415: + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Common plug-ins in the plug-in area

    Plug-in

    +

    Description

    +

    +

    Lists files. You can click here to display the list of all files in the notebook instance.

    +

    +

    Lists ModelArts examples. You can click any example in the list to view its code and version mapping.

    +

    +

    Displays the terminals and kernels that are running in the current instance.

    +

    +

    Quick start command.

    +

    +

    Displays the tab page listing the files that are being opened.

    +

    +

    Document organization.

    +
    + + + + + +Parent topic: Using JupyterLab + + + diff --git a/modelarts/umn/temp/introduction_to_model_deployment.tmp b/modelarts/umn/temp/introduction_to_model_deployment.tmp new file mode 100644 index 000000000..a6df02325 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_model_deployment.tmp @@ -0,0 +1,14 @@ + + +

    Introduction to Model Deployment

    +After a training job is complete and a model is generated, you can deploy the model on the Service Deployment page. You can also deploy the model imported from OBS. ModelArts supports the following deployment types:
    • Real-Time Services

      Deploy a model as a web service to provide real-time test UI and monitoring capabilities.

      +
    • Batch Services

      A batch service can perform inference on batch data. After data processing is complete, the batch service automatically stops.

      +
    + + + + +Parent topic: Model Deployment + + + diff --git a/modelarts/umn/temp/introduction_to_model_management.tmp b/modelarts/umn/temp/introduction_to_model_management.tmp new file mode 100644 index 000000000..b773fc9d4 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_model_management.tmp @@ -0,0 +1,45 @@ + + +

    Introduction to Model Management

    +

    AI model development and optimization require frequent iterations and debugging. Changes in datasets, training code, or parameters may affect the quality of models. If the metadata of the development process cannot be managed in a unified manner, the optimal model may fail to be reproduced.

    +

    ModelArts model management allows you to import models generated with all training versions to manage all iterated and debugged models in a unified manner.

    +

    Usage Restrictions

    • In an automatic learning project, after a model is deployed, the model is automatically uploaded to the model management list. However, models generated by automatic learning cannot be downloaded and can be used only for deployment and rollout.
    + +

    Methods of Importing a Model

    • Importing from Trained Models: You can create a training job on ModelArts and complete model training. After obtaining a satisfactory model, import the model to the Model Management page for model deployment.
    • Importing from a Template: Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import models without compiling the config.json configuration file.
    • Importing from a Container Image: For AI engines that are not supported by ModelArts, you can import the model you compile to ModelArts using custom images.
    • Importing from OBS: If you use a frequently-used framework to develop and train a model locally, you can import the model to ModelArts for model deployment.
    + +

    Model Management Functions

    +.. _modelarts_23_0052__en-us_topic_0171858287_table129381852171817: + + + + + + + + + + + + + + + +
    Table 1 Model management functions

    Supported Function

    +

    Description

    +

    Importing a Model

    +

    Import the trained models to ModelArts for unified management. You can import models using four methods. The following provides the operation guide for each method.

    + +

    Managing Model Versions

    +

    To facilitate source tracing and repeated model tuning, ModelArts provides the model version management function. You can manage models based on versions.

    +

    Compressing and Converting Models

    +

    To obtain higher and more economical computing power, you can deploy the models created on ModelArts or a local PC on the Ascend chip, Arm, or GPU. In this case, you need to compress or convert the models to the required formats before deploying them.

    +
    + + + + + +Parent topic: Model Management + + + diff --git a/modelarts/umn/temp/introduction_to_model_templates.tmp b/modelarts/umn/temp/introduction_to_model_templates.tmp new file mode 100644 index 000000000..62402721f --- /dev/null +++ b/modelarts/umn/temp/introduction_to_model_templates.tmp @@ -0,0 +1,22 @@ + + +

    Introduction to Model Templates

    +

    Because the configurations of models with the same functions are similar, ModelArts integrates the configurations of such models into a common template. By using this template, you can easily and quickly import models without compiling the config.json configuration file. In simple terms, a template integrates AI engine and model configurations. Each template corresponds to a specific AI engine and inference mode. With the templates, you can quickly import models to ModelArts.

    +

    Using a Template

    The following uses the template described in TensorFlow-py36 General Template as an example. Upload the TensorFlow model package to OBS before using the template. Store the model files in the model directory. When creating a model using this template, you need to select the model directory.

    +
    1. On the Import Model page, set Meta Model Source to Template.
    2. In the Template area, select TensorFlow-py36 general template.

      ModelArts also provides three filter criteria: Type, Engine, and Environment, helping you quickly find the desired template. If the three filter criteria cannot meet your requirements, you can enter keywords to search for the target template.

      +
    3. For Model Folder, select the model directory where the model files reside. For details, see Template Description.

      If a training job is executed for multiple times, different version directories are generated, such as V001 and V002, and the generated models are stored in the model folder in different version directories. When selecting model files, specify the model folder in the corresponding version directory.

      + +
    4. If the default input and output mode of the selected template can be overwritten, you can select an input and output mode based on the model function or application scenario. Input and Output Mode is an abstract of the API in config.json. It describes the interface provided by the model for external inference. An input and output mode describes one or more APIs, and corresponds to a template.

      For details about the supported input and output modes, see Input and Output Modes.

      +
    + +

    Supported Templates

    + +

    Supported Input and Output Modes

    + + + + +Parent topic: Model Templates + + + diff --git a/modelarts/umn/temp/introduction_to_model_training.tmp b/modelarts/umn/temp/introduction_to_model_training.tmp new file mode 100644 index 000000000..58a6a780e --- /dev/null +++ b/modelarts/umn/temp/introduction_to_model_training.tmp @@ -0,0 +1,49 @@ + + +

    Introduction to Model Training

    +

    ModelArts provides model training for you to view the training effect, based on which you can adjust your model parameters. You can select resource pools (CPU or GPU) with different instance flavors for model training. In addition to the models developed by users, ModelArts also provides built-in algorithms. You can directly adjust parameters of the built-in algorithms, instead of developing a model by yourself, to obtain a satisfactory model.

    +

    Description of the Model Training Function

    +.. _modelarts_23_0044__en-us_topic_0129633060_table138422031155511: + + + + + + + + + + + + + + + + + + + +
    Table 1 Function description

    Function

    +

    Description

    +

    Reference

    +

    Training job management

    +

    You can create training jobs, manage training job versions, and view details of training jobs, and evaluation details.

    +

    Creating a Training Job

    +

    Managing Training Job Versions

    +

    Viewing Job Details

    +

    Job parameter management

    +

    You can save the parameter settings of a training job (including the data source, algorithm source, running parameters, resource pool parameters, and more) as a job parameter, which can be directly used when you create a training job, eliminating the need to set parameters one by one. As such, the configuration efficiency can be greatly improved.

    +

    Managing Job Parameters

    +

    Model training visualization

    +

    TensorBoard and MindInsight effectively display the computational graph of a model in the running process, the trend of all metrics in time, and the data used in the training.

    +

    Managing Visualization Jobs

    +
    + + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/introduction_to_notebook.tmp b/modelarts/umn/temp/introduction_to_notebook.tmp new file mode 100644 index 000000000..7d879e72c --- /dev/null +++ b/modelarts/umn/temp/introduction_to_notebook.tmp @@ -0,0 +1,83 @@ + + +

    Introduction to Notebook

    +

    ModelArts integrates the open-source Jupyter Notebook and JupyterLab to provide you with online interactive development and debugging environments. You can use the Notebook on the ModelArts management console to compile and debug code and train models based on the code, without concerning installation and configurations.

    +
    • Jupyter Notebook is an interactive notebook. For details about how to perform operations on Jupyter Notebook, see Jupyter Notebook Documentation.
    • JupyterLab is an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals, edit MarkDown text, open interaction modes, and view CSV files and images. For details about how to perform operations on JupyterLab, see JupyterLab Documentation.
    +

    Supported AI Engines

    Each development environment supports multiple AI engines that run independently. All supported AI engines can be used in the same notebook instance, and these engines can be switched quickly and conveniently.

    +
    • Each ModelArts notebook instance can use all supported engines.
    + + +.. _modelarts_23_0033__en-us_topic_0162690357_table13949522712: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 AI engines

    Work Environment

    +

    Built-in AI Engine and Version

    +

    Supported Chip

    +

    Multi-Engine 1.0 (Python 3, Recommended)

    +

    MXNet-1.2.1

    +

    GPU

    +

    PySpark-2.3.2

    +

    CPU

    +

    Pytorch-1.0.0

    +

    GPU

    +

    TensorFlow-1.13.1

    +

    GPU

    +

    XGBoost-Sklearn

    +

    CPU

    +

    Multi-Engine 2.0 (Python3)

    +

    Pytorch-1.4.0

    +

    GPU

    +

    TensorFlow-2.1.0

    +

    CPU/GPU

    +

    Ascend-Powered-Engine 1.0 (Python3)

    +

    MindSpore-1.1.1

    +

    Ascend 910

    +

    TensorFlow-1.15.0

    +

    Ascend 910

    +
    + + +

    Constraints

    • For security purposes, the root permission is not granted to the notebook instances integrated in ModelArts. You can use the non-privileged user jovyan or ma-user (using Multi-Engine) to perform operations. Therefore, you cannot use apt-get to install the OS software.
    • Notebook instances support only standalone training under the current AI engine framework. If you need to use distributed training, use ModelArts training jobs and specify multiple nodes in the resource pool.
    • ModelArts DevEnviron does not support apt-get. You can use a custom image to train a model.
    • Notebook instances do not support GUI-related libraries, such as PyQt.
    • Notebook instances created using Ascend specifications cannot be attached to EVS disks.
    • Notebook instances cannot be connected to DWS and database services.
    • Notebook instances cannot directly read files in OBS. You need to download the files to the local host. To access data in OBS, use Moxing or SDK for interaction.
    • DevEnviron does not support TensorBoard. Use the visualization job function under Training Jobs.
    • After a notebook instance is created, you cannot modify its specifications. For example, you cannot change the CPU specifications to GPU specifications or change the work environment. Therefore, select the specifications required by the service when creating a notebook instance, or save your code and data to OBS in a timely manner during development so that you can quickly upload the code and data to a new notebook instance.
    • If the code output is still displayed after you close the page and open it again, use Terminal.
    + + + + +Parent topic: DevEnviron (Notebook) + + + diff --git a/modelarts/umn/temp/introduction_to_team_labeling.tmp b/modelarts/umn/temp/introduction_to_team_labeling.tmp new file mode 100644 index 000000000..89dc1b8a3 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_team_labeling.tmp @@ -0,0 +1,21 @@ + + +

    Introduction to Team Labeling

    +

    Generally, a small data labeling task can be completed by an individual. However, team work is required to label a large dataset. ModelArts provides the team labeling function. A labeling team can be formed to manage labeling for the same dataset.

    +

    The team labeling function supports only datasets for image classification, object detection, text classification, named entity recognition, text triplet, and speech paragraph labeling.

    + +

    How to Enable Team Labeling

    • When creating a dataset, enable Team Labeling and select a team or task manager.Figure 1 Enabling during dataset creation
      +
    • If team labeling is not enabled for a dataset that has been created, create a team labeling task to enable team labeling. For details about how to create a team labeling task, see Creating Team Labeling Tasks.Figure 2 Creating a team labeling task in a dataset list
      +Figure 3 Creating a team labeling task
      +Figure 4 Creating a team labeling task on the dataset details page
      +
    + +

    Operations Related to Team Labeling

    + + + + +Parent topic: Team Labeling + + + diff --git a/modelarts/umn/temp/introduction_to_the_ai_development_lifecycle.tmp b/modelarts/umn/temp/introduction_to_the_ai_development_lifecycle.tmp new file mode 100644 index 000000000..9f409c565 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_the_ai_development_lifecycle.tmp @@ -0,0 +1,26 @@ + + +

    Introduction to the AI Development Lifecycle

    +

    What Is AI

    Artificial intelligence (AI) is a technology capable of simulating human cognition through machines. The core capability of AI is to make a judgment or prediction based on a given input.

    + +

    What Is the Purpose of AI Development

    AI development aims to centrally process and extract information from volumes of data to summarize internal patterns of the study objects.

    +

    Massive volumes of collected data are computed, analyzed, summarized, and organized by using appropriate statistics, machine learning, and deep learning methods to maximize data value.

    + +

    Basic Process of AI Development

    The basic process of AI development includes the following steps: determining an objective, preparing data, and training, evaluating, and deploying a model.

    +Figure 1 AI development process
    +
    1. Determine an objective.

      Before starting AI development, determine what to analyze. What problems do you want to solve? What is the business goal? Sort out the AI development framework and ideas based on the business understanding. For example, image classification and object detection. Different projects have different requirements for data and AI development methods.

      +

    2. Prepare data.

      Data preparation refers to data collection and preprocessing.

      +

      Data preparation is the basis of AI development. When you collect and integrate related data based on the determined objective, the most important thing is to ensure the authenticity and reliability of the obtained data. Typically, you cannot collect all the data at the same time. In the data labeling phase, you may find that some data sources are missing and then you may need to repeatedly adjust and optimize the data.

      +

    3. Train a model.

      Modeling involves analyzing the prepared data to find the causality, internal relationships, and regular patterns, thereby providing references for commercial decision making. After model training, usually one or more machine learning or deep learning models are generated. These models can be applied to new data to obtain predictions and evaluation results.

      +

    4. Evaluate the model.

      A model generated by training needs to be evaluated. Typically, you cannot obtain a satisfactory model after the first evaluation, and may need to repeatedly adjust algorithm parameters and data to further optimize the model.

      +

      Some common metrics, such as the accuracy, recall, and area under the curve (AUC), help you effectively evaluate and obtain a satisfactory model.

      +

    5. Deploy the model.

      Model development and training are based on existing data (which may be test data). After a satisfactory model is obtained, the model needs to be formally applied to actual data or newly generated data for prediction, evaluation, and visualization. The findings can then be reported to decision makers in an intuitive way, helping them develop the right business strategies.

      +

    + + + + +Parent topic: Basic Knowledge + + + diff --git a/modelarts/umn/temp/introduction_to_training_jobs.tmp b/modelarts/umn/temp/introduction_to_training_jobs.tmp new file mode 100644 index 000000000..cb12b9879 --- /dev/null +++ b/modelarts/umn/temp/introduction_to_training_jobs.tmp @@ -0,0 +1,15 @@ + + +

    Introduction to Training Jobs

    +

    ModelArts supports multiple types of training jobs during the entire AI development process. Select a creation mode based on the algorithm source.

    +

    Algorithm Sources of Training Jobs

    + + + + +Parent topic: Creating a Training Job + + + diff --git a/modelarts/umn/temp/labeling_data.tmp b/modelarts/umn/temp/labeling_data.tmp new file mode 100644 index 000000000..029051196 --- /dev/null +++ b/modelarts/umn/temp/labeling_data.tmp @@ -0,0 +1,32 @@ + + +

    Labeling Data

    +

    Before data labeling, consider how to design labels. The labels must correspond to the distinct characteristics of the detected images and are easy to identify (the detected object in an image is highly distinguished from the background). Each label specifies the expected recognition result of the detected images. After the label design is complete, prepare images based on the designed labels. It is recommended that the number of all images to be detected be greater than 100. If the labels of some images are similar, prepare more images.

    +
    • During labeling, the variance of a class should be as small as possible. That is, the labeled objects of the same class should be as similar as possible. The labeled objects of different classes should be as different as possible.
    • The contrast between the labeled objects and the image background should be as stark as possible.
    • In object detection labeling, a target object must be entirely contained within a labeling box. If there are multiple objects in an image, do not relabel or miss any objects.
    +

    Labeling Images

    1. On the Label Data tab page, click the Unlabeled tab. All unlabeled images are displayed. Click an image to go to the labeling page.
    2. Left-click and drag the mouse to select the area where the target object is located. In the dialog box that is displayed, select the label color, enter the label name, and press Enter. After the labeling is complete, the status of the images changes to Labeled.More descriptions of data labeling are as follows:
      • You can click the arrow keys in the upper and lower parts of the image, or press the left and right arrow keys on the keyboard to select another image. Then, repeat the preceding operations to label the image. If an image contains more than one object, you can label all the objects.
      • You can add multiple labels with different colors for an object detection ExeML project for easy identification. After selecting an object, select a new color and enter a new label name in the dialog box that is displayed to add a new label.
      • In an ExeML project, object detection supports only rectangular labeling boxes. In the Data Management function, more types of labeling boxes are supported for object detection datasets.
      • In the Label Data window, you can scroll the mouse to zoom in or zoom out on the image to quickly locate the object.
      + +

      +
    3. After all images in the image directory are labeled, click ExeML in the upper left corner. In the dialog box that is displayed, click OK to save the labeling information. The Label Data page is displayed. On the Labeled tab page, you can view the labeled images or view the label names and quantity in the right pane.
    + +

    Synchronizing or Adding Images

    On the ExeML page, click the project name. The Label Data tab page is displayed. When creating a project, you can add images from a local PC or synchronize image data from OBS.
    • Add: You can quickly add images on a local PC to ModelArts and synchronize the images to the OBS path specified during project creation. Click Add. In the dialog box that is displayed, click Add Image and add images. The total size of all images uploaded in one attempt cannot exceed 8 MB. The size of a single image cannot exceed 5 MB.
    • Synchronize Data Source: You can upload images to the OBS directory specified during project creation and click Synchronize Data Source to quickly add the images in the OBS directory to ModelArts.
    • Delete: You can delete images one by one, or select Select Images on Current Page to delete all images on the page.

      The deleted images cannot be recovered. Exercise caution when performing this operation.

      + +
    + + +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on images

      On the dataset details page, click the Labeled tab, click the image to be modified. The labeling page is displayed. Modify the image information in the label information area on the right.

      +
      • Modifying a label: In the Labeling area, click the edit icon, enter the correct label name in the text box, and click the check mark to complete the modification. The label color cannot be modified.
      • Deleting a label: In the Labeling area, click the deletion icon to delete a label from the image.

        After the label is deleted, click the project name in the upper left corner of the page to exit the labeling page. The image will be returned to the Unlabeled tab page.

        +

        +
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Modifying a label: Click the edit icon in the Operation column. In the dialog box that is displayed, enter the new label name and click OK. After the modification, the images that have been added with the label use the new label name.
      • Deleting a label: Click the deletion icon in the Operation column. In the displayed dialog box, select the object to be deleted as prompted and click OK.
      +
    + + + + +Parent topic: Object Detection + + + diff --git a/modelarts/umn/temp/managing_dataset_versions.tmp b/modelarts/umn/temp/managing_dataset_versions.tmp new file mode 100644 index 000000000..2dd09e62c --- /dev/null +++ b/modelarts/umn/temp/managing_dataset_versions.tmp @@ -0,0 +1,23 @@ + + +

    Managing Dataset Versions

    +

    After labeling data, you can publish the dataset to multiple versions for management. For the published versions, you can view the dataset version updates, set the current version, and delete versions. For details about dataset versions, see About Dataset Versions.

    +

    For details about how to publish a new version, see Publishing a Dataset.

    +

    Viewing Dataset Version Updates

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Manage Version in the Operation column. The Manage Version tab page is displayed.

      You can view basic information about the dataset, and view the versions and publish time on the left.

      +
    + +

    Setting to Current Version

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Manage Version in the Operation column. The Manage Version tab page is displayed.
    3. On the Manage Version tab page, select the desired dataset version, and click Set to Current Version in the basic information area on the right. After the setting is complete, Current version is displayed to the right of the version name.

      Only the version in Normal status can be set to the current version.

      + +
    + +

    Deleting a Dataset Version

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Manage Version in the Operation column. The Manage Version tab page is displayed.
    3. Locate the row that contains the target version, and click Delete in the Operation column. In the dialog box that is displayed, click OK.

      Deleting a dataset version does not remove the original data. Data and its labeling information are still stored in the OBS directory. However, if it is deleted, you cannot manage the dataset versions on the ModelArts management console. Exercise caution when performing this operation.

      + +
    + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/managing_job_parameters.tmp b/modelarts/umn/temp/managing_job_parameters.tmp new file mode 100644 index 000000000..e53d9f9a8 --- /dev/null +++ b/modelarts/umn/temp/managing_job_parameters.tmp @@ -0,0 +1,23 @@ + + +

    Managing Job Parameters

    +

    You can store the parameter settings in ModelArts during job creation so that you can use the stored settings to create follow-up training jobs, which makes job creation more efficient.

    +

    During the operations of creating, editing, and viewing training jobs, the saved job parameter settings are displayed on the Job Parameter Mgmt page.

    +

    Using a Job Parameter Configuration

    • Method 1: Using a job parameter configuration on the Job Parameter Mgmt page

      Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. On the displayed page, click the Job Parameter Mgmt tab. In the job parameter list, click Creating Training Job for a job parameter configuration to create a training job based on the job parameter configuration.

      +
    • Method 2: Using a job parameter configuration on the Creating Training Job page

      On the Creating Training Job page, click One-Click Configuration. In the displayed dialog box, select the required job parameter configuration to quickly create an available training job.

      +
    + +

    Editing a Job Parameter Configuration

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. On the displayed page, click the Job Parameter Mgmt tab.
    2. In the job parameter configuration list, click Edit in the Operation column in a row.
    3. On the displayed page, modify related parameters by referring to "Creating a Training Job" and click OK to save the job parameter settings.

      In the existing job parameter settings, the job name cannot be changed.

      +
    + +

    Deleting a Training Job Parameter Configuration

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. On the displayed page, click the Job Parameter Mgmt tab.
    2. In the job parameter list, click Delete in the Operation column in a row.
    3. In the displayed dialog box, click OK.

      Deleted job parameter configurations cannot be recovered. Therefore, exercise caution when performing this operation.

      + +
    + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/managing_model_versions.tmp b/modelarts/umn/temp/managing_model_versions.tmp new file mode 100644 index 000000000..a47768089 --- /dev/null +++ b/modelarts/umn/temp/managing_model_versions.tmp @@ -0,0 +1,19 @@ + + +

    Managing Model Versions

    +

    To facilitate source tracing and repeated model tuning, ModelArts provides the model version management function. You can manage models based on versions.

    +

    Prerequisites

    You have imported a model to ModelArts,

    + +

    Creating a New Version

    On the Model Management > Models page, click Create New Version in the Operation column. The Create New Version page is displayed. Set related parameters by following the instructions in Importing Models and click Next.

    + +

    Deleting a Version

    On the Model Management > Models page, click the triangle on the left of the model name to expand a model version list. In the model version list, click Delete in the Operation column to delete the corresponding version.

    +

    A deleted version cannot be recovered. Exercise caution when performing this operation.

    + + + + + +Parent topic: Model Management + + + diff --git a/modelarts/umn/temp/managing_notebook_instances.tmp b/modelarts/umn/temp/managing_notebook_instances.tmp new file mode 100644 index 000000000..b1cc5d4c7 --- /dev/null +++ b/modelarts/umn/temp/managing_notebook_instances.tmp @@ -0,0 +1,22 @@ + + +

    Managing Notebook Instances

    +

    + + + + + +Parent topic: DevEnviron (Notebook) + + + diff --git a/modelarts/umn/temp/managing_team_labeling_tasks.tmp b/modelarts/umn/temp/managing_team_labeling_tasks.tmp new file mode 100644 index 000000000..51a7c49c1 --- /dev/null +++ b/modelarts/umn/temp/managing_team_labeling_tasks.tmp @@ -0,0 +1,64 @@ + + +

    Managing Team Labeling Tasks

    +

    For datasets with team labeling enabled, you can create team labeling tasks and assign the labeling tasks to different teams so that team members can complete the labeling tasks together. During data labeling, members can initiate acceptance, continue acceptance, and view acceptance reports.

    +

    Creating Team Labeling Tasks

    If you enable team labeling when creating a dataset and assign a team to label the dataset, the system creates a labeling task based on the team by default. After the dataset is created, you can view the labeling task on the Labeling Progress tab page of the dataset.

    +

    You can also create a team marking task and assign it to different members in the same team or to other labeling teams.

    +
    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. A dataset list is displayed.
    2. In the dataset list, select a dataset that supports team labeling, and click the dataset name to go to the Dashboard tab page of the dataset.
    3. Click the Labeling Progress tab to view existing labeling tasks of the dataset. Click Create Team Labeling Task in the upper right corner to create a task.
    4. In the displayed Create Team Labeling Task dialog box, set related parameters and click OK.
      • Name: Enter a task name.
      • Type: Select a task type, Team or Task Manager.
      • Select Team: If Type is set to Team, you need to select a team and members for labeling. The Select Team drop-down list lists the labeling teams and members created by the current account. For details about team management, see Introduction to Team Labeling.
      • Select Task Manager: If Type is set to Task Manager, you need to select one Team Manager member from all teams as the task manager.
      • Label Set: All existing labels and label attributes of the dataset are displayed. You can also select Automatically synchronize new images to the team labeling task or Automatically load the intelligent labeling results to images that need to be labeled under Label Set.

        The process of loading auto labeling results to a team labeling task is as follows:

        +
        • If you set Type to Team, you are required to create a team labeling task before executing the task.
        • If you set Type to Task Manager, you are required to log in to the data labeling console and assign a labeling task before executing the task.
        +

        After the task is created, you can view the new task on the Labeling Progress tab page.

        +
      +
    + +

    Labeling (Team Member)

    After a labeling task is created, the team member to which the task is assigned receives a labeling notification email.

    +

    In the email details, click the labeling task link and use your email address and initial password to log in to the labeling platform. After login, change the password. After logging in to the labeling platform, you can view the assigned labeling task and click the task name to go to the labeling page. The labeling method varies depending on the dataset type. For details, see the following:

    + +

    On the labeling platform, each member can view the images that are not labeled, to be corrected, rejected, to be reviewed, approved, and accepted. Pay attention to the images rejected by the administrator and the images to be corrected.

    +

    If the Reviewer role is assigned for a team labeling task, the labeling result needs to be reviewed. After the labeling result is reviewed, it is submitted to the administrator for acceptance.

    +Figure 1 Labeling platform
    + +

    Task Acceptance (Administrator)

    • Initiating acceptance

      After team members complete data labeling, the dataset creator can initiate acceptance to check labeling results. The acceptance can be initiated only when a labeling member has labeled data. Otherwise, the acceptance initiation button is unavailable.

      +
      1. On the Labeling Progress tab page, click Initiate Acceptance to accept tasks.
      2. In the displayed dialog box, set Sample Policy to By percentage or By quantity. Click OK to start the acceptance.

        By percentage: Sampling is performed based on a percentage for acceptance.

        +

        By quantity: Sampling is performed based on quantity for acceptance.

        +
      3. After the acceptance is initiated, an acceptance report is displayed on the console in real time. In the Acceptance Result area on the right, select Pass or Reject.

        If you select Pass, set Rating to A, B, C, or D. Option A indicates the highest score. If you select Reject, enter your rejection reasons in the text box.

        +
      +
    • Continuing acceptance

      You can continue accepting tasks whose acceptance is not completed. For tasks for which an acceptance process is not initiated, the Continue Acceptance button is unavailable.

      +

      On the Labeling Progress tab page, click Continue Acceptance to continue accepting tasks. The Real-Time Acceptance Report page is displayed. You can continue to accept the images that are not accepted.

      +
    • Finishing acceptance

      In the acceptance completion window, you can view dataset acceptance details, such as the number of sample files, set the following parameters, and perform acceptance. The labeling information is synchronized to the Labeled tab page of the dataset only after the acceptance is complete.

      +

      Once the labeled data is accepted, team members cannot modify the labeling information. Only the dataset creator can modify the labeling information.

      + +.. _modelarts_23_0210__en-us_topic_0209053802_table1372918217370: + + + + + + + + + + + + +
      Table 1 Parameters for finishing acceptance

      Parameter

      +

      Description

      +

      Modifying Labeled Data

      +
      • Not overwrite: For the same data, do not overwrite the existing data with the labeling result of the current team.
      • Overlays: For the same data, overwrite the existing data with the labeling result of the current team. Overwritten data cannot be recovered. Exercise caution when performing this operation.
      +

      Acceptance Scope

      +
      • All: all data that has been labeled by the current team, including Accepted, Pending Acceptance, and Rejected data. It refers to all sample files in the dataset.
      • All rejects: rejects all data that has been labeled by the current team. That is, all labeled data is rejected to the labeling personnel.

        +
      • Accepted and pending acceptance: accepts the data that passes the acceptance or is in the Pending Acceptance state in the sample files and rejects the data that fails the acceptance to the labeling personnel.
      • Accepted: accepts the data that has passed the acceptance in the sample files and rejects the data that is in the Pending Acceptance state or fails the acceptance to the labeling personnel.
      +
      + +
    + +

    Viewing an Acceptance Report

    You can view the acceptance report of an ongoing or finished labeling task. On the Labeling Progress tab page, click Acceptance Report. In the displayed Acceptance Report dialog box, view report details.

    + +

    Deleting a Labeling Task

    On the Labeling Progress tab page, click Delete in the row where a labeling task to be deleted. After a task is deleted, the labeling details that are not accepted will be lost. Exercise caution when performing this operation. However, the original data in the dataset and the labeled data that has been accepted are still stored in the corresponding OBS bucket.

    + + + + +Parent topic: Team Labeling + + + diff --git a/modelarts/umn/temp/managing_training_job_versions.tmp b/modelarts/umn/temp/managing_training_job_versions.tmp new file mode 100644 index 000000000..cb98d0f40 --- /dev/null +++ b/modelarts/umn/temp/managing_training_job_versions.tmp @@ -0,0 +1,64 @@ + + +

    Managing Training Job Versions

    +

    During model building, you may need to frequently tune the data, training parameters, or the model based on the training results to obtain a satisfactory model. ModelArts allows you to manage training job versions to effectively train your model after the tuning. Specifically, ModelArts generates a version each time when a training is performed. You can quickly get the difference between different versions.

    +

    Viewing Training Job Versions

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. By default, the system switches to the Training Jobs page.
    2. In the training job list, click the name of a training job.

      By default, the basic information about the latest version is displayed. If there are multiple available versions, click Select Version in the upper left corner to view a certain version. Click the downward arrow to the left of the version to display job details.

      +
    + +

    Comparing Versions of a Training Job

    On the Version Manager page, click View Comparison Result to view the comparison of all or selected versions of the current training job. The comparison result involves the following information: Running Parameter, F1 Score, Recall, Precision, and Accuracy.

    +

    The F1 Score, Recall, Precision, and Accuracy parameters of a training job are displayed only when the job is created using a built-in algorithm. For training jobs created using frequently-used frameworks or custom images, define the output of these parameters in your training script code. These parameters cannot be viewed on the GUI.

    + + +

    Shortcut Operations Based on Training Job Versions

    On the Version Manager page, ModelArts provides certain shortcut operation buttons for you to quickly enter the subsequent steps after model training is complete.

    + +.. _modelarts_23_0047__en-us_topic_0171858285_table545322619177: + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Shortcut operation button description

    Shortcut Operation Button

    +

    Description

    +

    Creating Visualization Job

    +

    Creates a visualization job (TensorBoard) for the current training version. For details, see Managing Visualization Jobs.

    + NOTE:

    TensorBoard supports only the TensorFlow and MXNet engines. Therefore, you can create the TensorBoard jobs only when the AI engine is TensorFlow or MXNet.

    + +

    Create Model

    +

    Creates a model for the current training version. For details about how to create a model, see Importing a Model. You can only create models for training jobs in the Running status.

    +

    Modify

    +

    If the training result of the current version does not meet service requirements or the training job fails, click Modify to switch to the page where you can modify the job parameter settings. For details about the parameters of the training job, see Creating a Training Job. After modifying the job parameter settings as required, click OK to start the training job of a new version.

    +

    Save Training Parameters

    +

    You can save the job parameter settings of this version as a job parameter configuration, which will be displayed on the Job Parameter Mgmt page. Click More > Save Training Parameters to switch to the Training Parameter page. After confirming that the settings are correct, click OK. For details about training parameter management, see Managing Job Parameters.

    +

    Stop

    +

    Click More > Stop to stop the training job of the current version. Only training jobs in the Running state can be stopped.

    +

    Delete

    +

    Click More > Delete to delete the training job of the current version.

    +
    + + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/managing_visualization_jobs.tmp b/modelarts/umn/temp/managing_visualization_jobs.tmp new file mode 100644 index 000000000..55794bf34 --- /dev/null +++ b/modelarts/umn/temp/managing_visualization_jobs.tmp @@ -0,0 +1,32 @@ + + +

    Managing Visualization Jobs

    +

    You can create visualization jobs of TensorBoard and MindInsight types on ModelArts.

    +

    TensorBoard supports training jobs based on the TensorFlow engine, and MindInsight supports training jobs based on the MindSpore engine.

    +

    TensorBoard and MindInsight can effectively display the change trend of a training job and the data used in the training.

    +

    You can use the summary file generated during model training to create a visualization job.

    +

    Prerequisites

    To ensure that the summary file is generated in the training result, you need to add the related code to the training script.

    +
    • Using the TensorFlow engine:

      When using the TensorFlow-based MoXing, in mox.run, set save_summary_steps>0 and summary_verbosity≥1.

      +

      If you want to display other metrics, add tensors to log_info in the return value mox.ModelSpec of model_fn. Only the rank-0 tensors (scalars) are supported. The added tensors are written into the summary file. If you want to write tensors of higher ranks in the summary file, use the native tf.summary of TensorFlow in model_fn.

      +
    • Using the MindSpore engine:

      MindSpore allows you to save data to the summary log file and display the data on the GUI. For details, see the MindSpore official website.

      +
    + +

    Creating a Visualization Job

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Jobs. On the displayed page, click the Visualization Jobs tab.
    2. In the upper left corner of the visualization job list, click Create to switch to the Create Visualization Job page.
    3. Set Job Type to TensorBoard and MindInsight. Enter the visualization job name and description as required, set the Training Output Path and Auto Stop parameters.
      • Training Output Path: Select the training output path specified when the training job is created.
      • Auto Stop: Enable or disable the auto stop function. The options are 1 hour later, 2 hours later, 4 hours later, 6 hours later, and Custom. If you select Custom, you can enter any integer within 1 to 24 hours in the textbox on the right.
      +
    4. After confirming the specifications, click Next.

      In the visualization job list, when the status changes to Running, the virtualization job has been created. You can click the name of the visualization job to view its details.

      +
    + +

    Opening a Visualization Job

    In the visualization job list, click the name of the target visualization job. The TensorBoard page is displayed. Only the visualization job in the Running status can be opened.

    + +

    Running or Stopping a Visualization Job

    • Stopping a visualization job: In the visualization job list, click Stop in the Operation column to stop the visualization job.
    • Running a visualization job: You can run and use a visualization job in the Canceled status again. In the visualization job list, click Run in the Operation column to run the visualization job.
    + +

    Deleting a Visualization Job

    If your visualization job is no longer used, you can delete it to release resources. In the visualization job list, click Delete in the Operation column to delete the visualization job.

    +

    A deleted visualized job cannot be recovered. You need to create a new visualization job if you want to use it. Exercise caution when performing this operation.

    + + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/member_management.tmp b/modelarts/umn/temp/member_management.tmp new file mode 100644 index 000000000..902007cc7 --- /dev/null +++ b/modelarts/umn/temp/member_management.tmp @@ -0,0 +1,28 @@ + + +

    Member Management

    +

    There is no member in a new team. You need to add members who will participate in a team labeling task.

    +

    A maximum of 100 members can be added to a team. If there are more than 100 members, add them to different teams for better management.

    +

    Adding a Member

    1. In the left navigation pane of the ModelArts management console, choose Data Management > Labeling Teams. The Labeling Teams page is displayed.
    2. On the Labeling Teams page, select a team from the team list on the left and click a team name. The team details are displayed in the right pane.
    3. In the Team Details area, click Add Member.
    4. In the displayed Add Member dialog box, enter an email address, description, and a role for a member and click OK.

      An email address uniquely identifies a team member. Different members cannot use the same email address. The email address you enter will be recorded and saved in ModelArts. It is used only for ModelArts team labeling. After a member is deleted, the email address will also be deleted.

      +Possible values of Role are Labeler, Reviewer, and Team Manager. Only one Team Manager can be set.Figure 1 Adding a member
      + +Figure 2 Adding a member
      +

      Information about the added member is displayed in the Team Details area.

      +
    + +

    Modifying Member Information

    You can modify member information if it is changed.

    +
    1. In the Team Details area, select the desired member.
    2. In the row containing the desired member, click Modify in the Operation column. In the displayed dialog box, modify the description or role.

      The email address of a member cannot be changed. To change the email address of a member, delete the member, and set a new email address when adding a member.

      +

      Possible values of Role are Labeler, Reviewer, and Team Manager. Only one Team Manager can be set.

      +
    + +

    Deleting Members

    • Deleting a single member

      In the Team Details area, select the desired member, and click Delete in the Operation column. In the dialog box that is displayed, click OK.

      +
    • Batch Deletion

      In the Team Details area, select members to be deleted and click Delete. In the dialog box that is displayed, click OK.

      +
    + + + + +Parent topic: Team Labeling + + + diff --git a/modelarts/umn/temp/model_compression_and_conversion.tmp b/modelarts/umn/temp/model_compression_and_conversion.tmp new file mode 100644 index 000000000..8a4c80edc --- /dev/null +++ b/modelarts/umn/temp/model_compression_and_conversion.tmp @@ -0,0 +1,21 @@ + + +

    Model Compression and Conversion

    + + + + + +Parent topic: Model Management + + + diff --git a/modelarts/umn/temp/model_deployment.tmp b/modelarts/umn/temp/model_deployment.tmp new file mode 100644 index 000000000..c105eea25 --- /dev/null +++ b/modelarts/umn/temp/model_deployment.tmp @@ -0,0 +1,21 @@ + + +

    Model Deployment

    + + + + + diff --git a/modelarts/umn/temp/model_input_path_specifications.tmp b/modelarts/umn/temp/model_input_path_specifications.tmp new file mode 100644 index 000000000..7554b6097 --- /dev/null +++ b/modelarts/umn/temp/model_input_path_specifications.tmp @@ -0,0 +1,26 @@ + + +

    Model Input Path Specifications

    +

    Ascend Chip

    The requirements for converting the models run on the Ascend chip are as follows:

    +
    • For TensorFlow-based models (in frozen_graph or saved_model format), the input path must comply with the following specifications during model conversion:frozen_graph format
      |
      +|---xxxx.pb                 (Mandatory) Model network file. Only one model network file can exist in the input path. The model must be in frozen_graph or saved_model format.
      +|---insert_op_conf.cfg      (Optional) Insertion operator configuration file. Only one insertion operator configuration file can exist in the input path.
      +|---plugin                  (Optional) Custom operator directory. The input directory can contain only one plugin folder. Only custom operators developed based on Tensor Engine (TE) are supported.
      + +

      saved_model format

      +
      |
      +|---saved_model.pb          (Mandatory) Model network file. Only one model network file can exist in the input path. The model must be in frozen_graph or saved_model format.
      +|---variables               (Mandatory) Fixed subdirectory name, including the model weight deviation.
      +    |---variables.index     Mandatory
      +    |---variables.data-00000-of-00001 Mandatory
      +|---insert_op_conf.cfg      (Optional) Insertion operator configuration file. Only one insertion operator configuration file can exist in the input path.
      +|---plugin                  (Optional) Custom operator directory. The input directory can contain only one plugin folder. Only custom operators developed based on Tensor Engine (TE) are supported.
      +
    + + + + +Parent topic: Model Compression and Conversion + + + diff --git a/modelarts/umn/temp/model_management.tmp b/modelarts/umn/temp/model_management.tmp new file mode 100644 index 000000000..6c1eabbf6 --- /dev/null +++ b/modelarts/umn/temp/model_management.tmp @@ -0,0 +1,17 @@ + + +

    Model Management

    + + + + + diff --git a/modelarts/umn/temp/model_output_path_description.tmp b/modelarts/umn/temp/model_output_path_description.tmp new file mode 100644 index 000000000..3e5ec43f0 --- /dev/null +++ b/modelarts/umn/temp/model_output_path_description.tmp @@ -0,0 +1,16 @@ + + +

    Model Output Path Description

    +

    Ascend Chip

    The following describes the output path of the model run on the Ascend chip after conversion:

    + +
    • For TensorFlow-based models, the output path must comply with the following specifications during model conversion:
      |
      +|---xxxx.om           Converted model to run on the Ascend chip. The model file name extension is .om.
      +|---job_log.txt       Conversion log file
      +
    + + + +Parent topic: Model Compression and Conversion + + + diff --git a/modelarts/umn/temp/model_package_specifications.tmp b/modelarts/umn/temp/model_package_specifications.tmp new file mode 100644 index 000000000..0e9b16390 --- /dev/null +++ b/modelarts/umn/temp/model_package_specifications.tmp @@ -0,0 +1,16 @@ + + +

    Model Package Specifications

    +

    + + + + + diff --git a/modelarts/umn/temp/model_templates.tmp b/modelarts/umn/temp/model_templates.tmp new file mode 100644 index 000000000..20640a9b4 --- /dev/null +++ b/modelarts/umn/temp/model_templates.tmp @@ -0,0 +1,16 @@ + + +

    Model Templates

    +

    + + + + + diff --git a/modelarts/umn/temp/model_training.tmp b/modelarts/umn/temp/model_training.tmp new file mode 100644 index 000000000..1096e5fb5 --- /dev/null +++ b/modelarts/umn/temp/model_training.tmp @@ -0,0 +1,23 @@ + + +

    Model Training

    +

    In addition to data and algorithms, developers spend a lot of time configuring model training parameters. Model training parameters determine the model's precision and convergence time. Parameter selection is heavily dependent on developers' experience. Improper parameter selection will affect the model's precision or significantly increase the time required for model training.

    +

    To simplify AI development and improve development efficiency and training performance, ModelArts offers visualized job management, resource management, and version management and automatically performs hyperparameter optimization based on machine learning and reinforcement learning. It provides automatic hyperparameter tuning policies such as learning rate and batch size, and integrates common models.

    +

    Currently, when most developers build models, the models usually have dozens of layers or even hundreds of layers and MB-level or GB-level parameters to meet precision requirements. As a result, the specifications of computing resources are extremely high, especially the computing power of hardware resources, memory, and ROM. The resource specifications on the device side are strictly limited. For example, the computing power on the device side is 1 TFLOPS, the memory size is about 2 GB, and the ROM space is about 2 GB, so the model size on the device side must be limited to 100 KB and the inference delay must be limited to 100 milliseconds.

    +

    Therefore, compression technologies with lossless or near-lossless model precision, such as pruning, quantization, and knowledge distillation, are used to implement automatic model compression and optimization, and automatic iteration of model compression and retraining to control the loss of model precision. The low-bit quantization technology, which eliminates the need for retraining, converts the model from a high-precision floating point to a fixed-point operation. Multiple compression and optimization technologies are used to meet the lightweight requirements of device and edge hardware resources. The model compression technology reduces the precision by less than 1% in specific scenarios.

    +

    When the training data volume is large, the training of the deep learning model is time-consuming. In computer vision technology, ImageNet-1k (a classification dataset containing 1,000 image classes, referred to as ImageNet) is a commonly used dataset. If you use a P100 GPU to train a ResNet-50 model on the dataset, it will take nearly one week. This hinders rapid development of deep learning applications. Therefore, the acceleration of deep learning training has always been an important concern to the academia and the industry.

    +

    Distributed training acceleration needs to be considered in terms of software and hardware. A single optimization method cannot meet expectations. Therefore, optimization of distributed acceleration is a system project. The distributed training architecture needs to be considered in terms of hardware and chip design. To minimize compute and communication delays, many factors need to be considered, including overall compute specifications, network bandwidth, high-speed cache, power consumption, and heat dissipation of the system, and the relationship between compute and communication throughput.

    +

    The software design needs to combine high-performance hardware features to fully use the high-speed hardware network and implement high-bandwidth distributed communication and efficient local data caching. By using training optimization algorithms, such as hybrid parallel, gradient compression, and convolution acceleration, the software and hardware of the distributed training system can be efficiently coordinated and optimized from end to end, and training acceleration can be implemented in a distributed environment of multiple hosts and cards. ModelArts delivers an industry-leading speedup of over 0.8 for ResNet50 on the ImageNet dataset in the distributed environment with thousands of hosts and cards.

    +

    To measure the acceleration performance of distributed deep learning, the following two key indicators are used:

    +
    • Throughput, that is, the amount of data processed in a unit time
    • Convergence time, that is, the time required to achieve certain precision
    +

    The throughput depends on server hardware (for example, more AI acceleration chips with higher FLOPS processing capabilities and higher communication bandwidth achieve higher throughput), data reading and caching, data preprocessing, model computing (for example, convolution algorithm selection), and communication topology optimization. Except low-bit computing and gradient (or parameter) compression, most technologies improve throughput without affecting model precision. To achieve the shortest convergence time, optimize the throughput and adjust the parameters. If the parameters are not adjusted properly, the throughput cannot be optimized. If the batch size is set to a small value, the parallel performance of model training will be relatively poor. As a result, the throughput cannot be improved even if the number of compute nodes are increased.

    +

    Users are most concerned about convergence time. The MoXing framework implements full-stack optimization and significantly reduces the training convergence time. For data read and preprocessing, MoXing uses multi-level concurrent input pipelines to prevent data I/Os from becoming a bottleneck. In terms of model computing, MoXing provides hybrid precision calculation, which combines semi-precision and single-precision for the upper layer models and reduces the loss caused by precision calculation through adaptive scaling. Dynamic hyperparameter policies (such as momentum and batch size) are used to minimize the number of epochs required for model convergence.

    +

    ModelArts High-Performance Distributed Training Optimization

    • Automatic hybrid precision to fully utilize hardware computing capabilities
    • Dynamic hyperparameter adjustment technologies (dynamic batch size, image size, and momentum)
    • Automatic model gradient merging and splitting
    • Communication operator scheduling optimization based on BP bubble adaptive computing
    • Distributed high-performance communication libraries (NStack and HCCL)
    • Distributed data-model hybrid parallel
    • Training data compression and multi-level caching
    + + + + +Parent topic: Basic Knowledge + + + diff --git a/modelarts/umn/temp/modelarts_metrics.tmp b/modelarts/umn/temp/modelarts_metrics.tmp new file mode 100644 index 000000000..c5fd1126f --- /dev/null +++ b/modelarts/umn/temp/modelarts_metrics.tmp @@ -0,0 +1,197 @@ + + +

    ModelArts Metrics

    +

    Description

    The cloud service platform provides Cloud Eye to help you better understand the status of your ModelArts real-time services and models. You can use Cloud Eye to automatically monitor your ModelArts real-time services and models in real time and manage alarms and notifications, so that you can keep track of performance metrics of ModelArts and models.

    + +

    Namespace

    SYS.ModelArts

    + +

    Monitoring Metrics

    +.. _modelarts_23_0187__en-us_topic_0198064686_table3293914123812: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 ModelArts metrics

    Metric ID

    +

    Metric Name

    +

    Meaning

    +

    Value Range

    +

    Measurement Object & Dimension

    +

    Monitoring Interval

    +

    cpu_usage

    +

    CPU Usage

    +

    CPU usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    mem_usage

    +

    Memory Usage

    +

    Memory usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    gpu_util

    +

    GPU Usage

    +

    GPU usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    gpu_mem_usage

    +

    GPU Memory Usage

    +

    GPU memory usage of ModelArts

    +

    Unit: %

    +

    ≥ 0%

    +

    Measurement object:

    +

    ModelArts models

    +

    Dimension:

    +

    model_id

    +

    1 minute

    +

    successfully_called_times

    +

    Number of Successful Calls

    +

    Times that ModelArts has been successfully called

    +

    Unit: Times/min

    +

    ≥Count/min

    +

    Measurement object:

    +

    ModelArts models

    +

    ModelArts real-time services

    +

    Dimension:

    +

    model_id,

    +

    service_id

    +

    1 minute

    +

    failed_called_times

    +

    Number of Failed Calls

    +

    Times that ModelArts failed to be called

    +

    Unit: Times/min

    +

    ≥Count/min

    +

    Measurement object:

    +

    ModelArts models

    +

    ModelArts real-time services

    +

    Dimension:

    +

    model_id,

    +

    service_id

    +

    1 minute

    +

    total_called_times

    +

    API Calls

    +

    Times that ModelArts is called

    +

    Unit: Times/min

    +

    ≥Count/min

    +

    Measurement object:

    +

    ModelArts models

    +

    ModelArts real-time services

    +

    Dimension:

    +

    model_id,

    +

    service_id

    +

    1 minute

    +

    If a measurement object has multiple measurement dimensions, all the measurement dimensions are mandatory when you use an API to query monitoring metrics.

    +
    • The following provides an example of using the multi-dimensional dim to query a single monitoring metric: dim.0=service_id,530cd6b0-86d7-4818-837f-935f6a27414d&dim.1="model_id,3773b058-5b4f-4366-9035-9bbd9964714a
    • The following provides an example of using the multi-dimensional dim to query monitoring metrics in batches:

      "dimensions": [

      +

      {

      +

      "name": "service_id",

      +

      "value": "530cd6b0-86d7-4818-837f-935f6a27414d"

      +

      }

      +

      {

      +

      "name": "model_id",

      +

      "value": "3773b058-5b4f-4366-9035-9bbd9964714a"

      +

      }

      +

      ],

      +
    +
    + + +

    Dimensions

    +.. _modelarts_23_0187__en-us_topic_0198064686_table130310173915: + + + + + + + + + + + + +
    Table 2 Dimension description

    Key

    +

    Value

    +

    service_id

    +

    Real-time service ID

    +

    model_id

    +

    Model ID

    +
    + + + + + +Parent topic: Monitoring + + + diff --git a/modelarts/umn/temp/modifying_a_dataset.tmp b/modelarts/umn/temp/modifying_a_dataset.tmp new file mode 100644 index 000000000..72c7f2e4a --- /dev/null +++ b/modelarts/umn/temp/modifying_a_dataset.tmp @@ -0,0 +1,43 @@ + + +

    Modifying a Dataset

    +

    For a created dataset, you can modify its basic information to match service changes.

    +

    Prerequisites

    You have created a dataset.

    + +

    Modifying the Basic Information About a Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, choose More > Modify in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Modify in the upper right corner.

      +
    3. Modify basic information about the dataset and then click OK. Refer to Table 1 for details. +.. _modelarts_23_0020__en-us_topic_0170886811_table151481125214: + + + + + + + + + + + + + + + +
      Table 1 Parameters

      Parameter

      +

      Description

      +

      Name

      +

      Enter the name of the dataset. A dataset name can contain only letters, digits, underscores (_), and hyphens (-).

      +

      Description

      +

      Enter a brief description for the dataset.

      +

      Label Set

      +

      The label set varies depending on the dataset type. For details about how to modify the label set, see the parameters of different dataset types in Creating a Dataset.

      +
      + +
    + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/modifying_a_service.tmp b/modelarts/umn/temp/modifying_a_service.tmp new file mode 100644 index 000000000..f51c08517 --- /dev/null +++ b/modelarts/umn/temp/modifying_a_service.tmp @@ -0,0 +1,23 @@ + + +

    Modifying a Service

    +

    For a deployed service, you can modify its basic information to match service changes. You can modify the basic information about a service in either of the following ways:

    +

    Method 1: Modify Service Information on the Service Management Page

    +

    Method 2: Modify Service Information on the Service Details Page

    +

    Prerequisites

    A service has been deployed.

    + +

    Method 1: Modify Service Information on the Service Management Page

    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service.
    2. In the service list, click Modify in the Operation column of the target service, modify basic service information, and click OK. +

      Services in the Deploying status cannot be modified.

      + +
    + +

    Method 2: Modify Service Information on the Service Details Page

    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service.
    2. Click the name of the target service. The service details page is displayed.
    3. Click Modify in the upper right corner of the page, modify the service details, and click OK. +
    + + + + +Parent topic: Model Deployment + + + diff --git a/modelarts/umn/temp/monitoring.tmp b/modelarts/umn/temp/monitoring.tmp new file mode 100644 index 000000000..ba6876331 --- /dev/null +++ b/modelarts/umn/temp/monitoring.tmp @@ -0,0 +1,16 @@ + + +

    Monitoring

    +

    + + + + + diff --git a/modelarts/umn/temp/mxnet-py36_general_template.tmp b/modelarts/umn/temp/mxnet-py36_general_template.tmp new file mode 100644 index 000000000..a4f279e2d --- /dev/null +++ b/modelarts/umn/temp/mxnet-py36_general_template.tmp @@ -0,0 +1,33 @@ + + +

    MXNet-py36 General Template

    +

    Introduction

    AI engine: MXNet 1.2.1; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    + +

    Template Input

    The template input is the MXNet-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    + +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    + +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    + +

    Model Package Example

    Structure of the MXNet-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    ├── <<Custom Python package>>       (Optional) User's Python package, which can be directly referenced in the model inference code
    +    ├── resnet-50-symbol.json    (Mandatory) Model definition file, which contains the neural network description of the model
    +    ├── resnet-50-0000.params    (Mandatory) Model variable parameter file, which contains parameter and weight information
    +    ├──customize_service.py      (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    + + + + +Parent topic: Template Description + + + diff --git a/modelarts/umn/temp/named_entity_recognition.tmp b/modelarts/umn/temp/named_entity_recognition.tmp new file mode 100644 index 000000000..bb1d6af60 --- /dev/null +++ b/modelarts/umn/temp/named_entity_recognition.tmp @@ -0,0 +1,44 @@ + + +

    Named Entity Recognition

    +

    Named entity recognition assigns labels to named entities in text, such as time and locations. Before labeling, you need to understand the following:

    +
    • A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Labeling Content

    The dataset details page displays the labeled and unlabeled text files in the dataset. The Unlabeled tab page is displayed by default.

    +

    +
    1. On the Unlabeled tab page, the objects to be labeled are listed in the left pane. In the list, click the text object to be labeled, select a part of text displayed under Label Set for labeling, and select a label in the Label Set area in the right pane. Multiple labels can be added to a labeling object.

      You can repeat this operation to select objects and add labels to the objects.

      +
    2. Click Save Current Page in the lower part of the page to complete the labeling.
    + +

    Adding Labels

    • Adding labels on the Unlabeled tab page: Click the plus sign (+) next to Label Set. On the Add Label page that is displayed, add a label name, select a label color, and click OK.Figure 1 Adding a named entity label (1)
      +
    • Adding labels on the Labeled tab page: Click the plus sign (+) next to All Labels. On the Add Label page that is displayed, add a label name, select a label color, and click OK.Figure 2 Adding a named entity label (2)
      +

      +
    + +

    Viewing the Labeled Text

    On the dataset details page, click the Labeled tab to view the list of the labeled text. You can also view all labels supported by the dataset in the All Labels area on the right.

    + +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +

    On the dataset details page, click the Labeled tab, and modify the text information in the label information area on the right.

    +
    • Modifying based on texts

      On the dataset details page, click the Labeled tab, and select the text to be modified from the text list.

      +

      Manual deletion: In the text list, click the text. When the text background turns blue, the text is selected. On the right of the page, click above a text label to delete the label.

      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Batch modification: In the All Labels area, click the editing icon in the Operation column, add a label name in the text box, select a label color, and click OK.
      • Batch deletion: In the All Labels area, click the deletion icon in the Operation column to delete the label. In the dialog box that is displayed, select Delete label or Delete label and objects with only the label, and click OK.
      +
    + +

    Adding Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add text files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add File.
    2. In the displayed Add File dialog box, set the parameters as required and then select the file to be uploaded.

      Select one or more files to be uploaded in the local environment. Only .txt and .csv files are supported. The total size of files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add File dialog box, click Upload. The files you add will be automatically displayed on the Unlabeled tab page.
    + +

    Deleting a File

    You can quickly delete the files you want to discard.

    +
    • On the Unlabeled tab page, select the text to be deleted, and click Delete in the upper left corner to delete the text.
    • On the Labeled tab page, select the text to be deleted and click Delete. Alternatively, you can tick Select Images on Current Page to select all text objects on the current page and click Delete in the upper left corner.
    +

    The background of the selected text is blue.

    + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/notebook.tmp b/modelarts/umn/temp/notebook.tmp new file mode 100644 index 000000000..2a0614e49 --- /dev/null +++ b/modelarts/umn/temp/notebook.tmp @@ -0,0 +1,21 @@ + + +

    Notebook

    + + + + + +Parent topic: Development Environment + + + diff --git a/modelarts/umn/temp/object_detection.tmp b/modelarts/umn/temp/object_detection.tmp new file mode 100644 index 000000000..b0e8beedb --- /dev/null +++ b/modelarts/umn/temp/object_detection.tmp @@ -0,0 +1,157 @@ + + +

    Object Detection

    +

    Model training uses a large number of labeled images. Therefore, before the model training, add labels to the images that are not labeled. You can add labels to images by manual labeling or auto labeling. In addition, you can modify the labels of images, or remove their labels and label the images again.

    +

    Before labeling an image in object detection scenarios, pay attention to the following:

    +
    • All target objects in the image must be labeled.
    • Target objects are clear without any blocking and contained within bounding boxes.
    • Only the entire object must be contained within a bounding box. The edge of the bounding box cannot intersect the edge outline of the target object. Additionally, there must not be a gap between the edge and the target object to prevent the background from interfering with the model training.
    +

    Labeling the Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, click the dataset to be labeled based on the labeling type. The Dashboard tab page of the dataset is displayed.

      By default, the Dashboard tab page of the current dataset version is displayed. To label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +
    • For an image classification dataset, the .txt file with the same name in the same directory as the data source is used as the label of the target image.
    • For an object detection dataset or image segmentation dataset, the .xml file with the same name in the same directory is used as the label of the target image.
    +

    To quickly obtain the latest data in the OBS bucket, on the All or Unlabeled tab page of the dataset details page, click Synchronize Data Source.

    + +

    Filtering Data

    On the Dashboard tab page of the dataset, the summary of the dataset is displayed by default. In the upper left corner of the page, click Label. The dataset details page is displayed, showing all data in the dataset by default. On the All, Unlabeled, or Labeled tab page, you can add filter criteria in the filter criteria area to quickly filter the data you want to view.

    +

    The following filter criteria are supported. You can set one or more filter criteria.

    +
    • Label: Select All or one or more labels you specified.
    • Sample Creation Time: Select Within 1 month, Within 1 day, or Custom to customize a time range.
    • File Name or Path: Filter files by file name or file storage path.
    • Labeled By: Select the name of the user who performs the labeling operation.
    + +

    + +

    Labeling Images (Manually)

    The dataset details page provides the Labeled and Unlabeled tabs. The All tab page is displayed by default.

    +
    1. On the Unlabeled tab page, click an image. The image labeling page is displayed. For details about how to use common buttons on the Labeled tab page, see Table 2.
    2. In the left tool bar, select a proper labeling shape. The default labeling shape is a rectangle. In this example, the rectangle is used for labeling.

      On the left of the page, multiple tools are provided for you to label images. However, you can use only one tool at a time.

      + + +.. _modelarts_23_0012__en-us_topic_0170889732_table165201739119: + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Supported bounding box

      Icon

      +

      Description

      +

      +

      Rectangle. Click the edge of the upper left corner of the object to be labeled. A rectangle will be displayed. Drag the rectangle to cover the object and click to label the object.

      +

      +

      Polygon. In the area where the object to be labeled is located, click to label a point, move the mouse and click multiple points along the edge of the object, and then click the first point again. All the points form a polygon. Therefore, the object to be labeled is in the bounding box.

      +

      +

      Circle. Click the center point of an object, and move the mouse to draw a circle to cover the object and click to label the object.

      +

      +

      Straight line. Click to specify the start and end points of an object, and move the mouse to draw a straight line to cover the object and click to label the object.

      +

      +

      Dotted line. Click to specify the start and end points of an object, and move the mouse to draw a dotted line to cover the object and click to label the object.

      +

      +

      Point. Click the object in an image to label a point.

      +
      + +
    3. In the Add Label text box, enter a new label name, select the label color, and click Add. Alternatively, select an existing label from the drop-down list.

      Label all objects in an image. Multiple labels can be added to an image. After labeling an image, you can click the image list below the image to quickly select other images that are not labeled and label them on the labeling page.

      +
    4. Click Back to Data Labeling Preview in the upper left part of the page to view the labeling information. In the dialog box that is displayed, click OK to save the labeling settings.

      The selected image is automatically moved to the Labeled tab page. On the Unlabeled and All tab pages, the labeling information is updated along with the labeling process, including the added label names and the number of images for each label.

      +
    + +.. _modelarts_23_0012__en-us_topic_0170889732_table194471512463: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 Common icons on the labeling page

    Icon

    +

    Description

    +

    +

    Cancel the previous operation.

    +

    +

    Redo the previous operation.

    +

    +

    Zoom in an image.

    +

    +

    Zoom out an image.

    +

    +

    Delete all bounding boxes on the current image.

    +

    +

    Display or hide a bounding box. You can perform this operation only on a labeled image.

    +

    +

    Drag a bounding box to another position or drag the edge of the bounding box to resize it.

    +

    +

    Reset. After dragging a bounding box, you can click this button to quickly restore the bounding box to its original shape and position.

    +

    +

    Display the labeled image in full screen.

    +
    + + +

    Viewing Labeled Images

    On the dataset details page, click the Labeled tab to view the list of the labeled images. You can click an image to view the label information about the image in the All Labels area on the right.

    + +

    Modifying Labeling Information

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on images

      On the dataset details page, click the Labeled tab, click the image to be modified. The labeling page is displayed. Modify the image information in the label information area on the right.

      +
      • Modifying a label: In the Labeling area, click the edit icon, enter the correct label name in the text box, and click the check mark to complete the modification. Alternatively, click a label. In the image labeling area, adjust the position and size of the bounding box. After the adjustment is complete, click another label to save the modification.
      • Deleting a label: In the Labeling area, click the deletion icon to delete a label from the image.

        After deleting the label, click Back to Data Labeling Preview in the upper left corner of the page to exit the labeling page. In the dialog box that is displayed, save the modification. After all labels of an image are deleted, the image is displayed on the Unlabeled tab page.

        +Figure 1 Editing an object detection label
        +
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Modifying a label: Click the edit icon in the Operation column. In the dialog box that is displayed, enter the new label name, select the new label color, and click OK. After the modification, the images that have been added with the label use the new label name.
      • Deleting a label: Click the deletion icon in the Operation column to delete a label.
      +Figure 2 All labels for object detection
      +
    + +

    Adding Images

    In addition to the data automatically synchronized from Input Dataset Path, you can directly add images on ModelArts for labeling.

    +
    1. On the dataset details page, click the All or Unlabeled tab. Then, click Add.
    2. On the Add page that is displayed, click Add Image.

      Select one or more images to be uploaded in the local environment. Images in JPG, JPEG, PNG, or BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.

      +

      After the images are selected, their thumbnails and total size are displayed on the Add page.

      +
    3. On the Add page, click OK.

      The images you have added will be automatically displayed in the image list on the Unlabeled tab page. In addition, the images are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    + +

    Deleting Images

    You can quickly delete the images you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the images to be deleted or click Select Images on Current Page, and click Delete in the upper left corner to delete them. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the images.

    +

    If a tick is displayed in the upper left corner of an image, the image is selected. If no image is selected on the page, the Delete button is unavailable.

    +

    If you select Delete source files, images stored in the OBS directory will be deleted accordingly. This operation may affect other dataset versions or datasets using those files, for example, leading to an error in page display, training, or inference. Deleted data cannot be recovered. Exercise caution when performing this operation.

    + + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/opening_a_notebook_instance.tmp b/modelarts/umn/temp/opening_a_notebook_instance.tmp new file mode 100644 index 000000000..1ef3bb66f --- /dev/null +++ b/modelarts/umn/temp/opening_a_notebook_instance.tmp @@ -0,0 +1,18 @@ + + +

    Opening a Notebook Instance

    +

    You can open a created notebook instance (that is, an instance in the Running state) and start coding in the development environment.

    +

    Instance Opening

    • Go to the Jupyter Notebook page.

      In the notebook instance list, locate the row where the target notebook instance resides and click Open in the Operation column or click the notebook instance name.

      +
    • Go to the JupyterLab page.

      In the notebook instance list, select the notebook instance to be opened and click Open JupyterLab in the Operation column.

      +
    + +

    Code Development

    ModelArts provides two environments for code development: Jupyter Notebook and JupyterLab.

    +
    • Jupyter Notebook: a web-based application for interactive computing. It can be applied to full-process computing: development, documentation, running code, and presenting results.
    • JupyterLab: an interactive development environment. It is a next-generation product of Jupyter Notebook. JupyterLab enables you to compile notebooks, operate terminals, edit MarkDown text, open interaction modes, and view CSV files and images.
    + + + + +Parent topic: Managing Notebook Instances + + + diff --git a/modelarts/umn/temp/overview.tmp b/modelarts/umn/temp/overview.tmp new file mode 100644 index 000000000..7a5af1a83 --- /dev/null +++ b/modelarts/umn/temp/overview.tmp @@ -0,0 +1,17 @@ + + +

    Overview

    +

    When you use ExeML, data management, notebook instances, training jobs, models, and services, ModelArts may need to access dependent services such as OBS and Software Repository for Container (SWR). If ModelArts is not authorized to access the services, these functions cannot be used.

    +

    You can configure access authorization in either of the following ways:

    +
    • Using an agency (recommended)

      After agency authorization is configured, the dependent service operation permissions are delegated to ModelArts so that ModelArts can use the dependent services and perform operations on resources on your behalf.

      +
    • Using the access key

      You can use the obtained access key pair (AK/SK) to authorize ModelArts to access dependent services and and perform operations on resources.

      +
    +

    Precautions

    • Agency authorization grants ModelArts permissions on dependent services, such as OBS and SWR. If the OBS permissions are not configured for an IAM user, the user still does not have the permission to operate the services.
    • For users who have used ModelArts before, access key authorization has been configured and does not need to be configured again. However, you are advised to use agency authorization again.
    • For new users, use agency authorization.
    + + + + +Parent topic: Configuring Access Authorization (Global Configuration) + + + diff --git a/modelarts/umn/temp/permissions_management.tmp b/modelarts/umn/temp/permissions_management.tmp new file mode 100644 index 000000000..0e225e358 --- /dev/null +++ b/modelarts/umn/temp/permissions_management.tmp @@ -0,0 +1,20 @@ + + +

    Permissions Management

    +

    If you need to assign different permissions to different employees in your enterprise to access ModelArts resources, IAM is a good choice for fine-grained permissions management.

    +

    Granting Permissions to Users

    Figure 1 Authorization model
    + +
    1. Plan user groups and grant required permissions to each user group.
    2. Add a user to a specific user group so that the user can inherit the permissions of the group.
    +

    When personnel changes occur, you only need to change individual user permissions by changing their user group. User groups make permission management more efficient.

    +

    Granting Permissions to Other Accounts

    You (account A) can create an agency on IAM to grant required permissions to the delegated account (account B). The administrator of account B grants the Agent Operator permissions to the user of account B to enable the user to manage resources in your account (account A).

    + +

    Granting Permissions to Federated Users

    You can use IAM to create an IdP and create rules for the IdP to convert federated users into IAM users who have specified permissions to access cloud resources.

    +Figure 2 Principles of identity conversion for federated users
    + + + + +Parent topic: Service Overview + + + diff --git a/modelarts/umn/temp/preparations.tmp b/modelarts/umn/temp/preparations.tmp new file mode 100644 index 000000000..349a86d21 --- /dev/null +++ b/modelarts/umn/temp/preparations.tmp @@ -0,0 +1,17 @@ + + + +

    Preparations

    + +

    + + + + + + diff --git a/modelarts/umn/temp/preparing_data.tmp b/modelarts/umn/temp/preparing_data.tmp new file mode 100644 index 000000000..a95b0fc3e --- /dev/null +++ b/modelarts/umn/temp/preparing_data.tmp @@ -0,0 +1,130 @@ + + +

    Preparing Data

    +

    Before using ModelArts ExeML to build a model, upload data to an OBS bucket.

    +

    Uploading Data to OBS

    This operation uses the OBS console to upload data. For more information about how to create a bucket and upload files, see Creating a Bucket and Uploading an Object.

    +

    Perform the following operations to import data to the dataset for model training and building.

    +
    1. Log in to OBS Console and create a bucket.
    2. Upload the local data to the OBS bucket. If you have a large amount of data, use OBS Browser+ to upload data or folders. The uploaded data must meet the dataset requirements of the ExeML project.
    + +

    Requirements on Datasets

    • The name of files in a dataset cannot contain Chinese characters, plus signs (+), spaces, or tabs.
    • Ensure that no damaged image exists. The supported image formats include JPG, JPEG, BMP, and PNG.
    • Do not store data of different projects in the same dataset.
    • To ensure the prediction accuracy of models, the training samples must be similar to the actual application scenarios.
    • To ensure the generalization capability of models, datasets should cover all possible scenarios.
    • In an object detection dataset, if the coordinates of the bounding box exceed the boundaries of an image, the image cannot be identified as a labeled image.
    + +

    Requirements for Files Uploaded to OBS

    • If you do not need to upload training data in advance, create an empty folder to store files generated in the future, for example, /bucketName/data-cat.
    • If you need to upload images to be labeled in advance, create an empty folder and save the images in the folder. An example of the image directory structure is /bucketName/data-cat/cat.jpg.
    • If you want to upload labeled images to the OBS bucket, upload them according to the following specifications:
      • The dataset for object detection requires storing labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object is IMG_20180919_114745.jpg, the name of the label file must be IMG_20180919_114745.xml.

        The label files for object detection must be in PASCAL VOC format. For details about the format, see Table 1.

        +Example of data files:
        ├─<dataset-import-path> 
        +      │      IMG_20180919_114732.jpg 
        +      │      IMG_20180919_114732.xml 
        +      │      IMG_20180919_114745.jpg 
        +      │      IMG_20180919_114745.xml 
        +      │      IMG_20180919_114945.jpg 
        +      │      IMG_20180919_114945.xml
        + +
      +
      • Images in JPG, JPEG, PNG, and BMP formats are supported. When uploading images on the ModelArts console, ensure that the size of an image does not exceed 5 MB and the total size of images to be uploaded in one attempt does not exceed 8 MB. If the data volume is large, use OBS Browser+ to upload images.
      • A label name can contain a maximum of 32 characters, including letters, digits, hyphens (-), and underscores (_). +.. _modelarts_21_0009__en-us_topic_0284258838_en-us_topic_0169446158_table18220153119617: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 PASCAL VOC format description

        Field

        +

        Mandatory

        +

        Description

        +

        folder

        +

        Yes

        +

        Directory where the data source is located

        +

        filename

        +

        Yes

        +

        Name of the file to be labeled

        +

        size

        +

        Yes

        +

        Image pixel

        +
        • width: image width. This parameter is mandatory.
        • height: image height. This parameter is mandatory.
        • depth: number of image channels. This parameter is mandatory.
        +

        segmented

        +

        Yes

        +

        Segmented or not

        +

        object

        +

        Yes

        +

        Object detection information. Multiple object{} functions are generated for multiple objects.

        +
        • name: class of the labeled object. This parameter is mandatory.
        • pose: shooting angle of the labeled object. This parameter is mandatory.
        • truncated: whether the labeled object is truncated (0 indicates that the object is not truncated). This parameter is mandatory.
        • occluded: whether the labeled object is occluded (0 indicates that the object is not occluded). This parameter is mandatory.
        • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
        • confidence: confidence score of the labeled object. The value range is 0 to 1. This parameter is optional.
        • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 2.
        +
        + + +.. _modelarts_21_0009__en-us_topic_0284258838_en-us_topic_0169446158_table102211311866: + + + + + + + + + + + +
        Table 2 Description of bounding box types

        type

        +

        Shape

        +

        Labeling Information

        +

        bndbox

        +

        Rectangle

        +

        Coordinates of the upper left and lower right points

        +

        <xmin>100<xmin>

        +

        <ymin>100<ymin>

        +

        <xmax>200<xmax>

        +

        <ymax>200<ymax>

        +
        + +Example of the label file in KITTI format:
        <annotation>
        +   <folder>test_data</folder>
        +   <filename>260730932.jpg</filename>
        +   <size>
        +       <width>767</width>
        +       <height>959</height>
        +       <depth>3</depth>
        +   </size>
        +   <segmented>0</segmented>
        +   <object>
        +       <name>bag</name>
        +       <pose>Unspecified</pose>
        +       <truncated>0</truncated>
        +       <occluded>0</occluded>
        +       <difficult>0</difficult>
        +       <bndbox>
        +           <xmin>108</xmin>
        +           <ymin>101</ymin>
        +           <xmax>251</xmax>
        +           <ymax>238</ymax>
        +       </bndbox>
        +   </object>
        +</annotation>
        + +
      +
    + + + + +Parent topic: Object Detection + + + diff --git a/modelarts/umn/temp/publishing_a_dataset.tmp b/modelarts/umn/temp/publishing_a_dataset.tmp new file mode 100644 index 000000000..bba3aa327 --- /dev/null +++ b/modelarts/umn/temp/publishing_a_dataset.tmp @@ -0,0 +1,77 @@ + + +

    Publishing a Dataset

    +

    ModelArts distinguishes data of the same source according to versions labeled at different time, which facilitates the selection of dataset versions during subsequent model building and development. After labeling the data, you can publish the dataset to generate a new dataset version.

    +

    About Dataset Versions

    • For a newly created dataset (before publishing), there is no dataset version information. The dataset must be published before being used for model development or training.
    • The default naming rules of dataset versions are V001 and V002 in ascending order. You can customize the version number during publishing.
    • You can set any version to the current directory. Then the details of the version are displayed on the dataset details page.
    • You can obtain the dataset in the manifest file format corresponding to each dataset version based on the value of Storage Path. The dataset can be used when you import data or filter hard examples.
    • The version of a table dataset cannot be changed.
    + +

    Publishing a Dataset

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, click Publish in the Operation column.

      Alternatively, you can click the dataset name to go to the Dashboard tab page of the dataset, and click Publish in the upper right corner.

      +
    3. In the displayed dialog box, set the parameters and click OK. +.. _modelarts_23_0018__en-us_topic_0170886812_table856411819131: + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters for publishing a dataset

      Parameter

      +

      Description

      +

      Version Name

      +

      The naming rules of V001 and V002 in ascending order are used by default. A version name can be customized. Only letters, digits, hyphens (-), and underscores (_) are allowed.

      +

      Format

      +

      +

      Only table datasets support version format setting. Available values are CSV and CarbonData.

      + NOTE:

      If the exported CSV file contains any command starting with =, +, -, or @, ModelArts automatically adds the Tab setting and escapes the double quotation marks (") for security purposes.

      + +

      Splitting

      +

      Only image classification, object detection, text classification, and sound classification datasets support data splitting.

      +

      By default, this function is disabled. After this function is enabled, you need to set the training and validation ratios.

      +

      Enter a value ranging from 0 to 1 for Training Set Ratio. After the training set ratio is set, the validation set ratio is determined. The sum of the training set ratio and the validation set ratio is 1.

      +

      The training set ratio is the ratio of sample data used for model training. The validation set ratio is the ratio of the sample data used for model validation. The training and validation ratios affect the performance of training templates.

      +

      Description

      +

      Description of the current dataset version.

      +
      + +

      After the version is published, you can go to the Version Manager tab page to view the detailed information. By default, the system sets the latest version to the current directory.

      +
    + +

    Directory Structure of Related Files After the Dataset Is Published

    Datasets are managed based on OBS directories. After a new version is published, the directory is generated based on the new version in the output dataset path.

    +

    Take an image classification dataset as an example. After the dataset is published, the directory structure of related files generated in OBS is as follows:

    +
    |-- user-specified-output-path
    +    |-- DatasetName-datasetId
    +        |-- annotation
    +            |-- VersionMame1
    +                |-- VersionMame1.manifest
    +            |-- VersionMame2
    +                ...
    +            |-- ...
    +

    The following uses object detection as an example. If a manifest file is imported to the dataset, the following provides the directory structure of related files after the dataset is published:

    +
    |-- user-specified-output-path 
    +    |-- DatasetName-datasetId 
    +        |-- annotation 
    +            |-- VersionMame1 
    +                |-- VersionMame1.manifest 
    +                |-- annotation
    +                   |-- file1.xml 
    +            |-- VersionMame2
    +                ...
    +            |-- ...
    + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/pyspark.tmp b/modelarts/umn/temp/pyspark.tmp new file mode 100644 index 000000000..30a0fc088 --- /dev/null +++ b/modelarts/umn/temp/pyspark.tmp @@ -0,0 +1,151 @@ + + +

    PySpark

    +

    Training and Saving a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    from pyspark.ml import Pipeline, PipelineModel
    +from pyspark.ml.linalg import Vectors
    +from pyspark.ml.classification import LogisticRegression
    +
    +# Prepare training data using tuples.
    +# Prepare training data from a list of (label, features) tuples.
    +training = spark.createDataFrame([
    +    (1.0, Vectors.dense([0.0, 1.1, 0.1])),
    +    (0.0, Vectors.dense([2.0, 1.0, -1.0])),
    +    (0.0, Vectors.dense([2.0, 1.3, 1.0])),
    +    (1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])
    +
    +# Create a training instance. The logistic regression algorithm is used for training.
    +# Create a LogisticRegression instance. This instance is an Estimator.
    +lr = LogisticRegression(maxIter=10, regParam=0.01)
    +
    +# Train the logistic regression model.
    +# Learn a LogisticRegression model. This uses the parameters stored in lr.
    +model = lr.fit(training)
    +
    +# Save the model to a local directory.
    +# Save model to local path.
    +model.save("/tmp/spark_model")
    +
    +
    +

    After the model is saved, it must be uploaded to the OBS directory before being published. The config.json configuration and customize_service.py must be contained during publishing. For details about the definition method, see Model Package Specifications.

    + +

    Inference Code

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    # coding:utf-8
    +import collections
    +import json
    +import traceback
    +
    +import model_service.log as log
    +from model_service.spark_model_service import SparkServingBaseService
    +from pyspark.ml.classification import LogisticRegression
    +
    +logger = log.getLogger(__name__)
    +
    +
    +class user_Service(SparkServingBaseService):
    +    # Pre-process data.
    +    def _preprocess(self, data):
    +        logger.info("Begin to handle data from user data...")
    +        # Read data.
    +        req_json = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        try:
    +            # Convert data to the spark dataframe format.
    +            predict_spdf = self.spark.createDataFrame(pd.DataFrame(req_json["data"]["req_data"]))
    +        except Exception as e:
    +            logger.error("check your request data does meet the requirements ?")
    +            logger.error(traceback.format_exc())
    +            raise Exception("check your request data does meet the requirements ?")
    +        return predict_spdf
    +
    +    # Perform model inference.
    +    def _inference(self, data):
    +        try:
    +             # Load a model file.
    +            predict_model = LogisticRegression.load(self.model_path)
    +            # Perform data inference.
    +            prediction_result = predict_model.transform(data)
    +	except Exception as e:
    +            logger.error(traceback.format_exc())
    +            raise Exception("Unable to load model and do dataframe transformation.")
    +        return prediction_result
    +
    +    # Post-process data.
    +    def _postprocess(self, pre_data):
    +        logger.info("Get new data to respond...")
    +        predict_str = pre_data.toPandas().to_json(orient='records')
    +        predict_result = json.loads(predict_str)
    +        return predict_result
    +
    +
    + + + + +Parent topic: Examples of Custom Scripts + + + diff --git a/modelarts/umn/temp/pytorch-py36_general_template.tmp b/modelarts/umn/temp/pytorch-py36_general_template.tmp new file mode 100644 index 000000000..b75bb8d4c --- /dev/null +++ b/modelarts/umn/temp/pytorch-py36_general_template.tmp @@ -0,0 +1,32 @@ + + +

    PyTorch-py36 General Template

    +

    Introduction

    AI engine: PyTorch 1.0; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    + +

    Template Input

    The template input is the PyTorch-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    + +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    + +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    + +

    Model Package Example

    Structure of the PyTorch-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +   ├── <<Custom Python package>>     (Optional) User's Python package, which can be directly referenced in the model inference code
    +   ├── resnet50.pth           (Mandatory) PyTorch model file, which contains variable and weight information
    +   ├──customize_service.py    (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    + + + + +Parent topic: Template Description + + + diff --git a/modelarts/umn/temp/pytorch.tmp b/modelarts/umn/temp/pytorch.tmp new file mode 100644 index 000000000..7bd784d4a --- /dev/null +++ b/modelarts/umn/temp/pytorch.tmp @@ -0,0 +1,380 @@ + + +

    PyTorch

    +

    Training a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    from __future__ import print_function
    +import argparse
    +import torch
    +import torch.nn as nn
    +import torch.nn.functional as F
    +import torch.optim as optim
    +from torchvision import datasets, transforms
    +
    +# Define a network structure.
    +class Net(nn.Module):
    +    def __init__(self):
    +        super(Net, self).__init__()
    +# The second dimension of the input must be 784.
    +        self.hidden1 = nn.Linear(784, 5120, bias=False)
    +        self.output = nn.Linear(5120, 10, bias=False)
    +
    +    def forward(self, x):
    +        x = x.view(x.size()[0], -1)
    +        x = F.relu((self.hidden1(x)))
    +        x = F.dropout(x, 0.2)
    +        x = self.output(x)
    +        return F.log_softmax(x)
    +
    +def train(model, device, train_loader, optimizer, epoch):
    +    model.train()
    +    for batch_idx, (data, target) in enumerate(train_loader):
    +        data, target = data.to(device), target.to(device)
    +        optimizer.zero_grad()
    +        output = model(data)
    +        loss = F.cross_entropy(output, target)
    +        loss.backward()
    +        optimizer.step()
    +        if batch_idx % 10 == 0:
    +            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
    +                epoch, batch_idx * len(data), len(train_loader.dataset),
    +                       100. * batch_idx / len(train_loader), loss.item()))
    +
    +def test( model, device, test_loader):
    +    model.eval()
    +    test_loss = 0
    +    correct = 0
    +    with torch.no_grad():
    +        for data, target in test_loader:
    +            data, target = data.to(device), target.to(device)
    +            output = model(data)
    +            test_loss += F.nll_loss(output, target, reduction='sum').item()  # sum up batch loss
    +            pred = output.argmax(dim=1, keepdim=True)  # get the index of the max log-probability
    +            correct += pred.eq(target.view_as(pred)).sum().item()
    +
    +    test_loss /= len(test_loader.dataset)
    +
    +    print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
    +        test_loss, correct, len(test_loader.dataset),
    +        100. * correct / len(test_loader.dataset)))
    +
    +device = torch.device("cpu")
    +
    +batch_size=64
    +
    +kwargs={}
    +
    +train_loader = torch.utils.data.DataLoader(
    +    datasets.MNIST('.', train=True, download=True,
    +                   transform=transforms.Compose([
    +                       transforms.ToTensor()
    +                   ])),
    +    batch_size=batch_size, shuffle=True, **kwargs)
    +test_loader = torch.utils.data.DataLoader(
    +    datasets.MNIST('.', train=False, transform=transforms.Compose([
    +        transforms.ToTensor()
    +    ])),
    +    batch_size=1000, shuffle=True, **kwargs)
    +
    +model = Net().to(device)
    +optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)
    +optimizer = optim.Adam(model.parameters())
    +
    +for epoch in range(1, 2 + 1):
    +    train(model, device, train_loader, optimizer, epoch)
    +    test(model, device, test_loader)
    +
    +
    + +

    Saving a Model

    1
    +2
    # The model must be saved using state_dict and can be deployed remotely.
    +torch.save(model.state_dict(), "pytorch_mnist/mnist_mlp.pt")
    +
    +
    + +

    Inference Code

      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    from PIL import Image
    +import log
    +from model_service.pytorch_model_service import PTServingBaseService
    +import torch.nn.functional as F
    +
    +import torch.nn as nn
    +import torch
    +import json
    +
    +import numpy as np
    +
    +logger = log.getLogger(__name__)
    +
    +import torchvision.transforms as transforms
    +
    +# Define model preprocessing.
    +infer_transformation = transforms.Compose([
    +    transforms.Resize((28,28)),
    +    # Transform to a PyTorch tensor.
    +    transforms.ToTensor()
    +])
    +
    +
    +import os
    +
    +
    +class PTVisionService(PTServingBaseService):
    +
    +    def __init__(self, model_name, model_path):
    +        # Call the constructor of the parent class.
    +        super(PTVisionService, self).__init__(model_name, model_path)
    +        # Call the customized function to load the model.
    +        self.model = Mnist(model_path)
    +         # Load tags.
    +        self.label = [0,1,2,3,4,5,6,7,8,9]
    +        # Labels can also be loaded by label file.
    +        # Store the label.json file in the model directory. The following information is read:
    +        dir_path = os.path.dirname(os.path.realpath(self.model_path))
    +        with open(os.path.join(dir_path, 'label.json')) as f:
    +            self.label = json.load(f)
    +
    +
    +    def _preprocess(self, data):
    +
    +        preprocessed_data = {}
    +        for k, v in data.items():
    +            input_batch = []
    +            for file_name, file_content in v.items():
    +                with Image.open(file_content) as image1:
    +                    # Gray processing
    +                    image1 = image1.convert("L")
    +                    if torch.cuda.is_available():
    +                        input_batch.append(infer_transformation(image1).cuda())
    +                    else:
    +                        input_batch.append(infer_transformation(image1))
    +            input_batch_var = torch.autograd.Variable(torch.stack(input_batch, dim=0), volatile=True)
    +            print(input_batch_var.shape)
    +            preprocessed_data[k] = input_batch_var
    +
    +        return preprocessed_data
    +
    +    def _postprocess(self, data):
    +        results = []
    +        for k, v in data.items():
    +            result = torch.argmax(v[0])
    +            result = {k: self.label[result]}
    +            results.append(result)
    +        return results
    +
    +class Net(nn.Module):
    +    def __init__(self):
    +        super(Net, self).__init__()
    +        self.hidden1 = nn.Linear(784, 5120, bias=False)
    +        self.output = nn.Linear(5120, 10, bias=False)
    +
    +    def forward(self, x):
    +        x = x.view(x.size()[0], -1)
    +        x = F.relu((self.hidden1(x)))
    +        x = F.dropout(x, 0.2)
    +        x = self.output(x)
    +        return F.log_softmax(x)
    +
    +
    +
    +def Mnist(model_path, **kwargs):
    +    # Generate a network.
    +    model = Net()
    +    # Load the model.
    +    if torch.cuda.is_available():
    +        device = torch.device('cuda')
    +        model.load_state_dict(torch.load(model_path, map_location="cuda:0"))
    +    else:
    +        device = torch.device('cpu')
    +        model.load_state_dict(torch.load(model_path, map_location=device))
    +    # CPU or GPU mapping
    +    model.to(device)
    +    # Declare an inference mode.
    +    model.eval()
    +
    +    return model
    +
    +
    + + + + +Parent topic: Examples of Custom Scripts + + + diff --git a/modelarts/umn/temp/real-time_services.tmp b/modelarts/umn/temp/real-time_services.tmp new file mode 100644 index 000000000..a3af1f3b0 --- /dev/null +++ b/modelarts/umn/temp/real-time_services.tmp @@ -0,0 +1,21 @@ + + +

    Real-Time Services

    + + + + + +Parent topic: Model Deployment + + + diff --git a/modelarts/umn/temp/related_services.tmp b/modelarts/umn/temp/related_services.tmp new file mode 100644 index 000000000..53034b91c --- /dev/null +++ b/modelarts/umn/temp/related_services.tmp @@ -0,0 +1,18 @@ + + +

    Related Services

    +

    OBS

    ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object Storage Service Console Function Overview.

    + +

    CCE

    ModelArts uses Cloud Container Engine (CCE) to deploy models as real-time services. CCE enables high concurrency and provides elastic scaling. For more information about CCE, see Cloud Container Engine User Guide.

    + +

    SWR

    To use an AI framework that is not supported by ModelArts, use SoftWare Repository for Container (SWR) to customize an image and import the image to ModelArts for training or inference. For more details, see .

    + +

    Cloud Eye

    ModelArts uses Cloud Eye to monitor online services and model loads in real time and send alarms and notifications automatically. For details about Cloud Eye, see Cloud Eye User Guide.

    + + + + +Parent topic: Service Overview + + + diff --git a/modelarts/umn/temp/resource_pools.tmp b/modelarts/umn/temp/resource_pools.tmp new file mode 100644 index 000000000..8e1588e0f --- /dev/null +++ b/modelarts/umn/temp/resource_pools.tmp @@ -0,0 +1,115 @@ + + +

    Resource Pools

    +

    ModelArts Resource Pools

    When using ModelArts to implement AI Development Lifecycle, you can use two different resource pools to train and deploy models.

    + + +

    Dedicated Resource Pool

    • Dedicated resource pools can be used in the following jobs and tasks: notebook instances, training, TensorBoard, and deployment.
    • Dedicated resource pools are classified into two types: Dedicated for Development/Training and Dedicated for Service Deployment. The Dedicated for Development/Training type can be used only for notebook instances, training, and TensorBoard. The Dedicated for Service Deployment type can be used only for model deployment.
    • Dedicated resource pools are available only when they are in the Running status. If a dedicated resource pool is unavailable or abnormal, rectify the fault before using it.
    + +

    Creating a Dedicated Resource Pool

    1. Log in to the ModelArts management console and choose Dedicated Resource Pools on the left.
    2. On the Dedicated Resource Pools page, select Dedicated for Development/Training or Dedicated for Service Deployment.
    3. Click Create in the upper left corner. The page for creating a dedicated resource pool is displayed.
    4. Set the parameters on the page. For details about how to set parameters, see Table 1 and Table 2. +.. _modelarts_23_0076__en-us_topic_0143244658_table1073325155617: + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameters of the Dedicated for Development/Training type

      Parameter

      +

      Description

      +

      Resource Type

      +

      The default value is and cannot be changed.

      +

      Name

      +

      Name of a dedicated resource pool.

      +

      The value can contain letters, digits, hyphens (-), and underscores (_).

      +

      Description

      +

      Brief description of a dedicated resource pool.

      +

      Nodes

      +

      Select the number of nodes in a dedicated resource pool. More nodes mean higher computing performance.

      +

      Specifications

      +

      Required specifications. The GPU delivers better performance, and the CPU is more cost-effective. If a flavor is sold out, you can purchase it again only after other users delete the resource pool.

      +
      + + +.. _modelarts_23_0076__en-us_topic_0143244658_table199892206411: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Parameters of the Dedicated for Service Deployment type

      Parameter

      +

      Description

      +

      Resource Type

      +

      The default value is Dedicated for Service Deployment and cannot be changed.

      +

      Name

      +

      Name of a dedicated resource pool.

      +

      The value can contain letters, digits, hyphens (-), and underscores (_).

      +

      Description

      +

      Brief description of a dedicated resource pool.

      +

      Custom Network Configuration

      +

      If you enable Custom Network Configuration, the service instance runs on the specified network and can communicate with other cloud service resource instances on the network. If you do not enable Custom Network Configuration, ModelArts allocates a dedicated network to each user and isolates users from each other.

      +

      If you enable Custom Network Configuration, set VPC, Subnet, and Security Group. If no network is available, go to the VPC service and create a network. .

      +

      AZ

      +

      You can select Random, AZ 1, AZ 2, or AZ 3 based on site requirements. An AZ is a physical region where resources use independent power supplies and networks. AZs are physically isolated but interconnected through an internal network. To enhance workload availability, create nodes in different AZs.

      +

      Nodes

      +

      Select the number of nodes in a dedicated resource pool. More nodes mean higher computing performance.

      +

      Specifications

      +

      Required specifications. The GPU delivers better performance.

      + +
      + +
    5. After confirming that the specifications are correct, create a dedicated resource pool as prompted. After a dedicated resource pool is created, its status changes to Running.
    + +

    Scaling a Dedicated Resource Pool

    After a dedicated resource pool is used for a period of time, you can scale out or in the capacity of the resource pool by increasing or decreasing the number of nodes.

    +

    The procedure for scaling is as follows:

    +
    1. Go to the dedicated resource pool management page, locate the row that contains the desired dedicated resource pool, and click Scale in the Operation column.
    2. On the scaling page, increase or decrease the number of nodes. Increasing the node quantity scales out the resource pool whereas decreasing the node quantity scales in the resource pool. Scale the capacity based on service requirements.
      • During capacity expansion,
      • During capacity reduction, delete the target nodes in the Operation column. To reduce one node, you need to switch off the node in Node List to delete the node.
      +
    3. Click Submit. After the request is submitted, the dedicated resource pool management page is displayed.
    + +

    Deleting a Dedicated Resource Pool

    If a dedicated resource pool is no longer needed during AI service development, you can delete the resource pool to release resources.

    +
    • After a dedicated resource pool is deleted, the training jobs, notebook instances, and deployment that depend on the resource pool are unavailable. A dedicated resource pool cannot be restored after being deleted. Exercise caution when deleting a dedicated resource pool.
    + +
    1. Go to the dedicated resource pool management page, locate the row that contains the desired dedicated resource pool, and click Delete in the Operation column.
    2. In the dialog box that is displayed, click OK.
    + + + diff --git a/modelarts/umn/temp/scikit_learn.tmp b/modelarts/umn/temp/scikit_learn.tmp new file mode 100644 index 000000000..3673de18a --- /dev/null +++ b/modelarts/umn/temp/scikit_learn.tmp @@ -0,0 +1,107 @@ + + +

    Scikit Learn

    +

    Training and Saving a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    import json
    +import pandas as pd
    +from sklearn.datasets import load_iris
    +from sklearn.model_selection import train_test_split
    +from sklearn.linear_model import LogisticRegression
    +from sklearn.externals import joblib
    +iris = pd.read_csv('/data/iris.csv')
    +X = iris.drop(['virginica'],axis=1)
    +y = iris[['virginica']]
    +# Create a LogisticRegression instance and train model
    +logisticRegression = LogisticRegression(C=1000.0, random_state=0)
    +logisticRegression.fit(X,y)
    +# Save model to local path
    +joblib.dump(logisticRegression, '/tmp/sklearn.m')
    +
    +
    +

    After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publishing. For details about the definition method, see Model Package Specifications.

    + +

    Inference Code

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    # coding:utf-8
    +import collections
    +import json
    +from sklearn.externals import joblib
    +from model_service.python_model_service import XgSklServingBaseService
    +
    +class user_Service(XgSklServingBaseService):
    +
    +    # request data preprocess
    +    def _preprocess(self, data):
    +        list_data = []
    +        json_data = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        for element in json_data["data"]["req_data"]:
    +            array = []
    +            for each in element:
    +                array.append(element[each])
    +                list_data.append(array)
    +        return list_data
    +
    +    # predict
    +    def _inference(self, data):
    +        sk_model = joblib.load(self.model_path)
    +        pre_result = sk_model.predict(data)
    +        pre_result = pre_result.tolist()
    +        return pre_result
    +
    +    # predict result process
    +    def _postprocess(self,data):
    +        resp_data = []
    +        for element in data:
    +            resp_data.append({"predictresult": element})
    +        return resp_data
    +
    +
    + + + + +Parent topic: Examples of Custom Scripts + + + diff --git a/modelarts/umn/temp/service_deployment.tmp b/modelarts/umn/temp/service_deployment.tmp new file mode 100644 index 000000000..484352a51 --- /dev/null +++ b/modelarts/umn/temp/service_deployment.tmp @@ -0,0 +1,19 @@ + + +

    Service Deployment

    + + + + + +Parent topic: FAQs + + + diff --git a/modelarts/umn/temp/service_overview.tmp b/modelarts/umn/temp/service_overview.tmp new file mode 100644 index 000000000..1aa8c7752 --- /dev/null +++ b/modelarts/umn/temp/service_overview.tmp @@ -0,0 +1,26 @@ + + + +

    Service Overview

    + + +

    + + + + + + + + diff --git a/modelarts/umn/temp/setting_alarm_rules.tmp b/modelarts/umn/temp/setting_alarm_rules.tmp new file mode 100644 index 000000000..48d7666a5 --- /dev/null +++ b/modelarts/umn/temp/setting_alarm_rules.tmp @@ -0,0 +1,17 @@ + + +

    Setting Alarm Rules

    +

    Scenario

    Setting alarm rules allows you to customize the monitored objects and notification policies so that you can know the status of ModelArts real-time services and models in a timely manner.

    +

    An alarm rule includes the alarm rule name, monitored object, metric, threshold, monitoring interval, and whether to send a notification. This section describes how to set alarm rules for ModelArts services and models.

    + +

    Prerequisites

    You have created an ModelArts real-time service.

    + +

    Procedure

    1. Log in to the management console.
    2. Click Service List. Under Management & Deployment, click Cloud Eye.
    3. In the left navigation pane, choose Cloud Service Monitoring > ModelArts.
    4. Select a real-time service for which you want to create an alarm rule and click Create Alarm Rule in the Operation column.
    5. On the Create Alarm Rule page, create an alarm rule for ModelArts real-time services and models as prompted.
    6. After the setting is complete, click Create. When an alarm that meets the rule is generated, the system automatically sends a notification.
    + + + + +Parent topic: Monitoring + + + diff --git a/modelarts/umn/temp/sound_classification.tmp b/modelarts/umn/temp/sound_classification.tmp new file mode 100644 index 000000000..514b9a772 --- /dev/null +++ b/modelarts/umn/temp/sound_classification.tmp @@ -0,0 +1,49 @@ + + +

    Sound Classification

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files in batches by one click. In addition, you can modify the labels of audio files, or remove their labels and label the audio files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Synchronizing the Data Source

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    + +

    Labeling Audio Files

    The dataset details page displays the labeled and unlabeled audio files. The Unlabeled tab page is displayed by default. Click on the left of the audio to preview the audio.

    +
    1. On the Unlabeled tab page, select the audio files to be labeled.
      • Manual selection: In the audio list, click the target audio. If the blue check box is displayed in the upper right corner, the audio is selected. You can select multiple audio files of the same type and label them together.
      • Batch selection: If all audio files of the current page belong to one type, you can click Select Images on Current Page in the upper right corner of the list to select all the audio files on the page.
      +
    2. Add labels.
      1. In the right pane, set a label name in the Label text box.

        Method 1 (the required label already exists): In the right pane, select a shortcut from the Shortcut drop-down list, select an existing label name from the Label text box, and click OK.

        +

        Method 2 (adding a label): In the right pane, select a shortcut from the Shortcut drop-down list, and enter a new label name in the Label text box.

        +
      2. The selected audio files are automatically moved to the Labeled tab page. On the Unlabeled tab page, the labeling information is updated along with the labeling process, including the added label names and the number of audio files corresponding to each label.
      +

      Shortcut key description: After specifying a shortcut key for a label, you can select an audio file and press the shortcut key to add a label for the audio file. Example: Specify 1 as the shortcut key for the aa label. Select one or more files and press 1 during data labeling. A message is displayed, asking you whether to label the files with aa. Click OK.

      +

      Each label has a shortcut key. A shortcut key cannot be specified for different labels. Shortcut keys can greatly improve the labeling efficiency.

      + +
    + +

    Viewing the Labeled Audio Files

    On the dataset details page, click the Labeled tab to view the list of the labeled audio files. Click an audio file. You can view the label information about the audio file in the File Labels area on the right.

    + +

    Modifying Labels

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on audio

      On the data labeling page, click the Labeled tab. Select one or more audio files to be modified from the audio list. Modify the label in the label details area on the right.

      +
      • Modifying a label: In the File Labels area, click the edit icon in the Operation column, enter the correct label name in the text box, and click the check mark to complete the modification.
      • Deleting a label: In the File Labels area, click the delete icon in the Operation column to delete the label.
      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +Figure 1 Information about all labels
      +
      • Modifying a label: Click the editing icon in the Operation column. In the dialog box that is displayed, enter the new label name and click OK. After the modification, the new label applies to the audio files that contain the original label.
      • Deleting a label: Click the deletion icon in the Operation column. In the displayed dialog box, select the object to be deleted as prompted and click OK.
      +
    + +

    Adding Audio Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add audio files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add Audio in the upper left corner.
    2. In the Add Audio dialog box that is displayed, click Add Audio.

      Select the audio files to be uploaded in the local environment. Only WAV audio files are supported. The size of an audio file cannot exceed 4 MB. The total size of audio files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add Audio dialog box, click OK.

      The audio files you add will be automatically displayed on the Unlabeled tab page. In addition, the audio files are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    + +

    Deleting Audio Files

    You can quickly delete the audio files you want to discard.

    +

    On the Unlabeled or Labeled tab page, select the audio files to be deleted one by one or tick Select Images on Current Page to select all audio files on the page, and then click Delete File in the upper left corner. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the audio files.

    +

    If a tick is displayed in the upper right corner of an audio file, the audio file is selected. If no audio file is selected on the page, the Delete File button is unavailable.

    +

    If you select Delete source files, audio files stored in the corresponding OBS directory will be deleted when you delete the selected audio files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    + + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/specifications_for_compiling_model_inference_code.tmp b/modelarts/umn/temp/specifications_for_compiling_model_inference_code.tmp new file mode 100644 index 000000000..9d4dd9f1a --- /dev/null +++ b/modelarts/umn/temp/specifications_for_compiling_model_inference_code.tmp @@ -0,0 +1,671 @@ + + +

    Specifications for Compiling Model Inference Code

    +

    This section describes how to compile model inference code in ModelArts. The following also provides an example of inference code for the TensorFlow engine and an example of customizing inference logic in an inference script.

    +

    Specifications for Compiling Inference Code

    1. All custom Python code must be inherited from the BaseService class. Table 1 lists the import statements of different types of model parent classes. +.. _modelarts_23_0093__en-us_topic_0172466150_table55021545175412: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Import statements of the BaseService class

      Model Type

      +

      Parent Class

      +

      Import Statement

      +

      TensorFlow

      +

      TfServingBaseService

      +

      from model_service.tfserving_model_service import TfServingBaseService

      +

      MXNet

      +

      MXNetBaseService

      +

      from mms.model_service.mxnet_model_service import MXNetBaseService

      +

      PyTorch

      +

      PTServingBaseService

      +

      from model_service.pytorch_model_service import PTServingBaseService

      +

      Pyspark

      +

      SparkServingBaseService

      +

      from model_service.spark_model_service import SparkServingBaseService

      +

      Caffe

      +

      CaffeBaseService

      +

      from model_service.caffe_model_service import CaffeBaseService

      +

      XGBoost

      +

      XgSklServingBaseService

      +

      from model_service.python_model_service import XgSklServingBaseService

      +

      Scikit_Learn

      +

      XgSklServingBaseService

      +

      from model_service.python_model_service import XgSklServingBaseService

      +

      MindSpore

      +

      SingleNodeService

      +

      from model_service.model_service import SingleNodeService

      +
      + +
    2. The following methods can be rewritten: +.. _modelarts_23_0093__en-us_topic_0172466150_table119897712529: + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Methods to be rewritten

      Method

      +

      Description

      +

      __init__(self, model_name, model_path)

      +

      Initialization method, which is suitable for models created based on deep learning frameworks. Models and labels are loaded using this method. This method must be rewritten for models based on PyTorch and Caffe to implement the model loading logic.

      +

      __init__(self, model_path)

      +

      Initialization method, which is suitable for models created based on machine learning frameworks. The model path (self.model_path) is initialized using this method. In Spark_MLlib, this method also initializes SparkSession (self.spark).

      +

      _preprocess(self, data)

      +

      Preprocess method, which is called before an inference request and is used to convert the original request data of an API into the expected input data of a model

      +

      _inference(self, data)

      +

      Inference request method. You are not advised to rewrite the method because once the method is rewritten, the built-in inference process of ModelArts will be overwritten and the custom inference logic will run.

      +

      _postprocess(self, data)

      +

      Postprocess method, which is called after an inference request is complete and is used to convert the model output to the API output

      +
      + +
      • You can choose to rewrite the preprocess and postprocess methods to implement preprocessing of the API input and postprocessing of the inference output.
      • Rewriting the init method of the BaseService inheritance class may cause a model to run abnormally.
      + +
    3. The attribute that can be used is the local path where the model resides. The attribute name is self.model_path. In addition, PySpark-based models can use self.spark to obtain the SparkSession object in customize_service.py.

      An absolute path is required for reading files in the inference code. You can obtain the absolute path of the model from the self.model_path attribute.

      +
      • When TensorFlow, Caffe, or MXNet is used, self.model_path indicates the path of the model file. See the following example:
        # Store the label.json file in the model directory. The following information is read:
        +with open(os.path.join(self.model_path, 'label.json')) as f:
        +    self.label = json.load(f)
        +
      +
      • When PyTorch, Scikit_Learn, or PySpark is used, self.model_path indicates the path of the model file. See the following example:
        # Store the label.json file in the model directory. The following information is read:
        +dir_path = os.path.dirname(os.path.realpath(self.model_path))
        +with open(os.path.join(dir_path, 'label.json')) as f:
        +    self.label = json.load(f)
        +
      + +
    4. Two types of content-type APIs can be used for inputting data: multipart/form-data and application/json
      • multipart/form-data request
        curl -X POST \
        +  <modelarts-inference-endpoint> \
        +  -F image1=@cat.jpg \
        +  -F images2=@horse.jpg
        +

        The corresponding input data is as follows:

        +
        [
        +   {
        +      "image1":{
        +         "cat.jpg":"<cat..jpg file io>"
        +      }
        +   },
        +   {
        +      "image2":{
        +         "horse.jpg":"<horse.jpg file io>"
        +      }
        +   }
        +]
        +
      • application/json request
         curl -X POST \
        +   <modelarts-inference-endpoint> \
        +   -d '{
        +    "images":"base64 encode image"
        +    }'
        +

        The corresponding input data is python dict.

        +
         {
        +    "images":"base64 encode image"
        +
        + }
        +
      +
    + +

    TensorFlow Inference Script Example

    The following is an example of TensorFlow MnistService.
    • Inference code
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      from PIL import Image
      +import numpy as np
      +from model_service.tfserving_model_service import TfServingBaseService
      +
      +class mnist_service(TfServingBaseService):
      +
      +    def _preprocess(self, data):
      +        preprocessed_data = {}
      +
      +        for k, v in data.items():
      +            for file_name, file_content in v.items():
      +                image1 = Image.open(file_content)
      +                image1 = np.array(image1, dtype=np.float32)
      +                image1.resize((1, 784))
      +                preprocessed_data[k] = image1
      +
      +        return preprocessed_data
      +
      +    def _postprocess(self, data):
      +
      +        infer_output = {}
      +
      +        for output_name, result in data.items():
      +
      +            infer_output["mnist_result"] = result[0].index(max(result[0]))
      +
      +        return infer_output
      +
      +
      +
    • Request
      curl -X POST \ Real-time service address \ -F images=@test.jpg
      +
    • Response
      {"mnist_result": 7}
      +
    + +

    The preceding code example resizes images imported to the user's form to adapt to the model input shape. The 32×32 image is read from the Pillow library and resized to 1×784 to match the model input. In subsequent processing, convert the model output into a list for the RESTful API to display.

    + +

    XGBoost Inference Script Example

    # coding:utf-8
    +import collections
    +import json
    +import xgboost as xgb
    +from model_service.python_model_service import XgSklServingBaseService
    +
    +
    +class user_Service(XgSklServingBaseService):
    +
    +    # request data preprocess
    +    def _preprocess(self, data):
    +        list_data = []
    +        json_data = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        for element in json_data["data"]["req_data"]:
    +            array = []
    +            for each in element:
    +                array.append(element[each])
    +                list_data.append(array)
    +        return list_data
    +
    +    #   predict
    +    def _inference(self, data):
    +        xg_model = xgb.Booster(model_file=self.model_path)
    +        pre_data = xgb.DMatrix(data)
    +        pre_result = xg_model.predict(pre_data)
    +        pre_result = pre_result.tolist()
    +        return pre_result
    +
    +    # predict result process
    +    def _postprocess(self, data):
    +        resp_data = []
    +        for element in data:
    +            resp_data.append({"predict_result": element})
    +        return resp_data
    +

    + +

    Inference Script Example of the Custom Inference Logic

    First, define a dependency package in the configuration file. For details, see Example of a Model Configuration File Using a Custom Dependency Package. Then, use the following code example to implement the loading and inference of the model in saved_model format.

    +
      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    # -*- coding: utf-8 -*-
    +import json
    +import os
    +import threading
    +
    +import numpy as np
    +import tensorflow as tf
    +from PIL import Image
    +
    +from model_service.tfserving_model_service import TfServingBaseService
    +import logging
    +
    +logger = logging.getLogger(__name__)
    +
    +
    +class MnistService(TfServingBaseService):
    +
    +    def __init__(self, model_name, model_path):
    +        self.model_name = model_name
    +        self.model_path = model_path
    +        self.model_inputs = {}
    +        self.model_outputs = {}
    +
    +       # The label file can be loaded here and used in the post-processing function.
    +        # Directories for storing the label.txt file on OBS and in the model package
    +
    +        # with open(os.path.join(self.model_path, 'label.txt')) as f:
    +        #     self.label = json.load(f)
    +
    +        # Load the model in saved_model format in non-blocking mode to prevent blocking timeout.
    +        thread = threading.Thread(target=self.get_tf_sess)
    +        thread.start()
    +
    +    def get_tf_sess(self):
    +        # Load the model in saved_model format.
    +
    +       # The session will be reused. Do not use the with statement.
    +        sess = tf.Session(graph=tf.Graph())
    +        meta_graph_def = tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], self.model_path)
    +        signature_defs = meta_graph_def.signature_def
    +
    +        self.sess = sess
    +
    +        signature = []
    +
    +        # only one signature allowed
    +        for signature_def in signature_defs:
    +            signature.append(signature_def)
    +        if len(signature) == 1:
    +            model_signature = signature[0]
    +        else:
    +            logger.warning("signatures more than one, use serving_default signature")
    +            model_signature = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
    +
    +        logger.info("model signature: %s", model_signature)
    +
    +        for signature_name in meta_graph_def.signature_def[model_signature].inputs:
    +            tensorinfo = meta_graph_def.signature_def[model_signature].inputs[signature_name]
    +            name = tensorinfo.name
    +            op = self.sess.graph.get_tensor_by_name(name)
    +            self.model_inputs[signature_name] = op
    +
    +        logger.info("model inputs: %s", self.model_inputs)
    +
    +        for signature_name in meta_graph_def.signature_def[model_signature].outputs:
    +            tensorinfo = meta_graph_def.signature_def[model_signature].outputs[signature_name]
    +            name = tensorinfo.name
    +            op = self.sess.graph.get_tensor_by_name(name)
    +
    +            self.model_outputs[signature_name] = op
    +
    +        logger.info("model outputs: %s", self.model_outputs)
    +
    +    def _preprocess(self, data):
    +        # Two request modes using HTTPS
    +        # 1. The request in form-data file format is as follows: data = {"Request key value":{"File name":<File io>}}
    +       # 2. Request in JSON format is as follows: data = json.loads("JSON body transferred by the API")
    +        preprocessed_data = {}
    +
    +        for k, v in data.items():
    +            for file_name, file_content in v.items():
    +                image1 = Image.open(file_content)
    +                image1 = np.array(image1, dtype=np.float32)
    +                image1.resize((1, 28, 28))
    +                preprocessed_data[k] = image1
    +
    +        return preprocessed_data
    +
    +    def _inference(self, data):
    +
    +        feed_dict = {}
    +        for k, v in data.items():
    +            if k not in self.model_inputs.keys():
    +                logger.error("input key %s is not in model inputs %s", k, list(self.model_inputs.keys()))
    +                raise Exception("input key %s is not in model inputs %s" % (k, list(self.model_inputs.keys())))
    +            feed_dict[self.model_inputs[k]] = v
    +
    +        result = self.sess.run(self.model_outputs, feed_dict=feed_dict)
    +        logger.info('predict result : ' + str(result))
    +
    +        return result
    +
    +    def _postprocess(self, data):
    +        infer_output = {"mnist_result": []}
    +        for output_name, results in data.items():
    +
    +            for result in results:
    +                infer_output["mnist_result"].append(np.argmax(result))
    +
    +        return infer_output
    +
    +    def __del__(self):
    +        self.sess.close()
    +
    +
    + +

    MindSpore Inference Script Example

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    import threading
    +
    +import mindspore
    +import mindspore.nn as nn
    +import numpy as np
    +import logging
    +from mindspore import Tensor, context
    +from mindspore.common.initializer import Normal
    +from mindspore.train.serialization import load_checkpoint, load_param_into_net
    +from model_service.model_service import SingleNodeService
    +from PIL import Image
    +
    +logger = logging.getLogger(__name__)
    +logger.setLevel(logging.INFO)
    +
    +
    +
    +context.set_context(mode=context.GRAPH_MODE, device_target="Ascend")
    +
    +
    +class LeNet5(nn.Cell):
    +    """Lenet network structure."""
    +
    +    # define the operator required
    +    def __init__(self, num_class=10, num_channel=1):
    +        super(LeNet5, self).__init__()
    +        self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid')
    +        self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid')
    +        self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02))
    +        self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02))
    +        self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02))
    +        self.relu = nn.ReLU()
    +        self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2)
    +        self.flatten = nn.Flatten()
    +
    +    # use the preceding operators to construct networks
    +    def construct(self, x):
    +        x = self.max_pool2d(self.relu(self.conv1(x)))
    +        x = self.max_pool2d(self.relu(self.conv2(x)))
    +        x = self.flatten(x)
    +        x = self.relu(self.fc1(x))
    +        x = self.relu(self.fc2(x))
    +        x = self.fc3(x)
    +        return x
    +
    +
    +class mnist_service(SingleNodeService):
    +    def __init__(self, model_name, model_path):
    +        self.model_name = model_name
    +        self.model_path = model_path
    +        logger.info("self.model_name:%s self.model_path: %s", self.model_name,
    +                    self.model_path)
    +        self.network = None
    +        # Load the model in non-blocking mode to prevent blocking timeout.
    +        thread = threading.Thread(target=self.load_model)
    +        thread.start()
    +
    +    def load_model(self):
    +        logger.info("load network ... \n")
    +        self.network = LeNet5()
    +        ckpt_file = self.model_path + "/checkpoint_lenet_1-1_1875.ckpt"
    +        logger.info("ckpt_file: %s", ckpt_file)
    +        param_dict = load_checkpoint(ckpt_file)
    +        load_param_into_net(self.network, param_dict)
    +        logger.info("load network successfully ! \n")
    +
    +    def _preprocess(self, input_data):
    +        preprocessed_result = {}
    +        images = []
    +        for k, v in input_data.items():
    +            for file_name, file_content in v.items():
    +                image1 = Image.open(file_content)
    +                image1 = image1.resize((1, 32 * 32))
    +                image1 = np.array(image1, dtype=np.float32)
    +                images.append(image1)
    +
    +        images = np.array(images, dtype=np.float32)
    +        logger.info(images.shape)
    +        images.resize([len(input_data), 1, 32, 32])
    +        logger.info("images shape: %s", images.shape)
    +        inputs = Tensor(images, mindspore.float32)
    +        preprocessed_result['images'] = inputs
    +
    +        return preprocessed_result
    +
    +    def _inference(self, preprocessed_result):
    +        inference_result = self.network(preprocessed_result['images'])
    +        return inference_result
    +
    +    def _postprocess(self, inference_result):
    +        return str(inference_result)
    +
    +
    + + + + +Parent topic: Model Package Specifications + + + diff --git a/modelarts/umn/temp/specifications_for_compiling_the_model_configuration_file.tmp b/modelarts/umn/temp/specifications_for_compiling_the_model_configuration_file.tmp new file mode 100644 index 000000000..d6c8bf843 --- /dev/null +++ b/modelarts/umn/temp/specifications_for_compiling_the_model_configuration_file.tmp @@ -0,0 +1,1354 @@ + + +

    Specifications for Compiling the Model Configuration File

    +

    A model developer needs to compile a configuration file when publishing a model. The model configuration file describes the model usage, computing framework, precision, inference code dependency package, and model API.

    +

    Configuration File Format

    The configuration file is in JSON format. Table 1 describes the parameters.

    + +.. _modelarts_23_0092__en-us_topic_0172466149_table7143191919436: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    model_algorithm

    +

    Yes

    +

    String

    +

    Model algorithm, which is set by the model developer to help model users understand the usage of the model. The value must start with a letter and contain no more than 36 characters. Chinese characters and special characters (&!'\"<>=) are not allowed. Common model algorithms include image_classification (image classification), object_detection (object detection), and predict_analysis (prediction analysis).

    +

    model_type

    +

    Yes

    +

    String

    +

    Model AI engine, which indicates the computing framework used by a model. The options are TensorFlow, MXNet, Spark_MLlib, Caffe, Scikit_Learn, XGBoost, PyTorch, MindSpore, and Image.

    +

    Image is not a common AI framework. When model_type is set to Image, a model is imported from a custom image. In this case, swr_location is mandatory. For details about how to make Image images, see Custom Image Specifications.

    +

    runtime

    +

    No

    +

    String

    +

    Model runtime environment. Python 3.6 is used by default. The value of runtime depends on the value of model_type. If model_type is set to Image, you do not need to set runtime. If model_type is set to another frequently-used framework, select the engine and development environment. For details about the supported running environments, see Table 1.

    +

    If your model needs to run on a specified CPU or GPU, select the runtime based on the suffix information. If the runtime does not contain the CPU or GPU information, read the description of each runtime in Table 1.

    +

    swr_location

    +

    No

    +

    String

    +

    SWR image address.

    +
    • If you import a custom image model from a container image, you do not need to set swr_location.
    • If you import a custom image model from OBS (not recommended) and set model_type to Image, you must set swr_location. swr_location indicates the address of the Docker image on SWR, indicating that the Docker image on SWR is used to publish the model.
    +

    metrics

    +

    No

    +

    Object

    +

    Model precision information, including the average value, recall rate, precision, and accuracy. For details about the metrics object structure, see Table 2.

    +

    This parameter is used only to display model information and is optional.

    +

    apis

    +

    No

    +

    api array

    +

    Format of the requests received and returned by a model. The value is structure data.

    +

    It is the RESTful API array provided by a model. For details about the API data structure, see Table 3.

    +
    • When model_type is set to Image, that is, in the model scenario of a custom image, APIs with different paths can be declared in apis based on the request path exposed by the image.
    • When model_type is not Image, only one API whose request path is / can be declared in apis because the preconfigured AI engine exposes only one inference API whose request path is /.
    +

    dependencies

    +

    No

    +

    dependency array

    +

    Package on which the model inference code depends, which is structure data.

    +

    Model developers need to provide the package name, installation mode, and version constraints. Only the pip installation mode is supported. Table 6 describes the dependency array.

    +

    If the model package does not contain the customize_service.py file, you do not need to set this parameter. Dependency packages cannot be installed for custom image models.

    +

    health

    +

    No

    +

    health data structure

    +

    Configuration of an image health interface. This parameter is mandatory only when model_type is set to Image. For details about the health data structure, see Table 8.

    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table81712704511: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 metrics object description

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    f1

    +

    No

    +

    Number

    +

    F1 score. The value is rounded to 17 decimal places.

    +

    recall

    +

    No

    +

    Number

    +

    Recall rate. The value is rounded to 17 decimal places.

    +

    precision

    +

    No

    +

    Number

    +

    Precision. The value is rounded to 17 decimal places.

    +

    accuracy

    +

    No

    +

    Number

    +

    Accuracy. The value is rounded to 17 decimal places.

    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table1683418482455: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 api array

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    protocol

    +

    No

    +

    String

    +

    Request protocol. The default value is http. Set the parameter value to http or https based on your custom image. For details about other parameter, see Example of the Object Detection Model Configuration File.

    +

    url

    +

    No

    +

    String

    +

    Request path. The default value is a slash (/). For a custom image model (model_type is Image), set this parameter to the actual request path exposed in the image. For a non-custom image model (model_type is not Image), the URL can only be /.

    +

    method

    +

    No

    +

    String

    +

    Request method. The default value is POST.

    +

    request

    +

    No

    +

    Object

    +

    Request body. For details about the request structure, see Table 4.

    +

    response

    +

    No

    +

    Object

    +

    Response body. For details about the response structure, see Table 5.

    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table332913335466: + + + + + + + + + + + + + + + + + + +
    Table 4 request description

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    Content-type

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    Data is sent in a specified content format. The default value is application/json.

    +

    The options are as follows:

    +
    • application/json: sends JSON data.
    • multipart/form-data: uploads a file.
    + NOTE:

    For machine learning models, only application/json is supported.

    + +

    data

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    The request body is described in JSON schema.

    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table17521240184711: + + + + + + + + + + + + + + + + + + +
    Table 5 response description

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    Content-type

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    Data is sent in a specified content format. The default value is application/json.

    +

    The options are as follows:

    +
    • application/json: sends JSON data.
    • multipart/form-data: uploads a file.
    + NOTE:

    For machine learning models, only application/json is supported.

    + +

    data

    +

    Yes for real-time services

    +

    No for batch services

    +

    String

    +

    The response body is described in JSON schema.

    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table13709813144819: + + + + + + + + + + + + + + + + + + +
    Table 6 dependency array

    Parameter

    +

    Mandatory

    +

    Data Type

    +

    Description

    +

    installer

    +

    Yes

    +

    String

    +

    Installation method. Only pip is supported.

    +

    packages

    +

    Yes

    +

    package array

    +

    Dependency package collection. For details about the package structure array, see Table 7.

    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table47885356482: + + + + + + + + + + + + + + + + + + + + + + + +
    Table 7 package array

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    package_name

    +

    Yes

    +

    String

    +

    Dependency package name. Chinese characters and special characters (&!'"<>=) are not allowed.

    +

    package_version

    +

    No

    +

    String

    +

    Dependency package version. If the dependency package does not rely on the version number, leave this field blank. Chinese characters and special characters (&!'"<>=) are not allowed.

    +

    restraint

    +

    No

    +

    String

    +

    Version restriction. This parameter is mandatory only when package_version is configured. Possible values are EXACT, ATLEAST, and ATMOST.

    +
    • EXACT indicates that a specified version is installed.
    • ATLEAST indicates that the version of the installation package is not earlier than the specified version.
    • ATMOST indicates that the version of the installation package is not later than the specified version. NOTE:
      • If there are specific requirements on the version, preferentially use EXACT. If EXACT conflicts with the system installation packages, you can select ATLEAST.
      • If there is no specific requirement on the version, retain only the package_name parameter and leave restraint and package_version blank.
      + +
    +
    + + +.. _modelarts_23_0092__en-us_topic_0172466149_table115896191852: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 8 health data structure description

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    url

    +

    Yes

    +

    String

    +

    Request URL of the health check interface

    +

    protocol

    +

    No

    +

    String

    +

    Request protocol of the health check interface. Only HTTP is supported.

    +

    initial_delay_seconds

    +

    No

    +

    String

    +

    After an instance is started, a health check starts after seconds configured in initial_delay_seconds.

    +

    timeout_seconds

    +

    No

    +

    String

    +

    Health check timeout

    +
    + + +

    Example of the Object Detection Model Configuration File

    The following code uses the TensorFlow engine as an example. You can modify the model_type parameter based on the actual engine type.

    +
    • Model input

      Key: images

      +

      Value: image files

      +
    • Model output
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      ```
      +{
      +    "detection_classes": [
      +        "face",
      +        "arm"
      +    ],
      +    "detection_boxes": [
      +        [
      +            33.6,
      +            42.6,
      +            104.5,
      +            203.4
      +        ],
      +        [
      +            103.1,
      +            92.8,
      +            765.6,
      +            945.7
      +        ]
      +    ],
      +    "detection_scores": [0.99, 0.73]
      +}
      +```
      +
      +
      +
    • Configuration file
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      +63
      +64
      +65
      +66
      +67
      +68
      +69
      +70
      +71
      +72
      +73
      ```
      +{
      +    "model_type": "TensorFlow",
      +    "model_algorithm": "object_detection",
      +    "metrics": {
      +        "f1": 0.345294,
      +        "accuracy": 0.462963,
      +        "precision": 0.338977,
      +        "recall": 0.351852
      +    },
      +    "apis": [{
      +        "protocol": "http",
      +        "url": "/",
      +        "method": "post",
      +        "request": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "images": {
      +                        "type": "file"
      +                    }
      +                }
      +            }
      +        },
      +        "response": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "detection_classes": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "string"
      +                        }]
      +                    },
      +                    "detection_boxes": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "array",
      +                            "minItems": 4,
      +                            "maxItems": 4,
      +                            "items": [{
      +                                "type": "number"
      +                            }]
      +                        }]
      +                    },
      +                    "detection_scores": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "number"
      +                        }]
      +                    }
      +                }
      +            }
      +        }
      +    }],
      +    "dependencies": [{
      +        "installer": "pip",
      +        "packages": [{
      +                "restraint": "EXACT",
      +                "package_version": "1.15.0",
      +                "package_name": "numpy"
      +            },
      +            {
      +                "restraint": "EXACT",
      +                "package_version": "5.2.0",
      +                "package_name": "Pillow"
      +            }
      +        ]
      +    }]
      +}
      +```
      +
      +
      +
    + +

    Example of the Image Classification Model Configuration File

    The following code uses the TensorFlow engine as an example. You can modify the model_type parameter based on the actual engine type.

    +
    • Model input

      Key: images

      +

      Value: image files

      +
    • Model output
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +8
      +9
      ```
      +{
      +    "predicted_label": "flower",
      +    "scores": [
      +       ["rose", 0.99],
      +       ["begonia", 0.01]
      +    ]
      +}
      +```
      +
      +
      +
    • Configuration file
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      +63
      +64
      +65
      +66
      +67
      +68
      +69
      ```
      +{
      +    "model_type": "TensorFlow",
      +    "model_algorithm": "image_classification",
      +    "metrics": {
      +        "f1": 0.345294,
      +        "accuracy": 0.462963,
      +        "precision": 0.338977,
      +        "recall": 0.351852
      +    },
      +    "apis": [{
      +        "protocol": "http",
      +        "url": "/",
      +        "method": "post",
      +        "request": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "images": {
      +                        "type": "file"
      +                    }
      +                }
      +            }
      +        },
      +        "response": {
      +            "Content-type": "multipart/form-data",
      +            "data": {
      +                "type": "object",
      +                "properties": {
      +                    "predicted_label": {
      +                        "type": "string"
      +                    },
      +                    "scores": {
      +                        "type": "array",
      +                        "items": [{
      +                            "type": "array",
      +                            "minItems": 2,
      +                            "maxItems": 2,
      +                            "items": [
      +                                {
      +                                    "type": "string"
      +                                },
      +                                {
      +                                    "type": "number"
      +                                }
      +                            ]
      +                        }]
      +                    }
      +                }
      +            }
      +        }
      +    }],
      +    "dependencies": [{
      +        "installer": "pip",
      +        "packages": [{
      +                "restraint": "ATLEAST",
      +                "package_version": "1.15.0",
      +                "package_name": "numpy"
      +            },
      +            {
      +                "restraint": "",
      +                "package_version": "",
      +                "package_name": "Pillow"
      +            }
      +        ]
      +    }]
      +}
      +```
      +
      +
      +
    + +

    Example of the Predictive Analytics Model Configuration File

    The following code uses the TensorFlow engine as an example. You can modify the model_type parameter based on the actual engine type.

    +
    • Model input
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      ```
      +{
      +    "data": {
      +        "req_data": [
      +            {
      +                "buying_price": "high",
      +                "maint_price": "high",
      +                "doors": "2",
      +                "persons": "2",
      +                "lug_boot": "small",
      +                "safety": "low",
      +                "acceptability": "acc"
      +            },
      +            {
      +                "buying_price": "high",
      +                "maint_price": "high",
      +                "doors": "2",
      +                "persons": "2",
      +                "lug_boot": "small",
      +                "safety": "low",
      +                "acceptability": "acc"
      +            }
      +        ]
      +    }
      +}
      +```
      +
      +
      +
    • Model output
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      ```
      +{
      +    "data": {
      +        "resp_data": [
      +            {
      +                "predict_result": "unacc"
      +            },
      +            {
      +                "predict_result": "unacc"
      +            }
      +        ]
      +    }
      +}
      +```
      +
      +
      +
    • Configuration file
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      +63
      +64
      +65
      +66
      +67
      +68
      +69
      +70
      +71
      +72
      +73
      +74
      +75
      +76
      +77
      ```
      +{
      +    "model_type": "TensorFlow",
      +    "model_algorithm": "predict_analysis",
      +    "metrics": {
      +        "f1": 0.345294,
      +        "accuracy": 0.462963,
      +        "precision": 0.338977,
      +        "recall": 0.351852
      +    },
      +    "apis": [
      +        {
      +            "protocol": "http",
      +            "url": "/",
      +            "method": "post",
      +            "request": {
      +                "Content-type": "application/json",
      +                "data": {
      +                    "type": "object",
      +                    "properties": {
      +                        "data": {
      +                            "type": "object",
      +                            "properties": {
      +                                "req_data": {
      +                                    "items": [
      +                                        {
      +                                            "type": "object",
      +                                            "properties": {
      +                                            }
      +                                        }],
      +                                    "type": "array"
      +                                }
      +                            }
      +                        }
      +                    }
      +                }
      +            },
      +            "response": {
      +                "Content-type": "multipart/form-data",
      +                "data": {
      +                    "type": "object",
      +                    "properties": {
      +                        "data": {
      +                            "type": "object",
      +                            "properties": {
      +                                "resp_data": {
      +                                    "type": "array",
      +                                    "items": [
      +                                        {
      +                                            "type": "object",
      +                                            "properties": {
      +                                            }
      +                                        }]
      +                                }
      +                            }
      +                        }
      +                    }
      +                }
      +            }
      +        }],
      +    "dependencies": [
      +        {
      +            "installer": "pip",
      +            "packages": [
      +                {
      +                    "restraint": "EXACT",
      +                    "package_version": "1.15.0",
      +                    "package_name": "numpy"
      +                },
      +                {
      +                    "restraint": "EXACT",
      +                    "package_version": "5.2.0",
      +                    "package_name": "Pillow"
      +                }]
      +        }]
      +}
      +```
      +
      +
      +
    + +

    Example of the Custom Image Model Configuration File

    The model input and output are similar to those in Example of the Object Detection Model Configuration File.

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    {
    +    "model_algorithm": "image_classification",
    +    "model_type": "Image",
    +
    +    "metrics": {
    +        "f1": 0.345294,
    +        "accuracy": 0.462963,
    +        "precision": 0.338977,
    +        "recall": 0.351852
    +    },
    +    "apis": [{
    +        "protocol": "http",
    +        "url": "/",
    +        "method": "post",
    +        "request": {
    +            "Content-type": "multipart/form-data",
    +            "data": {
    +                "type": "object",
    +                "properties": {
    +                    "images": {
    +                        "type": "file"
    +                    }
    +                }
    +            }
    +        },
    +        "response": {
    +            "Content-type": "multipart/form-data",
    +            "data": {
    +                "type": "object",
    +                "required": [
    +                    "predicted_label",
    +                    "scores"
    +                ],
    +                "properties": {
    +                    "predicted_label": {
    +                        "type": "string"
    +                    },
    +                    "scores": {
    +                        "type": "array",
    +                        "items": [{
    +                            "type": "array",
    +                            "minItems": 2,
    +                            "maxItems": 2,
    +                            "items": [{
    +                                    "type": "string"
    +                                },
    +                                {
    +                                    "type": "number"
    +                                }
    +                            ]
    +                        }]
    +                    }
    +                }
    +            }
    +        }
    +    }]
    +}
    +
    +
    + +

    Example of the Machine Learning Model Configuration File

    The following uses XGBoost as an example:

    +
    • Model input
    +
    {
    +	"data": {
    +		"req_data": [{
    +			"sepal_length": 5,
    +			"sepal_width": 3.3,
    +			"petal_length": 1.4,
    +			"petal_width": 0.2
    +		}, {
    +			"sepal_length": 5,
    +			"sepal_width": 2,
    +			"petal_length": 3.5,
    +			"petal_width": 1
    +		}, {
    +			"sepal_length": 6,
    +			"sepal_width": 2.2,
    +			"petal_length": 5,
    +			"petal_width": 1.5
    +		}]
    +	}
    +}
    +
    • Model output
    +
    {
    +	"data": {
    +		"resp_data": [{
    +			"predict_result": "Iris-setosa"
    +		}, {
    +			"predict_result": "Iris-versicolor"
    +		}]
    +	}
    +}
    +
    • Configuration file
    +
    {
    +  "model_type": "XGBoost",
    +  "model_algorithm": "xgboost_iris_test",
    +  "runtime": "python2.7",
    +  "metrics": {
    +    "f1": 0.345294,
    +    "accuracy": 0.462963,
    +    "precision": 0.338977,
    +    "recall": 0.351852
    +  },
    +  "apis": [
    +    {
    +      "protocol": "http",
    +      "url": "/",
    +      "method": "post",
    +      "request": {
    +        "Content-type": "application/json",
    +        "data": {
    +          "type": "object",
    +          "properties": {
    +            "data": {
    +              "type": "object",
    +              "properties": {
    +                "req_data": {
    +                  "items": [
    +                    {
    +                      "type": "object",
    +                      "properties": {}
    +                    }
    +                  ],
    +                  "type": "array"
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "response": {
    +        "Content-type": "applicaton/json",
    +        "data": {
    +          "type": "object",
    +          "properties": {
    +            "resp_data": {
    +              "type": "array",
    +              "items": [
    +                {
    +                  "type": "object",
    +                  "properties": {
    +                    "predict_result": {
    +                      "type": "number"
    +                    }
    +                  }
    +                }
    +              ]
    +            }
    +          }
    +        }
    +      }
    +    }
    +  ]
    +}
    +

    + +

    Example of a Model Configuration File Using a Custom Dependency Package

    The following example defines the NumPy 1.16.4 dependency environment.

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    {
    +     "model_algorithm": "image_classification",
    +     "model_type": "TensorFlow",
    +     "runtime": "python3.6",
    +     "apis": [{
    +             "procotol": "http",
    +             "url": "/",
    +             "method": "post",
    +             "request": {
    +                 "Content-type": "multipart/form-data",
    +                 "data": {
    +                     "type": "object",
    +                     "properties": {
    +                         "images": {
    +                             "type": "file"
    +                         }
    +                     }
    +                 }
    +             },
    +             "response": {
    +                 "Content-type": "applicaton/json",
    +                 "data": {
    +                     "type": "object",
    +                     "properties": {
    +                         "mnist_result": {
    +                             "type": "array",
    +             "item": [{
    +                "type": "string"
    +                         }]
    +                         }
    +                     }
    +                 }
    +             }
    +         }
    +     ],
    +     "metrics": {
    +         "f1": 0.124555,
    +         "recall": 0.171875,
    +         "precision": 0.0023493892851938493,
    +         "accuracy": 0.00746268656716417
    +     },
    +    "dependencies": [{
    +        "installer": "pip",
    +        "packages": [{
    +                "restraint": "EXACT",
    +                "package_version": "1.16.4",
    +                "package_name": "numpy"
    +            }
    +        ]
    +    }]
    + }
    +
    +
    + + + + +Parent topic: Model Package Specifications + + + diff --git a/modelarts/umn/temp/specifications_for_custom_images_used_for_importing_models.tmp b/modelarts/umn/temp/specifications_for_custom_images_used_for_importing_models.tmp new file mode 100644 index 000000000..1d46fc17f --- /dev/null +++ b/modelarts/umn/temp/specifications_for_custom_images_used_for_importing_models.tmp @@ -0,0 +1,45 @@ + + +

    Specifications for Custom Images Used for Importing Models

    +

    When creating an image using locally developed models, ensure that they meet the specifications defined by ModelArts.

    +

    Specifications for Custom Images Used for Model Management

    • Custom images cannot contain malicious code.
    • The size of a custom image cannot exceed 30 GB.
    • External port of images

      The external service port of the image must be 8080. The inference interface must be consistent with the URL defined by apis in the config.json file. The inference interface can be directly accessed when the image is started. The following is an example of accessing the mnist image. The image contains the model trained with the mnist dataset. The model can identify handwritten digits in images. In this example, listen_ip indicates the IP address of the container.

      +
      • Sample request: curl -X POST \ http://{listen_ip}:8080/ \ -F images=@seven.jpg
      • Sample response
        {"mnist_result": 7}
        +
      +
    • Health check port

      A custom image must provide a health check interface for ModelArts to call. The health check interface is configured in the config.json file. For details, see the model configuration file compilation description. A sample health check interface is as follows:

      +
      • URI
        GET /health
        +
      • Sample request: curl -X GET \ http://{listen_ip}:8080/health
      • Sample response
        {"health": "true"}
        +
      • Status code +.. _modelarts_23_0219__en-us_topic_0212179953_table19701134515351: + + + + + + + + + + + +
        Table 1 Status code

        Status Code

        +

        Message

        +

        Description

        +

        200

        +

        OK

        +

        Successful request

        +
        + +
      +
    • Log file output

      To ensure that the log content can be displayed normally, the logs must be standard output.

      +
    • Image boot file

      To deploy a batch service, set the boot file of an image to /home/run.sh and use CMD to set the default boot path. The following is a sample Dockerfile.

      +

      CMD /bin/sh /home/run.sh

      +
    • Image dependencies

      To deploy a batch service, install component packages such as Python, JRE/JDK, and ZIP in the image.

      +
    + + + + +Parent topic: For Importing Models + + + diff --git a/modelarts/umn/temp/specifications_for_custom_images_used_for_training_jobs.tmp b/modelarts/umn/temp/specifications_for_custom_images_used_for_training_jobs.tmp new file mode 100644 index 000000000..789ddbc31 --- /dev/null +++ b/modelarts/umn/temp/specifications_for_custom_images_used_for_training_jobs.tmp @@ -0,0 +1,127 @@ + + +

    Specifications for Custom Images Used for Training Jobs

    +

    When creating an image using locally developed models and training scripts, ensure that they meet the specifications defined by ModelArts.

    +

    Specifications

    • Custom images cannot contain malicious code.
    • Part of content in the basic images cannot be changed, including all the files in /bin, /sbin, /usr, and /lib(64), some important configuration files in /etc, and the ModelArts tools in $HOME.
    • A file cannot be added whose owner is root and has permission setuid or setgid.
    • The size of a custom image cannot exceed 9.5 GB.
    +
    • To ensure that the log content can be displayed normally, the logs must be standard output.
    • The default user of a custom image must be the user whose UID is 1101.
    • Custom images can be developed based on basic ModelArts images. For details about the supported basic images, see Overview of a Basic Image Package.
    • Currently, the ModelArts backend does not support the download of open source installation packages. You are advised to install the dependency packages required for training in the custom image.
    + +

    Overview of a Basic Image Package

    To facilitate code download, training log output, and log file upload to OBS, ModelArts provides basic image packages for creating custom images. The basic images provided by ModelArts have the following features:

    +
    • Some necessary tools are available in the basic image. You need to create a custom image based on the basic images provided by ModelArts.
    • ModelArts continuously updates the basic image versions. For compatible updates, after the basic images are updated, you can still use the old images. For incompatible updates, the custom images created based on the old version cannot run on ModelArts, but the approved custom images can still be used.
    • If a custom image fails to be approved and the audit log contains an error message indicating that the basic image does not match, you need to use a new basic image to create an image.
    +

    Run the following command to obtain a ModelArts image:

    +
    docker pull <Address for obtaining a basic image>
    +

    After customizing an image, upload it to SWR. Make sure that you have created an organization and obtained the password for logging in to SWR. For details, see "Image Management" > "Uploading an Image Through SWR Console" in Software Repository for Container User Guide.

    +
    docker push  swr.<region>.xxx.com/<Organization to which the target image belongs>/<Image name>
    +

    Obtain basic images based on chip requirements:

    + + +

    CPU-based Basic Images

    Address for obtaining a basic image

    +
    swr.<region>.xxx.com/modelarts-job-dev-image/custom-cpu-base:1.3
    +

    Table 1 and Table 2 list the components and tools used by basic images.

    + +.. _modelarts_23_0217__en-us_topic_0212179951_table42317014714: + + + + + + + + + +
    Table 1 Components

    Component

    +

    Description

    +

    run_train.sh

    +

    Training boot script. You can download the code directory, run training commands, redirect training log output, and upload log files to OBS after training commands are executed.

    +
    + + +.. _modelarts_23_0217__en-us_topic_0212179951_table624501372: + + + + + + + + + + + + + + + +
    Table 2 Tool list

    Tool

    +

    Description

    +

    utils.sh

    +

    Tool script. The run_train.sh script depends on this script.

    +

    It provides methods such as SK decryption, code directory download, and log file upload.

    +

    ip_mapper.py

    +

    Script for obtaining NIC addresses.

    +

    By default, the IP address of the ib0 NIC is obtained. Training code can use the IP address of the ib0 NIC to accelerate network communications.

    +

    dls-downloader.py

    +

    OBS download script. The utils.sh script depends on this script.

    +
    + + +

    GPU-based Basic Images

    Addresses for obtaining a basic image

    +
    swr.<region>.xxx.com/modelarts-job-dev-image/custom-gpu-cuda9-base:1.3
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-gpu-cuda92-base:1.3
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-gpu-cuda10-cudnn74-base:1.1-4
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-base-cuda10.0-cp36-ubuntu18.04-x86:1.1
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-base-cuda10.1-cp36-ubuntu18.04-x86:1.1
    +swr.<region>.xxx.com/modelarts-job-dev-image/custom-base-cuda10.2-cp36-ubuntu18.04-x86:1.1
    + +.. _modelarts_23_0217__en-us_topic_0212179951_table137851182312: + + + + + + + + + +
    Table 3 Components

    Component

    +

    Description

    +

    run_train.sh

    +

    Training boot script. You can download the code directory, run training commands, redirect training log output, and upload log files to OBS after training commands are executed.

    +
    + + +.. _modelarts_23_0217__en-us_topic_0212179951_table135271650237: + + + + + + + + + + + + + + + +
    Table 4 Tool list

    Tool

    +

    Description

    +

    utils.sh

    +

    Tool script. The run_train.sh script depends on this script.

    +

    It provides methods such as SK decryption, code directory download, and log file upload.

    +

    ip_mapper.py

    +

    Script for obtaining NIC addresses.

    +

    By default, the IP address of the ib0 NIC is obtained. Training code can use the IP address of the ib0 NIC to accelerate network communications.

    +

    dls-downloader.py

    +

    OBS download script. The utils.sh script depends on this script.

    +
    + + + + + +Parent topic: For Training Models + + + diff --git a/modelarts/umn/temp/specifications_for_importing_data_from_an_obs_directory.tmp b/modelarts/umn/temp/specifications_for_importing_data_from_an_obs_directory.tmp new file mode 100644 index 000000000..f8f0016e1 --- /dev/null +++ b/modelarts/umn/temp/specifications_for_importing_data_from_an_obs_directory.tmp @@ -0,0 +1,283 @@ + + +

    Specifications for Importing Data from an OBS Directory

    +

    When a dataset is imported, the data storage directory and file name must comply with the ModelArts specifications if the data to be used is stored in OBS.

    +

    Only the following types of dataset support the OBS path import mode: Image classification, Object detection, Text classification, Table, and Sound classification.

    +

    To import data from an OBS directory, you must have the read permission on the OBS directory.

    + +

    Image Classification

    • Image classification data can be in two modes. The first mode (directory mode) supports only single labels. The second mode (.txt label files) supports multiple labels.
      • Images with the same label must be stored in the same directory, and the label name is the directory name. If there are multiple levels of directories, the last level is used as the label name.

        In the following example, Cat and Dog are label names.

        +
        dataset-import-example 
        +├─Cat 
        +│      10.jpg 
        +│      11.jpg 
        +│      12.jpg 
        +│ 
        +└─Dog 
        +        1.jpg 
        +        2.jpg 
        +        3.jpg
        +
      • If .txt files exist in the directory, the content in the .txt files is used as the image label. This mode is better than the previous one.

        In the following example, import-dir-1 and import-dir-2 are the imported subdirectories:

        +
        dataset-import-example 
        +├─import-dir-1
        +│      10.jpg
        +│      10.txt    
        +│      11.jpg 
        +│      11.txt
        +│      12.jpg 
        +│      12.txt
        +└─import-dir-2
        +        1.jpg 
        +        1.txt
        +        2.jpg 
        +        2.txt
        +

        The following shows a label file for a single label, for example, the 1.txt file:

        +
        Cat
        +

        The following shows a label file for multiple labels, for example, the 1.txt file:

        +
        Cat
        +Dog
        +
      +
    • Only images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.
    + +

    Object Detection

    • The simple mode of object detection requires users store labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object file is IMG_20180919_114745.jpg, the name of the label file must be IMG_20180919_114745.xml.

      The label files for object detection must be in PASCAL VOC format. For details about the format, see Table 8.

      +

      Example:

      +
      ├─dataset-import-example 
      +│      IMG_20180919_114732.jpg 
      +│      IMG_20180919_114732.xml 
      +│      IMG_20180919_114745.jpg 
      +│      IMG_20180919_114745.xml 
      +│      IMG_20180919_114945.jpg 
      +│      IMG_20180919_114945.xml
      +

      A label file example is as follows:

      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      +<annotation>
      +    <folder>NA</folder>
      +    <filename>bike_1_1593531469339.png</filename>
      +    <source>
      +        <database>Unknown</database>
      +    </source>
      +    <size>
      +        <width>554</width>
      +        <height>606</height>
      +        <depth>3</depth>
      +    </size>
      +    <segmented>0</segmented>
      +    <object>
      +        <name>Dog</name>
      +        <pose>Unspecified</pose>
      +        <truncated>0</truncated>
      +        <difficult>0</difficult>
      +        <occluded>0</occluded>
      +        <bndbox>
      +            <xmin>279</xmin>
      +            <ymin>52</ymin>
      +            <xmax>474</xmax>
      +            <ymax>278</ymax>
      +        </bndbox>
      +    </object>
      +    <object>
      +        <name>Cat</name>
      +        <pose>Unspecified</pose>
      +        <truncated>0</truncated>
      +        <difficult>0</difficult>
      +        <occluded>0</occluded>
      +        <bndbox>
      +            <xmin>279</xmin>
      +            <ymin>198</ymin>
      +            <xmax>456</xmax>
      +            <ymax>421</ymax>
      +        </bndbox>
      +    </object>
      +</annotation>
      +
      +
      +
    +
    • Only images in JPG, JPEG, PNG, and BMP formats are supported. The size of a single image cannot exceed 5 MB, and the total size of all images uploaded at a time cannot exceed 8 MB.
    + +

    Image Segmentation

    • The simple mode of image segmentation requires users store labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object file is IMG_20180919_114746.jpg, the name of the label file must be IMG_20180919_114746.xml.

      Fields mask_source and mask_color are added to the label file in PASCAL VOC format. For details about the format, see Table 4.

      +

      Example:

      +
      ├─dataset-import-example 
      +│      IMG_20180919_114732.jpg 
      +│      IMG_20180919_114732.xml 
      +│      IMG_20180919_114745.jpg 
      +│      IMG_20180919_114745.xml 
      +│      IMG_20180919_114945.jpg 
      +│      IMG_20180919_114945.xml
      +

      A label file example is as follows:

      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      +<annotation>
      +    <folder>NA</folder>
      +    <filename>image_0006.jpg</filename>
      +    <source>
      +        <database>Unknown</database>
      +    </source>
      +    <size>
      +        <width>230</width>
      +        <height>300</height>
      +        <depth>3</depth>
      +    </size>
      +    <segmented>1</segmented>
      +    <mask_source>obs://xianao/out/dataset-8153-Jmf5ylLjRmSacj9KevS/annotation/V001/segmentationClassRaw/image_0006.png</mask_source>
      +    <object>
      +        <name>bike</name>
      +        <pose>Unspecified</pose>
      +        <truncated>0</truncated>
      +        <difficult>0</difficult>
      +        <mask_color>193,243,53</mask_color>
      +        <occluded>0</occluded>
      +        <polygon>
      +            <x1>71</x1>
      +            <y1>48</y1>
      +            <x2>75</x2>
      +            <y2>73</y2>
      +            <x3>49</x3>
      +            <y3>69</y3>
      +            <x4>68</x4>
      +            <y4>92</y4>
      +            <x5>90</x5>
      +            <y5>101</y5>
      +            <x6>45</x6>
      +            <y6>110</y6>
      +            <x7>71</x7>
      +            <y7>48</y7>
      +        </polygon>
      +    </object>
      +</annotation>
      +
      +
      +
    + +

    Text Classification

    Text classification supports two import modes.

    +
    • The labeled objects and labels for text classification are in the same text file. You can specify a separator to separate the labeled objects and labels, as well as multiple labeled objects.For example, the following shows an example text file. The Tab key is used to separate the labeled object from the label.
      It touches good and responds quickly. I don't know how it performs in the future.   positive
      +Three months ago, I bought a very good phone and replaced my old one with it. It can operate longer between charges.  positive
      +Why does my phone heat up if I charge it for a while? The volume button stuck after being pressed down.  negative
      +It's a gift for Father's Day. The logistics is fast and I received it in 24 hours. I like the earphones because the bass sounds feel good and they would not fall off.  positive
      + +
    • The labeled objects and label files for text classification are text files, and correspond to each other based on the rows. For example, the first row in a label file indicates the label of the first row in the file of the labeled object.

      For example, the content of labeled object COMMENTS_20180919_114745.txt is as follows:

      +
      It touches good and responds quickly. I don't know how it performs in the future.
      +Three months ago, I bought a very good phone and replaced my old one with it. It can operate longer between charges.
      +Why does my phone heat up if I charge it for a while? The volume button stuck after being pressed down.
      +It's a gift for Father's Day. The logistics is fast and I received it in 24 hours. I like the earphones because the bass sounds feel good and they would not fall off.
      +

      The content of label file COMMENTS_20180919_114745_result.txt is as follows:

      +
      positive
      +negative
      +negative 
      +positive
      +

      The data format requires users to store labeled objects and their label files (in one-to-one relationship with the labeled objects) in the same directory. For example, if the name of the labeled object file is COMMENTS_20180919_114745.txt, the name of the label file must be COMMENTS _20180919_114745_result.txt.

      +

      Example of data file storage:

      +
      ├─dataset-import-example 
      +│      COMMENTS_20180919_114732.txt 
      +│      COMMENTS _20180919_114732_result.txt 
      +│      COMMENTS _20180919_114745.txt 
      +│      COMMENTS _20180919_114745_result.txt 
      +│      COMMENTS _20180919_114945.txt 
      +│      COMMENTS _20180919_114945_result.txt
      +
    + +

    Sound Classification

    For sound classification, sound files with the same label must be stored in the same directory, and the label name is the directory name.

    +

    Example:

    +
    dataset-import-example 
    +├─Cat 
    +│      10.wav 
    +│      11.wav 
    +│      12.wav 
    +│ 
    +└─Dog 
    +        1.wav 
    +        2.wav 
    +        3.wav
    + +

    Table

    You can import data from OBS.

    +

    Import description:

    +
    1. The prerequisite for successful import is that the schema of the data source must be the same as that specified during dataset creation. The schema indicates column names and types of a table. Once specified during dataset creation, the values cannot be changed.
    2. If the data format is invalid, the data is set to null values. For details, see Table 4.
    3. When a CSV file is imported from OBS, the data type is not verified, but the number of columns must be the same as that in the schema of the dataset.
    +
    • From OBS

      CSV files can be imported from OBS. You need to select the directory where the files are stored. The number of columns in the CSV file must be the same as that in the dataset schema. The schema of the CSV file can be automatically obtained.

      +
      ├─dataset-import-example 
      +│      table_import_1.csv 
      +│      table_import_2.csv
      +│      table_import_3.csv
      +│      table_import_4.csv
      +
    + + + + +Parent topic: Importing Data + + + diff --git a/modelarts/umn/temp/specifications_for_importing_the_manifest_file.tmp b/modelarts/umn/temp/specifications_for_importing_the_manifest_file.tmp new file mode 100644 index 000000000..ae7f366fd --- /dev/null +++ b/modelarts/umn/temp/specifications_for_importing_the_manifest_file.tmp @@ -0,0 +1,1101 @@ + + +

    Specifications for Importing the Manifest File

    +

    The manifest file defines the mapping between labeling objects and content. The Manifest file import mode means that the manifest file is used for dataset import. The manifest file can be imported from OBS. When importing a manifest file from OBS, ensure that the current user has the permissions to access the directory housing the manifest file.

    +

    There are many requirements on the Manifest file compilation. Import new data from OBS. Generally, Manifest file import is used for data migration of ModelArts in different regions or using different accounts. If you have labeled data in a region using ModelArts, you can obtain the manifest file of the published dataset from the output path. Then you can import the dataset using the manifest file to ModelArts of other regions or accounts. The imported data carries the labeling information and does not need to be labeled again, improving development efficiency.

    + +

    The manifest file that contains information about the original file and labeling can be used in labeling, training, and inference scenarios. The manifest file that contains only information about the original file can be used in inference scenarios or used to generate an unlabeled dataset. The manifest file must meet the following requirements:

    +
    • The manifest file uses the UTF-8 encoding format. The source value of text classification can contain Chinese characters. However, Chinese characters are not recommended for other parameters.
    • The manifest file uses the JSON Lines format (jsonlines.org). A line contains one JSON object.
      {"source": "/path/to/image1.jpg", "annotation": ... }
      +{"source": "/path/to/image2.jpg", "annotation": ... }
      +{"source": "/path/to/image3.jpg", "annotation": ... }
      +

      In the preceding example, the manifest file contains multiple lines of JSON object.

      +
    • The manifest file can be generated by users, third-party tools, or ModelArts Data Labeling. The file name can be any valid file name. To facilitate the internal use of the ModelArts system, the file name generated by the ModelArts Data Labeling function consists of the following character strings: DatasetName-VersionName.manifest. For example, animal-v201901231130304123.manifest.
    +

    Image Classification

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    {
    +    "source":"s3://path/to/image1.jpg",
    +    "usage":"TRAIN",
    +    "id":"0162005993f8065ef47eefb59d1e4970",
    +    "annotation": [
    +        {
    +            "type": "modelarts/image_classification",
    +            "name": "cat",
    +            "property": {
    +                "color":"white",
    +                "kind":"Persian cat"            
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"        
    +        },
    +        {
    +            "type": "modelarts/image_classification",
    +            "name":"animal",
    +            "annotated-by":"modelarts/active-learning",
    +            "confidence": 0.8,
    +            "creation-time":"2019-01-23 11:30:30"        
    +        }],
    +    "inference-loc":"/path/to/inference-output"
    +}
    +
    +
    + +.. _modelarts_23_0009__en-us_topic_0170886817_table598984218223: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    source

    +

    Yes

    +

    URI of an object to be labeled. For details about data source types and examples, see Table 2.

    +

    usage

    +

    No

    +

    By default, the parameter value is left blank. Possible values are as follows:

    +
    • TRAIN: The object is used for training.
    • EVAL: The object is used for evaluation.
    • TEST: The object is used for testing.
    • INFERENCE: The object is used for inference.
    +

    If the parameter value is left blank, the user decides how to use the object.

    +

    id

    +

    No

    +

    Sample ID exported from the system. You do not need to set this parameter when importing the sample.

    +

    annotation

    +

    No

    +

    If the parameter value is left blank, the object is not labeled. The value of annotation consists of an object list. For details about the parameters, see Table 3.

    +

    inference-loc

    +

    No

    +

    This parameter is available when the file is generated by the inference service, indicating the location of the inference result file.

    +
    + + +.. _modelarts_23_0009__en-us_topic_0170886817_table9303122642318: + + + + + + + + + + + + +
    Table 2 Data source types

    Type

    +

    Example

    +

    OBS

    +

    "source":"s3://path-to-jpg"

    +

    Content

    +

    "source":"content://I love machine learning"

    +
    + + +.. _modelarts_23_0009__en-us_topic_0170886817_table48141825192716: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 annotation objects

    Parameter

    +

    Mandatory

    +

    Description

    +

    type

    +

    Yes

    +

    Label type. Possible values are as follows:

    +
    • image_classification: image classification
    • text_classification: text classification
    • text_entity: named entity recognition
    • object_detection: object detection
    • audio_classification: sound classification
    • audio_content: speech labeling
    • audio_segmentation: speech paragraph labeling
    +

    name

    +

    Yes/No

    +

    This parameter is mandatory for the classification type but optional for other types. This example uses the image classification type.

    +

    id

    +

    Yes/No

    +

    Label ID. This parameter is mandatory for triplets but optional for other types. The entity label ID of a triplet is in E+number format, for example, E1 and E2. The relationship label ID of a triplet is in R+number format, for example, R1 and R2.

    +

    property

    +

    No

    +

    Labeling property. In this example, the cat has two properties: color and kind.

    +

    annotated-by

    +

    No

    +

    The default value is human, indicating manual labeling.

    +
    • human
    +

    creation-time

    +

    No

    +

    Time when the labeling job was created. It is the time when labeling information was written, not the time when the manifest file was generated.

    +

    confidence

    +

    No

    +

    Confidence score of machine labeling. The value ranges from 0 to 1.

    +
    + + +

    Image Segmentation

    {
    +    "annotation": [{
    +        "annotation-format": "PASCAL VOC",
    +        "type": "modelarts/image_segmentation",
    +        "annotation-loc": "s3://path/to/annotation/image1.xml",
    +        "creation-time": "2020-12-16 21:36:27",
    +        "annotated-by": "human"
    +    }],
    +    "usage": "train",
    +    "source": "s3://path/to/image1.jpg",
    +    "id": "16d196c19bf61994d7deccafa435398c",
    +    "sample-type": 0
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • annotation-loc indicates the path for saving the label file. This parameter is mandatory for image segmentation and object detection but optional for other labeling types.
    • annotation-format indicates the format of the label file. This parameter is optional. The default value is PASCAL VOC. Only PASCAL VOC is supported.
    • sample-type indicates a sample format. Value 0 indicates image, 1 text, 2 audio, 4 table, and 6 video.
    + +.. _modelarts_23_0009__en-us_topic_0170886817_table1516151991311: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 4 PASCAL VOC format parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    folder

    +

    Yes

    +

    Directory where the data source is located

    +

    filename

    +

    Yes

    +

    Name of the file to be labeled

    +

    size

    +

    Yes

    +

    Image pixel

    +
    • width: image width. This parameter is mandatory.
    • height: image height. This parameter is mandatory.
    • depth: number of image channels. This parameter is mandatory.
    +

    segmented

    +

    Yes

    +

    Segmented or not

    +

    mask_source

    +

    No

    +

    Segmentation mask path

    +

    object

    +

    Yes

    +

    Object detection information. Multiple object{} functions are generated for multiple objects.

    +
    • name: class of the labeled content. This parameter is mandatory.
    • pose: shooting angle of the labeled content. This parameter is mandatory.
    • truncated: whether the labeled content is truncated (0 indicates that the content is not truncated). This parameter is mandatory.
    • occluded: whether the labeled content is occluded (0 indicates that the content is not occluded). This parameter is mandatory.
    • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
    • confidence: confidence score of the labeled object. The value ranges from 0 to 1. This parameter is optional.
    • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 5.
    • mask_color: label color, which is represented by the RGB value. This parameter is mandatory.
    +
    + + +.. _modelarts_23_0009__en-us_topic_0170886817_table181711917139: + + + + + + + + + + + +
    Table 5 Bounding box types

    Type

    +

    Shape

    +

    Labeling Information

    +

    polygon

    +

    Polygon

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>100<y2>

    +

    <x3>250<x3>

    +

    <y3>150<y3>

    +

    <x4>200<x4>

    +

    <y4>200<y4>

    +

    <x5>100<x5>

    +

    <y5>200<y5>

    +

    <x6>50<x6>

    +

    <y6>150<y6>

    +

    <x7>100<x7>

    +

    <y7>100<y7>

    +
    + +Example:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    +<annotation>
    +    <folder>NA</folder>
    +    <filename>image_0006.jpg</filename>
    +    <source>
    +        <database>Unknown</database>
    +    </source>
    +    <size>
    +        <width>230</width>
    +        <height>300</height>
    +        <depth>3</depth>
    +    </size>
    +    <segmented>1</segmented>
    +    <mask_source>obs://xianao/out/dataset-8153-Jmf5ylLjRmSacj9KevS/annotation/V001/segmentationClassRaw/image_0006.png</mask_source>
    +    <object>
    +        <name>bike</name>
    +        <pose>Unspecified</pose>
    +        <truncated>0</truncated>
    +        <difficult>0</difficult>
    +        <mask_color>193,243,53</mask_color>
    +        <occluded>0</occluded>
    +        <polygon>
    +            <x1>71</x1>
    +            <y1>48</y1>
    +            <x2>75</x2>
    +            <y2>73</y2>
    +            <x3>49</x3>
    +            <y3>69</y3>
    +            <x4>68</x4>
    +            <y4>92</y4>
    +            <x5>90</x5>
    +            <y5>101</y5>
    +            <x6>45</x6>
    +            <y6>110</y6>
    +            <x7>71</x7>
    +            <y7>48</y7>
    +        </polygon>
    +    </object>
    +</annotation>
    + + +

    Text Classification

    {
    +    "source": "content://I like this product ",
    +    "id":"XGDVGS",
    +    "annotation": [
    +        {
    +            "type": "modelarts/text_classification",
    +            "name": " positive",
    +            "annotated-by": "human",
    +            "creation-time": "2019-01-23 11:30:30"        
    +        } ]
    +}
    +

    The content parameter indicates the text to be labeled (in UTF-8 encoding format, which can be Chinese). The other parameters are the same as those described in Image Classification. For details, see Table 1.

    + +

    Named Entity Recognition

    {
    +    "source":"content://Michael Jordan is the most famous basketball player in the world.",
    +    "usage":"TRAIN",
    +    "annotation":[
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Person",
    +            "property":{
    +                "@modelarts:start_index":0,
    +                "@modelarts:end_index":14
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Category",
    +            "property":{
    +                "@modelarts:start_index":34,
    +                "@modelarts:end_index":44
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +

    +

    The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.

    +

    Table 6 describes the property parameters. For example, if you want to extract Michael from "source":"content://Michael Jordan", the value of start_index is 0 and that of end_index is 7.

    + +.. _modelarts_23_0009__en-us_topic_0170886817_table8486339124912: + + + + + + + + + + + + + + + +
    Table 6 Description of property parameters

    Parameter

    +

    Data Type

    +

    Description

    +

    @modelarts:start_index

    +

    Integer

    +

    Start position of the text. The value starts from 0, including the characters specified by start_index.

    +

    @modelarts:end_index

    +

    Integer

    +

    End position of the text, excluding the characters specified by end_index.

    +
    + + +

    Text Triplet

    {
    +    "source":"content://"Three Body" is a series of long science fiction novels created by Liu Cix.",
    +    "usage":"TRAIN",
    +    "annotation":[
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Person",
    +            "id":"E1",
    +            "property":{
    +                "@modelarts:start_index":67,
    +                "@modelarts:end_index":74
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_entity",
    +            "name":"Book",
    +            "id":"E2",
    +            "property":{
    +                "@modelarts:start_index":0,
    +                "@modelarts:end_index":12
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_triplet",
    +            "name":"Author",
    +            "id":"R1",
    +            "property":{
    +                "@modelarts:from":"E1",
    +                "@modelarts:to":"E2"
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +            "type":"modelarts/text_triplet",
    +            "name":"Works",
    +            "id":"R2",
    +            "property":{
    +                "@modelarts:from":"E2",
    +                "@modelarts:to":"E1"
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    + +

    The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.

    +

    Table 5 property parameters describes the property parameters. @modelarts:start_index and @modelarts:end_index are the same as those of named entity recognition. For example, when source is set to content://"Three Body" is a series of long science fiction novels created by Liu Cix., Liu Cix is an entity person, Three Body is an entity book, the person is the author of the book, and the book is works of the person.

    + +.. _modelarts_23_0009__en-us_topic_0170886817_table134893213914: + + + + + + + + + + + + + + + + + + + + + + + +
    Table 7 Description of property parameters

    Parameter

    +

    Data Type

    +

    Description

    +

    @modelarts:start_index

    +

    Integer

    +

    Start position of the triplet entities. The value starts from 0, including the characters specified by start_index.

    +

    @modelarts:end_index

    +

    Integer

    +

    End position of the triplet entities, excluding the characters specified by end_index.

    +

    @modelarts:from

    +

    String

    +

    Start entity ID of the triplet relationship.

    +

    @modelarts:to

    +

    String

    +

    Entity ID pointed to in the triplet relationship.

    +
    + +

    Object Detection

    {
    +    "source":"s3://path/to/image1.jpg",
    +    "usage":"TRAIN",
    +    "annotation": [
    +        {
    +            "type":"modelarts/object_detection",
    +            "annotation-loc": "s3://path/to/annotation1.xml",
    +            "annotation-format":"PASCAL VOC",
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"                
    +        }]
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • annotation-loc indicates the path for saving the label file. This parameter is mandatory for object detection and image segmentation but optional for other labeling types.
    • annotation-format indicates the format of the label file. This parameter is optional. The default value is PASCAL VOC. Only PASCAL VOC is supported.
    + +.. _modelarts_23_0009__en-us_topic_0170886817_table77167388472: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 8 PASCAL VOC format parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    folder

    +

    Yes

    +

    Directory where the data source is located

    +

    filename

    +

    Yes

    +

    Name of the file to be labeled

    +

    size

    +

    Yes

    +

    Image pixel

    +
    • width: image width. This parameter is mandatory.
    • height: image height. This parameter is mandatory.
    • depth: number of image channels. This parameter is mandatory.
    +

    segmented

    +

    Yes

    +

    Segmented or not

    +

    object

    +

    Yes

    +

    Object detection information. Multiple object{} functions are generated for multiple objects.

    +
    • name: class of the labeled content. This parameter is mandatory.
    • pose: shooting angle of the labeled content. This parameter is mandatory.
    • truncated: whether the labeled content is truncated (0 indicates that the content is not truncated). This parameter is mandatory.
    • occluded: whether the labeled content is occluded (0 indicates that the content is not occluded). This parameter is mandatory.
    • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
    • confidence: confidence score of the labeled object. The value ranges from 0 to 1. This parameter is optional.
    • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 9.
    +
    + + +.. _modelarts_23_0009__en-us_topic_0170886817_table1770752310500: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 9 Description of bounding box types

    Type

    +

    Shape

    +

    Labeling Information

    +

    point

    +

    Point

    +

    Coordinates of a point

    +

    <x>100<x>

    +

    <y>100<y>

    +

    line

    +

    Line

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>200<y2>

    +

    bndbox

    +

    Rectangle

    +

    Coordinates of the upper left and lower right points

    +

    <xmin>100<xmin>

    +

    <ymin>100<ymin>

    +

    <xmax>200<xmax>

    +

    <ymax>200<ymax>

    +

    polygon

    +

    Polygon

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>100<y2>

    +

    <x3>250<x3>

    +

    <y3>150<y3>

    +

    <x4>200<x4>

    +

    <y4>200<y4>

    +

    <x5>100<x5>

    +

    <y5>200<y5>

    +

    <x6>50<x6>

    +

    <y6>150<y6>

    +

    circle

    +

    Circle

    +

    Center coordinates and radius

    +

    <cx>100<cx>

    +

    <cy>100<cy>

    +

    <r>50<r>

    +
    + +Example:
    <annotation>
    +   <folder>test_data</folder>
    +   <filename>260730932.jpg</filename>
    +   <size>
    +       <width>767</width>
    +       <height>959</height>
    +       <depth>3</depth>
    +   </size>
    +   <segmented>0</segmented>
    +   <object>
    +       <name>point</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <point>
    +           <x1>456</x1>
    +           <y1>596</y1>
    +       </point>
    +   </object>
    +   <object>
    +       <name>line</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <line>
    +           <x1>133</x1>
    +           <y1>651</y1>
    +           <x2>229</x2>
    +           <y2>561</y2>
    +       </line>
    +   </object>
    +   <object>
    +       <name>bag</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <bndbox>
    +           <xmin>108</xmin>
    +           <ymin>101</ymin>
    +           <xmax>251</xmax>
    +           <ymax>238</ymax>
    +       </bndbox>
    +   </object>
    +   <object>
    +       <name>boots</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       
    +       <polygon>
    +           <x1>373</x1>
    +           <y1>264</y1>
    +           <x2>500</x2>
    +           <y2>198</y2>
    +           <x3>437</x3>
    +           <y3>76</y3>
    +           <x4>310</x4>
    +           <y4>142</y4>
    +       </polygon>
    +   </object>
    +   <object>
    +       <name>circle</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <circle>
    +           <cx>405</cx>
    +           <cy>170</cy>
    +           <r>100<r>
    +       </circle>
    +   </object>
    +</annotation>
    + + +

    Sound Classification

    {
    +"source":
    +"s3://path/to/pets.wav", 
    +    "annotation": [
    +        {
    +            "type": "modelarts/audio_classification",
    +            "name":"cat",    
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        } 
    +    ]
    +}
    +

    The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.

    + +

    Speech Labeling

    {
    +    "source":"s3://path/to/audio1.wav",
    +    "annotation":[
    +        {
    +            "type":"modelarts/audio_content",
    +            "property":{
    +                "@modelarts:content":"Today is a good day."
    +            },
    +            "annotated-by":"human",
    +            "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • The @modelarts:content parameter in property indicates speech labeling. The data type is String.
    + +

    Speech Paragraph Labeling

    {
    +    "source":"s3://path/to/audio1.wav",
    +    "usage":"TRAIN",
    +    "annotation":[
    +        {
    +           
    +"type":"modelarts/audio_segmentation",
    +            "property":{
    +                "@modelarts:start_time":"00:01:10.123",
    +                "@modelarts:end_time":"00:01:15.456",
    +               
    +                "@modelarts:source":"Tom",
    +               
    +                "@modelarts:content":"How are you?"
    +            },
    +           "annotated-by":"human",
    +           "creation-time":"2019-01-23 11:30:30"
    +        },
    +        {
    +           "type":"modelarts/audio_segmentation",
    +            "property":{
    +                "@modelarts:start_time":"00:01:22.754",
    +                "@modelarts:end_time":"00:01:24.145",
    +                "@modelarts:source":"Jerry",
    +                "@modelarts:content":"I'm fine, thank you."
    +            },
    +           "annotated-by":"human",
    +           "creation-time":"2019-01-23 11:30:30"
    +        }
    +    ]
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • Table 10 describes the property parameters. +.. _modelarts_23_0009__en-us_topic_0170886817_table1151144815513: + + + + + + + + + + + + + + + + + + + + + + + +
      Table 10 Description of property parameters

      Parameter

      +

      Data Type

      +

      Description

      +

      @modelarts:start_time

      +

      String

      +

      Start time of the sound. The format is hh:mm:ss.SSS.

      +

      hh indicates the hour, mm indicates the minute, ss indicates the second, and SSS indicates the millisecond.

      +

      @modelarts:end_time

      +

      String

      +

      End time of the sound. The format is hh:mm:ss.SSS.

      +

      hh indicates the hour, mm indicates the minute, ss indicates the second, and SSS indicates the millisecond.

      +

      @modelarts:source

      +

      String

      +

      Sound source

      +

      @modelarts:content

      +

      String

      +

      Sound content

      +
      + +
    + +

    Video Labeling

    {
    +	"annotation": [{
    +		"annotation-format": "PASCAL VOC",
    +		"type": "modelarts/object_detection",
    +		"annotation-loc": "s3://path/to/annotation1_t1.473722.xml",
    +		"creation-time": "2020-10-09 14:08:24",
    +		"annotated-by": "human"
    +	}],
    +	"usage": "train",
    +	"property": {
    +		"@modelarts:parent_duration": 8,
    +		"@modelarts:parent_source": "s3://path/to/annotation1.mp4",
    +		"@modelarts:time_in_video": 1.473722
    +	},
    +	"source": "s3://input/path/to/annotation1_t1.473722.jpg",
    +	"id": "43d88677c1e9a971eeb692a80534b5d5",
    +	"sample-type": 0
    +}
    +
    • The parameters such as source, usage, and annotation are the same as those described in Image Classification. For details, see Table 1.
    • annotation-loc indicates the path for saving the label file. This parameter is mandatory for object detection but optional for other labeling types.
    • annotation-format indicates the format of the label file. This parameter is optional. The default value is PASCAL VOC. Only PASCAL VOC is supported.
    • sample-type indicates a sample format. Value 0 indicates image, 1 text, 2 audio, 4 table, and 6 video.
    + +.. _modelarts_23_0009__en-us_topic_0170886817_table178351411132818: + + + + + + + + + + + + + + + + + + + +
    Table 11 property parameters

    Parameter

    +

    Data Type

    +

    Description

    +

    @modelarts:parent_duration

    +

    Double

    +

    Duration of the labeled video, in seconds

    +

    @modelarts:time_in_video

    +

    Double

    +

    Timestamp of the labeled video frame, in seconds

    +

    @modelarts:parent_source

    +

    String

    +

    OBS path of the labeled video

    +
    + + +.. _modelarts_23_0009__en-us_topic_0170886817_table259920384918: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 12 PASCAL VOC format parameters

    Parameter

    +

    Mandatory

    +

    Description

    +

    folder

    +

    Yes

    +

    Directory where the data source is located

    +

    filename

    +

    Yes

    +

    Name of the file to be labeled

    +

    size

    +

    Yes

    +

    Image pixel

    +
    • width: image width. This parameter is mandatory.
    • height: image height. This parameter is mandatory.
    • depth: number of image channels. This parameter is mandatory.
    +

    segmented

    +

    Yes

    +

    Segmented or not

    +

    object

    +

    Yes

    +

    Object detection information. Multiple object{} functions are generated for multiple objects.

    +
    • name: class of the labeled content. This parameter is mandatory.
    • pose: shooting angle of the labeled content. This parameter is mandatory.
    • truncated: whether the labeled content is truncated (0 indicates that the content is not truncated). This parameter is mandatory.
    • occluded: whether the labeled content is occluded (0 indicates that the content is not occluded). This parameter is mandatory.
    • difficult: whether the labeled object is difficult to identify (0 indicates that the object is easy to identify). This parameter is mandatory.
    • confidence: confidence score of the labeled object. The value ranges from 0 to 1. This parameter is optional.
    • bndbox: bounding box type. This parameter is mandatory. For details about the possible values, see Table 13.
    +
    + + +.. _modelarts_23_0009__en-us_topic_0170886817_table869624041814: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 13 Bounding box types

    Type

    +

    Shape

    +

    Labeling Information

    +

    point

    +

    Point

    +

    Coordinates of a point

    +

    <x>100<x>

    +

    <y>100<y>

    +

    line

    +

    Line

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>200<y2>

    +

    bndbox

    +

    Rectangle

    +

    Coordinates of the upper left and lower right points

    +

    <xmin>100<xmin>

    +

    <ymin>100<ymin>

    +

    <xmax>200<xmax>

    +

    <ymax>200<ymax>

    +

    polygon

    +

    Polygon

    +

    Coordinates of points

    +

    <x1>100<x1>

    +

    <y1>100<y1>

    +

    <x2>200<x2>

    +

    <y2>100<y2>

    +

    <x3>250<x3>

    +

    <y3>150<y3>

    +

    <x4>200<x4>

    +

    <y4>200<y4>

    +

    <x5>100<x5>

    +

    <y5>200<y5>

    +

    <x6>50<x6>

    +

    <y6>150<y6>

    +

    circle

    +

    Circle

    +

    Center coordinates and radius

    +

    <cx>100<cx>

    +

    <cy>100<cy>

    +

    <r>50<r>

    +
    + +Example:
    <annotation>
    +   <folder>test_data</folder>
    +   <filename>260730932_t1.473722.jpg.jpg</filename>
    +   <size>
    +       <width>767</width>
    +       <height>959</height>
    +       <depth>3</depth>
    +   </size>
    +   <segmented>0</segmented>
    +   <object>
    +       <name>point</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <point>
    +           <x1>456</x1>
    +           <y1>596</y1>
    +       </point>
    +   </object>
    +   <object>
    +       <name>line</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <line>
    +           <x1>133</x1>
    +           <y1>651</y1>
    +           <x2>229</x2>
    +           <y2>561</y2>
    +       </line>
    +   </object>
    +   <object>
    +       <name>bag</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <bndbox>
    +           <xmin>108</xmin>
    +           <ymin>101</ymin>
    +           <xmax>251</xmax>
    +           <ymax>238</ymax>
    +       </bndbox>
    +   </object>
    +   <object>
    +       <name>boots</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <polygon>
    +           <x1>373</x1>
    +           <y1>264</y1>
    +           <x2>500</x2>
    +           <y2>198</y2>
    +           <x3>437</x3>
    +           <y3>76</y3>
    +           <x4>310</x4>
    +           <y4>142</y4>
    +       </polygon>
    +   </object>
    +   <object>
    +       <name>circle</name>
    +       <pose>Unspecified</pose>
    +       <truncated>0</truncated>
    +       <occluded>0</occluded>
    +       <difficult>0</difficult>
    +       <circle>
    +           <cx>405</cx>
    +           <cy>170</cy>
    +           <r>100<r>
    +       </circle>
    +   </object>
    +</annotation>
    + + + + + +Parent topic: Importing Data + + + diff --git a/modelarts/umn/temp/speech_labeling.tmp b/modelarts/umn/temp/speech_labeling.tmp new file mode 100644 index 000000000..61ea9500d --- /dev/null +++ b/modelarts/umn/temp/speech_labeling.tmp @@ -0,0 +1,36 @@ + + +

    Speech Labeling

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files in batches by one click. In addition, you can modify the labels of audio files, or remove their labels and label the audio files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Synchronizing the Data Source

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    + +

    Labeling Audio Files

    The dataset details page displays the labeled and unlabeled audio files. The Unlabeled tab page is displayed by default.

    +
    1. In the audio file list on the Unlabeled tab page, click the target audio file. In the area on the right, the audio file is displayed. Click below the audio file to play the audio.
    2. In Speech Content, enter the speech content.
    3. After entering the content, click OK to complete the labeling. The audio file is automatically moved to the Labeled tab page.Figure 1 Labeling an audio file
      +
    + +

    Viewing the Labeled Audio Files

    On the dataset details page, click the Labeled tab to view the list of the labeled audio files. Click the audio file to view the audio content in the Speech Content text box on the right.

    + +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +

    On the data labeling page, click the Labeled tab, and select the audio file to be modified from the audio file list. In the label information area on the right, modify the content of the Speech Content text box, and click OK to complete the modification.

    + +

    Adding Audio Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add audio files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add Audio in the upper left corner.
    2. In the Add Audio dialog box that is displayed, click Add Audio.

      Select the audio files to be uploaded in the local environment. Only WAV audio files are supported. The size of an audio file cannot exceed 4 MB. The total size of audio files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add Audio dialog box, click OK.

      The audio files you add will be automatically displayed on the Unlabeled tab page. In addition, the audio files are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    + +

    Deleting Audio Files

    You can quickly delete the audio files you want to discard.

    +

    On the Unlabeled or Labeled tab page, select the audio files to be deleted, and then click Delete File in the upper left corner. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the audio files.

    +

    If you select Delete source files, audio files stored in the corresponding OBS directory will be deleted when you delete the selected audio files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    + + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/speech_paragraph_labeling.tmp b/modelarts/umn/temp/speech_paragraph_labeling.tmp new file mode 100644 index 000000000..885e0e591 --- /dev/null +++ b/modelarts/umn/temp/speech_paragraph_labeling.tmp @@ -0,0 +1,37 @@ + + +

    Speech Paragraph Labeling

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, label the unlabeled audio files. ModelArts enables you to label audio files. In addition, you can modify the labels of audio files, or remove their labels and label the audio files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Synchronizing the Data Source

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    + +

    Labeling Audio Files

    The dataset details page displays the labeled and unlabeled audio files. The Unlabeled tab page is displayed by default.

    +
    1. In the audio file list on the Unlabeled tab page, click the target audio file. In the area on the right, the audio file is displayed. Click below the audio file to play the audio.
    2. Select an audio segment based on the content being played, and enter the audio file label and content in the Speech Content text box.Figure 1 Labeling an audio file
      +
    3. After entering the content, click OK to complete the labeling. The audio file is automatically moved to the Labeled tab page.
    + +

    Viewing the Labeled Audio Files

    On the dataset details page, click the Labeled tab to view the list of the labeled audio files. Click the audio file to view the audio content in the Speech Content text box on the right.

    + +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying a label: On the dataset details page, click the Labeled tab, and select the audio file to be modified from the audio file list. In the Speech Content area, modify Label and Content, and click OK to complete the modification.
    • Deleting a label: Click in the Operation column of the target number to delete the label of the audio segment. Alternatively, you can click the cross (x) icon above the labeled audio file to delete the label. Then click OK.
    + +

    Adding Audio Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add audio files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add Audio in the upper left corner.
    2. In the Add Audio dialog box that is displayed, click Add Audio.

      Select the audio files to be uploaded in the local environment. Only WAV audio files are supported. The size of an audio file cannot exceed 4 MB. The total size of audio files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add Audio dialog box, click OK.

      The audio files you add will be automatically displayed on the Unlabeled tab page. In addition, the audio files are automatically saved to the OBS directory specified by Input Dataset Path.

      +
    + +

    Deleting Audio Files

    You can quickly delete the audio files you want to discard.

    +

    On the Unlabeled or Labeled tab page, select the audio files to be deleted, and then click Delete File in the upper left corner. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the audio files.

    +

    If you select Delete source files, audio files stored in the corresponding OBS directory will be deleted when you delete the selected audio files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    + + +

    + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/starting_or_stopping_a_notebook_instance.tmp b/modelarts/umn/temp/starting_or_stopping_a_notebook_instance.tmp new file mode 100644 index 000000000..6b718179f --- /dev/null +++ b/modelarts/umn/temp/starting_or_stopping_a_notebook_instance.tmp @@ -0,0 +1,13 @@ + + +

    Starting or Stopping a Notebook Instance

    +

    You can stop unwanted notebook instances to prevent unnecessary fees. You can also start a notebook instance that is in the Stopped state to use it again.

    +

    Log in to the ModelArts management console. In the left navigation pane, choose DevEnviron > Notebooks to switch to the Notebooks page. Perform the following operations to stop or start a notebook instance:

    +
    • To stop a notebook instance, locate the row where the notebook instance resides and click Stop in the Operation column. Only notebook instances in the Running state can be stopped.
    • To start a notebook instance, locate the row where the notebook instance resides and click Start in the Operation column. Only notebook instances in the Stopped state can be started.
    + + + +Parent topic: Managing Notebook Instances + + + diff --git a/modelarts/umn/temp/starting_or_stopping_a_service.tmp b/modelarts/umn/temp/starting_or_stopping_a_service.tmp new file mode 100644 index 000000000..130aa4d54 --- /dev/null +++ b/modelarts/umn/temp/starting_or_stopping_a_service.tmp @@ -0,0 +1,16 @@ + + +

    Starting or Stopping a Service

    +

    Starting a Service

    You can start services in the Successful, Abnormal, or Stopped status. Services in the Deploying status cannot be started. You can start a service in either of the following ways:

    + +
    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click Start in the Operation column to start the target service.
    2. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click the name of the target service. The service details page is displayed. Click Start in the upper right corner of the page to start the service.
    +

    Stopping a Service

    You can stop services in the Running or Alarm status. Services in the Deploying status cannot be stopped. After a service is stopped, ModelArts stops charging. You can stop a service in either of the following ways:

    +
    1. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click Stop in the Operation column to stop the target service.
    2. Log in to the ModelArts management console and choose Service Deployment from the left navigation pane. Go to the service management page of the target service. Click the name of the target service. The service details page is displayed. Click Stop in the upper right corner of the page to stop the service.
    + + + + +Parent topic: Model Deployment + + + diff --git a/modelarts/umn/temp/stopping_or_deleting_a_job.tmp b/modelarts/umn/temp/stopping_or_deleting_a_job.tmp new file mode 100644 index 000000000..d51703f36 --- /dev/null +++ b/modelarts/umn/temp/stopping_or_deleting_a_job.tmp @@ -0,0 +1,18 @@ + + +

    Stopping or Deleting a Job

    +

    Stopping a Training Job

    In the training job list, click Stop in the Operation column for a training job in the Running state to stop a running training job.

    +

    If you have selected Save Training Parameters for a stopped training job, the job's parameter settings will be saved to the Job Parameter Mgmt page.

    +

    You cannot stop a training job that has stopped running, for example the job in the Successful or Running failed state. Only training jobs in the Running state can be stopped.

    + +

    Deleting a Training Job

    If an existing training job is no longer used, you can delete it.

    +

    For a training job in the Running, Successful, Running failed, Canceled, or Deploying state, click Delete in the Operation column to delete it.

    +

    If you have selected Save Training Parameters for a deleted training job, the job's parameter settings will be saved to the Job Parameter Mgmt page.

    + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/switching_the_cuda_version_on_the_terminal_page_of_a_gpu-based_notebook_instance.tmp b/modelarts/umn/temp/switching_the_cuda_version_on_the_terminal_page_of_a_gpu-based_notebook_instance.tmp new file mode 100644 index 000000000..cb34ffbb7 --- /dev/null +++ b/modelarts/umn/temp/switching_the_cuda_version_on_the_terminal_page_of_a_gpu-based_notebook_instance.tmp @@ -0,0 +1,16 @@ + + +

    Switching the CUDA Version on the Terminal Page of a GPU-based Notebook Instance

    +

    For a GPU-based notebook instance, you can switch different versions of CUDA on the Terminal page of Jupyter.

    +

    CPU-based notebook instances do not use CUDA. Therefore, the following operations apply only to GPU-based notebook instances.

    +
    1. Create and open a notebook instance or open an existing notebook instance in the notebook instance list.
    2. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
    3. Run the following command to go to /usr/local:
      cd /usr/local
      +
    4. For example, to switch to CUDA 10, run the following command:
      sudo ln -snf /usr/local/cuda-10.0 cuda
      +Figure 1 Example of switching the CUDA version
      +
    + + + +Parent topic: Configuring the Jupyter Notebook Environment + + + diff --git a/modelarts/umn/temp/synchronizing_files_with_obs.tmp b/modelarts/umn/temp/synchronizing_files_with_obs.tmp new file mode 100644 index 000000000..06c1e5994 --- /dev/null +++ b/modelarts/umn/temp/synchronizing_files_with_obs.tmp @@ -0,0 +1,18 @@ + + +

    Synchronizing Files with OBS

    +

    If you specify Storage Path during notebook instance creation, your compiled code will be automatically stored in your specified OBS bucket. If code invocation among different .ipynb files is required, you can use the Sync OBS function.

    +

    The Sync OBS function is used to synchronize the objects selected in the list of notebook instance files from the OBS bucket to the current container directory ~/work.

    +

    Precautions

    • The maximum size of files to be synchronized at a time is 500 MB, and the maximum number of files to be synchronized at a time is 1,024.
    • The total size of objects to be synchronized cannot exceed 5 GB. For example, if 2 GB files exist in the ~/work container directory, you can use Sync OBS to synchronize a maximum of 3 GB files.
    • The Sync OBS function only takes effect on notebook instances for which Storage is OBS. For notebook instances whose Storage is not OBS, all files are read and written in the ~/work container directory.
    + +

    Procedure

    The Sync OBS function can be used in notebook instances. The following describes how to use the function.

    +

    For example, if the Example1.ipynb file needs to call module in the Example2.ipynb file, select both files and click Sync OBS.

    +Figure 1 Using the Sync OBS function
    + + + + +Parent topic: Using Jupyter Notebook + + + diff --git a/modelarts/umn/temp/team_labeling.tmp b/modelarts/umn/temp/team_labeling.tmp new file mode 100644 index 000000000..75c77267c --- /dev/null +++ b/modelarts/umn/temp/team_labeling.tmp @@ -0,0 +1,22 @@ + + +

    Team Labeling

    +

    + + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/team_management.tmp b/modelarts/umn/temp/team_management.tmp new file mode 100644 index 000000000..448bcc3e5 --- /dev/null +++ b/modelarts/umn/temp/team_management.tmp @@ -0,0 +1,19 @@ + + +

    Team Management

    +

    Team labeling is managed in a unit of teams. To enable team labeling for a dataset, a team must be specified. Multiple members can be added to a team.

    +

    Background

    • An account can have a maximum of 10 teams.
    • An account must have at least one team to enable team labeling for datasets. If the account has no team, add a team by referring to Adding a Team.
    + +

    Adding a Team

    1. In the left navigation pane of the ModelArts management console, choose Data Management > Labeling Teams. The Labeling Teams page is displayed.
    2. On the Labeling Teams page, click Add Team.
    3. In the displayed Add Team dialog box, enter a team name and description and click OK. The labeling team is added.

      The new team is displayed on the Labeling Teams page. You can view team details in the right pane. There is no member in the new team. Add members to the new team by referring to Adding a Member.

      +
    + +

    Deleting a Team

    You can delete a team that is no longer used.

    +

    On the Labeling Teams page, select the target team and click Delete. In the dialog box that is displayed, click OK.

    + + + + +Parent topic: Team Labeling + + + diff --git a/modelarts/umn/temp/template_description.tmp b/modelarts/umn/temp/template_description.tmp new file mode 100644 index 000000000..5a8f0f4ac --- /dev/null +++ b/modelarts/umn/temp/template_description.tmp @@ -0,0 +1,25 @@ + + +

    Template Description

    + + + + + +Parent topic: Model Templates + + + diff --git a/modelarts/umn/temp/tensorflow-py36_general_template.tmp b/modelarts/umn/temp/tensorflow-py36_general_template.tmp new file mode 100644 index 000000000..f39972516 --- /dev/null +++ b/modelarts/umn/temp/tensorflow-py36_general_template.tmp @@ -0,0 +1,35 @@ + + +

    TensorFlow-py36 General Template

    +

    Introduction

    AI engine: TensorFlow 1.8; Environment: Python 3.6; Input and output mode: undefined mode. Select an appropriate input and output mode based on the model function or application scenario. When using the template to import a model, select the model directory containing the model files.

    + +

    Template Input

    The template input is the TensorFlow-based model package stored on OBS. Ensure that the OBS directory you use and ModelArts are in the same region. For details about model package requirements, see Model Package Example.

    + +

    Input and Output Mode

    Undefined Mode can be overwritten. That is, you can select another input and output mode during model creation.

    + +

    Model Package Specifications

    • The model package must be stored in the OBS folder named model. Model files and the model inference code file are stored in the model folder.
    • The model inference code file is optional. If the file exists, the file name must be customize_service.py. Only one inference code file can exist in the model folder. For details about how to compile the model inference code file, see Specifications for Compiling Model Inference Code.
    +
    • The structure of the model package imported using the template is as follows:
      model/
      +│
      +├── Model file                 //(Mandatory) The model file format varies according to the engine. For details, see the model package example.
      +├── Custom Python package           //(Optional) User's Python package, which can be directly referenced in the model inference code
      +├── customize_service.py  //(Optional) Model inference code file. The file name must be customize_service.py. Otherwise, the code is not considered as inference code.
      +
    + +

    Model Package Example

    Structure of the TensorFlow-based model package

    +

    When publishing the model, you only need to specify the model directory.

    +
    OBS bucket/directory name
    +|── model    (Mandatory) The folder must be named model and is used to store model-related files.
    +    ├── <<Custom Python package>>    (Optional) User's Python package, which can be directly referenced in the model inference code
    +    ├── saved_model.pb        (Mandatory) Protocol buffer file, which contains the diagram description of the model
    +    ├── variables             Mandatory for the main file of the *.pb model. The folder must be named variables and contains the weight deviation of the model.
    +        ├── variables.index                   Mandatory
    +        ├── variables.data-00000-of-00001     Mandatory
    +    ├──customize_service.py   (Optional) Model inference code file. The file must be named customize_service.py. Only one inference code file exists. The .py file on which customize_service.py depends can be directly put in the model directory.
    + + + + +Parent topic: Template Description + + + diff --git a/modelarts/umn/temp/tensorflow.tmp b/modelarts/umn/temp/tensorflow.tmp new file mode 100644 index 000000000..9d8ccb79c --- /dev/null +++ b/modelarts/umn/temp/tensorflow.tmp @@ -0,0 +1,739 @@ + + +

    TensorFlow

    +

    TensorFlow has two types of APIs: Keras and tf. Keras and tf use different code for training and saving models, but the same code for inference.

    +

    Training a Model (Keras API)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    from keras.models import Sequential
    +model = Sequential()
    +from keras.layers import Dense
    +import tensorflow as tf
    +
    +# Import a training dataset.
    +mnist = tf.keras.datasets.mnist
    +(x_train, y_train),(x_test, y_test) = mnist.load_data()
    +x_train, x_test = x_train / 255.0, x_test / 255.0
    +
    +print(x_train.shape)
    +
    +from keras.layers import Dense
    +from keras.models import Sequential
    +import keras
    +from keras.layers import Dense, Activation, Flatten, Dropout
    +
    +# Define a model network.
    +model = Sequential()
    +model.add(Flatten(input_shape=(28,28)))
    +model.add(Dense(units=5120,activation='relu'))
    +model.add(Dropout(0.2))
    +
    +model.add(Dense(units=10, activation='softmax'))
    +
    +# Define an optimizer and loss functions.
    +model.compile(optimizer='adam',
    +              loss='sparse_categorical_crossentropy',
    +              metrics=['accuracy'])
    +
    +model.summary()
    +# Train the model.
    +model.fit(x_train, y_train, epochs=2)
    +# Evaluate the model.
    +model.evaluate(x_test, y_test)
    +
    +
    + +

    Saving a Model (Keras API)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    from keras import backend as K  
    +
    +# K.get_session().run(tf.global_variables_initializer())
    +
    +# Define the inputs and outputs of the prediction API.
    +# The key values of the inputs and outputs dictionaries are used as the index keys for the input and output tensors of the model.
    + # The input and output definitions of the model must match the custom inference script.
    +predict_signature = tf.saved_model.signature_def_utils.predict_signature_def(
    +    inputs={"images" : model.input},
    +    outputs={"scores" : model.output}
    +)
    +
    +# Define a save path.
    +builder = tf.saved_model.builder.SavedModelBuilder('./mnist_keras/')
    +
    +builder.add_meta_graph_and_variables(
    +
    +    sess = K.get_session(),
    +    # The tf.saved_model.tag_constants.SERVING tag needs to be defined for inference and deployment.
    +    tags=[tf.saved_model.tag_constants.SERVING],
    +    """
    +    signature_def_map: Only single items can exist, or the corresponding key needs to be defined as follows:
    +    tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
    +    """
    +    signature_def_map={
    +        tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
    +            predict_signature
    +    }
    +
    +)
    +builder.save()
    +
    +
    + +

    Training a Model (tf API)

      1
    +  2
    +  3
    +  4
    +  5
    +  6
    +  7
    +  8
    +  9
    + 10
    + 11
    + 12
    + 13
    + 14
    + 15
    + 16
    + 17
    + 18
    + 19
    + 20
    + 21
    + 22
    + 23
    + 24
    + 25
    + 26
    + 27
    + 28
    + 29
    + 30
    + 31
    + 32
    + 33
    + 34
    + 35
    + 36
    + 37
    + 38
    + 39
    + 40
    + 41
    + 42
    + 43
    + 44
    + 45
    + 46
    + 47
    + 48
    + 49
    + 50
    + 51
    + 52
    + 53
    + 54
    + 55
    + 56
    + 57
    + 58
    + 59
    + 60
    + 61
    + 62
    + 63
    + 64
    + 65
    + 66
    + 67
    + 68
    + 69
    + 70
    + 71
    + 72
    + 73
    + 74
    + 75
    + 76
    + 77
    + 78
    + 79
    + 80
    + 81
    + 82
    + 83
    + 84
    + 85
    + 86
    + 87
    + 88
    + 89
    + 90
    + 91
    + 92
    + 93
    + 94
    + 95
    + 96
    + 97
    + 98
    + 99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    from __future__ import print_function
    +
    +import gzip
    +import os
    +import urllib
    +
    +import numpy
    +import tensorflow as tf
    +from six.moves import urllib
    +
    +# Training data is obtained from the Yann LeCun official website http://yann.lecun.com/exdb/mnist/.
    +SOURCE_URL = 'http://yann.lecun.com/exdb/mnist/'
    +TRAIN_IMAGES = 'train-images-idx3-ubyte.gz'
    +TRAIN_LABELS = 'train-labels-idx1-ubyte.gz'
    +TEST_IMAGES = 't10k-images-idx3-ubyte.gz'
    +TEST_LABELS = 't10k-labels-idx1-ubyte.gz'
    +VALIDATION_SIZE = 5000
    +
    +
    +def maybe_download(filename, work_directory):
    +    """Download the data from Yann's website, unless it's already here."""
    +    if not os.path.exists(work_directory):
    +        os.mkdir(work_directory)
    +    filepath = os.path.join(work_directory, filename)
    +    if not os.path.exists(filepath):
    +        filepath, _ = urllib.request.urlretrieve(SOURCE_URL + filename, filepath)
    +        statinfo = os.stat(filepath)
    +        print('Successfully downloaded %s %d bytes.' % (filename, statinfo.st_size))
    +    return filepath
    +
    +
    +def _read32(bytestream):
    +    dt = numpy.dtype(numpy.uint32).newbyteorder('>')
    +    return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]
    +
    +
    +def extract_images(filename):
    +    """Extract the images into a 4D uint8 numpy array [index, y, x, depth]."""
    +    print('Extracting %s' % filename)
    +    with gzip.open(filename) as bytestream:
    +        magic = _read32(bytestream)
    +        if magic != 2051:
    +            raise ValueError(
    +                'Invalid magic number %d in MNIST image file: %s' %
    +                (magic, filename))
    +        num_images = _read32(bytestream)
    +        rows = _read32(bytestream)
    +        cols = _read32(bytestream)
    +        buf = bytestream.read(rows * cols * num_images)
    +        data = numpy.frombuffer(buf, dtype=numpy.uint8)
    +        data = data.reshape(num_images, rows, cols, 1)
    +        return data
    +
    +
    +def dense_to_one_hot(labels_dense, num_classes=10):
    +    """Convert class labels from scalars to one-hot vectors."""
    +    num_labels = labels_dense.shape[0]
    +    index_offset = numpy.arange(num_labels) * num_classes
    +    labels_one_hot = numpy.zeros((num_labels, num_classes))
    +    labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
    +    return labels_one_hot
    +
    +
    +def extract_labels(filename, one_hot=False):
    +    """Extract the labels into a 1D uint8 numpy array [index]."""
    +    print('Extracting %s' % filename)
    +    with gzip.open(filename) as bytestream:
    +        magic = _read32(bytestream)
    +        if magic != 2049:
    +            raise ValueError(
    +                'Invalid magic number %d in MNIST label file: %s' %
    +                (magic, filename))
    +        num_items = _read32(bytestream)
    +        buf = bytestream.read(num_items)
    +        labels = numpy.frombuffer(buf, dtype=numpy.uint8)
    +        if one_hot:
    +            return dense_to_one_hot(labels)
    +        return labels
    +
    +
    +class DataSet(object):
    +    """Class encompassing test, validation and training MNIST data set."""
    +
    +    def __init__(self, images, labels, fake_data=False, one_hot=False):
    +        """Construct a DataSet. one_hot arg is used only if fake_data is true."""
    +
    +        if fake_data:
    +            self._num_examples = 10000
    +            self.one_hot = one_hot
    +        else:
    +            assert images.shape[0] == labels.shape[0], (
    +                    'images.shape: %s labels.shape: %s' % (images.shape,
    +                                                           labels.shape))
    +            self._num_examples = images.shape[0]
    +
    +            # Convert shape from [num examples, rows, columns, depth]
    +            # to [num examples, rows*columns] (assuming depth == 1)
    +            assert images.shape[3] == 1
    +            images = images.reshape(images.shape[0],
    +                                    images.shape[1] * images.shape[2])
    +            # Convert from [0, 255] -> [0.0, 1.0].
    +            images = images.astype(numpy.float32)
    +            images = numpy.multiply(images, 1.0 / 255.0)
    +        self._images = images
    +        self._labels = labels
    +        self._epochs_completed = 0
    +        self._index_in_epoch = 0
    +
    +    @property
    +    def images(self):
    +        return self._images
    +
    +    @property
    +    def labels(self):
    +        return self._labels
    +
    +    @property
    +    def num_examples(self):
    +        return self._num_examples
    +
    +    @property
    +    def epochs_completed(self):
    +        return self._epochs_completed
    +
    +    def next_batch(self, batch_size, fake_data=False):
    +        """Return the next `batch_size` examples from this data set."""
    +        if fake_data:
    +            fake_image = [1] * 784
    +            if self.one_hot:
    +                fake_label = [1] + [0] * 9
    +            else:
    +                fake_label = 0
    +            return [fake_image for _ in range(batch_size)], [
    +                fake_label for _ in range(batch_size)
    +            ]
    +        start = self._index_in_epoch
    +        self._index_in_epoch += batch_size
    +        if self._index_in_epoch > self._num_examples:
    +            # Finished epoch
    +            self._epochs_completed += 1
    +            # Shuffle the data
    +            perm = numpy.arange(self._num_examples)
    +            numpy.random.shuffle(perm)
    +            self._images = self._images[perm]
    +            self._labels = self._labels[perm]
    +            # Start next epoch
    +            start = 0
    +            self._index_in_epoch = batch_size
    +            assert batch_size <= self._num_examples
    +        end = self._index_in_epoch
    +        return self._images[start:end], self._labels[start:end]
    +
    +
    +def read_data_sets(train_dir, fake_data=False, one_hot=False):
    +    """Return training, validation and testing data sets."""
    +
    +    class DataSets(object):
    +        pass
    +
    +    data_sets = DataSets()
    +
    +    if fake_data:
    +        data_sets.train = DataSet([], [], fake_data=True, one_hot=one_hot)
    +        data_sets.validation = DataSet([], [], fake_data=True, one_hot=one_hot)
    +        data_sets.test = DataSet([], [], fake_data=True, one_hot=one_hot)
    +        return data_sets
    +
    +    local_file = maybe_download(TRAIN_IMAGES, train_dir)
    +    train_images = extract_images(local_file)
    +
    +    local_file = maybe_download(TRAIN_LABELS, train_dir)
    +    train_labels = extract_labels(local_file, one_hot=one_hot)
    +
    +    local_file = maybe_download(TEST_IMAGES, train_dir)
    +    test_images = extract_images(local_file)
    +
    +    local_file = maybe_download(TEST_LABELS, train_dir)
    +    test_labels = extract_labels(local_file, one_hot=one_hot)
    +
    +    validation_images = train_images[:VALIDATION_SIZE]
    +    validation_labels = train_labels[:VALIDATION_SIZE]
    +    train_images = train_images[VALIDATION_SIZE:]
    +    train_labels = train_labels[VALIDATION_SIZE:]
    +
    +    data_sets.train = DataSet(train_images, train_labels)
    +    data_sets.validation = DataSet(validation_images, validation_labels)
    +    data_sets.test = DataSet(test_images, test_labels)
    +    return data_sets
    +
    +training_iteration = 1000
    +
    +modelarts_example_path =  './modelarts-mnist-train-save-deploy-example'
    +
    +export_path = modelarts_example_path + '/model/'
    +data_path = './'
    +
    +print('Training model...')
    +mnist = read_data_sets(data_path, one_hot=True)
    +sess = tf.InteractiveSession()
    +serialized_tf_example = tf.placeholder(tf.string, name='tf_example')
    +feature_configs = {'x': tf.FixedLenFeature(shape=[784], dtype=tf.float32), }
    +tf_example = tf.parse_example(serialized_tf_example, feature_configs)
    +x = tf.identity(tf_example['x'], name='x')  # use tf.identity() to assign name
    +y_ = tf.placeholder('float', shape=[None, 10])
    +w = tf.Variable(tf.zeros([784, 10]))
    +b = tf.Variable(tf.zeros([10]))
    +sess.run(tf.global_variables_initializer())
    +y = tf.nn.softmax(tf.matmul(x, w) + b, name='y')
    +cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
    +train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
    +values, indices = tf.nn.top_k(y, 10)
    +table = tf.contrib.lookup.index_to_string_table_from_tensor(
    +    tf.constant([str(i) for i in range(10)]))
    +prediction_classes = table.lookup(tf.to_int64(indices))
    +for _ in range(training_iteration):
    +    batch = mnist.train.next_batch(50)
    +    train_step.run(feed_dict={x: batch[0], y_: batch[1]})
    +correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
    +accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
    +print('training accuracy %g' % sess.run(
    +    accuracy, feed_dict={
    +        x: mnist.test.images,
    +        y_: mnist.test.labels
    +    }))
    +print('Done training!')
    +
    +
    + +

    Saving a Model (tf API)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    # Export the model.
    +# The model needs to be saved using the saved_model API.
    +print('Exporting trained model to', export_path)
    +builder = tf.saved_model.builder.SavedModelBuilder(export_path)
    +
    +tensor_info_x = tf.saved_model.utils.build_tensor_info(x)
    +tensor_info_y = tf.saved_model.utils.build_tensor_info(y)
    +
    +# Define the inputs and outputs of the prediction API.
    +# The key values of the inputs and outputs dictionaries are used as the index keys for the input and output tensors of the model.
    + # The input and output definitions of the model must match the custom inference script.
    +prediction_signature = (
    +    tf.saved_model.signature_def_utils.build_signature_def(
    +        inputs={'images': tensor_info_x},
    +        outputs={'scores': tensor_info_y},
    +        method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))
    +
    +legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
    +builder.add_meta_graph_and_variables(
    +    # Set tag to serve/tf.saved_model.tag_constants.SERVING.
    +    sess, [tf.saved_model.tag_constants.SERVING],
    +    signature_def_map={
    +        'predict_images':
    +            prediction_signature,
    +    },
    +    legacy_init_op=legacy_init_op)
    +
    +builder.save()
    +
    +print('Done exporting!')
    +
    +
    + +

    Inference Code (Keras and tf APIs)

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    from PIL import Image
    +import numpy as np
    +from model_service.tfserving_model_service import TfServingBaseService
    +
    +
    +class mnist_service(TfServingBaseService):
    +
    +    # Match the model input with the user's HTTPS API input during preprocessing.
    +    # The model input corresponding to the preceding training part is {"images":<array>}.
    +    def _preprocess(self, data):
    +
    +        preprocessed_data = {}
    +        images = []
    +        # Iterate the input data.
    +        for k, v in data.items():
    +            for file_name, file_content in v.items():
    +                image1 = Image.open(file_content)
    +                image1 = np.array(image1, dtype=np.float32)
    +                image1.resize((1,784))
    +                images.append(image1)
    +        # Return the numpy array.
    +        images = np.array(images,dtype=np.float32)
    +        # Perform batch processing on multiple input samples and ensure that the shape is the same as that inputted during training.
    +        images.resize((len(data), 784))
    +        preprocessed_data['images'] = images
    +        return preprocessed_data
    +
    +    # Processing logic of the inference for invoking the parent class.
    +
    +    # The output corresponding to model saving in the preceding training part is {"scores":<array>}.
    +    # Postprocess the HTTPS output.
    +    def _postprocess(self, data):
    +        infer_output = {"mnist_result": []}
    +        # Iterate the model output.
    +        for output_name, results in data.items():
    +            for result in results:
    +                infer_output["mnist_result"].append(result.index(max(result)))
    +        return infer_output
    +
    +
    + + + + +Parent topic: Examples of Custom Scripts + + + diff --git a/modelarts/umn/temp/testing_a_service.tmp b/modelarts/umn/temp/testing_a_service.tmp new file mode 100644 index 000000000..2c717a2e7 --- /dev/null +++ b/modelarts/umn/temp/testing_a_service.tmp @@ -0,0 +1,25 @@ + + +

    Testing a Service

    +

    After a model is deployed as a real-time service, you can debug code or add files for testing on the Prediction tab page. Based on the input request (JSON text or file) defined by the model, the service can be tested in either of the following ways:

    +
    1. JSON Text Prediction: If the input type of the model of the deployed service is JSON text, that is, the input does not contain files, you can enter the JSON code on the Prediction tab page for service testing.
    2. File Prediction (Images and Audios): If the input type of the model of the deployed service is file, including images, audios, and videos, you can add images on the Prediction tab page for service testing.
    +
    • If the input type is image, the size of a single image must be less than 10 MB.
    • The following image types are supported: png, psd, jpg, jpeg, bmp, gif, webp, psd, svg, and tiff.
    + +

    Input Parameters

    For the service that you have deployed, you can learn about its input parameters of the service, that is, the input request type mentioned above, on the Usage Guides tab page of the service details page.

    +

    The input parameters displayed on the Usage Guides tab page depend on the model source that you select.

    +
    • If your model comes from ExeML or a built-in algorithm, the input and output parameters are defined by ModelArts. For details, see the Usage Guides tab page. On the Prediction tab page, enter the corresponding JSON text or file for service testing.
    • If you use a custom model with the inference code and configuration file compiled by yourself (Specifications for Compiling the Model Configuration File), the Usage Guides tab page only visualizes your data. The following figure shows the mapping between the input parameters displayed on the Usage Guides tab page and the configuration file.Figure 1 Mapping between the configuration file and Usage Guides
      +
    • If your model is imported using a model template, the input and output parameters vary with the template. For details, see Introduction to Model Templates.
    + +

    JSON Text Prediction

    1. Log in to the ModelArts management console and choose Service Deployment > Real-Time Services.
    2. On the Real-Time Services page, click the name of the target service. The service details page is displayed. On the Prediction tab page, enter the prediction code and click Predict to perform prediction.

      +
    + +

    File Prediction (Images and Audios)

    1. Log in to the ModelArts management console and choose Service Deployment > Real-Time Services.
    2. On the Real-Time Services page, click the name of the target service. The service details page is displayed. On the Prediction tab page, click Upload and select a test file. After the file is uploaded successfully, click Predict to perform a prediction test.

      +
    + + + + +Parent topic: Real-Time Services + + + diff --git a/modelarts/umn/temp/text_classification.tmp b/modelarts/umn/temp/text_classification.tmp new file mode 100644 index 000000000..8fddb8db5 --- /dev/null +++ b/modelarts/umn/temp/text_classification.tmp @@ -0,0 +1,44 @@ + + +

    Text Classification

    +

    Model training requires a large amount of labeled data. Therefore, before the model training, add labels to the files that are not labeled. In addition, you can modify, delete, and re-label the labeled text.

    +

    Text classification classifies text content based on labels. Before labeling text content, you need to understand the following:

    +
    • Text labeling supports multiple labels. That is, you can add multiple labels to a labeling object.
    • A label name can contain a maximum of 32 characters, including Chinese characters, letters, digits, hyphens (-), and underscores (_).
    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Labeling Content

    The dataset details page displays the labeled and unlabeled text files in the dataset. The Unlabeled tab page is displayed by default.

    +
    1. On the Unlabeled tab page, the objects to be labeled are listed in the left pane. In the list, click the text object to be labeled, and select a label in the Label Set area in the right pane. Multiple labels can be added to a labeling object.

      You can repeat this operation to select objects and add labels to the objects.

      +Figure 1 Labeling for text classification
      +
    2. After all objects are labeled, click Save Current Page at the bottom of the page to complete labeling text files on the Unlabeled tab page.
    + +

    Adding Labels

    • Adding labels on the Unlabeled tab page: Click the plus sign (+) next to Label Set. On the Add Label page that is displayed, add a label name, select a label color, and click OK.Figure 2 Adding a label (1)
      +
    • Adding labels on the Labeled tab page: Click the plus sign (+) next to All Labels. On the Add Label page that is displayed, add a label name, select a label color, and click OK.Figure 3 Adding a label (2)
      +
    + +

    Viewing the Labeled Text

    On the dataset details page, click the Labeled tab to view the list of the labeled text. You can also view all labels supported by the dataset in the All Labels area on the right.

    + +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +
    • Modifying based on texts

      On the dataset details page, click the Labeled tab, and select the text to be modified from the text list.

      +

      In the text list, click the text. When the text background turns blue, the text is selected. If a text file has multiple labels, you can click above a label to delete the label.

      +
    +
    • Modifying based on labels

      On the dataset details page, click the Labeled tab. The information about all labels is displayed on the right.

      +
      • Batch modification: In the All Labels area, click the editing icon in the Operation column, modify the label name in the text box, select a label color, and click OK.
      • Batch deletion: In the All Labels area, click the deletion icon in the Operation column to delete the label. In the dialog box that is displayed, select Delete label or Delete label and objects with only the label, and click OK.
      +
    + +

    Adding Files

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add text files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add File.
    2. In the displayed Add File dialog box, set the parameters as required and then select the file to be uploaded.

      Select one or more files to be uploaded in the local environment. Only .txt and .csv files are supported. The total size of files uploaded at a time cannot exceed 8 MB. Text and Label Separator and Label Separator must be different.

      +
      • Pattern: Select Merge text objects and labels or Separate text objects and labels. An example is provided. Determine the mode of the file to be added by referring to the example.
      • Text and Label Separator: Select Tab, Space, Semicolon, Comma, or Other. If you select Other, enter a separator in the text box on the right.
      • Label Separator: Select Tab, Space, Semicolon, Comma, or Other. If you select Other, enter a separator in the text box on the right.
      +
    3. In the Add File dialog box, click Upload. The files you add will be automatically displayed on the Unlabeled or Labeled tab page.
    + +

    Deleting a File

    You can quickly delete the files you want to discard.

    +
    • On the Unlabeled tab page, select the text to be deleted, and click Delete in the upper left corner to delete the text.
    • On the Labeled tab page, select the text to be deleted and click Delete. Alternatively, you can tick Select Images on Current Page to select all text objects on the current page and click Delete in the upper left corner.
    +

    The background of the selected text is blue.

    + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/text_triplet.tmp b/modelarts/umn/temp/text_triplet.tmp new file mode 100644 index 000000000..ef0218ab9 --- /dev/null +++ b/modelarts/umn/temp/text_triplet.tmp @@ -0,0 +1,38 @@ + + +

    Text Triplet

    +

    Triplet labeling is suitable for scenarios where structured information, such as subjects, predicates, and objects, needs to be labeled in statements. With this function, not only entities in statements, but also relationships between entities can be labeled. Triplet labeling is often used in natural language processing tasks such as dependency syntax analysis and information extraction.

    +

    Text triplet labeling involves two classes of important labels: Entity Label and Relationship Label. For the Relationship Label, you need to set its Source entity and Target entity.

    +
    • You can define multiple entity and relationship labels for a text object.
    • The Entity Label defined during dataset creation cannot be deleted.
    +

    Precautions

    Before labeling, ensure that the Entity Label and Relationship Label of a dataset have been defined. For the Relationship Label, you need to set its Source entity and Target entity. The Relationship Label must be between the defined Source entity and Target entity.

    +

    For example, if two entities are labeled as Place, you cannot add any relationship label between them. If a relationship label cannot be added, a red cross is displayed.

    + +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Labeling Content

    The dataset details page displays the labeled and unlabeled text objects in the dataset. The Unlabeled tab page is displayed by default.

    +
    1. On the Unlabeled tab page, the objects to be labeled are listed in the left pane. In the list, click a text object, select the corresponding text content on the right pane, and select an entity name from the displayed entity list to label the content.Figure 1 Labeling an entity
      +
    2. After labeling multiple entities, click the source entity and target entity in sequence and select a relationship type from the displayed relationship list to label the relationship.Figure 2 Labeling a relationship
      +
    3. After all objects are labeled, click Save Current Page at the bottom of the page.
    +

    You cannot modify the labels of a dataset in the text triplet type on the labeling page. Instead, click Edit to enter the Modify Dataset page and modify the Entity Label and Relationship Label.

    + + +

    Modifying Labeled Data

    After labeling data, you can modify labeled data on the Labeled tab page.

    +

    On the dataset details page, click the Labeled tab. Select a text object in the left pane and the right pane displays the detailed label information. You can move your cursor to the entity or relationship label, and right-click to delete it. You can also click the source entity and target entity in sequence to add a relationship label.

    +

    You can click Delete Labels on Current Item at the bottom of the page to delete all labels in the selected text object.

    + +

    Adding a File

    In addition to automatically synchronizing data from Input Dataset Path, you can directly add text files on ModelArts for data labeling.

    +
    1. On the dataset details page, click the Unlabeled tab. Then click Add File.
    2. In the Add File dialog box that is displayed, select the files to be uploaded.

      Select one or more files to be uploaded in the local environment. Only .txt and .csv files are supported. The total size of files uploaded at a time cannot exceed 8 MB.

      +
    3. In the Add File dialog box, click Upload. The files you add will be automatically displayed in the Labeling Objects list on the Unlabeled tab page.
    + +

    Deleting a File

    You can quickly delete the files you want to discard.

    +
    • On the Unlabeled tab page, select the text to be deleted, and click Delete in the upper left corner to delete the text.
    • On the Labeled tab page, select the text to be deleted and click Delete. Alternatively, you can tick Select Images on Current Page to select all text objects on the current page and click Delete in the upper left corner.
    +

    The background of the selected text is blue. If no text is selected on the page, the Delete button is unavailable.

    + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/tips.tmp b/modelarts/umn/temp/tips.tmp new file mode 100644 index 000000000..6eefe798c --- /dev/null +++ b/modelarts/umn/temp/tips.tmp @@ -0,0 +1,22 @@ + + +

    Tips

    +

    + + + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/training_a_model.tmp b/modelarts/umn/temp/training_a_model.tmp new file mode 100644 index 000000000..e9e0b6528 --- /dev/null +++ b/modelarts/umn/temp/training_a_model.tmp @@ -0,0 +1,106 @@ + + +

    Training a Model

    +

    After labeling the images, you can train a model. You can perform model training to obtain the required image classification model. Training images must be classified into at least two classes, and each class must contain at least five images. Before training, ensure that the labeled images meet the requirements. Otherwise, the Train button is unavailable.

    +

    Procedure

    1. On the ExeML page, click the name of the project that is successfully created. The Label Data tab page is displayed.
    2. On the Label Data tab page, click Train in the upper right corner. In the displayed Training Configuration dialog box, set related parameters. Table 1 describes the parameters. +.. _modelarts_21_0006__en-us_topic_0284258835_en-us_topic_0169446155_table56110116164: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Parameter description

      Parameter

      +

      Description

      +

      Default Value

      +

      Dataset Version

      +

      This version is the one when the dataset is published in Data Management. In an ExeML project, when a training job is started, the dataset is published as a version based on the previous data labeling.

      +

      The system automatically provides a version number. You can change it to the version number that you want.

      +

      Randomly provided by the system

      +

      Training and Validation Ratios

      +

      The labeled sample is randomly divided into a training set and a validation set. By default, the ratio for the training set is 0.8, and that for the validation set is 0.2. The usage field in the manifest file records the set type. The value ranges from 0 to 1.

      +

      0.8

      +

      Incremental Training Version

      +

      Select the version with the highest precision to perform training again. This accelerates model convergence and improves training precision.

      +

      None

      +

      Max. Training Duration (Minute)

      +

      If training is not completed within the maximum training duration, the model is saved and training stops. To prevent the model from exiting before convergence, set this parameter to a large value. The value ranges from 6 to 6000. It is a good practice to properly extend the training duration.

      +

      60

      +

      Training Preference

      +
      • performance_first: performance first. The training duration is short and the generated model is small.
      • balance: balanced performance and precision
      • accuracy_first: precision first. The training duration is long and the generated model is large.
      +

      balance

      +

      Instance Flavor

      +

      Select the resource specifications used for training. By default, the following specifications are supported:

      +
      • Compute-intensive instance (GPU)
      +

      The compute flavors are for reference only. Obtain the flavors on the management console.

      +

      ExeML (GPU)

      +
      + +
    3. After configuring training parameters, click Next to go to the configuration page, confirm the specifications, and click Submit to start auto model training. The training takes a certain period of time. Wait until the training is complete. If you close or exit this page, the system still performs the training operation.
    4. On the Train Model tab page, wait until the training status changes from Running to Completed.
    5. View the training details, such as Accuracy, Evaluation Result, Training Parameters, and Classification Statistics. For details about the evaluation result parameters, see Table 2. +.. _modelarts_21_0006__en-us_topic_0284258835_en-us_topic_0169446155_table19888201216: + + + + + + + + + + + + + + + + + + +
      Table 2 Evaluation result parameters

      Parameter

      +

      Description

      +

      Recall

      +

      Fraction of correctly predicted samples over all samples predicted as a class. It shows the ability of a model to distinguish positive samples.

      +

      Precision

      +

      Fraction of correctly predicted samples over all samples predicted as a class. It shows the ability of a model to distinguish negative samples.

      +

      Accuracy

      +

      Fraction of correctly predicted samples over all samples. It shows the general ability of a model to recognize samples.

      +

      F1 Score

      +

      Harmonic average of the precision and recall of a model. It is used to evaluate the quality of a model. A high F1 score indicates a good model.

      +
      + +
    +

    An ExeML project supports multiple rounds of training, and each round generates a version. For example, the first training version is V001 (xxx), and the next version is V002 (xxx). The trained models can be managed by training version. After the trained model meets your requirements, deploy the model as a service.

    + + + + + +Parent topic: Image Classification + + + diff --git a/modelarts/umn/temp/training_jobs.tmp b/modelarts/umn/temp/training_jobs.tmp new file mode 100644 index 000000000..4dd5423f1 --- /dev/null +++ b/modelarts/umn/temp/training_jobs.tmp @@ -0,0 +1,21 @@ + + +

    Training Jobs

    + + + + + +Parent topic: FAQs + + + diff --git a/modelarts/umn/temp/training_management.tmp b/modelarts/umn/temp/training_management.tmp new file mode 100644 index 000000000..833cccb4c --- /dev/null +++ b/modelarts/umn/temp/training_management.tmp @@ -0,0 +1,23 @@ + + +

    Training Management

    + + + + + diff --git a/modelarts/umn/temp/undefined_mode.tmp b/modelarts/umn/temp/undefined_mode.tmp new file mode 100644 index 000000000..a772f2835 --- /dev/null +++ b/modelarts/umn/temp/undefined_mode.tmp @@ -0,0 +1,18 @@ + + +

    Undefined Mode

    +

    Description

    The undefined mode does not define the input and output mode. The input and output mode is determined by the model. Select this mode only when the existing input and output mode is not applicable to the application scenario of the model. The models imported in undefined mode cannot be deployed as batch services. In addition, the service prediction page may not be displayed properly. New modes are coming soon for more application scenarios.

    + +

    Input

    No limit.

    + +

    Output

    No limit.

    + +

    Sample Request

    The undefined mode has no specific sample request because the input and output of the request are entirely determined by the model.

    + + + + +Parent topic: Input and Output Modes + + + diff --git a/modelarts/umn/temp/uploading_and_downloading_data.tmp b/modelarts/umn/temp/uploading_and_downloading_data.tmp new file mode 100644 index 000000000..8a3b94c1c --- /dev/null +++ b/modelarts/umn/temp/uploading_and_downloading_data.tmp @@ -0,0 +1,21 @@ + + + +

    Uploading and Downloading Data

    + +

    + + + + + + +Parent topic: Using JupyterLab + + + diff --git a/modelarts/umn/temp/uploading_data_to_jupyterlab.tmp b/modelarts/umn/temp/uploading_data_to_jupyterlab.tmp new file mode 100644 index 000000000..505e75698 --- /dev/null +++ b/modelarts/umn/temp/uploading_data_to_jupyterlab.tmp @@ -0,0 +1,38 @@ + + +

    Uploading Data to JupyterLab

    +

    On the JupyterLab page, click Upload Files to upload a file. For details, see Uploading a File in Introduction to JupyterLab and Common Operations. If a message is displayed indicating that the size of the files to be uploaded exceeds the upper limit when uploading files to notebook instances or JupyterLab, you can upload the files to OBS and then download them to notebook instances.

    +

    Step 1: Uploading Files to OBS

    Use the OBS API to upload large files because OBS Console has restrictions on the file size and quantity.

    + +

    Step 2: Downloading Files from OBS to Notebook Instances

    A notebook instance can be mounted to OBS or EVS as the storage location. The operation method varies depending on the instance types.

    +
    • Downloading files to notebook instances with EVS attached
      • Use the following MoXing API to synchronize files from OBS to notebook instances.Read an OBS file. For example, if you read the obs://bucket_name/obs_file.txt file, the content is returned as strings.
        1
        file_str = mox.file.read('obs://bucket_name/obs_file.txt')
        +
        +
        + +You can also open the file object and read data from it. Both methods are equivalent.
        1
        +2
        with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f:
        +  file_str = f.read()
        +
        +
        + +
      • Use the OBS API in the ModelArts SDK to download data from OBS to notebook instances.

        If the size of a single file exceeds 5 GB, the file cannot be uploaded in this mode. Use the MoXing API to upload large files.

        + +

        Sample code:

        +
        1
        +2
        +3
        from modelarts.session import Session
        +session = Session()
        +session.download_data(bucket_path="/bucket-name/dir1/sdk.txt", path="/home/user/sdk/obs.txt")
        +
        +
        +
      +
    • Downloading files to notebook instances using OBS for data storage

      Upload files to the OBS path specified during notebook instance creation and synchronize the files from OBS to the notebook instances using Sync OBS.

      +
    + + + + +Parent topic: Uploading and Downloading Data + + + diff --git a/modelarts/umn/temp/using_custom_images_to_train_models.tmp b/modelarts/umn/temp/using_custom_images_to_train_models.tmp new file mode 100644 index 000000000..3435deb33 --- /dev/null +++ b/modelarts/umn/temp/using_custom_images_to_train_models.tmp @@ -0,0 +1,147 @@ + + +

    Using Custom Images to Train Models

    +

    If the framework used for algorithm development is not a frequently-used framework, you can build an algorithm into a custom image and use the custom image to create a training job.

    +

    Prerequisites

    • Data has been prepared. Specifically, you have created an available dataset in ModelArts, or you have uploaded the dataset used for training to the OBS directory.
    • If the algorithm source is Custom, create an image and upload the image to SWR. For details, see .
    • The training script has been uploaded to the OBS directory.
    • At least one empty folder has been created on OBS for storing the training output.
    • The account is not in arrears because resources are consumed when training jobs are running.
    • The OBS directory you use and ModelArts are in the same region.
    + +

    Precautions

    • In the dataset directory specified for a training job, the names of the files (such as the image file, audio file, and label file) containing data used for training contain 0 to 255 characters. If the names of certain files in the dataset directory contain over 255 characters, the training job will ignore these files and use data in the valid files for training. If the names of all files in the dataset directory contain over 255 characters, no data is available for the training job and the training job fails.
    • In the training script, the Data Source and Training Output Path parameters must be set to the OBS path. Use the to perform read and write operations in the path.
    + +

    Creating a Training Job

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. By default, the system switches to the Training Jobs page.
    2. In the upper left corner of the training job list, click Create to switch to the Create Training Job page.
    3. Set related parameters.
      1. Set the basic information, including Name, Version, and Description. The Version information is automatically generated by the system and named in an ascending order of V001, V002, and so on. You cannot manually modify it.

        Specify Name and Description according to actual requirements.

        +
      2. Set job parameters, including the data source, algorithm source, and more. For details, see Table 1. +.. _modelarts_23_0239__en-us_topic_0216621184_table1819364517144: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 1 Job parameters

        Parameter

        +

        Sub-Parameter

        +

        Description

        +

        One-Click Configuration

        +

        -

        +

        If you have saved job parameter configurations in ModelArts, click One-Click Configuration and select an existing job parameter configuration as prompted to quickly complete parameter setting for the job.

        +

        Algorithm Source

        +

        Custom

        +

        For details about custom image specifications, see Specifications for Custom Images Used for Training Jobs.

        +
        • Image Path: SWR URL after the image is uploaded to SWR. For details about how to upload an image, see Creating and Uploading a Custom Image.
        • Code Directory: OBS path for storing the training code file.
        • Boot Command: Command to boot the training job after the image is started. Set this parameter based on site requirements. If the custom image is based on a basic ModelArts image, set parameters by referring to Creating a Training Job Using a Custom Image (GPU).
        +

        Data Source

        +

        Dataset

        +

        Select an available dataset and its version from the ModelArts Data Management module.

        +
        • Dataset: Select an existing dataset from the drop-down list. If no dataset is available in ModelArts, no result will be displayed in the drop-down list.
        • Version: Select a version according to the Dataset setting.
        +

        Data path

        +

        Select the training data from your OBS bucket. On the right of the Data path text box, click Select. In the dialog box that is displayed, select an OBS folder for storing data.

        +

        Training Output Path

        +

        -

        +

        Storage path of the training result

        + NOTE:

        To minimize errors, select an empty directory for Training Output Path. Do not select the directory used for storing the dataset for Training Output Path.

        + +

        Environment Variable

        +

        -

        +

        Add environment variables based on your image file. This parameter is optional. You can click Add Environment Variable to add multiple variable parameters.

        +

        Job Log Path

        +

        -

        +

        Select a path for storing log files generated during job running.

        +
        + +
      3. Select resources for the training job. +.. _modelarts_23_0239__en-us_topic_0216621184_table8958315124918: + + + + + + + + + + + + + + + + + + +
        Table 2 Resource parameters

        Parameter

        +

        Description

        +

        Resource Pool

        +

        Select resource pools for the job.

        +

        Type

        +

        If Resource Pool is set to Public resource pools, select a resource type. Available resource types are CPU and GPU.

        +

        The GPU resource delivers better performance, and the CPU resource is more cost effective. If the selected algorithm has been defined to use the CPU or GPU, the resource type is automatically displayed on the page. Select the resource type as required.

        +

        Specifications

        +

        Select a resource flavor based on the resource type.

        +

        +

        Compute Nodes

        +

        Set the number of compute nodes. If you set Compute Nodes to 1, the standalone computing mode is used. If you set Compute Nodes to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +
        + +
      4. Configure Notification and select whether to save the parameters of the training job. +.. _modelarts_23_0239__en-us_topic_0216621184_table1217141794320: + + + + + + + + + + + + +
        Table 3 Parameters related to notification and parameter configuration saving

        Parameter

        +

        Description

        +

        Notification

        +

        Select the resource pool status to be monitored from the event list, and SMN sends a notification message when the event occurs.

        +

        This parameter is optional. You can choose whether to enable subscription based on actual requirements. If you enable subscription, set the following parameters as required:

        +
        • Topic: indicates the topic name. You can create a topic on the SMN console.
        • Event: indicates the event to be subscribed to. The options are OnJobRunning, OnJobSucceeded, and OnJobFailed, indicating that training is in progress, successful, and failed, respectively.
        +

        Saving Training Parameters

        +

        If you select this option, the parameter settings of the current job will be saved to facilitate subsequent job creation.

        +

        Select Save Training Parameters and specify Configuration Name and Description. After a training job is created, you can switch to the Job Parameters tab page to view your saved job parameter settings. For details, see Managing Job Parameters.

        +
        + +
      5. After setting the parameters, click Next.
      +
    4. Confirm that the information is correct on the Confirm page that is displayed and click Submit. Generally, training jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      After a custom image job is created, the system authorizes ModelArts to obtain and run the image by default. When you run a custom image job for the first time, ModelArts checks the custom image. For details about the check, see Specifications for Custom Images Used for Training Jobs. You can view the cause of the check failure in the log and modify the custom image based on the log.

      +

      After the image is checked, the background starts the custom image container to run the custom image training job. You can switch to the training job list to view the basic information about training jobs. In the training job list, Status of the newly created training job is Initializing. If the status changes to Successful, the training job ends and the model generated is stored in the location specified by Training Output Path. If the status of a training job changes to Running failed. Click the name of the training job and view the job logs. Troubleshoot the fault based on the logs.

      +
      • After an image is reviewed, the image does not need to be reviewed again when being used to create training jobs again.
      • The default user of a custom image must be the user whose UID is 1101.
      + +
    + + + + +Parent topic: Creating a Training Job + + + diff --git a/modelarts/umn/temp/using_frequently-used_frameworks_to_train_models.tmp b/modelarts/umn/temp/using_frequently-used_frameworks_to_train_models.tmp new file mode 100644 index 000000000..bc95f30ed --- /dev/null +++ b/modelarts/umn/temp/using_frequently-used_frameworks_to_train_models.tmp @@ -0,0 +1,281 @@ + + +

    Using Frequently-used Frameworks to Train Models

    +

    If you use frequently-used frameworks, such as TensorFlow and MXNet, to develop algorithms locally, you can select Frequently-used to create training jobs and build models.

    +

    Prerequisites

    • Data has been prepared. Specifically, you have created an available dataset in ModelArts, or you have uploaded the dataset used for training to the OBS directory.
    • If you select Frequently-used for Algorithm Source, prepare the training script and upload it to the OBS directory.
    • At least one empty folder has been created on OBS for storing the training output.
    • The account is not in arrears because resources are consumed when training jobs are running.
    • The OBS directory you use and ModelArts are in the same region.
    + +

    Precautions

    • In the dataset directory specified for a training job, the names of the files (such as the image file, audio file, and label file) containing data used for training contain 0 to 255 characters. If the names of certain files in the dataset directory contain over 255 characters, the training job will ignore these files and use data in the valid files for training. If the names of all files in the dataset directory contain over 255 characters, no data is available for the training job and the training job fails.
    • In the training script, the Data Source and Training Output Path parameters must be set to the OBS path. Use the to perform read and write operations in the path.
    + +

    Frequently-used AI Frameworks for Training Management

    ModelArts supports the following AI engines and versions.

    + +.. _modelarts_23_0238__en-us_topic_0216621183_table1106232165220: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 AI engines supported by training jobs

    Environment

    +

    Supported Chip

    +

    System Architecture

    +

    System Version

    +

    AI Engine and Version

    +

    Supported CUDA or Ascend Version

    +

    TensorFlow

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    TF-1.13.1-python3.6

    +

    CUDA 10.0

    +

    TF-2.1.0-python3.6

    +

    CUDA 10.1

    +

    Caffe

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Caffe-1.0.0-python2.7

    +

    CUDA 8.0

    +

    Spark_MLlib

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Spark-2.3.2-python3.6

    +

    N/A

    +

    XGBoost-Sklearn

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Scikit_Learn-0.18.1-python3.6

    +

    N/A

    +

    PyTorch

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    PyTorch-1.3.0-python3.6

    +

    CUDA 10.0

    +

    PyTorch-1.4.0-python3.6

    +

    CUDA 10.1

    +

    Ascend-Powered-Engine

    +

    +

    Ascend 910

    +

    +

    AArch64

    +

    EulerOS 2.8

    +

    Mindspore-1.1.1-python3.7-aarch64

    +

    C76

    +

    TF-1.15-python3.7-aarch64

    +

    C76

    +

    MindSpore-GPU

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 18.04

    +

    MindSpore-1.1.0-python3.7

    +

    CUDA 10.1

    +
    + + +

    Creating a Training Job

    1. Log in to the ModelArts management console. In the left navigation pane, choose Training Management > Training Jobs. By default, the system switches to the Training Jobs page.
    2. In the upper left corner of the training job list, click Create to switch to the Create Training Job page.
    3. Set related parameters.
      1. Set the basic information, including Name, Version, and Description. The Version information is automatically generated by the system and named in an ascending order of V001, V002, and so on. You cannot manually modify it.

        Specify Name and Description according to actual requirements.

        +
      2. Set job parameters, including the data source, algorithm source, and more. For details, see Table 2. +.. _modelarts_23_0238__en-us_topic_0216621183_table1819364517144: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 2 Job parameters

        Parameter

        +

        Sub-Parameter

        +

        Description

        +

        One-Click Configuration

        +

        -

        +

        If you have saved job parameter configurations in ModelArts, click One-Click Configuration and select an existing job parameter configuration as prompted to quickly complete parameter setting for the job.

        +

        Algorithm Source

        +

        Frequently-used

        +

        Select an AI engine and its version and specify Code Directory and Boot File. The framework selected for the AI engine must be the same as the one you select when compiling training code. For example, if TensorFlow is used in your training code, select TensorFlow when you create a training job.

        +

        For details about the supported AI engines and versions, see Frequently-used AI Frameworks for Training Management.

        +

        If your model requires Python dependency packages, place the dependency packages and their configuration files in the code directory based on the requirements defined in ModelArts. For details, see How Do I Create a Training Job When a Dependency Package Is Referenced in a Model?.

        +

        Data Source

        +

        Dataset

        +

        Select an available dataset and its version from the ModelArts Data Management module.

        +
        • Dataset: Select an existing dataset from the drop-down list. If no dataset is available in ModelArts, no result will be displayed in the drop-down list.
        • Version: Select a version according to the Dataset setting.
        +

        Data path

        +

        Select the training data from your OBS bucket. On the right of the Data path text box, click Select. In the dialog box that is displayed, select an OBS folder for storing data.

        +

        Training Output Path

        +

        -

        +

        Select a path for storing the training result.

        + NOTE:

        To minimize errors, select an empty directory for Training Output Path. Do not select the directory used for storing the dataset for Training Output Path.

        + +

        Running Parameter

        +

        -

        +

        Set the command line parameters in the code based on the algorithm code logic. Make sure that the parameter names are the same as those in the code.

        +

        For example, train_steps = 10000, where train_steps is a passing parameter in code.

        +

        Job Log Path

        +

        -

        +

        Select a path for storing log files generated during job running.

        +
        + +
      3. Select resources for the training job. +.. _modelarts_23_0238__en-us_topic_0216621183_table1110144413718: + + + + + + + + + + + + + + + + + + +
        Table 3 Resource parameters

        Parameter

        +

        Description

        +

        Resource Pool

        +

        Select resource pools for the job.

        +

        Type

        +

        If Resource Pool is set to Public resource pools, select a resource type. Available resource types are CPU and GPU.

        +

        The GPU resource delivers better performance, and the CPU resource is more cost effective. If the selected algorithm has been defined to use the CPU or GPU, the resource type is automatically displayed on the page. Select the resource type as required.

        + NOTE:

        If GPU resources are used in training code, you must select a GPU cluster when selecting a resource pool. Otherwise, the training job may fail.

        + +

        Specifications

        +

        Select a resource flavor based on the resource type.

        +

        +

        Compute Nodes

        +

        Set the number of compute nodes. If you set Compute Nodes to 1, the standalone computing mode is used. If you set Compute Nodes to a value greater than 1, the distributed computing mode is used. Select a computing mode based on the actual requirements.

        +

        When Frequently-used of Algorithm Source is set to Caffe, only standalone training is supported, that is, Compute Nodes must be set to 1. For other options of Frequently-used, you can select the standalone or distributed mode based on service requirements.

        +
        + +
      4. Configure Notification and select whether to save the parameters of the training job. +.. _modelarts_23_0238__en-us_topic_0216621183_table1217141794320: + + + + + + + + + + + + +
        Table 4 Parameters related to notification and parameter configuration saving

        Parameter

        +

        Description

        +

        Notification

        +

        Select the resource pool status to be monitored from the event list, and SMN sends a notification message when the event occurs.

        +

        This parameter is optional. You can choose whether to enable subscription based on actual requirements. If you enable subscription, set the following parameters as required:

        +
        • Topic: indicates the topic name. You can create a topic on the SMN console.
        • Event: indicates the event to be subscribed to. The options are OnJobRunning, OnJobSucceeded, and OnJobFailed, indicating that training is in progress, successful, and failed, respectively.
        +

        Saving Training Parameters

        +

        If you select this option, the parameter settings of the current job will be saved to facilitate subsequent job creation.

        +

        Select Save Training Parameters and specify Configuration Name and Description. After a training job is created, you can switch to the Job Parameters tab page to view your saved job parameter settings. For details, see Managing Job Parameters.

        +
        + +
      5. After setting the parameters, click Next.
      +
    4. Confirm that the information is correct on the Confirm page that is displayed and click Submit. Generally, training jobs run for a period of time, which may be several minutes or tens of minutes depending on the amount of your selected data and resources.

      After a training job is created, it is started immediately.

      + +

      You can switch to the training job list to view the basic information about training jobs. In the training job list, Status of the newly created training job is Initializing. If the status changes to Successful, the training job ends and the model generated is stored in the location specified by Training Output Path. If the status of a training job changes to Running failed, click the name of the training job and view the job logs. Troubleshoot the fault based on the logs.

      +
    + + + + +Parent topic: Creating a Training Job + + + diff --git a/modelarts/umn/temp/using_jupyter_notebook.tmp b/modelarts/umn/temp/using_jupyter_notebook.tmp new file mode 100644 index 000000000..c2a0f8111 --- /dev/null +++ b/modelarts/umn/temp/using_jupyter_notebook.tmp @@ -0,0 +1,27 @@ + + + +

    Using Jupyter Notebook

    + +

    + + + + + + +Parent topic: DevEnviron (Notebook) + + + diff --git a/modelarts/umn/temp/using_jupyterlab.tmp b/modelarts/umn/temp/using_jupyterlab.tmp new file mode 100644 index 000000000..04e2ecd1f --- /dev/null +++ b/modelarts/umn/temp/using_jupyterlab.tmp @@ -0,0 +1,20 @@ + + +

    Using JupyterLab

    +

    + + + + + +Parent topic: DevEnviron (Notebook) + + + diff --git a/modelarts/umn/temp/using_modelarts_sdks.tmp b/modelarts/umn/temp/using_modelarts_sdks.tmp new file mode 100644 index 000000000..1192c31ea --- /dev/null +++ b/modelarts/umn/temp/using_modelarts_sdks.tmp @@ -0,0 +1,79 @@ + + +

    Using ModelArts SDKs

    +

    In notebook instances, you can use ModelArts SDKs to manage OBS, training jobs, models, and real-time services.

    +

    For details about how to use ModelArts SDKs, see ModelArts SDK Reference.

    +

    Notebooks carry the authentication (AK/SK) and region information about login users. Therefore, SDK session authentication can be completed without entering parameters.

    +

    Example Code

    • Creating a training job
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      from modelarts.session import Session
      +from modelarts.estimator import Estimator
      +session = Session()
      +estimator = Estimator(
      +                      modelarts_session=session,
      +                      framework_type='PyTorch',                                     # AI engine name
      +                       framework_version='PyTorch-1.0.0-python3.6',                  # AI engine version
      +                      code_dir='/obs-bucket-name/src/',                                      # Training script directory
      +                      boot_file='/obs-bucket-name/src/pytorch_sentiment.py',                 # Training startup script directory
      +                      log_url='/obs-bucket-name/log/',                                       # Training log directory
      +                      hyperparameters=[
      +                                       {"label":"classes",
      +                                        "value": "10"},    
      +                                       {"label":"lr",
      +                                        "value": "0.001"}
      +                                       ],
      +                      output_path='/obs-bucket-name/output/',                                # Training output directory
      +                      train_instance_type='modelarts.vm.gpu.p100',                  # Training environment specifications
      +                      train_instance_count=1,                                       # Number of training nodes
      +                      job_description='pytorch-sentiment with ModelArts SDK')       # Training job description
      +job_instance = estimator.fit(inputs='/obs-bucket-name/data/train/', wait=False, job_name='my_training_job')
      +
      +
      +
    +
    • Querying a model list
      1
      +2
      +3
      +4
      from modelarts.session import Session 
      +from modelarts.model import Model
      +session = Session() 
      +model_list_resp = Model.get_model_list(session, model_status="published", model_name="digit", order="desc")
      +
      +
      +
    • Querying service details
      1
      +2
      +3
      +4
      +5
      from modelarts.session import Session
      +from modelarts.model import Predictor
      +session = Session()
      +predictor_instance = Predictor(session, service_id="input your service_id")
      +predictor_info_resp = predictor_instance.get_service_info()
      +
      +
      +
    + + + + +Parent topic: Using JupyterLab + + + diff --git a/modelarts/umn/temp/using_the_convert_to_python_file_function.tmp b/modelarts/umn/temp/using_the_convert_to_python_file_function.tmp new file mode 100644 index 000000000..7bd05a116 --- /dev/null +++ b/modelarts/umn/temp/using_the_convert_to_python_file_function.tmp @@ -0,0 +1,15 @@ + + +

    Using the Convert to Python File Function

    +

    After code compiling is finished, you can save the entered code as a .py file which can be used for starting training jobs.

    +
    1. Create and open a notebook instance or open an existing notebook instance in the notebook instance list.
    2. On the Files tab page, click New and choose the required AI engine from the drop-down list to access the code development page.
    3. After code compiling is complete, click the save button in the upper left corner. Then, click Convert to Python File to convert the current ipynb file into a Python file. This function can be used to directly save your entered code as a .py file to the working directory.The generated .py file can be used to start ModelArts training jobs.Figure 1 Convert to Python File
      + +
    4. In the dialog box that is displayed, enter the file name as required, and select or deselect Force overwrite if file already exists. By default, the item is not selected, indicating that the file will not be overwritten when a file with the same name exists in the directory. Click Convert.Figure 2 Setting and saving the configuration
      +
    + + + +Parent topic: Using Jupyter Notebook + + + diff --git a/modelarts/umn/temp/using_the_notebook_terminal_function.tmp b/modelarts/umn/temp/using_the_notebook_terminal_function.tmp new file mode 100644 index 000000000..c9ab55cd8 --- /dev/null +++ b/modelarts/umn/temp/using_the_notebook_terminal_function.tmp @@ -0,0 +1,18 @@ + + +

    Using the Notebook Terminal Function

    +

    For developers who are used to coding, the terminal function is very convenient and practical. This section describes how to enable the terminal function in a notebook instance and switch the engine environment in the terminal.

    +

    Enabling the Notebook Terminal Function

    1. In the notebook instance list, click Open in the Operation column of the target notebook instance to go to the Jupyter Notebook page.
    2. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.Figure 1 Going to the Terminal page
      +
    + +

    Switching Engine Environments on the Terminal

    You can switch to another AI engine environment in the terminal environment of Jupyter.

    +
    1. Create and open a notebook instance or open an existing notebook instance in the notebook instance list.
    2. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
    3. Figure 2 Output after command execution
      +
    + + + + +Parent topic: Configuring the Jupyter Notebook Environment + + + diff --git a/modelarts/umn/temp/video_labeling.tmp b/modelarts/umn/temp/video_labeling.tmp new file mode 100644 index 000000000..80524a95a --- /dev/null +++ b/modelarts/umn/temp/video_labeling.tmp @@ -0,0 +1,36 @@ + + +

    Video Labeling

    +

    Model training requires a large amount of labeled video data. Therefore, before the model training, label the unlabeled video files. ModelArts enables you to label video files. In addition, you can modify the labels of video files, or remove their labels and label the video files again.

    +

    Starting Labeling

    1. Log in to the ModelArts management console. In the left navigation pane, choose Data Management > Datasets. The Datasets page is displayed.
    2. In the dataset list, select the dataset to be labeled based on the labeling type, and click the dataset name to go to the Dashboard tab page of the dataset.

      By default, the Dashboard tab page of the current dataset version is displayed. If you need to label the dataset of another version, click the Versions tab and then click Set to Current Version in the right pane. For details, see Managing Dataset Versions.

      +
    3. On the Dashboard page of the dataset, click Label in the upper right corner. The dataset details page is displayed. By default, all data of the dataset is displayed on the dataset details page.
    + +

    Synchronizing Data Sources

    ModelArts automatically synchronizes data and labeling information from Input Dataset Path to the dataset details page.

    +

    To quickly obtain the latest data in the OBS bucket, click Synchronize Data Source on the Unlabeled tab page of the dataset details page to add the data uploaded using OBS to the dataset.

    + +

    Labeling Video Files

    On the dataset details page, both unlabeled and labeled video files in the dataset are displayed.

    +
    1. On the Unlabeled tab page, click the target video file in the video list on the left. The labeling page is displayed.
    2. Play the video. When the video is played to the time point to be labeled, click the pause button in the progress bar to pause the video to a specific image.
    3. In the left pane, select a bounding box. By default, a rectangular box is selected. Drag the mouse to select an object in the video image, enter a new label name in the displayed Add Label text box, select a label color, and click Add to label the object. Alternatively, select an existing label from the drop-down list and click Add to label the object. Label all objects in the image. Multiple labels can be added to an image.The supported bounding boxes are the same as those supported by Object Detection. For details, see Table 1 in Object Detection.Figure 1 Labeling video files
      + +
    4. After the previous image is labeled, click the play button on the progress bar to resume the playback. Then, repeat 3 to complete labeling on the entire video.

      The labeled time points of the current video are displayed on the right of the page.

      +Figure 2 File labels
      +
    5. Click Back to Data Labeling Preview in the upper left corner of the page. The dataset details page is displayed, and the labeled video file is displayed on the Labeled tab page.
    + +

    Modifying Labeled Data

    After labeling data, you can delete labeled data on the Labeled tab page.

    +
    • Click in the Operation column of the target number to delete the label of the video segment. Alternatively, you can click the cross (x) icon above the labeled video file to delete the label. Then click OK.
    +

    On the Labeled tab page, click the target video file. In the All Labels area on the right of the labeling page, click the triangle icon on the right of the time point to view details. You can modify or delete a label.

    +
    • Modifying a label: Click the edit icon on the right of a label to modify the label name.
    • Deleting a label: Click the delete icon on the right of a label to delete the label. If you click the delete icon on the right of the image time, all labels on the image are deleted.
    +Figure 3 Modifying labeled data
    + +

    Deleting a Video File

    You can quickly delete the video files you want to discard.

    +

    On the All, Unlabeled, or Labeled tab page, select the video files to be deleted or click Select Images on Current Page to select all video files on the page, and click Delete in the upper left corner to delete the video files. In the displayed dialog box, select or deselect Delete source files as required. After confirmation, click OK to delete the videos.

    +

    If a tick is displayed in the upper left corner of a video file, the video file is selected. If no video file is selected on the page, the Delete File button is unavailable.

    +

    If you select Delete source files, video files stored in the corresponding OBS directory will be deleted when you delete the selected video files. Deleting source files may affect other dataset versions or datasets using those files. As a result, the page display, training, or inference is abnormal. Deleted data cannot be recovered. Exercise caution when performing this operation.

    + + + + + +Parent topic: Labeling Data + + + diff --git a/modelarts/umn/temp/viewing_job_details.tmp b/modelarts/umn/temp/viewing_job_details.tmp new file mode 100644 index 000000000..2981a0934 --- /dev/null +++ b/modelarts/umn/temp/viewing_job_details.tmp @@ -0,0 +1,56 @@ + + +

    Viewing Job Details

    +

    After a training job finishes, you can manage the training job versions and check whether the training result of the job is satisfactory by viewing the job details.

    +

    Training Job Details

    In the left navigation pane of the ModelArts management console, choose Training Management > Training Jobs to switch to the Training Jobs page. In the training job list, click a job name to view the job details.

    +

    Table 1 lists parameters of the training job of each version.

    + +.. _modelarts_23_0048__en-us_topic_0171858286_table43451384323: + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 Training job details

    Parameter

    +

    Description

    +

    Version

    +

    Version of a training job, which is automatically defined by the system, for example, V0001 and V0002.

    +

    Status

    +

    Status of a training job,

    +

    Duration

    +

    Running duration of a training job

    +

    Configurations

    +

    Details about the parameters of the current training job version

    +

    Logs

    +

    Logs of the current training job version. If you set Log Output Path when creating a training job, you can click the download button on the Logs tab page to download the logs stored in the OBS bucket to the local host.

    +

    Resource Usages

    +

    Usage of resources of the current training version, including the CPU, GPU, and memory.

    +
    + + + + + +Parent topic: Training Management + + + diff --git a/modelarts/umn/temp/viewing_monitoring_metrics.tmp b/modelarts/umn/temp/viewing_monitoring_metrics.tmp new file mode 100644 index 000000000..5e0759a8e --- /dev/null +++ b/modelarts/umn/temp/viewing_monitoring_metrics.tmp @@ -0,0 +1,21 @@ + + +

    Viewing Monitoring Metrics

    +

    Scenario

    Cloud Eye on the cloud service platform monitors the status of ModelArts real-time services and model loads. You can obtain the monitoring metrics of each ModelArts real-time service and model loads on the management console. Monitored data requires a period of time for transmission and display. The status of ModelArts displayed on the Cloud Eye console is usually the status obtained 5 to 10 minutes before. You can view the monitored data of a newly created real-time service 5 to 10 minutes later.

    + +

    Prerequisites

    • The ModelArts real-time service is running properly.
    +
    • Alarm rules have been configured on the Cloud Eye page. For details, see Setting Alarm Rules.
    • The real-time service has been properly running for at least 10 minutes.
    • The monitoring data and graphics are available for a new real-time service after the service runs for at least 10 minutes.
    +
    • Cloud Eye does not display the metrics of a faulty or deleted real-time service. The monitoring metrics can be viewed after the real-time service starts or recovers.
    +

    Monitoring data is unavailable without alarm rules configured on Cloud Eye. For details, see Setting Alarm Rules.

    + +

    Procedure

    1. Log in to the management console.
    2. Click Service List. Under Management & Deployment, click Cloud Eye.
    3. In the left navigation pane, choose Cloud Service Monitoring > ModelArts.
    4. View monitoring graphs.
      • Viewing monitoring graphs of the real-time service: Click View Graph in the Operation column.
      • Viewing monitoring graphs of the model loads: Click next to the target real-time service, and select View Graph from the drop-down list for model loads in the Operation column.
      +
    5. In the monitoring area, you can select a duration to view the monitoring data.

      You can view the monitoring data in the recent 1 hour, 3 hours, or 12 hours. To view the monitoring curve of a longer time range, click to enlarge the graph.

      +
    + + + + +Parent topic: Monitoring + + + diff --git a/modelarts/umn/temp/viewing_service_details.tmp b/modelarts/umn/temp/viewing_service_details.tmp new file mode 100644 index 000000000..edee81fc6 --- /dev/null +++ b/modelarts/umn/temp/viewing_service_details.tmp @@ -0,0 +1,292 @@ + + +

    Viewing Service Details

    +

    After a model is deployed as a real-time service, you can access the service page to view its details.

    +
    1. Log in to the ModelArts management console and choose Service Deployment > Real-Time Services.
    2. On the Real-Time Services page, click the name of the target service. The service details page is displayed.

      You can view the service name and status. For details, see Table 1.

      + +.. _modelarts_23_0061__en-us_topic_0165025305_table54131529105213: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 1 Real-time service parameters

      Parameter

      +

      Description

      +

      Name

      +

      Name of the real-time service.

      +

      Status

      +

      Current status of the real-time service.

      +

      Source

      +

      Model source of the real-time service.

      +

      Failed Calls/Total Calls

      +

      Number of service calls, which is counted from the time when the service was created.

      +

      If the number of models is changed or a service is invoked when a model is not ready, the number of calls is not counted.

      +

      Network Configuration

      +

      Customized network configuration of the used dedicated resource pool.

      +

      Description

      +

      Service description, which can be edited after you click the edit button on the right side.

      +

      Custom Settings

      +

      Customized configurations based on real-time service versions. This allows version-based traffic distribution policies and configurations. Enable this option and click View Settings to customize the settings. For details, see Modifying Customized Settings.

      +

      Data Collection

      +

      Enable this option to store the data generated when the real-time service is invoked to a specified OBS path.

      +

      Filter

      +

      Enable this option so that the system automatically identifies hard examples in all sample data.

      +

      Synchronize Data

      +

      Synchronize the collected data to a dataset for centralized management and utilization.

      +

      Traffic Limit

      +

      Maximum number of times a service can be accessed within a second.

      +
      + +
    3. You can switch between tabs on the details page of a real-time service to view more details. For details, see Table 2. +.. _modelarts_23_0061__en-us_topic_0165025305_table62441712183917: + + + + + + + + + + + + + + + + + + + + + +
      Table 2 Service details

      Parameter

      +

      Description

      +

      Usage Guides

      +

      Displays the API address, model information, input parameters, and output parameters. You can click to copy the API address to call the service.

      +

      Prediction

      +

      Performs a prediction test on the real-time service. For details, see Testing a Service.

      +

      Configuration Updates

      +

      Displays Existing Configuration and Historical Updates.

      +
      • Existing Configuration: includes the model name, version, status, traffic ratio, .
      • Historical Updates: displays historical model information.
      +

      Monitoring

      +

      Displays Resource Usage and Model Calls.

      +
      • Resource Usage: includes the used and available CPU, memory, and GPU resources.
      • Model Calls: indicates the number of model calls. The statistics collection starts after the model status changes to Ready.
      +

      Logs

      +

      Displays the log information about each model in the service. You can view logs generated in the latest 5 minutes, latest 30 minutes, latest 1 hour, and user-defined time segment.

      +
      • You can select the start time and end time when defining the time segment.
      +
      + +
    +

    Modifying Customized Settings

    A customized configuration rule consists of the configuration condition (Setting), access version (Version), and customized running parameters (including Setting Name and Setting Value).

    +

    You can configure different settings with customized running parameters for different versions of a real-time service.

    +

    The priorities of customized configuration rules are in descending order. You can change the priorities by dragging the sequence of customized configuration rules.

    +

    After a rule is matched, the system will no longer match subsequent rules. A maximum of 10 configuration rules can be configured.

    + +.. _modelarts_23_0061__en-us_topic_0165025305_table569619576249: + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Parameters for Custom Settings

    Parameter

    +

    Mandatory

    +

    Description

    +

    Setting

    +

    Yes

    +

    Expression of the Spring Expression Language (SPEL) rule. Only the equal and matches expressions of the character type are supported.

    +

    Version

    +

    Yes

    +

    Access version for a customized service configuration rule. When a rule is matched, the real-time service of the version is requested.

    +

    Setting Name

    +

    No

    +

    Key of a customized running parameter, consisting of a maximum of 128 characters.

    +

    Configure this parameter if the HTTP message header is used to carry customized running parameters to a real-time service.

    +

    Setting Value

    +

    No

    +

    Value of a customized running parameter, consisting of a maximum of 256 characters.

    +

    Configure this parameter if the HTTP message header is used to carry customized running parameters to a real-time service.

    +
    + +

    Customized settings can be used in the following scenarios:

    +
    • If multiple versions of a real-time service are deployed for dark launch, customized settings can be used to distribute traffic by user. +.. _modelarts_23_0061__en-us_topic_0165025305_table19377505490: + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 4 Built-in variables

      Built-in Variable

      +

      Description

      +

      DOMAIN_NAME

      +

      Account name that is used to invoke the inference request

      +

      DOMAIN_ID

      +

      Account ID that is used to invoke the inference request

      +

      PROJECT_NAME

      +

      Project name that is used to invoke the inference request

      +

      PROJECT_ID

      +

      Project ID that invokes the inference request

      +

      USER_NAME

      +

      Username that is used to invoke the inference request

      +

      USER_ID

      +

      User ID that is used to invoke the inference request

      +
      + +

      Pound key (#) indicates that a variable is referenced. The matched character string must be enclosed in single quotation marks.

      +
      #{Built-in variable} == 'Character string'
      +#{Built-in variable} matches 'Regular expression'
      +
      • Example 1:

        If the account name for invoking the inference request is User A, the specified version is matched.

        +
        #DOMAIN_NAME == 'User A'
        +
      • Example 2:

        If the account name in the inference request starts with op, the specified version is matched.

        +
        #DOMAIN_NAME matches 'op.*'
        + +.. _modelarts_23_0061__en-us_topic_0165025305_table52770525547: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Table 5 Common regular expressions

        Character

        +

        Description

        +

        .

        +

        Match any single character except \n. To match any character including \n, use (.|\n).

        +

        *

        +

        Match the subexpression that it follows for zero or multiple times. For example, zo* can match z and zoo.

        +

        +

        +

        Match the subexpression that it follows for once or multiple times. For example, zo+ can match zo and zoo, but cannot match z.

        +

        ?

        +

        Match the subexpression that it follows for zero or one time. For example, do(es)? can match does or do in does.

        +

        ^

        +

        Match the start of the input string.

        +

        $

        +

        Match the end of the input string.

        +

        {n}

        +

        Match for the number specified by n, a non-negative integer. For example, o{2} cannot match o in Bob, but can match two os in food.

        +

        x|y

        +

        Match x or y. For example, z|food can match z or food, and (z|f)ood can match zood or food.

        +

        [xyz]

        +

        Match any single character contained in a character set. For example, [abc] can match a in plain.

        +
        + +Figure 1 Traffic distribution by user
        +
      +
    • If multiple versions of a real-time service are deployed for dark launch, customized settings can be used to access different versions through the header.Start with #HEADER_, indicating that the header is referenced as a condition.
      #HEADER_{key} == '{value}'
      +#HEADER_{key} matches '{value}'
      + +
      • Example 1:

        If the header of an inference HTTP request contains a version and the value is 0.0.1, the condition is met. Otherwise, the condition is not met.

        +
        #HEADER_version == '0.0.1'
        +
      • Example 2:

        If the header of an inference HTTP request contains testheader and the value starts with mock, the rule is matched.

        +
        #HEADER_testheader matches 'mock.*'
        +Figure 2 Using the header to access different versions
        +
      +
    • If a real-time service version supports different running configurations, you can use Setting Name and Setting Value to specify customized running parameters so that different users can use different running configurations.

      Example:

      +When user A accesses the model, the user uses configuration A. When user B accesses the model, the user uses configuration B. When matching a running configuration, ModelArts adds a header to the request and also the customized running parameters specified by Setting Name and Setting Value.Figure 3 Customized running parameters added for a customized configuration rule
      + +
    + + + + +Parent topic: Real-Time Services + + + diff --git a/modelarts/umn/temp/viewing_the_batch_service_prediction_result.tmp b/modelarts/umn/temp/viewing_the_batch_service_prediction_result.tmp new file mode 100644 index 000000000..e6691e7a7 --- /dev/null +++ b/modelarts/umn/temp/viewing_the_batch_service_prediction_result.tmp @@ -0,0 +1,15 @@ + + +

    Viewing the Batch Service Prediction Result

    +

    When deploying a batch service, you can select the location of the output data directory. You can view the running result of the batch service that is in the Running completed status.

    +

    Procedure

    1. Log in to the ModelArts management console and choose Service Deployment > Batch Services.
    2. Click the name of the target service in the Running completed status. The service details page is displayed.
      • You can view the service name, status, ID, input path, output path, and description.
      • You can click in the Description area to edit the description.
      +
    3. Obtain the detailed OBS path next to Output Path, switch to the path and obtain the batch service prediction result.
      • If images are entered, a result file is generated for each image in the Image name__result.txt format, for example, IMG_20180919_115016.jpg_result.txt.
      • If audio files are entered, a result file is generated for each audio file in the Audio file name__result.txt format, for example, 1-36929-A-47.wav_result.txt.
      • If table data is entered, the result file is generated in the Table name__result.txt format, for example, train.csv_result.txt.
      +
    + + + + +Parent topic: Batch Services + + + diff --git a/modelarts/umn/temp/what_are_image_classification_and_object_detection.tmp b/modelarts/umn/temp/what_are_image_classification_and_object_detection.tmp new file mode 100644 index 000000000..10c6d75c3 --- /dev/null +++ b/modelarts/umn/temp/what_are_image_classification_and_object_detection.tmp @@ -0,0 +1,14 @@ + + +

    What Are Image Classification and Object Detection?

    +

    Image classification is an image processing method that separates different classes of targets according to the features reflected in the images. With quantitative analysis on images, it classifies an image or each pixel or area in an image into different categories to replace human visual interpretation. In general, image classification aims to identify a class, status, or scene in an image. It is applicable to scenarios where an image contains only one object. Figure 1 shows an example of identifying a car in an image.

    +Figure 1 Image classification
    +

    Object detection is one of the classical problems in computer vision. It intends to label objects with frames and identify the object classes in an image. Generally, if an image contains multiple objects, object detection can identify the location, quantity, and name of each object in the image. It is suitable for scenarios where an image contains multiple objects. Figure 2 shows an example of identifying a tree and a car in an image.

    +Figure 2 Object detection
    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/what_are_sizes_of_the__cache_directories_for_different_resource_specifications_in_the_training_environment.tmp b/modelarts/umn/temp/what_are_sizes_of_the__cache_directories_for_different_resource_specifications_in_the_training_environment.tmp new file mode 100644 index 000000000..cf64541b0 --- /dev/null +++ b/modelarts/umn/temp/what_are_sizes_of_the__cache_directories_for_different_resource_specifications_in_the_training_environment.tmp @@ -0,0 +1,80 @@ + + +

    What Are Sizes of the /cache Directories for Different Resource Specifications in the Training Environment?

    +

    When creating a training job, you can select CPU, GPU, or Ascend resources based on the size of the training job.

    +

    ModelArts mounts the disk to the /cache directory. You can use this directory to store temporary files. The /cache directory shares resources with the code directory. The directory has different capacities for different resource specifications.

    +
    • GPU resources +.. _modelarts_05_0090__en-us_topic_0000001096855431_en-us_topic_0200343601_table9533182215915: + + + + + + + + + + + + + + + +
      Table 1 Capacities of the cache directories for GPU resources

      GPU Specifications

      +

      cache Directory Capacity

      +

      V100

      +

      800G

      +

      8*V100

      +

      3T

      +

      P100

      +

      800G

      +
      + +
    • CPU resources +.. _modelarts_05_0090__en-us_topic_0000001096855431_en-us_topic_0200343601_table2764175317167: + + + + + + + + + + + + +
      Table 2 Capacities of the cache directories for CPU resources

      CPU Specifications

      +

      cache Directory Capacity

      +

      2 vCPUs | 8 GiB

      +

      50G

      +

      8 vCPUs | 32 GiB

      +

      50G

      +
      + +
    +
    • Ascend resources +.. _modelarts_05_0090__en-us_topic_0000001096855431_en-us_topic_0200343601_table1652218538206: + + + + + + + + + +
      Table 3 Capacities of the cache directories for Ascend resources

      Ascend Specifications

      +

      cache Directory Capacity

      +

      Ascend 910

      +

      3T

      +
      + +
    + + + +Parent topic: Training Jobs + + + diff --git a/modelarts/umn/temp/what_are_the_relationships_between_modelarts_and_other_services.tmp b/modelarts/umn/temp/what_are_the_relationships_between_modelarts_and_other_services.tmp new file mode 100644 index 000000000..aa842aefc --- /dev/null +++ b/modelarts/umn/temp/what_are_the_relationships_between_modelarts_and_other_services.tmp @@ -0,0 +1,18 @@ + + +

    What Are the Relationships Between ModelArts and Other Services

    +

    OBS

    ModelArts uses Object Storage Service (OBS) to store data and model backups and snapshots. OBS provides secure, reliable, low-cost storage. For more details, see Object Storage Service Console Function Overview.

    + +

    CCE

    ModelArts uses Cloud Container Engine (CCE) to deploy models as real-time services. CCE enables high concurrency and provides elastic scaling. For more information about CCE, see Cloud Container Engine User Guide.

    + +

    SWR

    To use an AI framework that is not supported by ModelArts, use SoftWare Repository for Container (SWR) to customize an image and import the image to ModelArts for training or inference. For more details, see .

    + +

    Cloud Eye

    ModelArts uses Cloud Eye to monitor online services and model loads in real time and send alarms and notifications automatically. For details about Cloud Eye, see Cloud Eye User Guide.

    + + + + +Parent topic: General Issues + + + diff --git "a/modelarts/umn/temp/what_can_i_do_if_the_message_\"object_directory_size_quantity_exceeds_the_limit\"_is_displayed_when_i_create_a_training_job.tmp" "b/modelarts/umn/temp/what_can_i_do_if_the_message_\"object_directory_size_quantity_exceeds_the_limit\"_is_displayed_when_i_create_a_training_job.tmp" new file mode 100644 index 000000000..343bc95a5 --- /dev/null +++ "b/modelarts/umn/temp/what_can_i_do_if_the_message_\"object_directory_size_quantity_exceeds_the_limit\"_is_displayed_when_i_create_a_training_job.tmp" @@ -0,0 +1,14 @@ + + +

    What Can I Do If the Message "Object directory size/quantity exceeds the limit" Is Displayed When I Create a Training Job?

    +

    Issue Analysis

    The code directory for creating a training job has limits on the size and number of files.

    + +

    Solution

    Delete the files except the code from the code directory or save the files in other directories. Ensure that the size of the code directory does not exceed 128 MB and the number of files does not exceed 4,096.

    + + + + +Parent topic: Training Jobs + + + diff --git a/modelarts/umn/temp/what_formats_of_images_are_supported_by_object_detection_or_image_classification_projects.tmp b/modelarts/umn/temp/what_formats_of_images_are_supported_by_object_detection_or_image_classification_projects.tmp new file mode 100644 index 000000000..e56e07ff4 --- /dev/null +++ b/modelarts/umn/temp/what_formats_of_images_are_supported_by_object_detection_or_image_classification_projects.tmp @@ -0,0 +1,11 @@ + + +

    What Formats of Images Are Supported by Object Detection or Image Classification Projects?

    +

    Images in JPG, JPEG, PNG, or BMP format are supported.

    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/what_is_exeml.tmp b/modelarts/umn/temp/what_is_exeml.tmp new file mode 100644 index 000000000..ab42ed765 --- /dev/null +++ b/modelarts/umn/temp/what_is_exeml.tmp @@ -0,0 +1,12 @@ + + +

    What Is ExeML?

    +

    ExeML is the process of automating model design, parameter tuning, and model training, compression, and deployment with the labeled data. The process is free of coding and does not require developers' experience in model development.

    +

    Users who do not have encoding capability can use the labeling, one-click model training, and model deployment functions of ExeML to build AI models.

    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/what_is_modelarts.tmp b/modelarts/umn/temp/what_is_modelarts.tmp new file mode 100644 index 000000000..bca73cc04 --- /dev/null +++ b/modelarts/umn/temp/what_is_modelarts.tmp @@ -0,0 +1,23 @@ + + +

    What Is ModelArts?

    +

    ModelArts is a one-stop development platform for AI developers. With data preprocessing, semi-automated data labeling, distributed training, automated model building, and model deployment, ModelArts helps AI developers quickly build models and efficiently manage the AI development lifecycle.

    +

    ModelArts covers all stages of AI development, including data processing and model training and deployment. The underlying technologies of ModelArts support various heterogeneous computing resources, allowing developers to flexibly select and use resources. In addition, ModelArts supports popular open-source AI development frameworks such as TensorFlow. Developers can also use self-developed algorithm frameworks to match their usage habits.

    +

    ModelArts aims to simplify AI development.

    +

    Product Architecture

    ModelArts supports the entire development process, including data processing, and model training, management, and deployment.

    +

    ModelArts supports various AI application scenarios, such as image classification and object detection.

    + +Figure 1 ModelArts architecture
    +

    Product Advantages

    • One-stop platform

      The out-of-the-box and full-lifecycle AI development platform provides one-stop training, management, and deployment of models.

      +
    • Easy to use
      • Automatic optimization of hyperparameters
      • Code-free development and simplified operations
      +
    • High performance
      • The self-developed MoXing deep learning framework accelerates algorithm development and training.
      • Optimized GPU utilization accelerates real-time inference.
      +
    • Flexible
      • Popular open-source frameworks available, such as TensorFlow, and MindSpore
      • Popular GPUs
      • Exclusive use of dedicated resources
      • Custom images for custom frameworks and operators
      +
    + + + + +Parent topic: Service Overview + + + diff --git a/modelarts/umn/temp/what_should_i_do_if_a_conflict_occurs_when_deploying_a_model_as_a_real-time_service.tmp b/modelarts/umn/temp/what_should_i_do_if_a_conflict_occurs_when_deploying_a_model_as_a_real-time_service.tmp new file mode 100644 index 000000000..2aa6ce39e --- /dev/null +++ b/modelarts/umn/temp/what_should_i_do_if_a_conflict_occurs_when_deploying_a_model_as_a_real-time_service.tmp @@ -0,0 +1,12 @@ + + +

    What Should I Do If a Conflict Occurs When Deploying a Model As a Real-Time Service?

    +

    Before importing a model, you need to place the corresponding inference code and configuration file in the model folder. When encoding with Python, you are advised to use a relative import (Python import) to import custom packages.

    +

    If the relative import mode is not used, a conflict will occur once a package with the same name exists in a real-time service. As a result, model deployment or prediction fails.

    + + + +Parent topic: Service Deployment + + + diff --git a/modelarts/umn/temp/what_should_i_do_when_the_train_button_is_unavailable_after_i_create_an_image_classification_project_and_label_the_images.tmp b/modelarts/umn/temp/what_should_i_do_when_the_train_button_is_unavailable_after_i_create_an_image_classification_project_and_label_the_images.tmp new file mode 100644 index 000000000..6b67c7150 --- /dev/null +++ b/modelarts/umn/temp/what_should_i_do_when_the_train_button_is_unavailable_after_i_create_an_image_classification_project_and_label_the_images.tmp @@ -0,0 +1,11 @@ + + +

    What Should I Do When the Train Button Is Unavailable After I Create an Image Classification Project and Label the Images?

    +

    The Train button turns to be available when the training images for an image classification project are classified into at least two categories, and each category contains at least five images.

    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/what_type_of_service_is_deployed_in_exeml.tmp b/modelarts/umn/temp/what_type_of_service_is_deployed_in_exeml.tmp new file mode 100644 index 000000000..d36d34156 --- /dev/null +++ b/modelarts/umn/temp/what_type_of_service_is_deployed_in_exeml.tmp @@ -0,0 +1,12 @@ + + +

    What Type of Service Is Deployed in ExeML?

    +

    Models created in ExeML are deployed as real-time services. You can add images or compile code to test the services, as well as call the APIs using the URLs.

    +

    After model development is successful, you can choose Service Deployment > Real-Time Services in the left navigation pane of the ModelArts console to view running services, and stop or delete services.

    + + + +Parent topic: ExeML + + + diff --git a/modelarts/umn/temp/what_types_of_services_can_models_be_deployed_as_on_modelarts.tmp b/modelarts/umn/temp/what_types_of_services_can_models_be_deployed_as_on_modelarts.tmp new file mode 100644 index 000000000..78c1f8c27 --- /dev/null +++ b/modelarts/umn/temp/what_types_of_services_can_models_be_deployed_as_on_modelarts.tmp @@ -0,0 +1,11 @@ + + +

    What Types of Services Can Models Be Deployed as on ModelArts?

    +

    Currently, models can only be deployed as real-time services and batch services.

    + + + +Parent topic: Service Deployment + + + diff --git a/modelarts/umn/temp/where_are_models_generated_by_exeml_stored_what_other_operations_are_supported.tmp b/modelarts/umn/temp/where_are_models_generated_by_exeml_stored_what_other_operations_are_supported.tmp new file mode 100644 index 000000000..b9a14d759 --- /dev/null +++ b/modelarts/umn/temp/where_are_models_generated_by_exeml_stored_what_other_operations_are_supported.tmp @@ -0,0 +1,19 @@ + + +

    Where Are Models Generated by ExeML Stored? What Other Operations Are Supported?

    +

    Unified Model Management

    For an ExeML project, after the model training is complete, the generated model is automatically displayed on the Model Management > Models page. The model name is automatically generated by the system. Its prefix is the same as the name of the ExeML project for easy identification.

    +

    Models generated by ExeML cannot be downloaded.

    + + +

    What Other Operations Are Supported for Models Generated by ExeML?

    • Deploying models as real-time and batch services

      On the ExeML page, models can only be deployed as real-time services. You can deploy models as batch services on the Model Management > Models page.

      +

      It should be noted that resources with other specifications can be used when you create a model deployment task on the Model Management > Models page. On the ExeML project page, only Compute-intensive 2 instance (NPU) can be used to deploy models.

      +
    • Creating a version

      When creating a new version, you can select a meta model only from a ModelArts training job, OBS, model template, or custom image. You cannot create a version from the original ExeML project.

      +
    • Deleting a model or its version
    + + + + +Parent topic: Tips + + + diff --git a/modelarts/umn/temp/where_is_data_stored_after_the_sync_obs_function_is_used.tmp b/modelarts/umn/temp/where_is_data_stored_after_the_sync_obs_function_is_used.tmp new file mode 100644 index 000000000..b3a44c88e --- /dev/null +++ b/modelarts/umn/temp/where_is_data_stored_after_the_sync_obs_function_is_used.tmp @@ -0,0 +1,12 @@ + + +

    Where Is Data Stored After the Sync OBS Function Is Used?

    +
    1. Log in to the ModelArts management console, and choose DevEnviron > Notebooks.
    2. In the Operation column of the target notebook instance in the notebook list, click Open to go to the Jupyter page.
    3. On the Files tab page of the Jupyter page, select the target file and click Sync OBS in the upper part of the page to synchronize the file. The file is stored in the ~/work directory of the instance.
    4. On the Files tab page of the Jupyter page, click New and select Terminal. The Terminal page is displayed.
    5. Run the following command to go to the ~/work directory.
      cd work
      +
    6. Run the ls command in the ~/work directory to view the files.
    + + + +Parent topic: Notebook + + + diff --git a/modelarts/umn/temp/where_will_the_data_be_uploaded_to.tmp b/modelarts/umn/temp/where_will_the_data_be_uploaded_to.tmp new file mode 100644 index 000000000..f31b410f6 --- /dev/null +++ b/modelarts/umn/temp/where_will_the_data_be_uploaded_to.tmp @@ -0,0 +1,14 @@ + + +

    Where Will the Data Be Uploaded to?

    +

    Data may be stored in OBS or EVS, depending on which kind of storage you have configured for your Notebook instances:

    +
    • OBS

      After you click upload, the data is directly uploaded to the target OBS path specified when the notebook instance was created.

      +
    • EVS

      After you click upload, the data is uploaded to the instance container, that is, the ~/work directory on the Terminal page.

      +
    + + + +Parent topic: Notebook + + + diff --git a/modelarts/umn/temp/which_ai_frameworks_does_modelarts_support.tmp b/modelarts/umn/temp/which_ai_frameworks_does_modelarts_support.tmp new file mode 100644 index 000000000..06e09d7c2 --- /dev/null +++ b/modelarts/umn/temp/which_ai_frameworks_does_modelarts_support.tmp @@ -0,0 +1,297 @@ + + +

    Which AI Frameworks Does ModelArts Support?

    +

    Supported AI frameworks and versions of ModelArts vary slightly based on the development environment, training jobs, and model inference (model management and deployment). The following describes the AI frameworks supported by each module.

    +

    Development Environment

    Notebook instances in the development environment support different AI engines and versions based on specific work environments (that is, different Python versions). After creating a notebook instance in the corresponding work environment, create a file based on the corresponding version in Table 1. ModelArts notebook instances support multiple engines. That is, a notebook instance can use all supported engines. Different engines can be switched quickly and conveniently.

    + +.. _modelarts_05_0128__en-us_topic_0246510446_table4362414101: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 AI engines

    Work Environment

    +

    Built-in AI Engine and Version

    +

    Supported Chip

    +

    Multi-Engine 1.0 (Python 3, Recommended)

    +

    MXNet-1.2.1

    +

    GPU

    +

    PySpark-2.3.2

    +

    CPU

    +

    Pytorch-1.0.0

    +

    GPU

    +

    TensorFlow-1.13.1

    +

    GPU

    +

    XGBoost-Sklearn

    +

    CPU

    +

    Multi-Engine 2.0 (Python3)

    +

    Pytorch-1.4.0

    +

    GPU

    +

    TensorFlow-2.1.0

    +

    CPU/GPU

    +

    Ascend-Powered-Engine 1.0 (Python3)

    +

    MindSpore-1.1.1

    +

    Ascend 910

    +

    TensorFlow-1.15.0

    +

    Ascend 910

    +
    + + +

    Training Jobs

    Supported AI engines and versions when creating training jobs are as follows:

    + +.. _modelarts_05_0128__en-us_topic_0246510446_table97515527121: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2 AI engines supported by training jobs

    Environment

    +

    Supported Chip

    +

    System Architecture

    +

    System Version

    +

    AI Engine and Version

    +

    Supported CUDA or Ascend Version

    +

    TensorFlow

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    TF-1.13.1-python3.6

    +

    CUDA 10.0

    +

    TF-2.1.0-python3.6

    +

    CUDA 10.1

    +

    Caffe

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Caffe-1.0.0-python2.7

    +

    CUDA 8.0

    +

    Spark_MLlib

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Spark-2.3.2-python3.6

    +

    N/A

    +

    XGBoost-Sklearn

    +

    CPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    Scikit_Learn-0.18.1-python3.6

    +

    N/A

    +

    PyTorch

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 16.04

    +

    PyTorch-1.3.0-python3.6

    +

    CUDA 10.0

    +

    PyTorch-1.4.0-python3.6

    +

    CUDA 10.1

    +

    Ascend-Powered-Engine

    +

    +

    Ascend 910

    +

    +

    AArch64

    +

    EulerOS 2.8

    +

    Mindspore-1.1.1-python3.7-aarch64

    +

    C76

    +

    TF-1.15-python3.7-aarch64

    +

    C76

    +

    MindSpore-GPU

    +

    CPU and GPU

    +

    x86_64

    +

    Ubuntu 18.04

    +

    MindSpore-1.1.0-python3.7

    +

    CUDA 10.1

    +
    + + +

    Model Inference

    For imported models and model inference is completed on ModelArts, supported engines and their runtime are as follows:

    + +.. _modelarts_05_0128__en-us_topic_0246510446_table195551745191318: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3 Supported AI engines and their runtime

    Engine

    +

    Runtime

    +

    Precautions

    +

    TensorFlow

    +

    python3.6

    +

    python2.7

    +

    tf1.13-python2.7-gpu

    +

    tf1.13-python2.7-cpu

    +

    tf1.13-python3.6-gpu

    +

    tf1.13-python3.6-cpu

    +

    tf1.13-python3.7-cpu

    +

    tf1.13-python3.7-gpu

    +

    tf2.1-python3.7

    +

    tf1.15-aarch64-c76-d910

    +
    • TensorFlow 1.8.0 is used in python2.7 and python3.6.
    • python3.6, python2.7, and tf2.1-python3.7 indicate that the model can run on both CPUs and GPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs.
    • The default runtime is python2.7.
    +

    MXNet

    +

    python3.7

    +

    python3.6

    +
    • MXNet 1.2.1 is used in python3.6 and python3.7.
    • python3.6 and python3.7 indicate that the model can run on both CPUs and GPUs.
    • The default runtime is python3.6.
    +

    Caffe

    +

    python3.6

    +

    python3.7

    +

    python3.6-gpu

    +

    python3.7-gpu

    +

    python3.6-cpu

    +

    python3.7-cpu

    +
    • Caffe 1.0.0 is used in python3.6, python3.7, python3.6-gpu, python3.7-gpu, python3.6-cpu, and python3.7-cpu.
    • python 3.6 and python3.7 can only be used to run models on CPUs. For other runtime values, if the suffix contains cpu or gpu, the model can run only on CPUs or GPUs. Use the runtime of python3.6-gpu, python3.7-gpu, python3.6-cpu, or python3.7-cpu.
    • The default runtime is python3.6.
    +

    Spark_MLlib

    +

    python3.6

    +
    • Spark_MLlib 2.3.2 is used in python3.6.
    • python 3.6 can only be used to run models on CPUs.
    +

    Scikit_Learn

    +

    python3.6

    +
    • Scikit_Learn 0.18.1 is used in python3.6.
    • python 3.6 can only be used to run models on CPUs.
    +

    XGBoost

    +

    python3.6

    +
    • XGBoost 0.80 is used in python3.6.
    • python 3.6 can only be used to run models on CPUs.
    +

    PyTorch

    +

    python3.6

    +

    python3.7

    +

    pytorch1.4-python3.7

    +
    • PyTorch 1.0 is used in python3.6 and python3.7.
    • python3.6, python3.7, and pytorch1.4-python3.7 indicate that the model can run on both CPUs and GPUs.
    • The default runtime is python3.6.
    +

    MindSpore

    +

    ms1.1-python3.7-c76

    +

    MindSpore 1.1.1 is used.

    +
    + + + + + +Parent topic: General Issues + + + diff --git a/modelarts/umn/temp/why_does_data_fail_to_be_imported_using_the_manifest_file.tmp b/modelarts/umn/temp/why_does_data_fail_to_be_imported_using_the_manifest_file.tmp new file mode 100644 index 000000000..5fcb5f744 --- /dev/null +++ b/modelarts/umn/temp/why_does_data_fail_to_be_imported_using_the_manifest_file.tmp @@ -0,0 +1,16 @@ + + +

    Why Does Data Fail to Be Imported Using the Manifest File?

    +

    Symptom

    Failed to use the manifest file of the published dataset to import data again.

    + +

    Possible Cause

    Data has been changed in the OBS directory of the published dataset, for example, images have been deleted. Therefore, the manifest file is inconsistent with data in the OBS directory. As a result, an error occurs when the manifest file is used to import data again.

    + +

    Solution

    • Method 1 (recommended): Publish a new version of the dataset again and use the new manifest file to import data.
    • Method 2: Modify the manifest file on your local PC, search for data changes in the OBS directory, and modify the manifest file accordingly. Ensure that the manifest file is consistent with data in the OBS directory, and then import data using the new manifest file.
    + + + + +Parent topic: Data Management + + + diff --git a/modelarts/umn/temp/xgboost.tmp b/modelarts/umn/temp/xgboost.tmp new file mode 100644 index 000000000..ecdb66406 --- /dev/null +++ b/modelarts/umn/temp/xgboost.tmp @@ -0,0 +1,104 @@ + + +

    XGBoost

    +

    Training and Saving a Model

     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    import pandas as pd
    +import xgboost as xgb
    +from sklearn.model_selection import train_test_split
    +
    +# Prepare training data and setting parameters
    +iris = pd.read_csv('/data/iris.csv')
    +X = iris.drop(['virginica'],axis=1)
    +y = iris[['virginica']]
    +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234565)
    +params = {
    +    'booster': 'gbtree',
    +    'objective': 'multi:softmax',
    +    'num_class': 3,
    +    'gamma': 0.1,
    +    'max_depth': 6,
    +    'lambda': 2,
    +    'subsample': 0.7,
    +    'colsample_bytree': 0.7,
    +    'min_child_weight': 3,
    +    'silent': 1,
    +    'eta': 0.1,
    +    'seed': 1000,
    +    'nthread': 4,
    +}
    +plst = params.items()
    +dtrain = xgb.DMatrix(X_train, y_train)
    +num_rounds = 500
    +model = xgb.train(plst, dtrain, num_rounds)
    +model.save_model('/tmp/xgboost.m')
    +
    +
    +

    After the model is saved, it must be uploaded to the OBS directory before being published. The config.json and customize_service.py files must be contained during publishing. For details about the definition method, see Model Package Specifications.

    + +

    Inference Code

    # coding:utf-8
    +import collections
    +import json
    +import xgboost as xgb
    +from model_service.python_model_service import XgSklServingBaseService
    +class user_Service(XgSklServingBaseService):
    +
    +    # request data preprocess
    +    def _preprocess(self, data):
    +        list_data = []
    +        json_data = json.loads(data, object_pairs_hook=collections.OrderedDict)
    +        for element in json_data["data"]["req_data"]:
    +            array = []
    +            for each in element:
    +                array.append(element[each])
    +                list_data.append(array)
    +        return list_data
    +
    +    #   predict
    +    def _inference(self, data):
    +        xg_model = xgb.Booster(model_file=self.model_path)
    +        pre_data = xgb.DMatrix(data)
    +        pre_result = xg_model.predict(pre_data)
    +        pre_result = pre_result.tolist()
    +        return pre_result
    +
    +    # predict result process
    +    def _postprocess(self,data):
    +        resp_data = []
    +        for element in data:
    +            resp_data.append({"predictresult": element})
    +        return resp_data
    + + + + +Parent topic: Examples of Custom Scripts + + + diff --git a/process.py b/process.py new file mode 100644 index 000000000..c4129a157 --- /dev/null +++ b/process.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 + +import json +import os +import pathlib +import re +import warnings + +def get_new_name(current_name): + new_name = current_name.replace(' - ','_') + new_name = new_name.replace(' ','_') + new_name = new_name.replace('/','_') + new_name = new_name.replace('?','') + new_name = new_name.lower() + return new_name + +def get_target_path(code, metadata, path=''): + if code in metadata: + current = metadata[code] + if not current.get('p_code'): + return current['new_name'] + else: + return ( + "{0}/{1}".format( + get_target_path(current['p_code'], metadata), + current['new_name']) + ) + else: + return '' + +def build_doc_tree(metadata): + tree = dict() + flat_tree = dict() + for k, v in metadata.items(): + parent_id = v.get('p_code') + if not parent_id: + parent_id = 0 + + if parent_id not in flat_tree: + flat_tree[parent_id] = list() + flat_tree[parent_id].append(v) + return flat_tree + + +def main(): + meta_data = json.loads(open("CLASS.TXT.json").read()) + metadata_by_uri = dict() + metadata_by_code = dict() + table_re = re.compile(r'.*]+ id="([^"]+)"') + for f in meta_data: + f['new_name'] = get_new_name(f['title']) + metadata_by_uri[f['uri']] = f + metadata_by_code[f.get('code')] = f + + tree = build_doc_tree(metadata_by_code) + + for f in pathlib.Path().glob("*.html"): + if not f.name in metadata_by_uri: + continue + _target = metadata_by_uri[f.name] + target = _target['new_name'] + target_path = get_target_path(_target['p_code'], metadata_by_code) + pathlib.Path("temp/").mkdir(parents=True, exist_ok=True) + pathlib.Path("tmp_result/" + target_path).mkdir(parents=True, exist_ok=True) + pathlib.Path("result/" + target_path).mkdir(parents=True, exist_ok=True) + + # Pre-processing of html content + with open(f, 'r') as reader, open(f"temp/{target}.tmp", 'w') as writer: + print(f"Processing {target}") + for line in reader.readlines(): + table_match = table_re.match(line) + if table_match: + writer.write(f".. _{table_match.group(1)}:\n\n") + if not line.startswith("Parent topic:"): + # Drop all divs + processed_line = re.sub(r'<[/]?div[^>]*>', '', line) + writer.write(processed_line) + # Convert html to rst + os.system( + f"pandoc 'temp/{target}.tmp' -f html " + f"-o 'tmp_result/{target_path}/{target}.rst' " + f"--column 120 --ascii -s --wrap preserve" + ) + # Post processing of rendered rst + with ( + open(f"tmp_result/{target_path}/{target}.rst", 'r') as reader, + open(f"result/{target_path}/{target}.rst", 'w') as writer + ): + print(f"Post processing {target}") + for line in reader.readlines(): + processed_line = re.sub(r'\.\. \\_', '\n\n.. _', line) + processed_line = re.sub(r'√', 'Y', processed_line) + processed_line = re.sub(r'public_sys-resources/', '', processed_line) + processed_line = re.sub(r'image:: ', 'image:: /images/', processed_line) + processed_line = re.sub(r' :name: .*$', '', processed_line) + processed_line = re.sub(r'.. code:: screen', '.. code::', processed_line) + writer.write(processed_line) + # Generate indexes + for k, v in tree.items(): + path = '' + title = 'Main Index' + if k != 0: + curr = metadata_by_code[k] + title = curr['title'] + path = get_target_path(curr['code'], metadata_by_code) + with open(f"result/{path}/index.rst", "w") as index: + index.write('='*(len(title)) + '\n') + index.write(title + '\n') + index.write('='*(len(title)) + '\n') + index.write('\n') + index.write('.. toctree::\n\n') + for child in v: + new_name = child['new_name'] + if child['code'] in tree: + # If this is folder - add /index + new_name = new_name + '/index' + index.write(f" {new_name}\n") + + + p = pathlib.Path(f"result/{path}.rst") + if p.exists(): + print(f"Please check {p.resolve()}. It should be dropped in favour" + f"of result/{path}/index.rst") + + +if __name__ == "__main__": + main()